# Script zum Konfigurieren der Firewall Regeln (Firewall ohne DMZ) # ---------------------------------------------------------------- IP_INTERN=192.168.1.2 IP_EXTERN=190.0.0.11 NET_INTERN=192.168.1.0/24 NET_EXTERN=190.0.0.10/29 DEV_INTERN=eth2 DEV_EXTERN=eth1 IP_MAIL=192.168.1.100 IP_ANY=0.0.0.0/0 # Masquerade-Module fuer aktives FTP, IRC, Real Audio etc. laden insmod ip_masq_ftp insmod ip_masq_irc insmod ip_masq_quake insmod ip_masq_vdolive insmod ip_masq_cuseeme insmod ip_masq_raudio # Bestehende Regeln loeschen ipchains -F input ipchains -F output ipchains -F forward # Default Policy setzen ipchains -P input DENY ipchains -P output ACCEPT ipchains -P forward MASQ # Packete mit illegalen Adressen sperren und protokollieren ipchains -A input -s $IP_EXTERN -i $DEV_EXTERN -p all -l -j DENY ipchains -A input -s 127.0.0.1 -i $DEV_EXTERN -p all -l -j DENY ipchains -A input -s 10.0.0.0/8 -i $DEV_EXTERN -p all -l -j DENY ipchains -A input -s 172.16.0.0/12 -i $DEV_EXTERN -p all -l -j DENY ipchains -A input -s 192.168.0.0/16 -i $DEV_EXTERN -p all -l -j DENY ipchains -A input -s $IP_ANY -d 192.168.0.0/16 -i $DEV_EXTERN -p all -l -j DENY # Voller Zugriff nach Aussen vom internen Netzwerk ipchains -A input -s $NET_INTERN -d $IP_ANY -i $DEV_INTERN -p all -j ACCEPT # Erlaubte Verbindungen an den Firewall # DNS erlauben (Zonentransfer und Direktabfragen externer DNS von intern erlauben) ipchains -A input -s $IP_ANY -d $IP_EXTERN 53 -i $DEV_EXTERN -p udp -j ACCEPT ipchains -A input -s $IP_ANY -d $IP_EXTERN 53 -i $DEV_EXTERN -p tcp -j ACCEPT # SSH erlauben ipchains -A input -s $IP_ANY -d $IP_EXTERN 22 -i $DEV_EXTERN -p tcp -j ACCEPT # MAIL erlauben (SMTP=25; POP3=110; IMAP4=143) ipchains -A input -s $IP_ANY -d $IP_EXTERN 25 -i $DEV_EXTERN -p tcp -j ACCEPT ipchains -A input -s $IP_ANY -d $IP_EXTERN 110 -i $DEV_EXTERN -p tcp -j ACCEPT ipchains -A input -s $IP_ANY -d $IP_EXTERN 143 -i $DEV_EXTERN -p tcp -j ACCEPT # FTP erlauben ipchains -A input -s $IP_ANY 20 -d $IP_EXTERN 1024: -i $DEV_EXTERN -p tcp -j ACCEPT # Firewall akzeptiert nur bestimmte ICMP-Meldungen; ICMP Requests und Antworten erlauben vom internen LAN aus ipchains -A input -s $IP_ANY -d $IP_EXTERN -i $DEV_EXTERN -p icmp -j ACCEPT ipchains -A output -s $IP_EXTERN -d $IP_ANY -i $DEV_EXTERN -p icmp --icmp-type echo-request -j ACCEPT ipchains -A output -s $IP_EXTERN -d $IP_ANY -i $DEV_EXTERN -p icmp --icmp-type timestamp-request -j ACCEPT ipchains -A output -s $IP_EXTERN -d $IP_ANY -i $DEV_EXTERN -p icmp --icmp-type address-mask-request -j ACCEPT ipchains -A output -s $IP_EXTERN -d $IP_ANY -i $DEV_EXTERN -p icmp --icmp-type destination-unreachable -j ACCEPT ipchains -A output -s $IP_EXTERN -d $IP_ANY -i $DEV_EXTERN -p icmp -j DENY # Kommunikation ueber Loopback-device erlauben (Siehe c't-Artikel fuer Details) ipchains -A input -i lo -j ACCEPT # Alle UDP-Packete ab 1024 an den Firewall erlauben (exklusive X-Server) ipchains -A input -s $IP_ANY -d $IP_EXTERN 1024:5999 -i $DEV_EXTERN -p udp -j ACCEPT ipchains -A input -s $IP_ANY -d $IP_EXTERN 6011:65535 -i $DEV_EXTERN -p udp -j ACCEPT # Alle TCP-Acknowledgement Pakete erlauben (exklusive X-Server) ipchains -A input -s $IP_ANY -d $IP_EXTERN 0:5999 -i $DEV_EXTERN -p tcp ! -y -j ACCEPT ipchains -A input -s $IP_ANY -d $IP_EXTERN 6011:65535 -i $DEV_EXTERN -p tcp ! -y -j ACCEPT # Alle abgewiesenen Pakete protokollieren (var/log/messages) # ipchains -A input -l # Bestehende Portforwarding-Regeln loeschen ipmasqadm portfw -f # Port Forwarding fuer Email ipmasqadm portfw -a -P tcp -L $IP_EXTERN 25 -R $IP_MAIL 25 ipmasqadm portfw -a -P tcp -L $IP_EXTERN 110 -R $IP_MAIL 110 ipmasqadm portfw -a -P tcp -L $IP_EXTERN 143 -R $IP_MAIL 143 # Regeln und weitergeleitete Ports anzeigen ipchains -L -n ipmasqadm portfw -l -n