Zcela bez komentáře, linux firewall iptables v pár jednoduchých příkladech.
firewall status
# iptables -L -n -v
# iptables -n -L -v --line-numbers # iptables -L INPUT -n -v # iptables -L OUTPUT -n -v --line-numbers
Smazání všech pravidel (-F), chainu(-X), výchozí politika chainu(-P)
# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
# iptables -t mangle -F
# iptables -t mangle -X
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEP
# iptables -P INPUT DROP
# iptables -P OUTPUT DROP
# iptables -P FORWARD DROP
Insert a delete pravidel
# iptables -L INPUT -n --line-numbers # iptables -I INPUT 10 -s 192.168.0.0/16 -j DROP # iptables -L INPUT -n --line-numbers # iptables -D INPUT 10 # iptables -D INPUT -s 192.168.0.0/16 -j DROP
Zahodit veškerý příchozí trafik i předávaní mezi rozhraním (forward), povolit pouze odchozí (ze stroje)
# iptables -P INPUT DROP
# iptables -P FORWARD DROP
# iptables -P OUTPUT ACCEPT
# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
Zahození privátních rozsahů na rozhraní do internetu (eth0)
# iptables -A INPUT -i eth0 -s 10.0.0.0/8 -j DROP
# iptables -A INPUT -i eth0 -s 172.16.0.0/12 -j DROP
# iptables -A INPUT -i eth0 -s 192.16.0.0/16 -j DROP
# iptables -A INPUT -i eth0 -s 224.0.0.0/4 -j DROP
# iptables -A INPUT -i eth0 -s 240.0.0.0/5 -j DROP
# iptables -A INPUT -i eth0 -s 127.0.0.0/8 -j DROP
- 10.0.0.0/8 -j (A
- 172.16.0.0/12 (B)
- 192.168.0.0/16 (C)
- 224.0.0.0/4 (MULTICAST D)
- 240.0.0.0/5 (E)
- 127.0.0.0/8 (LOOPBACK)
Blokovaní příchozí, odchozí adresy, rozsahu, portu
# iptables -A INPUT -s 1.2.3.4 -j DROP # iptables -A INPUT -s 192.168.0.0/24 -j DROP # iptables -A INPUT -p tcp --dport 80 -j DROP # iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP # iptables -A OUTPUT -d 1.2.3.4 -j DROP # iptables -A OUTPUT -d 192.168.1.0/24 -j DROP # iptables -A OUTPUT -o eth1 -d 192.168.1.0/24 -j DROP
Logování, burst a drop
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix "IP_SPOOF A: " # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix "IP_SPOOF A: " # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
Zahození podle MAC
# iptables -A INPUT -m mac --mac-source d4:3d:7e:27:79:fc -j DROP
Blokování/povolení ICMP echo request/reply (ping)
# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP # iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP # iptables -A INPUT -s 192.168.1.0/24 -p icmp --icmp-type echo-request -j ACCEPT # iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
Otevření skupiny(rozsahu) portů
# iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:7010 -j ACCEPT
Manipulace s rozsahem adres
# iptables -A INPUT -p tcp --destination-port 80 -m iprange --src-range 192.168.1.100-192.168.1.200 -j ACCEPT
Povolení služeb
## ssh tcp port 22 ## iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT ## CUPS (tisk pouze z LAN) ## iptables -A INPUT -s 192.168.1.0/24 -p udp -m udp --dport 631 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT ## NTP ## iptables -A INPUT -m state --state NEW -p udp --dport 123 -j ACCEPT ## SMTP ## iptables -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT # DNS ## iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT ## http/https (Apache) ## iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT ## POP3 ## iptables -A INPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT ## IMAP ## iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT ## Samba (pouze z LAN) ## iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 137 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 138 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 139 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 445 -j ACCEPT ## PROXY (pouze z LAN) ## iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 3128 -j ACCEPT ## mysql ## iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
Omezení počtu paralelních spojení (SSH 3 spojení z jedné IP adresy, HTTP 80 spojení z adres resp. seskupenou pod /24 IPv4 masku hosta)
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT # iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j DROP
František Havel