Nftables 튜토리얼

Nftables Tyutolieol



이 튜토리얼은 Nftables Linux 방화벽으로 작업하는 방법을 설명합니다. 이 콘텐츠는 Linux 경험이 있는 사용자와 새로운 사용자 모두에게 최적화되어 있습니다.

Nftables는 방화벽 기능을 제공하는 Linux 커널의 구성 요소입니다. 그것은 Iptables의 교체입니다.







이 튜토리얼을 읽고 나면 Nftables의 규칙을 이해하고 방화벽을 만들 수 있습니다. Iptables에 대한 사전 지식이 필요하지 않습니다.



이 튜토리얼의 모든 예제에는 스크린샷이 포함되어 있어 지식 수준에 관계없이 모든 Linux 사용자가 쉽게 이해하고 구현할 수 있습니다.



Nftables 시작하기

시작하기 전에 nano 또는 vi와 같은 텍스트 편집기를 사용하여 파일을 만들고 열어 다음 예제에 따라 첫 번째 Nftables 규칙을 입력하기 시작합니다. 복사하여 붙여넣지 마십시오. 모든 것을 입력하십시오.





나노 방화벽.nft

이 튜토리얼의 예제는 매우 간단하며 루프백 및 특정 포트를 제외한 모든 IPv4 트래픽이 삭제되는 제한적인 방화벽을 보여줍니다.



이전 스크린샷에서 첫 번째 줄을 사용하여 로컬 네트워크(192.168.0.0/16)를 LinuxHintNet으로 정의했습니다.

LinuxHintNet = 192.168.0.0 정의 / 16

두 번째 줄에서는 포트 그룹(80,443 및 22)을 정의합니다. 트래픽을 허용할 계획이기 때문에 이 그룹을 AllowPorts라고 부릅니다. AllowPorts는 임의의 이름입니다.

AllowPorts 정의   = { 80 , 443 , 53 , 22 }

그런 다음 컨테이너 또는 체인 및 규칙 그룹인 테이블을 추가합니다. 둘 다 아래에 설명되어 있습니다. 테이블은 규칙과 체인을 구성하는 데 도움이 됩니다. 나는 제한적인 정책을 포함하고 그 이름이 임의적이기 때문에 예제에서 테이블을 '제한적'이라고 불렀습니다.

테이블 이름 앞의 IP는 큐 테이블 규칙이 IPv4 트래픽에만 적용됨을 나타냅니다. IP 대신 inet을 사용하여 IPv4 및 IPv6 프로토콜에 규칙을 적용할 수 있습니다. 또는 IPv6 전용 IP를 ip6으로 바꿀 수 있습니다.

Restrictive는 내가 임의로 정의한 이름이라는 것을 기억하십시오. 원하는 대로 테이블 이름을 지정할 수 있습니다.

제 경우에는 아래와 같이 IPv4에만 규칙을 적용합니다.

테이블 추가 아이피 제한적

두 프로토콜 모두에 대해 다음을 사용합니다.

테이블 inet 제한 추가

그런 다음 첫 번째 기본 체인을 추가합니다. 이 체인은 들어오는 트래픽과 관련이 있기 때문에 임의로 이름을 Incoming으로 지정합니다. 그러나 원하는 대로 이름을 지정할 수 있습니다.

다음 기본 체인은 기본적으로 들어오는 모든 트래픽을 삭제합니다.

  • add chain ip Restrictive Incoming: 이 섹션은 IPv4에 적용할 Restrictive Incoming 체인을 추가합니다.
  • 유형 필터: 트래픽을 필터링하므로 체인 유형을 필터로 정의합니다. 다른 가능한 체인 유형은 경로 또는 NAT입니다.
  • 후크 입력: 들어오는 패킷을 나타냅니다.
  • 우선 순위 0: 기본 체인 우선 순위가 기본 체인 순서를 정의합니다.
  • 정책 삭제: 기본적으로 삭제 정책은 모든 패킷을 삭제합니다.
체인 추가 아이피 제한적인 수신 { 유형 필터 후크 입력 우선 순위 0 ; 정책 하락; }

다음 스크린샷에서 볼 수 있듯이 이전과 유사한 두 개의 다른 기본 체인인 Restrictive Redirect 및 Restrictive Outgoing을 만들었습니다. 차이점은 각각에 대해 정의된 후크입니다(후크 포워드 및 후크 출력). 그것들을 설명하는 것은 반복적입니다.

세 개의 기본 체인 후에 루프백 트래픽을 허용하는 Nftables 규칙을 계속할 수 있습니다.

루프백 인터페이스에서 들어오고 나가는 트래픽에 대해 다음 줄을 추가합니다.

규칙 추가 아이피 제한된 수신 iifname lo 카운터 수락

규칙 추가 아이피 제한된 수신 oifname lo 카운터 수락

이제 파일 시작 부분에 정의된 $AllowPorts 변수에 포함된 모든 포트를 통해 나가는 TCP 및 UDP 트래픽을 허용하는 네 가지 규칙을 추가합니다.

규칙 추가 아이피 제한적인 수신 TCP 스포츠 $AllowPorts 카운터 수락

규칙 추가 아이피 제한된 발신 tcp dport $AllowPorts 카운터 수락

규칙 추가 아이피 제한적인 수신 udp 스포츠 $AllowPorts 카운터 수락

규칙 추가 아이피 제한된 발신 UDP dport $AllowPorts 카운터 수락

아래에서 전체 스크립트를 볼 수 있습니다.

테이블, 체인 및 규칙 입력을 마치면 문서를 닫고 변경 사항을 저장합니다.

# 처음 두 줄에서는 로컬 네트워크(LinuxHintNet)와 포트 집합(80,
#443,22) 아래 규칙에서 트래픽을 활성화합니다.
LinuxHintNet = 192.168.0.0 정의 / 16
AllowPorts 정의   = { 80 , 443 , 53 , 22 }
#체인과 규칙을 포함할 새 테이블을 선언합니다. 저는 이 테이블을 '제한적'이라고 부릅니다.
# 'ip'는 IPv4에만 규칙을 적용합니다. IPv6의 경우 'ip6'만 사용하고 두 프로토콜 모두에 'inet'를 사용합니다.
테이블 추가 아이피 제한적
# 테이블 생성 후 Incoming, Redirect, Outgoing 3개의 체인을 생성하고,
#이름은 임의적입니다. 모두 기본적으로 수신, 발신 및 전달 트래픽을 삭제합니다.
체인 추가 아이피 제한적인 수신 { 유형 필터 후크 입력 우선 순위 0 ; 정책 하락; }
체인 추가 아이피 제한적 리디렉션 { 유형 필터 후크 포워드 우선 순위 0 ; 정책 하락; }
체인 추가 아이피 제한적인 발신 { 유형 필터 후크 출력 우선 순위 0 ; 정책 하락; }
# 루프백 트래픽을 허용하는 두 가지 규칙을 구현합니다.
규칙 추가 아이피 제한된 수신 iifname lo 카운터 수락
규칙 추가 아이피 제한된 수신 oifname lo 카운터 수락
# AllowPorts 변수에 정의된 포트를 통한 트래픽을 허용하는 규칙을 구현합니다.
규칙 추가 아이피 제한적인 수신 TCP 스포츠 $AllowPorts 카운터 수락
규칙 추가 아이피 제한된 발신 tcp dport $AllowPorts 카운터 수락
규칙 추가 아이피 제한적인 수신 udp 스포츠 $AllowPorts 카운터 수락

규칙 추가 아이피 제한된 발신 UDP dport $AllowPorts 카운터 수락

방화벽을 활성화하려면 다음 명령을 실행하십시오.

수도 엔피트 -에프 방화벽.nft

다음 명령을 실행하여 규칙을 확인할 수 있습니다.

수도 nft 목록 규칙 집합

이것이 기본적인 제한적 방화벽입니다.

결론:

보시다시피 Nftables는 Iptables보다 훨씬 친숙하며 사용자는 Iptables보다 Nftables를 더 빨리 배울 수 있습니다. Iptables가 중단되고 Debian을 포함하여 많은 배포판에서 기본 방화벽으로 Nftables를 사용하고 있습니다. Iptables 경험이 있는 사용자는 Iptables-nftables-compat 도구를 살펴보고 싶어할 수 있습니다. 이 도구는 Iptables를 Nftables로 변환합니다. 이것은 그들이 차이점을 이해하는 데 도움이 될 수 있습니다.

시스템 관리자와 같은 전문 사용자는 Iptables로 계속 작업하는 경향이 있습니다. 필터링을 개선하면서 시간을 절약하기 위해 Nftables를 무시하지 마십시오. 이 기사가 Nftables를 사용해 보도록 설득하기에 충분히 간단했기를 바랍니다.