iptables - default policy - Server macht dicht

Dieses Thema im Forum "Firewalls" wurde erstellt von worker, 07.06.2012.

  1. #1 worker, 07.06.2012
    Zuletzt bearbeitet: 07.06.2012
    worker

    worker König

    Dabei seit:
    29.03.2007
    Beiträge:
    848
    Zustimmungen:
    0
    Moin zusammen,

    beisse mir hier seit etwa drei Tagen die Zähne an iptables aus.

    Hier die Regeln, die beim Booten (oder manueller Script-Ausführung)
    erstellt werden:
    Code:
    #!/bin/bash
    
    # Definieren der Interfaces/Sources:
    INET_IFACE="eth2"
    LAN_IFACE="eth0"
    LAN_SOURCE="10.0.0.0/8"
    LAN_SERVER_IP="10.0.0.254"
    INET_SERVER_IP="192.168.1.2"
    INET_SERVER_SOURCE="192.168.1.0/24"
    INET_SOURCE="0/0"
    
    # Sonstige Definitionen:
    IPTABLES="/sbin/iptables"
    
    # ====================
    
    # Lösche alle existierenden Rules:
    echo -n "ALLE Firewall-Rules löschen ... "
    $IPTABLES -F
    $IPTABLES -t nat -F
    $IPTABLES -t mangle -F
    $IPTABLES -X
    echo "[OK]"
    
    # Loopback-Traffic zulassen:
    echo -n "Firewall-Rule: Lo-Traffic zulassen ... "
    $IPTABLES -A INPUT -i lo -j ACCEPT
    $IPTABLES -A OUTPUT -o lo -j ACCEPT
    echo "[OK]"
    
    # Port 22 (ssh) von Interfaces [$LAN_IFACE] & [$INET_IFACE] ankommend/abgehend erlauben:
    echo -n "Firewall-Rule [IN/OUT]: Erlaube Port 22 vom LAN UND WAN (Interface: $LAN_IFACE / $INET_IFACE) aus ... "
    $IPTABLES -A INPUT -i "$LAN_IFACE" -p tcp --dport 22 -j ACCEPT
    $IPTABLES -A INPUT -i "$LAN_IFACE" -p udp --dport 22 -j ACCEPT
    $IPTABLES -A OUTPUT -o "$LAN_IFACE" -p tcp --sport 22 -j ACCEPT
    $IPTABLES -A OUTPUT -o "$LAN_IFACE" -p udp --sport 22 -j ACCEPT
    
    $IPTABLES -A INPUT -i $INET_IFACE -p tcp --dport 22 -j ACCEPT
    $IPTABLES -A INPUT -i $INET_IFACE -p udp --dport 22 -j ACCEPT
    $IPTABLES -A OUTPUT -o $INET_IFACE -p tcp --sport 22 -j ACCEPT
    $IPTABLES -A OUTPUT -o $INET_IFACE -p udp --sport 22 -j ACCEPT
    echo "[OK]"
    
    # Port 53 (domain) Vom Interface [$INET_IFACE] und [$LAN_IFACE] ankommend/ausgehend erlauben
    echo -n "Firewall-Rule [IN/OUT]: Erlaube Port 53 eingehend/ausgehend vom DMZ/WAN (Interface: $INET_IFACE) ... "
    $IPTABLES -A INPUT -i $INET_IFACE -p tcp --dport 53 -j ACCEPT
    $IPTABLES -A INPUT -i $INET_IFACE -p udp --dport 53 -j ACCEPT
    $IPTABLES -A OUTPUT -o $INET_IFACE -p tcp --sport 53 -j ACCEPT
    $IPTABLES -A OUTPUT -o $INET_IFACE -p udp --sport 53 -j ACCEPT
    echo "[OK]"
    
    echo -n "Firewall-Rule [IN/OUT]: Erlaube Port 53 eingehend und ausgehend vom LAN (Interface: $LAN_IFACE) ... "
    $IPTABLES -A INPUT -i $LAN_IFACE -p tcp --dport 53 -j ACCEPT
    $IPTABLES -A INPUT -i $LAN_IFACE -p udp --dport 53 -j ACCEPT
    $IPTABLES -A OUTPUT -o $LAN_IFACE -p tcp --sport 53 -j ACCEPT
    $IPTABLES -A OUTPUT -o $LAN_IFACE -p udp --sport 53 -j ACCEPT
    echo "[OK]"
    
    # Port 67/68 (dhcp) vom Interface [$INET_IFACE] ankommend blockieren:
    echo -n "Firewall-Rule [IN]: Erlaube Port 67/68 eingehend/ausgehend vom LAN (Interface: $LAN_IFACE) ... "
    $IPTABLES -A INPUT -i $LAN_IFACE -p udp --dport 67:68 -j ACCEPT
    $IPTABLES -A INPUT -i $LAN_IFACE -p tcp --dport 67:68 -j ACCEPT
    $IPTABLES -A OUTPUT -o $LAN_IFACE -p udp --sport 67:68 -j ACCEPT
    $IPTABLES -A OUTPUT -o $LAN_IFACE -p tcp --sport 67:68 -j ACCEPT
    
    #$IPTABLES -A INPUT -i $LAN_IFACE -p udp --dport 68 -j ACCEPT
    #$IPTABLES -A INPUT -i $LAN_IFACE -p tcp --dport 68 -j ACCEPT
    #$IPTABLES -A OUTPUT -o $LAN_IFACE -p udp --sport 68 -j ACCEPT
    #$IPTABLES -A OUTPUT -o $LAN_IFACE -p tcp --sport 68 -j ACCEPT
    echo "[OK]"
    
    # Port 80 (http) Vom Interface [$LAN_IFACE] auf Port 81 umleiten:
    echo -n "Firewall-Rule [PRE]   : Redirect WWW-Anfragen vom LAN zum Intranet-HttpServer auf Port 81 umleiten ... "
    $IPTABLES -t nat -A PREROUTING -s $LAN_SOURCE -p tcp -d  $LAN_SERVER_IP --dport 80 -j REDIRECT --to-port 81
    $IPTABLES -t nat -A PREROUTING -s $LAN_SOURCE -p udp -d  $LAN_SERVER_IP --dport 80 -j REDIRECT --to-port 81
    # ... und vom INET_IFACE auch:
    #$IPTABLES -t nat -A PREROUTING -s $INET_SOURCE -p tcp -d  $INET_SERVER_IP --dport 80 -j REDIRECT --to-port 81
    #$IPTABLES -t nat -A PREROUTING -s $INET_SOURCE -p udp -d  $INET_SERVER_IP --dport 80 -j REDIRECT --to-port 81
    echo "[OK]"
    
    # Port 81 (http) vom Interface [$INET_IFACE] ankommend erlauben:
    echo -n "Firewall-Rule [IN/OUT]: Erlaube Port 81 ankommend/ausgehend vom DMZ/WAN  (Interface: $INET_IFACE) ... "
    $IPTABLES -A INPUT -i $INET_IFACE -p udp --dport 81 -j ACCEPT
    $IPTABLES -A INPUT -i $INET_IFACE -p tcp --dport 81 -j ACCEPT
    $IPTABLES -A OUTPUT -o $INET_IFACE -p udp --sport 81 -j ACCEPT
    $IPTABLES -A OUTPUT -o $INET_IFACE -p tcp --sport 81 -j ACCEPT
    echo "[OK]"
    
    # Port 137 (netbios-ns?) vom Interface [$LAN_IFACE] ankommend/ausgehend erlauben:
    echo -n "Firewall-Rule [IN/OUT]: Erlaube Port 137 ankommend/ausgehend vom LAN (Interface: $LAN_IFACE) ... "
    $IPTABLES -A INPUT -i $LAN_IFACE -p udp --dport 137 -j ACCEPT
    $IPTABLES -A INPUT -i $LAN_IFACE -p tcp --dport 137 -j ACCEPT
    $IPTABLES -A OUTPUT -o $LAN_IFACE -p udp --sport 137 -j ACCEPT
    $IPTABLES -A OUTPUT -o $LAN_IFACE -p tcp --sport 137 -j ACCEPT
    echo "[OK]"
    
    # Port 138 (netbios-dgm) vom Interface [$LAN_IFACE] ankommend/ausgehend erlauben:
    echo -n "Firewall-Rule [IN/OUT]: Erlaube Port 138 ankommend/ausgehend vom LAN (Interface: $LAN_IFACE) ... "
    $IPTABLES -A INPUT -i $LAN_IFACE -p udp --dport 138 -j ACCEPT
    $IPTABLES -A INPUT -i $LAN_IFACE -p tcp --dport 138 -j ACCEPT
    $IPTABLES -A OUTPUT -o $LAN_IFACE -p udp --sport 138 -j ACCEPT
    $IPTABLES -A OUTPUT -o $LAN_IFACE -p tcp --sport 138 -j ACCEPT
    echo "[OK]"
    
    # Port 139 (netbios-ssn) vom Interface [$LAN_IFACE] ankommend/ausgehend erlauben:
    echo -n "Firewall-Rule [IN/OUT]: Erlaube Port 139 ankommend/ausgehend vom LAN (Interface: $LAN_IFACE) ... "
    $IPTABLES -A INPUT -i $LAN_IFACE -p udp --dport 139 -j ACCEPT
    $IPTABLES -A INPUT -i $LAN_IFACE -p tcp --dport 139 -j ACCEPT
    $IPTABLES -A OUTPUT -o $LAN_IFACE -p udp --sport 139 -j ACCEPT
    $IPTABLES -A OUTPUT -o $LAN_IFACE -p tcp --sport 139 -j ACCEPT
    echo "[OK]"
    
    # Port 445 (microsoft-ds) vom Interface [$LAN_IFACE] ankommend/ausgehend erlauben:
    echo -n "Firewall-Rule [IN/OUT]: Erlaube Port 445 ankommend/ausgehend vom LAN (Interface: $LAN_IFACE) ... "
    $IPTABLES -A INPUT -i $LAN_IFACE -p udp --dport 445 -j ACCEPT
    $IPTABLES -A INPUT -i $LAN_IFACE -p tcp --dport 445 -j ACCEPT
    $IPTABLES -A OUTPUT -o $LAN_IFACE -p udp --sport 445 -j ACCEPT
    $IPTABLES -A OUTPUT -o $LAN_IFACE -p tcp --sport 445 -j ACCEPT
    echo "[OK]"
    
    # Port 3128 (proxy) vom Interface [$LAN_IFACE] ankommend/ausgehend erlauben:
    echo -n "Firewall-Rule [IN/OUT]: Erlaube Port 3128 ankommend/ausgehend vom LAN (Interface: $LAN_IFACE) ... "
    $IPTABLES -A INPUT -i $LAN_IFACE -p udp --dport 3128 -j ACCEPT
    $IPTABLES -A INPUT -i $LAN_IFACE -p tcp --dport 3128 -j ACCEPT
    $IPTABLES -A OUTPUT -o $LAN_IFACE -p udp --sport 3128 -j ACCEPT
    $IPTABLES -A OUTPUT -o $LAN_IFACE -p tcp --sport 3128 -j ACCEPT
    echo "[OK]"
    
    # Redirect aller WWW-Anfragen (Port 80) zum Squid-Server auf Port 3128:
    echo -n "Firewall-Rule [PRE]: Redirect WWW-Anfragen (vom LAN: Port 80) zum WWW-Server (auf Port: 3128) umleiten ... "
    $IPTABLES -t nat -A PREROUTING -s $LAN_SOURCE -p tcp ! -d $LAN_SERVER_IP --dport 80 -j REDIRECT --to-port 3128
    $IPTABLES -t nat -A PREROUTING -s $LAN_SOURCE -p udp ! -d $LAN_SERVER_IP --dport 80 -j REDIRECT --to-port 3128
    echo "[OK]"
    
    # Erlaube ausgehende Verbindungen (ausser Ziel-Ports: 20-21,80,3128 und 8080) vom LAN zum Internet:
    echo -n "Firewall-Rule [FWD/OUT]: Erlaube ausgehende Verbindungen (ausser Ziel-Ports: 20-21,80,3128 und 8080) vom LAN zum Internet ... "
    $IPTABLES -A FORWARD -i $LAN_IFACE -p tcp -m multiport ! -o $INET_IFACE --dports 20:21,80,3128,8080 -j ACCEPT
    $IPTABLES -A FORWARD -i $LAN_IFACE -p udp -m multiport ! -o $INET_IFACE --dports 20:21,80,3128,8080 -j ACCEPT
    $IPTABLES -A OUTPUT -s $LAN_SOURCE -p tcp -o $INET_IFACE -m multiport --sports 20:21,80,3128,8080 -j DROP
    $IPTABLES -A OUTPUT -s $LAN_SOURCE -p udp -o $INET_IFACE -m multiport --sports 20:21,80,3128,8080 -j DROP
    echo "[OK]"
    
    # Masquerade:
    echo -n "Firewall-Rule [POST]  : Masquerade/NATing ... "
    echo "1" > /proc/sys/net/ipv4/ip_forward
    $IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE
    echo "[OK]"
    
    # Default-Policy setzen:
    $IPTABLES -P INPUT DROP
    $IPTABLES -F INPUT
    $IPTABLES -P OUTPUT ACCEPT
    $IPTABLES -F OUTPUT
    $IPTABLES -P FORWARD DROP
    $IPTABLES -F FORWARD
    
    # SETZE "ALTE" FIREWALL-REGEL, DA AM TESTEN (und kein Bock jedesmal zum Server in den Keller zu rennen ^^):
    WSEK="30"
    echo -e "\nWarte $WSEK Sekunden lang und setze dann ALTE Firewall-Einstellungen wieder ..."
    sleep $WSEK
    
    # "Alte" Default-Policy setzen:
    $IPTABLES -P INPUT ACCEPT
    $IPTABLES -F INPUT
    $IPTABLES -P OUTPUT ACCEPT
    $IPTABLES -F OUTPUT
    $IPTABLES -P FORWARD ACCEPT
    $IPTABLES -F FORWARD
    
    Wenn ich die Default-Policy so setze, wie ich sie oben im Script haben möchte, werden
    anscheinend alle erstellten Regeln ignoriert(?).
    Soll heissen, der Rechner macht komplett dicht - nicht mal mehr ein Ping geht.
    Doch wenn alles auf ACCEPT steht, dann ist der Server wieder erreichbar.

    Auf den Webseiten zu iptables, die ich per Google fand, steht es aber mehr oder weniger
    genauso beschrieben.

    Ich verstehe einfach nicht, warum der Rechner dicht macht - egal ob ich die Policy ganz
    zu Anfang oder zum Schluss setze. Das Resultat ist immer das gleiche.

    Die IN-/OUT - Regeln stimmen doch, oder?
    Was habe ich übersehen/nicht beachtet?

    Merci.
    Worker

    Edit:
    OK *grml* ... hab's raus :-/
    Dachte immer dass das "flush" dazu dient "neu einzulesen" quasi ein "reload".
    Da ich somit immer die Regel(n)/Kette(n) "gereinigt"/gelöscht - nach dem ich sie erstellt - hatte, ist es mir nun klar, dass das so nicht funktionieren kann *kopfeinzieh*.

    Ein "flush" muss/sollte also ganz an den Anfang des Scripts, und erst dann Regeln erstellen (inkl. policy).

    Danke für's Zuhören *sichverneigt* :-P :-D

    LG
    worker


    Edit 2:
    Nun, hab mich wohl zu früh gefreut.
    SSH scheint top zu klappen, doch das Surfen im Web haut nicht hin. Andere Dienste hab ich noch nicht getestet.
    Demnach hab ich doch noch iwo nen Wurm drin *kratz* ...
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

iptables - default policy - Server macht dicht

Die Seite wird geladen...

iptables - default policy - Server macht dicht - Ähnliche Themen

  1. FTP/FTPS ohne ip_conntrack_ftp oder nf_conntrack_ftp mit iptables

    FTP/FTPS ohne ip_conntrack_ftp oder nf_conntrack_ftp mit iptables: Guten Tag, kennt jemand von euch eine Möglichkeit wie ich vsftpd nutzen kann zusammen mit einer Firewall ohne die im Betreff angegebenen...
  2. iptables und whitelist

    iptables und whitelist: Moin zusammen, Nach einer Ewigkeit melde ich mich mal hier zurück. Ich hab da so ein kleines Problemchen. Ich mach z.Zt. eine Umschulung zum...
  3. iptables blocke nur von bestimmter ip

    iptables blocke nur von bestimmter ip: Hallo, ich habe ein kleines Heimnetzwerk mit einem Router unter openWRT. Dort kann ich mittels iptables -I OUTPUT -p udp --dport 53 -m...
  4. Opensuse iptables (yast FW) + MiniUPnPd

    Opensuse iptables (yast FW) + MiniUPnPd: Hallo zusammen, ich habe ja meine OpenSuse Box momentan als Gateway eingerichtet und der Router dient nur als Access Point für alle Geräte...
  5. IPtables

    IPtables: Hallo Leute, bin zurzeit dabei, einen Proxy aufzusetzen, der die IP meines Webservers vetuschen soll. Es läuft eig. schon alles super, nur eine...