iptables Problem



  • Hi,
    ich hoffe ihr könnt mir helfen, es geht um iptables bei debian 3.1 (dient als router).
    Also erst mal vorweg, ich habe keine Ahnung von iptables 🙂
    Ich möchte alle Ports sperren, sodass nur noch auf Port 80 zugegrifen werden kann. Also habe ich standartmäßig alle ports sperren lassen bis auf port 80 und setze Masquerade.
    Das Problem ist jetzt, dass iptables die dsl verbindung blockiert, sodass ich nicht mehr online kann 😡
    Er meldet:
    Timeout waiting for PADS packets
    ... localhost pppd[4048]: Unable to complete PPPoE Discovery
    Also was muss ich freigeben, damit er wieder eine Verbindung aufbauen kann?
    Ich bedanke mich für die Hife.

    Gruß
    Daniel



  • Mach einfach was simples in der Art:

    INET_IFACE=eth1
    LAN_IFACE=eth0
    IPTABLES=/sbin/iptables
    
    $IPTABLES -N allowed
    $IPTABLES -A allowed -i lo -j ACCEPT
    $IPTABLES -A allowed -m state --state ESTABLISHED,RELATED -j ACCEPT
    $IPTABLES -A allowed -i $LAN_IFACE -j ACCEPT
    
    $IPTABLES -P INPUT DROP
    $IPTABLES -A INPUT -j allowed
    $IPTABLES -A INPUT -p tcp -i $INET_IFACE --dport 80 -j ACCEPT
    
    $IPTABLES -P FORWARD DROP
    
    $IPTABLES -P OUTPUT ACCEPT
    

    Achtung, ich habe das nicht getestet, ist nur aus einem alten Script von mir rauskopiert und leicht abgeändert und verkürzt, teste das unbedingt vorher! 😉

    edit: Bzw. nimmst Du dann halt mit dem Router Port 80 nicht selbst an, sondern forwardest an den gewünschten Rechner im LAN, aber das kriegst Du sicher alleine hin.



  • Erst mal thx.
    Das Problem hat sich gelöst.
    Aber das mit dem Port 80 bekomm ich nicht hin.
    Da ich von iptables keine Ahnung habe, mache ich das ganze mit webmin.
    Dort habe ich eingestellt, das er standartmäßg alle FORWARDs blockieren soll und nur Port 80 durchlassen soll. Die Regel heißt bei webmin folgendermaßen:
    "Accept If protocol is TCP and destination port is 80".
    Leider funktioniert das nicht, wenn ich allerdings das Port 80 weglasse, lässt er die Verbindung durch.
    Aber wenn ich mit dem IE eine Seite aufrufe, wird doch die Verbindung am Port 80 auf dem Zielrechner connected, oder?
    Und welcher Port wird verwendet von dem Rechner, der die Seite aufruft? Ändert der sich, oder ist der fest?

    Sorry wenn die Fragen ein bißchen doof sind, aber ich habe davon keine Ahnung 😃



  • Hier mal meine save-datei

    *mangle
    :PREROUTING ACCEPT [0:0]
    :INPUT ACCEPT [2:180]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [4:292]
    :POSTROUTING ACCEPT [1:152]
    COMMIT

    *nat
    :OUTPUT ACCEPT [0:0]
    :PREROUTING ACCEPT [0:0]
    :POSTROUTING DROP [0:0]
    -A POSTROUTING -s 192.168.1.0/24 -d 0/0 -j MASQUERADE
    COMMIT

    *filter
    :FORWARD DROP [0:0]
    :INPUT DROP [0:0]
    :OUTPUT DROP [0:0]

    # Webmin
    -A INPUT -p tcp -m tcp --dport 10000 -j ACCEPT
    # Webmin
    -A OUTPUT -p tcp -m tcp --sport 10000 -j ACCEPT

    # SSH
    -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
    # SSH
    -A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT

    -A FORWARD -p tcp -m tcp --dport 80 -j ACCEPT

    Kann mir jemand sagen warum ich mit diesen configs keine Webseiten aufrufen kann? Wenn ich :FORWARD ACCEPT [0:0] mache gehts.
    Ich hab keine Idee warum, anscheinend klappt das routing nicht ...



  • Hab mir das jetzt noch nicht durchgelesen, dazu is momentan keine Zeit, mach ich morgen.
    Aber einstweilen:
    Steht in /proc/sys/net/ipv4/conf/all/forwarding auch eine 1 drin?



  • nman schrieb:

    Hab mir das jetzt noch nicht durchgelesen, dazu is momentan keine Zeit, mach ich morgen.
    Aber einstweilen:
    Steht in /proc/sys/net/ipv4/conf/all/forwarding auch eine 1 drin?

    ja, da steht eine 1 drinn.

    Ich habe jetzt mal die Packete loggen lassen um zu sehen warum die nicht durch kommen und bin nun total ratlos.
    Die meisten Internet Seiten verwenden nicht "TCP Port 80" sonder "UDP Port 53" 😕
    Ich dachte immer die Webserver laufen auf Port 80, ich bin jetzt total verwirrt 🙄



  • Das am UDP-Port 53 sind DNS-Anfragen.
    Ich schau mir Deine Rules am Abend mal an, ok?



  • Häng mal an mein kleines Script oben noch folgendes an:

    $IPTABLES -t nat -A PREROUTING -p tcp -i $INET_IFACE -d $INTERNET_IP
    		 --dport 80 -j DNAT --to $IP_DES_RECHNERS_ZU_DEM_GEFORWARDET_WERDEN_SOLL:80
    $IPTABLES -A FORWARD -p tcp -i $INET_IFACE -d $IP_DES_RECHNERS_ZU_DEM_GEFORWARDET_WERDEN_SOLL --dport 80 -j ACCEPT
    

Anmelden zum Antworten