watch -d iptables -nvL --line-numbers
iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -F iptables -X
iptables -t nat -F iptables -t nat -X
| table | command | chain | rule-specification | target | |||
|---|---|---|---|---|---|---|---|
| -t filter | -A | INPUT | -s | -j | ACCEPT | ||
| -C | OUTPUT | -d | DROP | ||||
| -D | FORWARD | -i | REJECT | ||||
| -I | -o | LOG | |||||
| -R | |||||||
| -t nat | -L | PREROUTING | -p | udp | --dport | -j | SNAT |
| -S | OUTPUT | --sport | DNAT | ||||
| -F | POSTROUTING | tcp | --dport | MASQUERADE | |||
| -Z | --sport |
||||||
| -t mangle | -N | PREROUTING | icmp | --icmp-type |
|||
| -X | OUTPUT | ||||||
| -P | INPUT | -m | conntrack | --ctstate |
|||
| -E | POSTROUTING | ||||||
Paket: iptables-services
/etc/init.d/iptables save
speichert die aktuell aktiven iptables-Regeln in der Datei /etc/sysconfig/iptables. Beim Booten werden sie hier wieder ausgelesen.
wie SuSE, oder firewalld nutzen
SuSE setzt auf eine eigene, iptables-basierte Firewall. Wer volle Kontrolle über die verwendeten iptables-Regeln haben möchte, deaktiviert sie besser:
chkconfig SuSEfirewall2_init off chkconfig SuSEfirewall2_setup off
Ein einfaches Beispiel für ein Startskript könnte so aussehen: 2)
/etc/init.d/iptables:
#!/bin/bash
case $1 in
start)
iptables-restore /etc/sysconfig/iptables
;;
stop)
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -X
;;
restart)
$0 stop
$0 start
;;
save)
iptables-save > /etc/sysconfig/iptables
;;
*)
echo Hä?
;;
esac
Bei Debian gibt es mehrere 3) Möglichkeiten, iptables zu starten.
Ein einfaches Beispiel für ein Startskript könnte so aussehen:
/etc/init.d/iptables:
#!/bin/bash
case $1 in
start)
iptables-restore /etc/defaults/iptables
;;
stop)
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -X
;;
restart)
$0 stop
$0 start
;;
save)
iptables-save > /etc/defaults/iptables
;;
*)
echo usage: $0 [start] [stop] [restart] [save]
;;
esac
Und so wird es aktiviert:
update-rc.d iptables start 40 S . stop 89 0 6 .
Alternativ:
/etc/network/interfaces :
auto eth0 iface eth0 inet dhcp up sh -c 'iptables-restore < /etc/iptables'
/etc/sysctl.conf:
net.ipv4.ip_forward=1 net.ipv4.conf.default.rp_filter=1 net.ipv4.conf.all.rp_filter=1
Script:
#!/bin/bash ext_dev="eth0" ext_ip="212.202.240.174" int_dev="eth1" int_ip="192.168.1.1" dmz_dev="eth2" http_proxy=10.0.0.4 smpt_proxy=10.0.0.5 webserver=10.0.0.6 modprobe ip_nat_ftp modprobe ip_conntrack_ftp iptables -N proxy iptables -N dmz iptables -N icmp iptables -P FORWARD DROP iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -i $int_dev -m state --state NEW -j proxy iptables -A FORWARD -i $ext_dev -m state --state NEW -j dmz iptables -A FORWARD -p icmp -j icmp iptables -A FORWARD -m limit -j LOG --log-prefix "FORWARD DROP" iptables -A proxy -p tcp --dport 3128 -d $http_proxy -j ACCEPT iptables -A proxy -p tcp --dport 25 -d $smtp_proxy -j ACCEPT iptables -A proxy -m limit -j LOG --log-prefix "proxy DROP" iptables -A proxy -j REJECT iptables -A dmz -p tcp --dport 80 -d $webserver -j ACCEPT iptables -A dmz -m limit -j LOG --log-prefix "dmz DROP" iptables -A dmz -j REJECT iptables -A icmp -p icmp --type echo-reply -j ACCEPT iptables -A icmp -p icmp --type echo-request -j ACCEPT iptables -t nat -A POSTROUTING -o $ext_dev -j MASQUERADE iptables -t nat -A PREROUTING -i $ext_dev -p tcp --dport 80 -d $ext_ip -j DNAT --to-destination $webserver
iptables Kurzanleitung:
iptables -h
Hilfe zu einem bestimmten Protokoll / Teilbereich:
iptables -p icmp -h