Rootserver Firewall mit iptables

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


1 Gedanke zu „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

    Antworten

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Wir benutzen Cookies um die Nutzerfreundlichkeit der Webseite zu verbessen. Durch Deinen Besuch stimmst Du dem zu.