ROUTER + FIREWALL auf IPTABLES Basis einrichten

Dieses Thema im Forum "Firewalls" wurde erstellt von Fabi, 08.12.2003.

  1. Fabi

    Fabi Grünschnabel

    Dabei seit:
    08.12.2003
    Beiträge:
    5
    Zustimmungen:
    0
    Hallo Leute,


    ich besitze eine Dreambox, auf der Linux läuft (Busybox PPC).

    Nun möchte ich diese Dreambox als Router/Firewall für meine anderen Pcs, die sich im selben Netzwerk befinden, nutzen.. Leitung ist ADSL

    Folgendes funktioniert bereits:

    -Internet auf Dreambox
    -Internet auf allen Rechnern
    -Webserver, Samba, FTP, Telnet, SSH auf der Box vom Internet aus
    -Emule von der Box aus und von einem PC im Netz(192.168.0.1)


    Hier meine Conf:
    Code:
    #!/bin/sh
    
    #----------------------------------------------------------------------------
    # Abschnitt I : Laden der Module
    #----------------------------------------------------------------------------
    IPTABLES=/sbin/iptables
    /sbin/route del default
    
    if [ -e /tmp/.fwinitialized ]; then
        echo "no fw initialize needed"
    else
        /sbin/modprobe ip_tables
        /sbin/modprobe ip_conntrack
        /sbin/modprobe ip_conntrack_ftp
        /sbin/modprobe ip_conntrack_irc
        /sbin/modprobe iptable_nat
        /sbin/modprobe ip_nat_ftp
        echo "1" > /proc/sys/net/ipv4/ip_forward
        echo "1" > /proc/sys/net/ipv4/ip_dynaddr
        touch /tmp/.fwinitialized
    fi
    
    #----------------------------------------------------------------------------
    # Abschnitt II : bisherige Regeln löschen :
    #----------------------------------------------------------------------------
    
    echo "Flushing and Clearing all current rules and user defined chains:"
    $IPTABLES -F INPUT; $IPTABLES -P INPUT ACCEPT; $IPTABLES -Z INPUT
    $IPTABLES -F FORWARD; $IPTABLES -P FORWARD ACCEPT; $IPTABLES -Z FORWARD
    $IPTABLES -F OUTPUT; $IPTABLES -P OUTPUT ACCEPT; $IPTABLES -Z OUTPUT
    chains=`cat /proc/net/ip_tables_names 2>/dev/null`
    
    for i in $chains; do iptables -t $i -F; done && \
    echo "Flushing all current rules and user defined chains OK" || \
    echo "Flushing all current rules and user defined chains FAILED"
    
    for i in $chains; do iptables -t $i -X; done && \
    echo "Clearing all current rules and user defined chains OK" || \
    echo "Clearing all current rules and user defined chains FAILED"
    
    for i in $chains; do iptables -t $i -Z; done
    
    # Setup user-defined chains
    
    $IPTABLES -X
    $IPTABLES -N LINWIZ-INPUT;
    $IPTABLES -N REJECT-PKT;
    $IPTABLES -N SYN-FLOOD;
    
    $IPTABLES -A INPUT -j LINWIZ-INPUT
    
    #----------------------------------------------------------------------------
    # Abschnitt III : Forwarding und Masquerading
    #----------------------------------------------------------------------------
    
    
    # MSS Clamping ( 
    iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
    
    # abgehende Pakete FORWARDING - ( Routing ) Paketweiterleitung
    iptables -A FORWARD -o ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    
    # ankommende Pakete FORWARDING - ( Routing )
    iptables -A FORWARD -i ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
    
    # NAT ( Network Address Translation ) - Maquerading
    iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
    
    
    #----------------------------------------------------------------------------
    # Abschnitt VI : DynDNS
    #----------------------------------------------------------------------------
    
    if [ -e /tmp/.dyndns ]; then
        echo "DYNDNS ALREADY STARTED"
    else
        /hdd/opt/tuxdns -h
         touch /tmp/.dyndns
    fi
    
    
    
    #----------------------------------------------------------------------------
    # Abschnitt V : Sicherheit
    #----------------------------------------------------------------------------
    
    # Allow all loopback interface traffic
    
    $IPTABLES -A LINWIZ-INPUT -i lo -j ACCEPT
    
    # Block all attempts to spoof the loopback address
    
    $IPTABLES -A LINWIZ-INPUT -s 127.0.0.0/8 -j DROP
    $IPTABLES -A LINWIZ-INPUT -d 127.0.0.0/8 -j DROP
    
    # Block all attempts to spoof the local IP address
    
    $IPTABLES -A LINWIZ-INPUT -s 192.168.0.100 -j DROP
    
    # Block Syn Flood attacks
    
    $IPTABLES -A LINWIZ-INPUT -p tcp -m tcp --syn -j SYN-FLOOD
    
    # Ensure that TCP connections start with syn packets
    
    $IPTABLES -A LINWIZ-INPUT -p tcp -m tcp ! --syn -m state --state NEW -j DROP
    
    # Allow session continuation traffic
    
    $IPTABLES -A LINWIZ-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    
    # Allow ICMP ping requests from all hosts
    
    $IPTABLES -A LINWIZ-INPUT -p icmp -m icmp --icmp-type ping -j ACCEPT
    
    # Allow selected TCP/IP and/or UDP services
    
    $IPTABLES -A LINWIZ-INPUT -p tcp -m tcp --dport 20:23 -j ACCEPT
    $IPTABLES -A LINWIZ-INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    #$IPTABLES -A INPUT -i ppp0 -p tcp --sport 80 -j REJECT
    $IPTABLES -A LINWIZ-INPUT -p tcp -m tcp --dport 139 -j ACCEPT
    $IPTABLES -A LINWIZ-INPUT -p tcp -m tcp --dport 992 -j ACCEPT
    $IPTABLES -A LINWIZ-INPUT -p tcp -m tcp --dport 20248 -j ACCEPT
    $IPTABLES -A LINWIZ-INPUT -p udp -m udp --dport 137:138 -j ACCEPT
    $IPTABLES -A LINWIZ-INPUT -p udp -m udp --dport 177 -j ACCEPT
    $IPTABLES -A LINWIZ-INPUT -p udp -m udp --dport 20248 -j ACCEPT
    $IPTABLES -A LINWIZ-INPUT -p udp -m udp --sport 137:138 -j ACCEPT
    
    #EMULE ROUTING für den PC (nicht die Box)
    
    $IPTABLES -A INPUT -p tcp --dport 4661 -m state --state NEW -j ACCEPT
    $IPTABLES -A INPUT -p tcp --dport 4662 -m state --state NEW -j ACCEPT
    $IPTABLES -A INPUT -p udp --dport 4665 -j ACCEPT
    $IPTABLES -A INPUT -p tcp --sport 4661 -m state --state NEW -j ACCEPT
    $IPTABLES -A INPUT -p tcp --sport 4662 -m state --state NEW -j ACCEPT
    $IPTABLES -A INPUT -p udp --sport 4665 -j ACCEPT
    $IPTABLES -A FORWARD -p tcp --dport 4661 -m state --state NEW -j ACCEPT
    $IPTABLES -A FORWARD -p tcp --dport 4662 -m state --state NEW -j ACCEPT
    $IPTABLES -A FORWARD -p udp --dport 4665 -j ACCEPT
    $IPTABLES -A FORWARD -p tcp --sport 4661 -m state --state NEW -j ACCEPT
    $IPTABLES -A FORWARD -p tcp --sport 4662 -m state --state NEW -j ACCEPT
    $IPTABLES -t nat -A PREROUTING -p tcp --dport 4662 -j DNAT --to 192.168.0.1
    
    # Block all other TCP/IP and UDP traffic
    
    $IPTABLES -A LINWIZ-INPUT -j REJECT-PKT
    
    
    #############################################################################
    # Chain used to reject all TCP/IP, UDP and ICMP/PING packets
    
    $IPTABLES -A REJECT-PKT -p tcp -m tcp -j REJECT --reject-with tcp-reset
    $IPTABLES -A REJECT-PKT -p udp -m udp -j REJECT --reject-with icmp-port-unreachable
    $IPTABLES -A REJECT-PKT -p icmp -m icmp --icmp-type ping -j REJECT --reject-with icmp-host-unreachable
    
    
    
    • Stimmt meine IPTABLES Conf, oder gibt es Fehler/Wiedersprüche? Bitte durchgehen und mich auf Fehler oder fehlende Einträge aufmerksam machen.
    • Möchte viel Freiheit auf den Pcs im Netzwerk bekommen, so wie bei Windows ICS, sofern es der Sicherheit nicht schadet. Wie mache ich das?
    • Wie kann ich nachträglich den Webserver auf der Box vom Netz aus blockieren? Einfach ACCEPT durch REJECT ersetzen, richtig?
    • Noch Vorschläge zur Conf?

    NOCH EIN KLEINES PROBLEM:
    Wenn ich bei den Pcs im Netzwerk bei DNS die Werte des Providers eingebe, funzt alles, auf der Dreambox ebenfalls. Jedoch wenn ich die Dns Werte nur auf der Dreambox eingebe und bei den PCS die Dreambox IP als DNSSERVER, dann geht nichts. WIe kann ich dies aktivieren?



    DANKE SCHON IM VORRAUS
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 HangLoose, 08.12.2003
    HangLoose

    HangLoose kleiner Bruder von ruth

    Dabei seit:
    07.11.2003
    Beiträge:
    319
    Zustimmungen:
    0
    Ort:
    HH
    moin moin

    eins erstmal vorweg => ich tue mich beim lesen von fremden scripten mit userdefinierten chains, schleifen etc. immer etwas schwer. auf den ersten blick sieht das script aber gut aus.

    diese regel kapier ich allerdings nicht so recht

    # Ensure that TCP connections start with syn packets

    $IPTABLES -A LINWIZ-INPUT -p tcp -m tcp ! --syn -m state --state NEW -j DROP

    was bezweckst du mit dieser regel?

    zu deinen fragen

    b) hast du doch, du erlaubst in der forward chain alle *NEW*, sowie alle dazugehörigen pakete, von innen => aussen. oder was genau meinst du?

    c) entweder so wie du geschrieben hast oder die rule einfach auskommentieren. den rest übernimmt dann deine default policy


    in dem du auf deiner box nen dns-server aufsetzt ;). was spricht dagegen auf den clients den dns deines providers einzutragen?


    Gruß HL
     
  4. Fabi

    Fabi Grünschnabel

    Dabei seit:
    08.12.2003
    Beiträge:
    5
    Zustimmungen:
    0
    soll eine sicherheitsfunktion sein, also das das erste paket nur durchkommt, wenn es synch ist

    dns server auf der box wird schwer.
    ppc compilieren...

    das letze mal als die conf oben war, wurde mir der ftp gesperrt, ka wieso
     
  5. #4 HangLoose, 08.12.2003
    HangLoose

    HangLoose kleiner Bruder von ruth

    Dabei seit:
    07.11.2003
    Beiträge:
    319
    Zustimmungen:
    0
    Ort:
    HH
    haste mal in den logs nachgesehen?

    btw.

    samba und telnet haben im internet nichts zu suchen.


    Gruß HL
     
  6. Fabi

    Fabi Grünschnabel

    Dabei seit:
    08.12.2003
    Beiträge:
    5
    Zustimmungen:
    0
    wieso nicht? Auf Telnet könnt ich verzichten. Auf Samba nicht!!
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 HangLoose, 08.12.2003
    HangLoose

    HangLoose kleiner Bruder von ruth

    Dabei seit:
    07.11.2003
    Beiträge:
    319
    Zustimmungen:
    0
    Ort:
    HH
    hi

    bei telnet verläuft die übertragung im klartext. also nen password sniffen sollte kein problem sein => nimm ssh.


    mit samba kenne ich mich nicht allzu gut aus. aber samba hat aus sicherheitsgründen auch nichts im inet zu suchen. es soll sogar prvider geben, die diese ports gar nicht mehr routen.

    wenn es unbedingt samba sein muss, würde ich das ganze über einen vpn-tunnel laufen lassen.


    Gruß HL
     
  9. Fabi

    Fabi Grünschnabel

    Dabei seit:
    08.12.2003
    Beiträge:
    5
    Zustimmungen:
    0
    ok danke. dann kann ich diese conf so verwenden?
     
Thema:

ROUTER + FIREWALL auf IPTABLES Basis einrichten

Die Seite wird geladen...

ROUTER + FIREWALL auf IPTABLES Basis einrichten - Ähnliche Themen

  1. openBSD router mit Firewall macht Probleme mit FTP

    openBSD router mit Firewall macht Probleme mit FTP: Moin moin, Ausgangsbasis: - ein openBSD-Router mit PF für 4 subnetze (den wer anderes eingerichtet hat) - Online-Linux-Server bei einem...
  2. proxy/router/firewall/virenscanner?

    proxy/router/firewall/virenscanner?: Ich will meine nachbarn mit bei mir ans dsl nehmen, - möchte aber eine virenscanner weil sie auch auf meinen samba-server zugriff haben soll -...
  3. Viele Linux-Router mit Sicherheitslücken

    Viele Linux-Router mit Sicherheitslücken: Forscher von der Carnegie Mellon University und der Universität Boston haben viele Linux-Router mit automatisierten Werkzeugen untersucht und...
  4. Microsoft stellt Netzwerk-Software für Router und Switches auf Debian-Basis vor

    Microsoft stellt Netzwerk-Software für Router und Switches auf Debian-Basis vor: Auf dem OCP-Summit in San Jose stellt Microsofts Mark Russinowich die neue Netzwerk-Softwaresammlung SONiC vor, die auf der Basis von Debian...
  5. Linksys-Router mit offizieller DD-WRT-Unterstützung

    Linksys-Router mit offizieller DD-WRT-Unterstützung: Linksys und NewMedia-NET haben die Linux-basierte alternative OpenSource-Firmware für WLAN-Router und eingebettete Systeme, »DD-WRT«, auch für die...