Das Firewall-Script
#!/bin/bash EXTERN_INTERFACE=eth0 # Unsere Netzschnittstelle LOOP_INTERFACE=lo # Das Loopback Interface IPADDR=10.230.1.100 # Unsere IP-Adresse ANYWHERE=any/0 # Jede Adresse im Netz MYNET=10.230.1.0/24 # Unsere Netzadresse UNPRIVPORTS=1024:65535 # Die unprivilegierten Ports # Löschen aller Regeln ipchains -F # Grund-Policies setzen ipchains -P input DENY ipchains -P output DENY ipchains -P forward DENY # Loopback Interface grundsätzlich freigeben ipchains -A input -i $LOOP_INTERFACE -j ACCEPT ipchains -A output -i $LOOP_INTERFACE -j ACCEPT # ICMP grundsätzlich erlauben ipchains -A input -i $EXTERN_INTERFACE -p icmp -j ACCEPT ipchains -A output -i $EXTERN_INTERFACE -p icmp -j ACCEPT # DNS Zugriff (UDP Port 53) für alle freigeben ipchains -A output -i $EXTERN_INTERFACE -p udp\ -s $IPADDR $UNPRIVPORTS \ -d $ANYWHERE 53 -j ACCEPT ipchains -A input -i $EXTERN_INTERFACE -p udp\ -s $ANYWHERE 53 \ -d $IPADDR $UNPRIVPORTS -j ACCEPT # HTTP ipchains -A output -i $EXTERN_INTERFACE -p tcp\ -s $IPADDR $UNPRIVPORTS \ -d $ANYWHERE 80 -j ACCEPT ipchains -A input -i $EXTERN_INTERFACE -p tcp ! -y\ -s $ANYWHERE 80 \ -d $IPADDR $UNPRIVPORTS -j ACCEPT # HTTP mit SSL ipchains -A output -i $EXTERN_INTERFACE -p tcp\ -s $IPADDR $UNPRIVPORTS \ -d $ANYWHERE 443 -j ACCEPT ipchains -A input -i $EXTERN_INTERFACE -p tcp ! -y\ -s $ANYWHERE 443 \ -d $IPADDR $UNPRIVPORTS -j ACCEPT # Lokaler HTTP-Server bedient Webclients im lokalen Netz ipchains -A input -i $EXTERN_INTERFACE -p tcp\ -s $MYNET $UNPRIVPORTS \ -d $IPADDR 80 -j ACCEPT ipchains -A output -i $EXTERN_INTERFACE -p tcp ! -y\ -s $IPADDR 80 \ -d $MYNET $UNPRIVPORTS -j ACCEPT # Lokaler FTP-Client an fremden Server ipchains -A output -i $EXTERN_INTERFACE -p tcp \ -s $IPADDR $UNPRIVPORTS\ -d $ANYWHERE 21 -j ACCEPT ipchains -A input -i $EXTERN_INTERFACE -p tcp ! -y \ -s $ANYWHERE 21\ -d $IPADDR $UNPRIVPORTS -j ACCEPT ipchains -A input -i $EXTERN_INTERFACE -p tcp\ -s $ANYWHERE 20\ -d $IPADDR $UNPRIVPORTS -j ACCEPT ipchains -A output -i $EXTERN_INTERFACE -p tcp ! -y\ -s $IPADDR $UNPRIVPORTS\ -d $ANYWHERE 20 -j ACCEPT ipchains -A output -i $EXTERN_INTERFACE -p tcp\ -s $IPADDR $UNPRIVPORTS\ -d $ANYWHERE $UNPRIVPORTS -j ACCEPT ipchains -A input -i $EXTERN_INTERFACE -p tcp ! -y\ -s $ANYWHERE $UNPRIVPORTS\ -d $IPADDR $UNPRIVPORTS -j ACCEPT