Anzeige:
Ergebnis 1 bis 9 von 9

Thema: iptables Connection Tracking / Verständnisfrage

  1. #1
    reitet auf GNUs Avatar von core
    Registriert seit
    Dec 2003
    Ort
    Berlin
    Beiträge
    895

    iptables Connection Tracking / Verständnisfrage

    Hi..

    Mein Rechner fungiert hier als Gateway, das ist aber nicht wirklich wichtig in dem Fall..
    Folgendes ist Bestandteil meines Firewall Scripts..

    Roher Aufbau:
    Code:
        iptables -P INPUT DROP
        iptables -P OUTPUT DROP
        iptables -P FORWARD DROP
    
    Jetzt werden INVALID und ein paar andere Sachen geblockt SYN + FIN etc.
    Dann wird das Connection Tracking aktiviert:
    
        iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
        iptables -A FORWARD -i ! ppp+ -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
        iptables -A FORWARD -i ppp+ -m state --state ESTABLISHED,RELATED -j ACCEPT
        iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    
    Und noch ein paar Feineinstellungen zu Sachen die mit oder ohne Log geblockt werden 
    bzw. auch geöffnet..
    Wenn ich nun aber iptables -L eingebe, kommt das:
    (Es geht um die ACCEPT Zeile in der INPUT chain.

    Code:
    Chain INPUT (policy DROP)
    target     prot opt source               destination         
    <log & stealth scan zeug hier>
    MY_DROP    tcp  --  anywhere             anywhere           tcp flags:ACK,URG/URG 
    ACCEPT     all  --  anywhere             anywhere           
    ACCEPT     all  --  anywhere             anywhere           state RELATED,ESTABLISHED 
    DROP       tcp  --  anywhere             anywhere           tcp dpts:4660:4700 
    .. und der Rest..
    
    Bei der FORWARD Chain habe ich keine "ACCEPT all -- anywhere anywhere" Zeile:
    
    Chain FORWARD (policy DROP)
    target     prot opt source               destination         
    <log & stealth scan zeug hier>
    TCPMSS     tcp  --  anywhere             anywhere           tcp flags:SYN,RST/SYN TCPMSS clamp to PMTU 
    ACCEPT     all  --  anywhere             anywhere           state NEW,RELATED,ESTABLISHED 
    ACCEPT     all  --  anywhere             anywhere           state RELATED,ESTABLISHED 
    MY_REJECT  tcp  --  anywhere             anywhere           tcp dpts:loc-srv:netbios-ssn
    Also wieso habe ich dort die "ACCEPT all -- anywhere anywhere" Zeile vor der richtig aussehenden Zeile mit "state RELATED,ESTABLISHED"?
    Ist das ein Anzeigefehler, oder was stimmt an meinem Script nicht?
    Schliesslich habe ich nur iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT in dem Script..


    Gruss
    Geändert von core (03.05.04 um 08:06 Uhr)
    When I sat down to read your post a tear dropped out of my eye, then i realized I sat on a joystick.

  2. #2
    Premium Mitglied Avatar von Stage
    Registriert seit
    Jun 2002
    Beiträge
    810
    Jo also die Regeln die du da meinst, kommt mit Sicherheit nicht aus dem Stück Code den du da oben geschrieben hast. Du musst noch woanders sowas haben das den mit einfügt.
    Kernel (2.6.x) Konfigurations-Howto
    Gentoo Optimierungs-Howto
    IRC: irc.freenode.org - #gentoo-anfaenger

  3. #3
    reitet auf GNUs Avatar von core
    Registriert seit
    Dec 2003
    Ort
    Berlin
    Beiträge
    895
    Zitat Zitat von Stage
    Jo also die Regeln die du da meinst, kommt mit Sicherheit nicht aus dem Stück Code den du da oben geschrieben hast. Du musst noch woanders sowas haben das den mit einfügt.

    MMh..

    Ansonsten wäre da nur
    iptables -A INPUT -i lo -j ACCEPT

    Aber wieso steht dann dort als Source & Dest 'anywhere'..?



    Hier mal der komplette Anfang meines Scripts...

    EDIT... Naja, jetzt ist es mir auch klar geworden... Source und Dest beziehen sich wohl nicht auf das Interface sondern auf explizit angegebene Netzmasken..
    Hat sich also erledigt..


    Gruss
    Geändert von core (03.05.04 um 09:24 Uhr)
    When I sat down to read your post a tear dropped out of my eye, then i realized I sat on a joystick.

  4. #4
    Premium Mitglied Avatar von Stage
    Registriert seit
    Jun 2002
    Beiträge
    810
    jo und mit iptables -L -v werden auch die Interfaces mit angezeigt
    Kernel (2.6.x) Konfigurations-Howto
    Gentoo Optimierungs-Howto
    IRC: irc.freenode.org - #gentoo-anfaenger

  5. #5
    Moderator
    Registriert seit
    May 2002
    Ort
    Dortmund
    Beiträge
    1.407
    Du kannst Dir den kompletten Regelsatz aus dem ursprünglichen Skript auch mit "firewall status" oder "rcfirewall status" ausgeben lassen - schaut stark nach einem Codeteil aus meinem Generator aus

    Das Kommando führt ja genau die Kommandos "iptables [-t <tabelle>] -L -vn" für die drei Standardtabellen aus und zeigt somit auch alle wichtigen Parameter der Regeln an

    Harry
    Wer einen Fehler findet, der darf ihn gerne behalten ;)
    http://harry.homelinux.org - iptables Generator & mehr

  6. #6
    reitet auf GNUs Avatar von core
    Registriert seit
    Dec 2003
    Ort
    Berlin
    Beiträge
    895
    Zitat Zitat von Harry
    Du kannst Dir den kompletten Regelsatz aus dem ursprünglichen Skript auch mit "firewall status" oder "rcfirewall status" ausgeben lassen - schaut stark nach einem Codeteil aus meinem Generator aus
    Harry
    Zufälle gibt's, Ja es entspringt aus Deinem IPtables Generator. Erstmal ein Kompliment für dieses 1A Script.

    Aber wo ich Dich schon mal 'an der Angel' habe, nutze ich die Gelegenheit auch gleich mal.. Ich habe hier ein Problem mit der Verwendung von RAW Sockets. Das äussert sich z.B. bei einem nmap Scan (als root natürlich).

    Und zwar habe ich es inzwischen so weit geschafft, dass ich wenigstens meine eigenen IP Scannen kann ohne einen Fehler zu erhalten. Beim Scannen von Remote Systemen (Auch im LAN) kommt aber sowas:

    # nmap -O <remote_system>
    Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2004-05-05 04:12 CEST
    sendto in send_tcp_raw: sendto(3, packet, 60, 0, 123.123.123.123, 16) => Operatio n not permitted
    sendto in send_tcp_raw: sendto(3, packet, 60, 0, 123.123.123.123, 16) => Operatio n not permitted

    Interesting ports on ...
    Ich habe wie gesagt schon ein paar Änderungen gemacht, hier das aktuelle Script.

    Code:
        echo "Starte IP-Paketfilter"
        modprobe ip_tables >/dev/null 2>&1
        modprobe ip_conntrack >/dev/null 2>&1
        modprobe ip_conntrack_ftp >/dev/null 2>&1
        LAN_IP=$(ifconfig eth1 | head -n 2 | tail -n 1 | cut -d: -f2 | cut -d" " -f 1)
        iptables -F
        iptables -t nat -F
        iptables -t mangle -F
        iptables -X
        iptables -t nat -X
        iptables -t mangle -X
        iptables -P INPUT DROP
        iptables -P OUTPUT DROP
        iptables -P FORWARD DROP
        iptables -A INPUT -i lo -j ACCEPT
        iptables -A OUTPUT -o lo -j ACCEPT
        iptables -N MY_REJECT
        iptables -A MY_REJECT -p tcp -m limit --limit 7200/h -j LOG --log-prefix "REJECT TCP "
        iptables -A MY_REJECT -p tcp -j REJECT --reject-with tcp-reset
        iptables -A MY_REJECT -p udp -m limit --limit 7200/h -j LOG --log-prefix "REJECT UDP "
        iptables -A MY_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable
        iptables -A MY_REJECT -p icmp -m limit --limit 7200/h -j LOG --log-prefix "DROP ICMP "
        iptables -A MY_REJECT -p icmp -j DROP
        iptables -A MY_REJECT -m limit --limit 7200/h -j LOG --log-prefix "REJECT OTHER "
        iptables -A MY_REJECT -j REJECT --reject-with icmp-proto-unreachable
        iptables -N MY_DROP                                                 
        iptables -A MY_DROP -m limit --limit 7200/h -j LOG --log-prefix "DROP PORTSCAN "
        iptables -A MY_DROP -j DROP
        iptables -N MY_DROPIT
        iptables -A MY_DROPIT -m limit --limit 7200/h -j LOG --log-prefix "DROP CON "
        iptables -A MY_DROPIT -j DROP
        iptables -A INPUT -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "INPUT INVALID "
        iptables -A FORWARD -m state --state INVALID -m limit --limit 7200/h -j LOG --log-prefix "FORWARD INVALID "
        iptables -A INPUT -m state --state INVALID -j DROP
        iptables -A FORWARD -m state --state INVALID -j DROP
        iptables -A INPUT -p tcp --tcp-flags ALL NONE -j MY_DROP
        iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j MY_DROP
        iptables -A INPUT -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP
        iptables -A FORWARD -p tcp --tcp-flags SYN,FIN SYN,FIN -j MY_DROP
        iptables -A INPUT -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP
        iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN,RST -j MY_DROP
        iptables -A INPUT -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP
        iptables -A FORWARD -p tcp --tcp-flags FIN,RST FIN,RST -j MY_DROP
        iptables -A INPUT -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP
        iptables -A FORWARD -p tcp --tcp-flags ACK,FIN FIN -j MY_DROP
        iptables -A INPUT -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP
        iptables -A FORWARD -p tcp --tcp-flags ACK,PSH PSH -j MY_DROP
        iptables -A INPUT -p tcp --tcp-flags ACK,URG URG -j MY_DROP
        iptables -A FORWARD -p tcp --tcp-flags ACK,URG URG -j MY_DROP
        iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
        iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
        iptables -A FORWARD -i ! ppp+ -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
        iptables -A FORWARD -i ppp+ -m state --state ESTABLISHED,RELATED -j ACCEPT
        iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
        iptables -A INPUT -i ppp0 -p tcp --dport 4660:4700 -j DROP
        #mehr Ports ohne Log geblockt und ein paar geöffnet, hier nicht von belang
        iptables -A INPUT -j MY_DROPIT
        iptables -A OUTPUT -j MY_DROPIT
        iptables -A FORWARD -j MY_DROPIT
        iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
        echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null
        for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_source_route 2> /dev/null; done
        for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_redirects 2> /dev/null; done
        for i in /proc/sys/net/ipv4/conf/*; do echo 2 > $i/rp_filter 2> /dev/null; done
        for i in /proc/sys/net/ipv4/conf/*; do echo 1 > $i/log_martians 2> /dev/null; done
        for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/bootp_relay 2> /dev/null; done
        for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/proxy_arp 2> /dev/null; done
        echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses 2> /dev/null
        echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 2> /dev/null
        echo 5 > /proc/sys/net/ipv4/icmp_ratelimit
        echo 262144 > /proc/sys/net/ipv4/ipfrag_high_thresh
        echo 196608 > /proc/sys/net/ipv4/ipfrag_low_thresh
        echo 30 > /proc/sys/net/ipv4/ipfrag_time
        echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
        echo 3 > /proc/sys/net/ipv4/tcp_retries1
        echo 15 > /proc/sys/net/ipv4/tcp_retries2
    Also soweit ich mich erinnere, habe ich
    - die loopback-ACCEPT Regel nach oben gestellt
    - Pakete mit -state INVALID in der OUTPUT chain erlaubt
    - evtl. was an den 'default Regeln' mit -m state --state ESTABLISHED, RELATED, etc. geändert. Kann mich nicht mehr genau erinnern.

    Also wie werde ich diese RAW Socket Fehler los? Liegt das an den Stealth-Scan settings?
    Werde daraus nicht mehr schlau.

    Gruss, und danke für die Mühe :-)
    Geändert von core (05.05.04 um 03:31 Uhr)
    When I sat down to read your post a tear dropped out of my eye, then i realized I sat on a joystick.

  7. #7
    Moderator
    Registriert seit
    May 2002
    Ort
    Dortmund
    Beiträge
    1.407

    Thumbs up

    Hi core,

    Du könntest einfach mal während des Scans die neuen Einträge in Deinem Logfile (wahrscheinlich /var/log/messages) anschauen; der Grund warum nmap unter bestimmten Bedingungen nicht rauskommt, sollte dort über die LOG-Regeln vermerkt sein.

    Im allgemeinen halte ich es eh für keine besonders gute Idee, nmap von einem Host zu benutzen, auf dem das Filterskript läuft, denn nmap erzeugt ja gerade eine Reihe von TCP-Paketen mit eigentlich unzulässigen Flagkombinationen, die dann vom Filterskript nicht durchgelassen werden.

    Die Zeile
    Code:
    iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    wird da nicht ausreichen, um solcherlei manipulierte TCP-Header auf die Reise zu schicken.

    Grüße
    Harry
    Wer einen Fehler findet, der darf ihn gerne behalten ;)
    http://harry.homelinux.org - iptables Generator & mehr

  8. #8
    reitet auf GNUs Avatar von core
    Registriert seit
    Dec 2003
    Ort
    Berlin
    Beiträge
    895
    Bei nmap 192.168.0.10 kam erst mal das.. die 0.1 bin ich
    May 5 09:59:19 core kernel: DROP CON IN=eth1 OUT= MAC=00:30:84:76:58:16:00:80:c8:4e:53:bb:08:00 SRC=192.168.0.10 DST=192.168.0.1 LEN=70 TOS=0x00 PREC=0x00 TTL=64 ID=16707 PROTO=UDP SPT=1077 DPT=53 LEN=50
    DNS Server habe ich hier nicht am laufen, die .10 hat als DNS den DNS vom Provider. Nunja, ohne das OS Fingerprinting bekomme ich aber auch diese tcp_sendto_raw Fehler nicht..
    Bei nmap -O 192...
    kam nun nur folgendes im Syslog:
    May 5 10:02:25 core kernel: DROP CON IN= OUT=eth1 SRC=192.168.0.1 DST=192.168.0.10 LEN=60 TOS=0x00 PREC=0x00 TTL=48 ID=61980 PROTO=TCP SPT=50695 DPT=139 WINDOW=1024 RES=0x00 URGP=0
    May 5 10:02:27 core kernel: DROP CON IN= OUT=eth1 SRC=192.168.0.1 DST=192.168.0.10 LEN=60 TOS=0x00 PREC=0x00 TTL=54 ID=43544 PROTO=TCP SPT=50695 DPT=139 WINDOW=3072 RES=0x00 URGP=0
    May 5 10:02:31 core kernel: DROP CON IN= OUT=eth1 SRC=192.168.0.1 DST=192.168.0.10 LEN=60 TOS=0x00 PREC=0x00 TTL=41 ID=7068 PROTO=TCP SPT=50695 DPT=139 WINDOW=2048 RES=0x00 URGP=0
    May 5 10:02:33 core kernel: DROP CON IN= OUT=eth1 SRC=192.168.0.1 DST=192.168.0.10 LEN=60 TOS=0x00 PREC=0x00 TTL=50 ID=57004 PROTO=TCP SPT=50695 DPT=139 WINDOW=3072 RES=0x00 URGP=0
    May 5 10:02:38 core kernel: DROP CON IN= OUT=eth1 SRC=192.168.0.1 DST=192.168.0.10 LEN=60 TOS=0x00 PREC=0x00 TTL=49 ID=4048 PROTO=TCP SPT=50695 DPT=139 WINDOW=2048 RES=0x00 URGP=0
    May 5 10:02:40 core kernel: DROP CON IN= OUT=eth1 SRC=192.168.0.1 DST=192.168.0.10 LEN=60 TOS=0x00 PREC=0x00 TTL=56 ID=50445 PROTO=TCP SPT=50695 DPT=139 WINDOW=1024 RES=0x00 URGP=0
    Gruss

    Edit: Wo ich das so betrachte fällt mir auf, das ich folgendes noch erwähnen sollte
    Bestandteil meiner Rules..
    # damit die würmer mir meine logs nicht vollschreiben..
    iptables -A INPUT -i ppp0 -p tcp --dport 135:139 -j DROP
    iptables -A INPUT -i ppp0 -p tcp --dport 445 -j DROP
    # win im lan broadcasts ignorieren
    iptables -A INPUT -i eth1 -p udp --destination 192.168.0.255 -j DROP
    # externe win kommunikation unterbinden
    iptables -A FORWARD -i eth1 -p tcp --dport 135:139 -j MY_REJECT
    iptables -A FORWARD -i eth1 -p tcp --dport 445 -j MY_REJECT
    iptables -A FORWARD -i eth1 -p udp --dport 135:139 -j MY_REJECT
    iptables -A FORWARD -i eth1 -p udp --dport 445 -j MY_REJECT
    Geändert von core (05.05.04 um 09:17 Uhr)
    When I sat down to read your post a tear dropped out of my eye, then i realized I sat on a joystick.

  9. #9
    reitet auf GNUs Avatar von core
    Registriert seit
    Dec 2003
    Ort
    Berlin
    Beiträge
    895
    Und noch ein Nachtrag..
    Beim Scannen einer IP im Inetnet passiert folgendes..
    Code:
    # nmap -O 80.136.***.**
    
    Starting nmap 3.50 ( http://www.insecure.org/nmap/ ) at 2004-05-05 10:19 CEST
    Warning:  OS detection will be MUCH less reliable because we did not find at least 1 open and 1 closed TCP port
    Interesting ports on ********.dip.t-dialin.net (80.136.***.**):
    (The 1656 ports scanned but not shown below are in state: closed)
    PORT   STATE    SERVICE
    21/tcp filtered ftp
    23/tcp filtered telnet
    80/tcp filtered http
    Too many fingerprints match this host to give specific OS details
    
    Nmap run completed -- 1 IP address (1 host up) scanned in 59.299 seconds
    Diesmal kein Fehler in der Art...
    Dafür das im Syslog:
    May 5 10:19:34 core kernel: DROP CON IN=ppp0 OUT= MAC= SRC=80.136.***.** DST=82.82.??.??? LEN=40 TOS=0x00 PREC=0x00 TTL=247 ID=56634 PROTO=TCP SPT=1441 DPT=63500 WINDOW=0 RES=0x00 ACK RST URGP=0
    May 5 10:19:37 core kernel: DROP CON IN=ppp0 OUT= MAC= SRC=80.136.***.** DST=82.82.??.??? LEN=40 TOS=0x00 PREC=0x00 TTL=247 ID=56828 PROTO=TCP SPT=840 DPT=63499 WINDOW=0 RES=0x00 ACK RST URGP=0
    Das diese Pakete nicht in die Kategorie RELATED fallen ist ja an sich klar...

    Gruss
    Geändert von core (05.05.04 um 09:25 Uhr)
    When I sat down to read your post a tear dropped out of my eye, then i realized I sat on a joystick.

Ähnliche Themen

  1. ftpserver + iptables
    Von HellTron im Forum Sicherheit
    Antworten: 6
    Letzter Beitrag: 17.04.04, 23:11
  2. [Routing] Fehler im Routing, einstellungen bei Windows
    Von -Sensemann- im Forum Router und Netzaufbau
    Antworten: 7
    Letzter Beitrag: 07.03.04, 17:02
  3. Antworten: 6
    Letzter Beitrag: 15.10.03, 22:38
  4. probleme mit meinen router - iptables
    Von Trikolon im Forum Router und Netzaufbau
    Antworten: 2
    Letzter Beitrag: 11.10.03, 22:55
  5. zuviel logging bei iptables
    Von der_angler im Forum Router und Netzaufbau
    Antworten: 2
    Letzter Beitrag: 23.09.03, 23:09

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •