Ich habe eine Topologie, in der ein Linux als Router zwei Linux-Systeme verbindet, und ich möchte iptables verwenden, um SSH und HTTP in eine Richtung zu filtern. Ich habe den folgenden Code verwendet, aber er hat nicht funktioniert! Ich bin für jede Hilfe, die Sie mir geben können, wirklich dankbar.
iptables -A FORWARD -i ens33 -o ens38 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i ens38 -o ens33 -p tcp --sport 80 -j ACCEPT
iptables -A FORWARD -i ens38 -o ens33 -p tcp --dport 80 -j DROP
Antwort1
Ihr Skript sollte für http funktionieren, ist aber nicht wirklich gut. Ich würde so etwas verwenden:
IPTABLE=/sbin/iptables
$IPTABLE -P INPUT ACCEPT
$IPTABLE -P FORWARD DROP
$IPTABLE -P OUTPUT ACCEPT
$IPTABLE -F
$IPTABLE -X
$IPTABLE -F -t nat
$IPTABLE -X -t nat
$IPTABLE -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#http
$IPTABLE -A FORWARD -i ens33 -o ens38 -p tcp --dport 80 -j ACCEPT
#https
$IPTABLE -A FORWARD -i ens33 -o ens38 -p tcp --dport 443 -j ACCEPT
# ssh
$IPTABLE -A FORWARD -i ens33 -o ens38 -p tcp --dport 22 -j ACCEPT
# icmp
$IPTABLE -A FORWARD -p icmp -j ACCEPT
Sobald die Regeln funktionieren, empfehle ich ein iptables-save > /etc/iptables/rules.v4
. Mit dem iptables-persistent
Paket werden die Regeln beim Booten geladen.
Zusätzlich zu den iptables-Regeln benötigen Sie
- IP-Weiterleitung auf Ihrem Gateway aktiviert.
- eine Route für das externe Netzwerk auf Ihrem internen Host
- eine Route für das interne Netzwerk auf Ihrem externen Host