Netfilter

Linux: Firewall Iptables v příkladech

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