Red Hat Enterprise Linux 8 환경에서 nftables을 사용하는 경우 iptables 규칙을 생성하는 과정에서 예상치 못한 동작이 발생할 수 있습니다. 이 문제는 잠재적인 버그로 식별되며 의도하지 않은 “모두 허용” 규칙이 생성됩니다. 이 문제를 살펴보고 버그가 해결될 때까지 일시적인 해결책을 제시합니다
iptables-translate-restore 문제 설명
iptable 규칙을 nftables로 생성하는 과정에서 특정 규칙이 버그를 유발하여 의도하지 않은 결과물이 생성될 수 있습니다. 문제가 되는 규칙은 다음과 같습니다.
-A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
이 규칙을 번역하면 nftables에서 의도하지 않은 “모두 허용” 규칙이 생성됩니다.
# 원본 iptables 규칙:
-A INPUT -p icmp -m icmp –icmp-type any -j ACCEPT
# iptables-restore-translate의 잘못된 변환:
add rule ip filter INPUT counter accept
cat test_ruleset.txt
*filter
:INPUT ACCEPT
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
Results in:
# iptables-restore-translate -f test_ruleset.txt
# Translated by iptables-restore-translate v1.8.4 on Fri Oct 28 12:50:28 2023
add table ip filter
add chain ip filter INPUT { type filter hook input priority 0; policy accept; }
add chain ip filter FORWARD { type filter hook forward priority 0; policy accept; }
add chain ip filter OUTPUT { type filter hook output priority 0; policy accept; }
add rule ip filter INPUT counter accept ←
iptables-translate-restore 해결 방법
영구적인 수정이 이루어질 때까지 이 문제를 해결하기 위해 해당 규칙을 더 구체적인 것으로 대체하는 것이 좋습니다. 권장하는 대체 규칙은 다음과 같습니다.
-A INPUT -p icmp -m icmp --icmp-type 5 -j ACCEPT
이 대체 규칙을 적용하면 의도치 않은 행동을 피하면서도 올바른 nftables 규칙이 생성됩니다.
iptables-translate-restore 변경 방법
권장하는 대체 방법을 적용한 후, 생성된 nftables 규칙은 다음과 같습니다.
# iptables-restore-translate -f test_ruleset.txt
# Translated by iptables-restore-translate v1.8.4 on Fri Oct 28 13:12:44 2023
add table ip filter
add chain ip filter INPUT { type filter hook input priority 0; policy accept; }
add chain ip filter FORWARD { type filter hook forward priority 0; policy accept; }
add chain ip filter OUTPUT { type filter hook output priority 0; policy accept; }
add rule ip filter INPUT icmp type redirect counter accept
nftables 소개
nftables은 Linux 커널의 새로운 패킷 필터링 및 NAT 프레임워크로서, iptables, ip6tables, arptables, ebtables 등과 같은 여러 도구들을 통합하고 향상시킨 것입니다. 이는 사용자에게 단일한 툴을 통해 모든 네트워크 관리 작업을 수행할 수 있는 편리함을 제공합니다.
nftables는 iptables와 호환되므로, 기존의 iptables 규칙을 nftables로 변환할 수 있습니다.
nftables는 다음과 같은 용도로 사용될 수 있습니다.
- 방화벽: 불필요한 패킷을 차단하여 시스템을 보호하는 데 사용됩니다.
- NAT: 패킷의 소스 IP 주소나 포트 번호를 변경하여 네트워크 주소 변환을 수행하는 데 사용됩니다.
- IPsec: IP 보안 계층을 구현하여 데이터를 암호화하고 인증하는 데 사용됩니다.
nftables는 리눅스 커널 5.0 이상에서 기본적으로 지원됩니다.
결론
iptables-translate-restore의 버그에 대한 영구적인 수정을 기다리는 동안 사용자들은 해당 규칙을 더 구체적인 것으로 대체함으로써 제시된 해결책을 사용할 수 있습니다. 이를 통해 의도하지 않은 “모두 허용” 행동 없이 nftables 규칙 생성 프로세스가 의도대로 진행됩니다. 이 문제는 버그가 해결될 때까지 일시적인 해결책을 제시합니다