Einfache Firewall für Rootserver mit iptables Für alle Linux Destributionen

#!/bin/sh -e

#ROOTSERVER IP
ROOTSERVER="10.23.45.10"

#Chains flushen und Chains löschen
 iptables -F
 iptables -X
 
 # Erstmal alles in die Tonne
 iptables -P INPUT DROP
 iptables -P OUTPUT DROP
 iptables -P FORWARD DROP
 
 # Drop to Log
 iptables -N block_in
 iptables -A block_in -j LOG --log-prefix "FW DROP IN: " --log-level info
 iptables -A block_in -j DROP
 iptables -N block_out
 iptables -A block_out -j LOG --log-prefix "FW DROP OUT: " --log-level info
 iptables -A block_out -j DROP
 
 # Incoming Traffic (normal)
 iptables -N allow_in
 # Outgoing Traffic (normal)
 iptables -N allow_out
 
 # Incoming Traffic (special)
 iptables -N special_in
 # Outgoing Traffic (special)
 iptables -N special_out
 
 # Loopback
 iptables -A INPUT -i lo -j ACCEPT
 iptables -A OUTPUT -o lo -j ACCEPT
 
 # DHCP Client weil Rootie IP von DHCP bekommt
 iptables -A INPUT -i eth0 -p udp --dport 67:68 --sport 67:68 -j ACCEPT
 iptables -A OUTPUT -o eth0 -p udp --dport 67:68 --sport 67:68 -j ACCEPT
 
 #################################################################
 ### Incoming Traffic
 #################################################################
 #ICMP Allow
 iptables -A allow_in -d $ROOTSERVER -p icmp --icmp-type echo-request -j ACCEPT
 iptables -A allow_in -d $ROOTSERVER -p icmp --icmp-type echo-reply -j ACCEPT
 iptables -A allow_in -d $ROOTSERVER -p icmp --icmp-type destination-unreachable -j ACCEPT
 
 #Apache / Pound(SSL)
 iptables -A allow_in -d $ROOTSERVER -p tcp --dport 80 -j ACCEPT
 #SSL
 iptables -A allow_in -d $ROOTSERVER -p tcp --dport 443 -j ACCEPT
 
 #Exim SMTP (SSL) / Courier POP3/IMAP (SSL)
 iptables -A allow_in -d $ROOTSERVER -p tcp --dport 25 -j ACCEPT
 iptables -A allow_in -d $ROOTSERVER -p tcp --dport 110 -j ACCEPT
 iptables -A allow_in -d $ROOTSERVER -p tcp --dport 143 -j ACCEPT
 # SSL
 iptables -A allow_in -d $ROOTSERVER -p tcp --dport 993 -j ACCEPT
 iptables -A allow_in -d $ROOTSERVER -p tcp --dport 995 -j ACCEPT
 
 #PowerDNS
 iptables -A allow_in -d $ROOTSERVER -p udp --dport 53 -j ACCEPT
 
 
 #Serververkehr der reingeht
 iptables -A allow_in -d $ROOTSERVER -p udp --sport 53 -j ACCEPT
 iptables -A allow_in -d $ROOTSERVER -p tcp --sport 25 -j ACCEPT
 iptables -A allow_in -d $ROOTSERVER -p tcp --sport 80 -j ACCEPT
 iptables -A allow_in -d $ROOTSERVER -p tcp --sport 443 -j ACCEPT
 iptables -A allow_in -d $ROOTSERVER -p tcp --sport 22 -j ACCEPT
 
 
 #################################################################
 #################################################################
 
 
 #################################################################
### Outgoing Traffic
#################################################################
 
 # ICMP Allow
 iptables -A allow_out -s $ROOTSERVER -p icmp --icmp-type echo-reply -j ACCEPT
 iptables -A allow_out -s $ROOTSERVER -p icmp --icmp-type echo-request -j ACCEPT
 iptables -A allow_out -s $ROOTSERVER -p icmp --icmp-type destination-unreachable -j ACCEPT
 
 
 # Apache / Pound
 iptables -A allow_out -s $ROOTSERVER -p tcp --sport 80 -j ACCEPT
 # SSL (nicht sicher)
 iptables -A allow_out -s $ROOTSERVER -p tcp --sport 443 -j ACCEPT
 
 #Exim SMTP (SSL) / Courier POP3/IMAP (SSL)
 iptables -A allow_out -s $ROOTSERVER -p tcp --sport 25 -j ACCEPT
 iptables -A allow_out -s $ROOTSERVER -p tcp --sport 110 -j ACCEPT
 iptables -A allow_out -s $ROOTSERVER -p tcp --sport 143 -j ACCEPT
 #SSL
 iptables -A allow_out -s $ROOTSERVER -p tcp --sport 993 -j ACCEPT
 iptables -A allow_out -s $ROOTSERVER -p tcp --sport 995 -j ACCEPT
 
 #PowerDNS
 iptables -A allow_out -s $ROOTSERVER -p udp --sport 53 -j ACCEPT
 
 
 #Serververkehr der rausgeht
 iptables -A allow_out -s $ROOTSERVER -p udp --dport 53 -j ACCEPT
 iptables -A allow_out -s $ROOTSERVER -p tcp --dport 25 -j ACCEPT
 iptables -A allow_out -s $ROOTSERVER -p tcp --dport 80 -j ACCEPT
 iptables -A allow_out -s $ROOTSERVER -p tcp --dport 443 -j ACCEPT
 iptables -A allow_out -s $ROOTSERVER -p tcp --dport 22 -j ACCEPT
  #################################################################

#################################################################
### Rules
#################################################################
 ## Incoming Traffic
 iptables -A INPUT -j allow_in
 iptables -A INPUT -j special_in
 iptables -A INPUT -j block_in
 
 ## Outgoing Traffic
 iptables -A OUTPUT -j allow_out
 iptables -A OUTPUT -j special_out
 iptables -A OUTPUT -j block_out


One thought on “Rootserver Firewall mit iptables”

  1. Denjenigen, die per SSH auf den Server zugreifen, sei folgende Zeile ans Herz gelegt:
    iptables -A allow_in -d $ROOTSERVER -p tcp –dport 22 -j ACCEPT

    Gruß,
    Malte

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*