iptables 문자열 규칙을 nftables로 변환

iptables 문자열 규칙을 nftables로 변환

규칙을 iptable에서 nftable로 마이그레이션하고 있습니다.iptable에서 nftable로 마이그레이션

현재 여러 IP 및 포트 차단 규칙과 문자열 기반 iptable 규칙이 있지만 내장된 iptable 변환 규칙을 사용하여 규칙을 iptable에서 nftable로 변환할 수 있었지만 iptable의 문자열 기반 규칙은 nftables로 변환됩니다. 댓글을 작성하세요. 아래는 번역된 nftable 규칙입니다.

    add rule ip filter INPUT tcp dport 1024-65535 counter accept
    add rule ip filter INPUT udp dport 1024-65535 counter accept
   65535 -j DROP
    # -t filter -A INPUT -p udp -m udp --dport 234 -m string --string abc.exe --algo bm --to 65535 -j DROP
    # -t filter -A INPUT -p udp -m udp --dport 234 -m string --string def.exe --algo bm --to 65535 -j DROP
    # -t filter -A INPUT -p udp -m udp --dport 234 -m string --string hij.exe --algo bm --to 65535 -j DROP
    add rule ip filter INPUT icmp type echo-reply ct state new,related,established  counter accept
    add rule ip filter INPUT icmp type echo-request ct state new,related,established  counter accept
    add rule ip filter INPUT icmp type destination-unreachable ct state new,related,established  counter accept
    add rule ip filter INPUT icmp type time-exceeded ct state new,related,established  counter accept

문자열 기반 iptable 규칙을 nftable 규칙으로 변환하는 방법과 위와 같이 실패할 경우 어떤 로그를 참조해야 하는지에 대한 도움이 필요합니다.

답변1

가지다지금은 아무것도 없다 nftables와 동일, 이것일치하는 항목은 현재 지원되지 않는 확장 프로그램 목록에 있습니다. 이러한 지원되지 않는 모든 확장(및 아마도 지원되는 일부 확장)은 다음으로 변환되지 않습니다.nftables왜냐하면 그들은nftables바이트코드( nft -a --debug=netlink list ruleset바이트코드를 살펴보세요)도 커널에서 기본적으로 구현되지 않습니다.nftables모듈이므로 번역 도구는 시도조차 하지 않습니다.

프로토콜에 대해 더 많이 알고 있다면 다음에서 문자열을 찾을 수 있을 것으로 예상할 수 있습니다.안정적인패킷의 위치에는 사용할 수 있는 해결 방법이 있습니다.원래 하중 표현그리고거기 예.

그렇지 않으면 섞을 수 있습니다nftables그리고iptables(포함하다iptables-nft) 규칙에 따라 다른 테이블 이름을 사용하는 한nftables아니iptables-nft(아마도 사용 중일 것입니다). 현재 단계적으로 폐지할 계획은 없습니다.iptables(적어도iptables-nft다음과 같은 다양한 xtables 모듈을 사용하여 구현이 완벽하게 가능합니다.).

테이블은 여기에서 선택되므로 t테이블과 충돌하지 않습니다 filter.nftablesc_in우선순위가 10인 입력 체인(임의로 호출됨)을 가져옵니다.iptables동일한 위치에 매달려 있는 INPUT 체인은 먼저 고정된 우선순위 레벨 0을 가집니다. 우선순위를 0으로 두면 체인(iptables' 또는nftables')가 먼저 실행됩니다. 테이블 간의 삭제/수락 규칙은 중요하지 않습니다. 정말 중요한 경우는 여기처럼 규칙을 분할할 때(그러나 이 특정 경우에는 순서가 특별한 것이 아니므로 중요하지 않습니다), 규칙이나 부작용이 있는 규칙을 변경할 때입니다.nftables 놓다또는iptables동반자IP 세트그런 다음 패킷을 삭제하는 것은 패킷을 먼저 삭제한 다음 아무것도 삭제하지 않는 것과 다릅니다.

nft add table ip t
nft add chain ip t c_in '{ type filter hook input priority 10; policy accept; }'

nft add rule ip t c_in tcp dport 1024-65535 counter accept
nft add rule ip t c_in udp dport 1024-65535 counter accept
nft add rule ip t c_in icmp type echo-reply ct state new,related,established  counter accept
nft add rule ip t c_in icmp type echo-request ct state new,related,established  counter accept
nft add rule ip t c_in icmp type destination-unreachable ct state new,related,established  counter accept
nft add rule ip t c_in icmp type time-exceeded ct state new,related,established  counter accept

iptables -t filter -A INPUT -p udp -m udp --dport 234 -m string --string abc.exe --algo bm --to 65535 -j DROP
iptables -t filter -A INPUT -p udp -m udp --dport 234 -m string --string def.exe --algo bm --to 65535 -j DROP
iptables -t filter -A INPUT -p udp -m udp --dport 234 -m string --string hij.exe --algo bm --to 65535 -j DROP

죄송합니다. 어떻게 해야 할지 모르겠습니다.

   65535 -j DROP

이는 도구 부분의 오타나 번역 오류인 것 같습니다.

두 세계 사이에 상호 작용이 필요한 경우 다음을 사용하여 "메시지"를 전달할 수 있습니다.분수. 이 경우 우선순위가 중요합니다. 예를 들어, Put 작업이 다음에서만 수행될 수 있는 경우nftables규칙 관리상의 이유로 이를 대신 사용할 수 있습니다.iptables'필터/입력이 우선합니다.nftables여기에는 없어요:

iptables -t filter -A INPUT -p udp -m udp --dport 234 -m string --string abc.exe --algo bm --to 65535 -j MARK --set-mark 0xdead
iptables -t filter -A INPUT -p udp -m udp --dport 234 -m string --string def.exe --algo bm --to 65535 -j MARK --set-mark 0xdead
iptables -t filter -A INPUT -p udp -m udp --dport 234 -m string --string hij.exe --algo bm --to 65535 -j MARK --set-mark 0xdead

그리고 이것을 삽입하세요nftables규칙 이전의 단락 규칙이 ...established...여기에 있습니다.처음에 규칙은 다음과 같습니다.

nft add ip t c_in meta mark 0xdead drop

관련 정보