Red Hat Training
A Red Hat training course is available for RHEL 8
10.9. nftables를 사용하여 연결 양 제한
nftables
를 사용하여 연결 수를 제한하거나 지정된 연결 양을 설정하려는 IP 주소를 차단하여 너무 많은 시스템 리소스를 사용할 수 있습니다.
10.9.1. nftables를 사용하여 연결 수 제한
nft
유틸리티의 ct count
매개 변수를 사용하면 관리자가 연결 수를 제한할 수 있습니다.
사전 요구 사항
-
example_table
의 기본example_chain
이 있습니다.
절차
IPv4 주소에 대한 동적 세트를 생성합니다.
# nft add set inet example_table example_meter { type ipv4_addr\; flags dynamic \;}
IPv4 주소에서 SSH 포트(22)에 대한 동시 연결을 허용하는 규칙을 추가하고 동일한 IP에서 추가로 모든 연결을 거부합니다.
# nft add rule ip example_table example_chain tcp dport ssh meter example_meter { ip saddr ct count over 2 } counter reject
선택 사항: 이전 단계에서 만든 세트를 표시합니다.
# nft list set inet example_table example_meter table inet example_table { meter example_meter { type ipv4_addr size 65535 elements = { 192.0.2.1 ct count over 2 , 192.0.2.2 ct count over 2 } } }
elements
항목은 현재 규칙과 일치하는 주소를 표시합니다. 이 예에서요소는
SSH 포트에 대한 활성 연결이 있는 IP 주소를 나열합니다. 출력에 활성 연결 수 또는 연결이 거부된 경우 출력에 표시되지 않습니다.
10.9.2. 1분 이내에 10개 이상의 새로운 수신 TCP 연결을 시도하는 IP 주소 차단
1분 이내에 10개 이상의 IPv4 TCP 연결을 설정하는 호스트를 일시적으로 차단할 수 있습니다.
절차
ip
address family로filter
테이블을 생성합니다.# nft add table ip filter
필터
테이블에입력
체인을 추가합니다.# nft add chain ip filter input { type filter hook input priority 0 \; }
1분 이내에 10개 이상의 TCP 연결을 설정하려는 소스 주소에서 모든 패킷을 삭제하는 규칙을 추가합니다.
# nft add rule ip filter input ip protocol tcp ct state new, untracked meter ratemeter { ip saddr timeout 5m limit rate over 10/minute } drop
timeout 5m
매개변수는 미터가 오래된 항목으로 채워지지 않도록 5분 후에nftables
가 자동으로 항목을 제거하도록 정의합니다.
검증
미터 콘텐츠를 표시하려면 다음을 입력합니다.
# nft list meter ip filter ratemeter table ip filter { meter ratemeter { type ipv4_addr size 65535 flags dynamic,timeout elements = { 192.0.2.1 limit rate over 10/minute timeout 5m expires 4m58s224ms } } }