Nehmen wir an, wir brauchen einige SSH-Regeln in iptables. Wir möchten aber auch eine andere Kette für alle Regeln angeben. Wir könnten so etwas verwenden:
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
Müssen wir in jeder Regel alle Optionen angeben oder kann dies in den unteren Ketten weggelassen werden? Die endgültigen SSH-Regeln könnten beispielsweise so aussehen:
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
Antwort1
Wenn du das vermeiden willst, dann brauchst du eine neue Kette:
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
Antwort2
Wenn Sie SSH-Verbindungen nur von zwei Hosts in Ihrem LAN zulassen möchten, sollten Sie diese Regel ganz oben behalten, damit iptables schneller arbeitet.
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
Ansonsten gibt es je nach Netzwerk, Richtlinien und Datenverkehr viele Kombinationen.
Die Faustregel lautet: Vermeiden Sie Wiederholungen der Regeln und minimieren Sie den Übereinstimmungsgrad für eine schnellere Leistung.