Linux Server - Firewall

> Linux Server - Firewall

> > # 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