8.5. nftables 명령에서 세트 사용
nftables
프레임워크는 기본적으로 세트를 지원합니다. 예를 들어 규칙이 여러 IP 주소, 포트 번호, 인터페이스 또는 기타 일치 기준과 일치해야 하는 경우 세트를 사용할 수 있습니다.
8.5.1. nftables에서 익명 세트 사용 링크 복사링크가 클립보드에 복사되었습니다!
익명 집합에는 규칙에서 직접 사용하는 { 22, 80, 443 }
과 같이 중괄호로 묶은 쉼표로 구분된 값이 포함되어 있습니다. IP 주소 및 기타 일치 조건에도 익명 세트를 사용할 수 있습니다.
익명 세트의 단점은 집합을 변경하려면 규칙을 교체해야 한다는 것입니다. 동적 솔루션의 경우 nftables에서 명명된 세트 사용에 설명된 대로 이름이 지정된 세트를 사용합니다.
사전 요구 사항
-
inet
제품군의example_chain
체인과example_table
테이블이 있습니다.
프로세스
예를 들어 포트
22
,80
및443
으로 들어오는 트래픽을 허용하는example_table
에서example_chain
에 규칙을 추가하려면 다음을 수행합니다.nft add rule inet example_table example_chain tcp dport { 22, 80, 443 } accept
# nft add rule inet example_table example_chain tcp dport { 22, 80, 443 } accept
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항:
example_table
에 모든 체인과 해당 규칙을 표시합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.5.2. nftables에서 named set 사용 링크 복사링크가 클립보드에 복사되었습니다!
nftables
프레임워크는 변경 가능한 이름이 설정된 세트를 지원합니다. 명명된 세트는 테이블 내의 여러 규칙에서 사용할 수 있는 요소 목록 또는 범위입니다. 익명 세트를 통한 또 다른 이점은 세트를 사용하는 규칙을 교체하지 않고도 이름이 지정된 세트를 업데이트할 수 있다는 것입니다.
명명된 세트를 만들 때 집합에 포함된 요소 유형을 지정해야 합니다. 다음 유형을 설정할 수 있습니다.
-
192.0.2.1
또는192.0.2.0/24
와 같은 IPv4 주소 또는 범위가 포함된 세트의ipv4_addr
. -
2001:db8:1::1 또는
2001:db8:1::1
/64ipv6_addr
-
52:54:00:6b:66:42
와 같은 미디어 액세스 제어(MAC) 주소 목록이 포함된 세트의ether_addr
-
inet_proto
는tcp
와 같은 인터넷 프로토콜 유형 목록이 포함된 세트의 경우입니다. -
ssh
와 같은 인터넷 서비스 목록이 포함된 세트의inet_service
. -
패킷 표시 목록을 포함하는 세트의
마크
입니다. 패킷 표시는 모든 양의 32비트 정수 값(0
~2147483647
)일 수 있습니다.
사전 요구 사항
-
example_chain
체인과example_table
테이블이 있습니다.
프로세스
빈 세트를 만듭니다. 다음 예제에서는 IPv4 주소에 대한 세트를 생성합니다.
여러 개별 IPv4 주소를 저장할 수 있는 세트를 생성하려면 다음을 수행합니다.
nft add set inet example_table example_set { type ipv4_addr \; }
# nft add set inet example_table example_set { type ipv4_addr \; }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow IPv4 주소 범위를 저장할 수 있는 세트를 생성하려면 다음을 수행합니다.
nft add set inet example_table example_set { type ipv4_addr \; flags interval \; }
# nft add set inet example_table example_set { type ipv4_addr \; flags interval \; }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
중요쉘이 명령의 마지막으로 message를 해석하지 못하도록 하려면 백슬래시를 사용하여 together을 이스케이프해야 합니다.
선택 사항: 세트를 사용하는 규칙을 생성합니다. 예를 들어 다음 명령은
example_table
의example_chain
에 규칙을 추가하여example_set
의 IPv4 주소에서 모든 패킷을 삭제합니다.nft add rule inet example_table example_chain ip saddr @example_set drop
# nft add rule inet example_table example_chain ip saddr @example_set drop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow example_set
은 여전히 비어 있기 때문에 규칙은 현재 적용되지 않습니다.IPv4 주소를
example_set
에 추가합니다.개별 IPv4 주소를 저장하는 세트를 생성하는 경우 다음을 입력합니다.
nft add element inet example_table example_set { 192.0.2.1, 192.0.2.2 }
# nft add element inet example_table example_set { 192.0.2.1, 192.0.2.2 }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow IPv4 범위를 저장하는 세트를 생성하는 경우 다음을 입력합니다.
nft add element inet example_table example_set { 192.0.2.0-192.0.2.255 }
# nft add element inet example_table example_set { 192.0.2.0-192.0.2.255 }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow IP 주소 범위를 지정하면 위 예제의
192.0.2.0/24
와 같은 CIDR(Classless Inter-Domain Routing) 표기법을 사용할 수 있습니다.
8.5.3. 동적 세트를 사용하여 패킷 경로의 항목 추가 링크 복사링크가 클립보드에 복사되었습니다!
nftables
프레임워크의 동적 세트를 사용하면 패킷 데이터에서 요소를 자동으로 추가할 수 있습니다. 예를 들어 IP 주소, 대상 포트, MAC 주소 등이 있습니다. 이 기능을 사용하면 이러한 요소를 실시간으로 수집하고 거부 목록을 만들고, 목록을 금지하고, 보안 위협에 즉시 대응할 수 있도록 다른 요소를 사용할 수 있습니다.
사전 요구 사항
-
inet
제품군의example_chain
체인과example_table
테이블이 있습니다.
프로세스
빈 세트를 만듭니다. 다음 예제에서는 IPv4 주소에 대한 세트를 생성합니다.
여러 개별 IPv4 주소를 저장할 수 있는 세트를 생성하려면 다음을 수행합니다.
nft add set inet example_table example_set { type ipv4_addr \; }
# nft add set inet example_table example_set { type ipv4_addr \; }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow IPv4 주소 범위를 저장할 수 있는 세트를 생성하려면 다음을 수행합니다.
nft add set inet example_table example_set { type ipv4_addr \; flags interval \; }
# nft add set inet example_table example_set { type ipv4_addr \; flags interval \; }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요쉘이 명령의 마지막으로 message를 해석하지 못하도록 하려면 백슬래시를 사용하여 together을 이스케이프해야 합니다.
들어오는 패킷의 소스 IPv4 주소를
example_set
세트에 동적으로 추가하는 규칙을 만듭니다.nft add rule inet example_table example_chain set add ip saddr @example_set
# nft add rule inet example_table example_chain set add ip saddr @example_set
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령은
example_chain
규칙 체인에 새 규칙을 생성하고example_table
은 패킷의 소스 IPv4 주소를example_set
에 동적으로 추가합니다.
검증
규칙이 추가되었는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령은 현재
nftables
에 로드된 전체 규칙 세트를 표시합니다. IP가 적극적으로 규칙을 트리거하고 있으며example_set
이 관련 주소로 업데이트되고 있음을 보여줍니다.
다음 단계
동적 IP 세트가 있으면 다양한 보안, 필터링 및 트래픽 제어 목적으로 사용할 수 있습니다. 예를 들면 다음과 같습니다.
- 블록, 제한 또는 네트워크 트래픽 로그
- 신뢰할 수 있는 사용자를 금지하기 위해 허용 목록과 결합
- 자동 시간 초과를 사용하여 초과 차단 방지