iptables에는 중복 규칙 매개변수가 필요합니까?

iptables에는 중복 규칙 매개변수가 필요합니까?

iptables에 SSH 규칙이 필요하다고 가정해 보겠습니다. 그러나 우리는 또한 모든 규칙에 대해 다른 체인을 지정하고 싶습니다. 우리는 다음과 같은 것을 사용할 수 있습니다:

iptables -t filter -N ssh
iptables -t filter -N tcp
iptables -t filter -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j tcp
iptables -t filter -A tcp -p tcp --dport 22 -m conntrack --ctstate NEW -j ssh
iptables -t filter -A ssh -p tcp --dport 22 -m conntrack --ctstate NEW -s 10.10.10.10/32 -m mac --mac-source 10:10:10:10:10:10 -j ACCEPT
iptables -t filter -A ssh -p tcp --dport 22 -m conntrack --ctstate NEW -s 11.11.11.11/32 -m mac --mac-source 11:11:11:11:11:11 -j ACCEPT

모든 규칙에 모든 옵션을 지정해야 합니까, 아니면 하위 체인에서는 생략할 수 있습니까? 예를 들어 최종 SSH 규칙은 다음과 같습니다.

iptables -t filter -A ssh -s 10.10.10.10/32 -m mac --mac-source 10:10:10:10:10:10 -j ACCEPT
iptables -t filter -A ssh -s 11.11.11.11/32 -m mac --mac-source 11:11:11:11:11:11 -j ACCEPT

답변1

이를 방지하려면 새 체인이 필요합니다.

iptables -N sshgroup1
# or reset with iptables -F sshgroup1 if it already exists
iptables -t filter -A ssh -s 10.10.10.10/32 -m mac \
  --mac-source 10:10:10:10:10:10 -j sshgroup1
iptables -t filter -A sshgroup1 ... -j ACCEPT
iptables -t filter -A sshgroup1 ... -j ACCEPT

답변2

LAN에 있는 두 호스트 사이의 SSH 연결만 허용하려면 이 규칙을 맨 위에 두어 iptables가 더 빠르게 실행되도록 해야 합니다.

iptables -I INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -s 10.10.10.10/32 -m mac --mac-source 10:10:10:10:10:10 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -s 11.11.11.11/32 -m mac --mac-source 11:11:11:11:11:11 -j ACCEPT

그렇지 않은 경우 네트워크, 정책 및 트래픽에 따라 다양한 조합이 있습니다.

경험 법칙: 더 빠른 성능을 위해 중복 규칙을 피하고 일치 수준을 최소화하십시오.

관련 정보