#!/bin/sh # # firewalling TCP/IP firewalling + masquerading # # Light Edition, German Version for Red Hat Linux 6.2 # # (P) & (C) 2001 by Dr. Peter Bieringer # # Version: 2001-04-20 # # description: This script sets various firewall rules # # chkconfig: 2345 98 02 # # processname: firewalling # # Beispielkonfiguration beruht auf folgenden Daten: # Interne Schnittstelle: eth0 # Interne IPv4-Adresse: 192.168.1.1 # Internes Netzwerk: 192.168.1.0/24 # # Externe Schnittstellen: ppp+, ippp+ # Externe IPv4-Adresse: dynamisch zugewiesen # # Dieses Skript ist nur ein Demonstrationsbeispiel # und beim Autor nicht im produktiven Einsatz. # Eine Weiterentwicklung außer Fehlerbehebung wird es deshalb # nicht geben. # # Achtung: keine Garantie auf Schutzwirkung, zur Verifizierung mit # nmap deshalb von außerhalb testen! # ChangeLog: # 20010322: Spin-off von der Extended Edition, keine Verwendung von benutzerdefinierten Listen # 20010324: Review, Einschränkung der Ports # 20010325: Final review # 20010405: Fix ip_local_port_range # 20010417: Ändere RunLevel-Werte, damit Internetconnectivity vor dem Ausführen # des Skripts besteht (wg. DNS-Abfragen), Checke ip_local_port_range # 20010418: Wrapper für sysctl entfernt # 20010420: Hinweis für /etc/sysctl.conf war buggy (".." funktioniert nicht) ## Schalter OPTION_BASIC_ICMP="ja" OPTION_INTERN_DNS="ja" #OPTION_FORWARD_DMZ="ja" OPTION_MASQUERADE="ja" OPTION_MASQ_FTP="ja" OPTION_MASQ_FTP_ACTIVE="ja" OPTION_MASQ_PGP="ja" OPTION_MASQ_POP="ja" OPTION_MASQ_SMTP="ja" OPTION_MASQ_ICMP="ja" OPTION_BLOCK_TONLINE="ja" OPTION_WEBPROXY_FTP="ja" #OPTION_LOG_SYN_NACH_EXTERN="ja" # Source function library. . /etc/rc.d/init.d/functions # Get config. . /etc/sysconfig/network # Check that networking is up. if [ ${NETWORKING} = "no" ]; then exit 0 fi [ -x /sbin/ipchains ] || exit 1 [ -x /sbin/sysctl ] || exit 1 RETVAL=0 #set -x # Ausführen von ipchains, zeigt die Regel an, falls fehlerhaft ipchains() { rule="$*" #echo "$rule" /sbin/ipchains $rule if [ $? -gt 0 ]; then echo -e "\a Fehler in Regel: $rule" fi } # See how we were called. case "$1" in start) echo -n $"Starting firewallsetup: " # Setze Standardverhalten der eingebauten Filterlisten ipchains -P input DENY ipchains -P forward REJECT ipchains -P output REJECT # Aktiviere TCP-Syncookies sysctl -w net.ipv4.tcp_syncookies=1 # Reagiere nicht auf seltsame ICMP-Pakete sysctl -w net.ipv4.icmp_ignore_bogus_error_responses=1 # Reagiere nicht auf Pings an die Broadcastadresse sysctl -w net.ipv4.icmp_echo_ignore_broadcasts=1 # Setze Limits für die Aussenderate von ICMP-Paketen # in jiffies (auf Intel 1/100s) sysctl -w net.ipv4.icmp_destunreach_rate=100 sysctl -w net.ipv4.icmp_echoreply_rate=100 sysctl -w net.ipv4.icmp_paramprob_rate=100 sysctl -w net.ipv4.icmp_timeexceed_rate=100 # Deaktiviere globales IPv4 forwarding sysctl -w net.ipv4.ip_forward=0 # Checke Portbereich für ausgehende Pakete portstart="`sysctl net.ipv4.ip_local_port_range | awk '{ print $3 }'`" portende="`sysctl net.ipv4.ip_local_port_range | awk '{ print $4 }'`" if [ "$portstart" != "32768" -o "$portende" != "60099" ]; then echo "Firewalling benötigt eine spezielle Einstellung bzgl. der ip_local_port_range" >/dev/stderr echo " bitte folgende Zeilen in /etc/sysctl.conf einfügen und rebooten:" >/dev/stderr echo " # Ändere Portbereich für ausgehende Pakete" >/dev/stderr echo " net.ipv4.ip_local_port_range = 32768 60099" >/dev/stderr exit 1 fi # Defragmentiere immer sysctl -w net.ipv4.ip_always_defrag=1 # Diverse pro-Interface Schalter im Kernel aktivieren find /proc/sys/net/ipv4/conf/ -mindepth 1 -maxdepth 1 -type d | awk -F/ '{ print $NF}' | while read interface; do # Protokolliere Pakete mit unmöglichen IPv4-Adressen sysctl -w net.ipv4.conf.$interface.log_martians=1 # Nichtakzeptieren von IPv4 source routing sysctl -w net.ipv4.conf.$interface.accept_source_route=0 # Nichtakzeptieren von ICMP redirects sysctl -w net.ipv4.conf.$interface.accept_redirects=0 # Stelle Antispoofingfilter auf streng sysctl -w net.ipv4.conf.$interface.rp_filter=2 # Deaktiviere Weiterleitung von Paketen, die an dieser Schnittstelle eintreffen sysctl -w net.ipv4.conf.$interface.forwarding=0 done # # Broadcast-Pakete vom Logging ausnehmen # ipchains -N nobroad # ipchains -A nobroad -d 0.0.0.255/0.0.0.255 -j DENY # ipchains -A nobroad -d 0.0.255.255/0.0.255.255 -j DENY # ipchains -A nobroad -d 0.255.255.255/0.255.255.255 -j DENY # ipchains -A input -j nobroad # Loopback-Verkehr erlauben ipchains -A input -i lo -j ACCEPT ipchains -A output -i lo -j ACCEPT # Eigene Regeln ab hier if [ "$OPTION_LOG_SYN_NACH_EXTERN" = "ja" ]; then ipchains -A output -i ppp0 -p tcp -y -l fi # intern -> SSH auf Firewall ipchains -A input -i eth0 -p tcp -s 192.168.1.0/24 512: -d 192.168.1.1 22 -j ACCEPT # intern -> SSH auf Firewall (Antwort) ipchains -A output -i eth0 -p tcp -s 192.168.1.1 22 -d 192.168.1.0/24 512: ! -y -j ACCEPT # intern -> Webproxy auf Firewall + Antwort ipchains -A input -i eth0 -p tcp -s 192.168.1.0/24 1024: -d 192.168.1.1 3128 -j ACCEPT ipchains -A output -i eth0 -p tcp -s 192.168.1.1 3128 -d 192.168.1.0/24 1024: ! -y -j ACCEPT # Webproxy -> Internet (Port 80/HTTP) + Antwort ipchains -A output -i ppp0 -p tcp --sport 32768:60999 --dport 80 -j ACCEPT ipchains -A input -i ppp0 -p tcp --sport 80 --dport 32768:60999 ! -y -j ACCEPT # Webproxy -> Internet (Port 443/HTTPS) + Antwort ipchains -A output -i ppp0 -p tcp --sport 32768:60999 --dport 443 -j ACCEPT ipchains -A input -i ppp0 -p tcp --sport 443 --dport 32768:60999 ! -y -j ACCEPT if [ "$OPTION_WEBPROXY_FTP" = "ja" ]; then # Webproxy -> Internet (FTP:Kommandokanal) + Antwort ipchains -A output -i ppp0 -p tcp --sport 32768:60999 --dport 21 -j ACCEPT ipchains -A input -i ppp0 -p tcp --sport 21 --dport 32768:60999 ! -y -j ACCEPT # Webproxy -> Internet (FTP: passiver Datentransfer) + Antwort ipchains -A output -i ppp0 -p tcp --sport 32768:60999 --dport 1024: -j ACCEPT ipchains -A input -i ppp0 -p tcp --sport 1024: --dport 32768:60999 ! -y -j ACCEPT fi # DNS -> Internet (UDP) + Antwort ipchains -A output -i ppp0 -p udp --sport 32768:60999 --dport 53 -j ACCEPT ipchains -A input -i ppp0 -p udp --sport 53 --dport 32768:60999 -j ACCEPT # DNS -> Internet (TCP) + Antwort ipchains -A output -i ppp0 -p tcp --sport 32768:60999 --dport 53 -j ACCEPT ipchains -A input -i ppp0 -p tcp --sport 53 --dport 32768:60999 ! -y -j ACCEPT # Internet -> Firewall: auth/ident-lookup (REJECT) ipchains -A input -i ppp0 -p tcp --dport 113 -y -j REJECT # Firewall -> Internet: port unreachable ipchains -A output -i ppp0 -p icmp --icmp-type port-unreachable -j ACCEPT if [ "$OPTION_INTERN_DNS" = "ja" ]; then # intern -> DNS auf Firewall (UDP) ipchains -A input -i eth0 -p udp -s 192.168.1.0/24 1024: -d 192.168.1.1 53 -j ACCEPT ipchains -A output -i eth0 -p udp -s 192.168.1.1 53 -d 192.168.1.0/24 1024: -j ACCEPT # intern -> DNS auf Firewall (TCP) ipchains -A input -i eth0 -p tcp -s 192.168.1.0/24 1024: -d 192.168.1.1 53 -j ACCEPT ipchains -A output -i eth0 -p tcp -s 192.168.1.1 53 -d 192.168.1.0/24 1024: ! -y -j ACCEPT fi if [ "$OPTION_BASIC_ICMP" = "ja" ]; then # Internet -> Firewall: ICMP-Pakete zur Benachrichtung bei Verbindungsproblemen ipchains -A input -i ppp0 -p icmp --icmp-type destination-unreachable -j ACCEPT ipchains -A input -i ppp0 -p icmp --icmp-type time-exceeded -j ACCEPT ipchains -A input -i ppp0 -p icmp --icmp-type source-quench -j ACCEPT ipchains -A input -i ppp0 -p icmp --icmp-type parameter-problem -j ACCEPT # intern -> Firewall: ICMP-Pakete zur Benachrichtung bei Verbindungsproblemen ipchains -A input -i eth0 -p icmp -s 192.168.1.0/24 -d 192.168.1.1 --icmp-type destination-unreachable -j ACCEPT ipchains -A input -i eth0 -p icmp -s 192.168.1.0/24 -d 192.168.1.1 --icmp-type time-exceeded -j ACCEPT ipchains -A input -i eth0 -p icmp -s 192.168.1.0/24 -d 192.168.1.1 --icmp-type source-quench -j ACCEPT ipchains -A input -i eth0 -p icmp -s 192.168.1.0/24 -d 192.168.1.1 --icmp-type parameter-problem -j ACCEPT # Firewall -> Internet: ICMP-Pakete für Verbindungstests + Antwort ipchains -A output -i ppp0 -p icmp --icmp-type echo-request -j ACCEPT ipchains -A input -i ppp0 -p icmp --icmp-type echo-reply -j ACCEPT # Firewall -> intern: ICMP-Pakete für Verbindungstests + Antwort ipchains -A output -i eth0 -p icmp -s 192.168.1.1 -d 192.168.1.0/24 --icmp-type echo-request -j ACCEPT ipchains -A input -i eth0 -p icmp -s 192.168.1.0/24 -d 192.168.1.1 --icmp-type echo-reply -j ACCEPT # Firewall -> Internet: ICMP-Pakete zur Benachrichtigung Flußkontrolle und Path MTU discovery ipchains -A output -i ppp0 -p icmp --icmp-type source-quench -j ACCEPT ipchains -A output -i ppp0 -p icmp --icmp-type fragmentation-needed -j ACCEPT # Firewall -> intern: ICMP-Pakete zur Benachrichtigung bei Verbindungsproblemen ipchains -A output -i eth0 -p icmp -s 192.168.1.1 -d 192.168.1.0/24 --icmp-type source-quench -j ACCEPT ipchains -A output -i eth0 -p icmp -s 192.168.1.1 -d 192.168.1.0/24 --icmp-type destination-unreachable -j ACCEPT ipchains -A output -i eth0 -p icmp -s 192.168.1.1 -d 192.168.1.0/24 --icmp-type time-exceeded -j ACCEPT ipchains -A output -i eth0 -p icmp -s 192.168.1.1 -d 192.168.1.0/24 --icmp-type parameter-problem -j ACCEPT fi if [ "$OPTION_FORWARD_DMZ" = "ja" ]; then # Erlaube forwarding sysctl -w net.ipv4.conf.eth0.forwarding=1 sysctl -w net.ipv4.conf.eth2.forwarding=1 ## Forwarding-Beispiel # intern -> Webserver in 7.8.9.0/24 ipchains -A input -i eth0 -p tcp -s 192.168.1.0/24 1024: -d 7.8.9.0/24 80 -j ACCEPT ipchains -A forward -i eth2 -p tcp -s 192.168.1.0/24 1024: -d 7.8.9.0/24 80 -j ACCEPT ipchains -A output -i eth2 -p tcp -s 192.168.1.0/24 1024: -d 7.8.9.0/24 80 -j ACCEPT # Antwortpakete ipchains -A input -i eth2 -p tcp -s 7.8.9.0/24 80 -d 192.168.1.0/24 1024: ! -y -j ACCEPT ipchains -A forward -i eth0 -p tcp -s 7.8.9.0/24 80 -d 192.168.1.0/24 1024: ! -y -j ACCEPT ipchains -A output -i eth0 -p tcp -s 7.8.9.0/24 80 -d 192.168.1.0/24 1024: ! -y -j ACCEPT ## intern <-> DMZ ## Forwarding-Beispiel via benutzerdefinierte Listen # Erstelle benutzerdefierte Listen ipchains -N int2dmz ipchains -N dmz2int # Paketverteilung intern -> dmz ipchains -A input -i eth0 -s 192.168.1.0/24 -d 7.8.9.0/24 -j int2dmz ipchains -A forward -i eth2 -s 192.168.1.0/24 -d 7.8.9.0/24 -j int2dmz ipchains -A output -i eth2 -s 192.168.1.0/24 -d 7.8.9.0/24 -j int2dmz # Paketverteilung dmz -> intern ipchains -A input -i eth2 -s 7.8.9.0/24 -d 192.168.1.0/24 -j dmz2int ipchains -A forward -i eth0 -s 7.8.9.0/24 -d 192.168.1.0/24 -j dmz2int ipchains -A output -i eth0 -s 7.8.9.0/24 -d 192.168.1.0/24 -j dmz2int # intern -> Webserver in 7.8.9.0/24 via int2dmz/dmz2int HTTP+HTTPS ipchains -A int2dmz -p tcp --sport 1024: --dport 80 -j ACCEPT ipchains -A int2dmz -p tcp --sport 1024: --dport 443 -j ACCEPT # Antwortpakete ipchains -A dmz2int -p tcp --sport 80 --dport 1024: ! -y -j ACCEPT ipchains -A dmz2int -p tcp --sport 443 --dport 1024: ! -y -j ACCEPT ## extern <-> DMZ # Erstelle benutzerdefierte Listen ipchains -N ext2dmz ipchains -N dmz2ext # Paketverteilung extern -> DMZ ipchains -A input -i eth3 -d 7.8.9.0/24 -j ext2dmz ipchains -A forward -i eth2 -d 7.8.9.0/24 -j ext2dmz ipchains -A output -i eth2 -d 7.8.9.0/24 -j ext2dmz # Paketverteilung DMZ -> extern ipchains -A input -i eth2 -s 7.8.9.0/24 -j dmz2ext ipchains -A forward -i eth3 -s 7.8.9.0/24 -j dmz2ext ipchains -A output -i eth3 -s 7.8.9.0/24 -j dmz2ext ## extern -> FTP-Server 7.8.9.100 via ext2dmz/dmz2ext # Kontrollkanal + Antwort ipchains -A ext2dmz -p tcp --sport 1024: -d 7.8.9.100 21 -j ACCEPT ipchains -A dmz2ext -p tcp -s 7.8.9.100 21 --dport 1024: ! -y -j ACCEPT # Aktiver Transfer (Verbindungsaufbau vom Server zum Client) + Antwort ipchains -A dmz2ext -p tcp -s 7.8.9.100 20 --dport 1024: -j ACCEPT ipchains -A ext2dmz -p tcp --sport 1024: -d 7.8.9.100 20 ! -y -j ACCEPT # Passiver Transfer (Verbindungsaufbau vom Client zum Server) + Antwort ipchains -A ext2dmz -p tcp --sport 1024: -d 7.8.9.100 49152:65534 -j ACCEPT ipchains -A dmz2ext -p tcp -s 7.8.9.100 49152:65534 --dport 1024: ! -y -j ACCEPT fi if [ "$OPTION_MASQUERADE" = "ja" ]; then # Erlaube forwarding sysctl -w net.ipv4.conf.eth0.forwarding=1 sysctl -w net.ipv4.conf.ppp0.forwarding=1 if [ "$OPTION_MASQ_POP" = "ja" ]; then ## POP via Masquerading ipchains -A input -i eth0 -p tcp -s 192.168.1.0/24 1024: -d ! 192.168.1.0/24 110 -j ACCEPT ipchains -A forward -i ppp0 -p tcp -s 192.168.1.0/24 1024: --dport 110 -j MASQ ipchains -A output -i ppp0 -p tcp --sport 61000:65095 --dport 110 -j ACCEPT # Antwortpakete (werden demaskiert, treffen nie auf die forward-Liste) ipchains -A input -i ppp0 -p tcp --sport 110 --dport 61000:65095 ! -y -j ACCEPT ipchains -A output -i eth0 -p tcp -s ! 192.168.1.0/24 110 -d 192.168.1.0/24 1024: ! -y -j ACCEPT fi if [ "$OPTION_MASQ_SMTP" = "ja" ]; then # SMTP via Masquerading ## SMTP via Masquerading ipchains -A input -i eth0 -p tcp -s 192.168.1.0/24 1024: -d ! 192.168.1.0/24 25 -j ACCEPT ipchains -A forward -i ppp0 -p tcp -s 192.168.1.0/24 1024: --dport 25 -j MASQ ipchains -A output -i ppp0 -p tcp --sport 61000:65095 --dport 25 -j ACCEPT # Antwortpakete (werden demaskiert, treffen nie auf die forward-Liste) ipchains -A input -i ppp0 -p tcp --sport 25 --dport 61000:65095 ! -y -j ACCEPT ipchains -A output -i eth0 -p tcp -s ! 192.168.1.0/24 25 -d 192.168.1.0/24 1024: ! -y -j ACCEPT fi if [ "$OPTION_MASQ_PGP" = "ja" ]; then hostname="europe.keys.pgp.com" LC_ALL=C dig $hostname A IN +pfmin | grep "IN A" | awk '{ print $5 }' | while read ipv4addr; do ## Verbindung zu PGP-Keyservers via Masquerading ipchains -A input -i eth0 -p tcp -s 192.168.1.0/24 1024: -d $ipv4addr 11370 -j ACCEPT ipchains -A forward -i ppp0 -p tcp -s 192.168.1.0/24 1024: -d $ipv4addr 11370 -j MASQ ipchains -A output -i ppp0 -p tcp --sport 61000:65095 -d $ipv4addr 11370 -j ACCEPT # Antwortpakete (werden demaskiert, treffen nie auf die forward-Liste) ipchains -A input -i ppp0 -p tcp -s $ipv4addr 11370 --dport 61000:65095 ! -y -j ACCEPT ipchains -A output -i eth0 -p tcp -s $ipv4addr 11370 -d 192.168.1.0/24 1024: ! -y -j ACCEPT done fi if [ "$OPTION_MASQ_ICMP" = "ja" ]; then # Ping und Traceroute von intern via Masquerading ipchains -A input -i eth0 -p icmp -s 192.168.1.0/24 -d ! 192.168.1.0/24 --icmp-type echo-request -j ACCEPT ipchains -A forward -i ppp0 -p icmp -s 192.168.1.0/24 --icmp-type echo-request -j MASQ ipchains -A output -i ppp0 -p icmp --icmp-type echo-request -j ACCEPT # Antwortpakete ipchains -A input -i ppp0 -p icmp --icmp-type echo-reply -j ACCEPT ipchains -A input -i ppp0 -p icmp --icmp-type time-exceeded -j ACCEPT ipchains -A input -i ppp0 -p icmp --icmp-type host-unreachable -j ACCEPT ipchains -A input -i ppp0 -p icmp --icmp-type network-unreachable -j ACCEPT ipchains -A output -i eth0 -p icmp -d 192.168.1.0/24 --icmp-type echo-reply -j ACCEPT ipchains -A output -i eth0 -p icmp -d 192.168.1.0/24 --icmp-type time-exceeded -j ACCEPT ipchains -A output -i eth0 -p icmp -d 192.168.1.0/24 --icmp-type host-unreachable -j ACCEPT ipchains -A output -i eth0 -p icmp -d 192.168.1.0/24 --icmp-type network-unreachable -j ACCEPT fi if [ "$OPTION_MASQ_FTP" = "ja" ]; then # Modul für FTP-Masquerading laden modprobe ip_masq_ftp # Passives FTP von intern via Masquerading ## FTP:Kommandokanal ipchains -A input -i eth0 -p tcp -s 192.168.1.0/24 1024: -d ! 192.168.1.0/24 21 -j ACCEPT ipchains -A forward -i ppp0 -p tcp -s 192.168.1.0/24 1024: --dport 21 -j MASQ ipchains -A output -i ppp0 -p tcp --sport 61000:65095 --dport 21 -j ACCEPT # Antwortpakete ipchains -A input -i ppp0 -p tcp --sport 21 --dport 61000:65095 ! -y -j ACCEPT ipchains -A output -i eth0 -p tcp -s ! 192.168.1.0/24 21 -d 192.168.1.0/24 1024: ! -y -j ACCEPT ## FTP:passiver Datenkanal ipchains -A input -i eth0 -p tcp -s 192.168.1.0/24 1024: -d ! 192.168.1.0/24 1024: -j ACCEPT ipchains -A forward -i ppp0 -p tcp -s 192.168.1.0/24 1024: --dport 1024: -j MASQ ipchains -A output -i ppp0 -p tcp --sport 61000:65095 --dport 1024: -j ACCEPT # Antwortpakete ipchains -A input -i ppp0 -p tcp --sport 1024: --dport 61000:65095 ! -y -j ACCEPT ipchains -A output -i eth0 -p tcp -s ! 192.168.1.0/24 1024: -d 192.168.1.0/24 1024: ! -y -j ACCEPT if [ "$OPTION_MASQ_FTP_ACTIVE" = "ja" ]; then # Freischaltung von aktiven Datentransfer bei FTP von intern via Masquerading (Server baut Verbindung auf) ipchains -A input -i ppp0 -p tcp --sport 20 --dport 61000:65095 -j ACCEPT ipchains -A output -i eth0 -p tcp -s ! 192.168.1.0/24 20 -d 192.168.1.0/24 1024: -j ACCEPT # Antwortpakete des Clients ipchains -A input -i eth0 -p tcp -s 192.168.1.0/24 1024: -d ! 192.168.1.0/24 20 ! -y -j ACCEPT ipchains -A forward -i ppp0 -p tcp -s 192.168.1.0/24 1024: --dport 20 ! -y -j MASQ ipchains -A output -i ppp0 -p tcp --sport 61000:65095 --dport 20 ! -y -j ACCEPT fi fi fi # Ende von OPTION_MASQUERADE if [ "$OPTION_BLOCK_TONLINE" = "ja" ]; then # Blockiere POP-Zugang zu T-Online hostname="pop.t-online.de" LC_ALL=C dig $hostname A IN +pfmin | grep "IN A" | awk '{ print $5 }' | while read ipv4addr; do ipchains -I input -i eth0 -p tcp -d $ipv4addr 110 -j REJECT -l ipchains -I output -i ppp0 -p tcp -d $ipv4addr 110 -j REJECT -l done # Blockiere SMTP-Zugang zu T-Online hostname="smtp.t-online.de" LC_ALL=C dig $hostname A IN +pfmin | grep "IN A" | awk '{ print $5 }' | while read ipv4addr; do ipchains -I input -i eth0 -p tcp -d $ipv4addr 25 -j REJECT -l ipchains -I output -i ppp0 -p tcp -d $ipv4addr 25 -j REJECT -l done # Blockiere FTP-Zugang zu home-up.t-online.de hostname="home-up.t-online.de" LC_ALL=C dig $hostname A IN +pfmin | grep "IN A" | awk '{ print $5 }' | while read ipv4addr; do ipchains -I input -i eth0 -p tcp -d $ipv4addr 21 -j REJECT -l ipchains -I output -i ppp0 -p tcp -d $ipv4addr 21 -j REJECT -l done fi # Protokolliere Pakete, die das Ende der Liste erreichen ipchains -A forward -j REJECT -l ipchains -A input -j DENY -l ipchains -A output -j REJECT -l ;; stop) echo -n $"Stopping firewalling: " # Schalte Forwarding aus sysctl -w net.ipv4.ip_forward=0 # Setze Policies ipchains -P input DENY ipchains -P forward REJECT ipchains -P output REJECT # Lösche alle Regeln in den Standard-Filterlisten ipchains -F forward ipchains -F output ipchains -F input # Lösche alle Regeln in den benutzerdefinierten Filterlisten cat /proc/net/ip_fwnames | egrep -v "input|forward|output" | while read list rest; do ipchains -F $list done # Lösche alle benutzedefinierten Filterlisten cat /proc/net/ip_fwnames | egrep -v "input|forward|output" | while read list rest; do ipchains -X $list done # Entfernen aller Masquerading-Module lsmod | grep ^ip_masq | awk '{ print $1 }' | while read module; do rmmod $module; done ;; restart|reload) $0 stop $0 start ;; *)# echo $"Usage: firewalling {start|stop|restart|reload}" exit 1 esac