iptables => mal wieder nen Newbie der seine Ports nicht..

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Edgar
Beiträge: 11
Registriert: 28.05.2004 16:31:05
Wohnort: Ruhrgebiet

iptables => mal wieder nen Newbie der seine Ports nicht...

Beitrag von Edgar » 22.10.2004 14:52:04

Hallo

ich vor ca. nem Jahr mein fli4l - Router zu nem ordentlichen Linux Router mit Debian aufgerüstet :-). Naja eigentlich läuft alles so wie es soll - nur bekomme ich irgendwie nie Ports an meine Rechner ins LAN weitergeleitet. Ich hab schon Stunden verbacht, um in Foren und im Web Beschreibungen zu lesen und dann zu testen.

Jedenfalls sollte es doch so eigentlich funktionieren - oder ? So hatten das wenigstens viele Leute hier im Forum schon.

Code: Alles auswählen

# ICQ - Ports   
    
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 5010:5019 -j ACCEPT
    iptables -A INPUT -i ppp0 -m state --state NEW -p udp --dport 5010:5019 -j ACCEPT
    
   iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 5010:5019 -j DNAT --to 192.168.0.4:5010:5019
   iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 5010:5019 -j DNAT --to 192.168.0.4:5010:5019
Ich hatte auch etliche ähnliche Varianten getestet (alle Ports einzeln aufgelistet usw.).


Hier ist einfach mal mein gesammtes Firewall - Skript. Hoffentlich ist das jetzt nicht zu unübersichtlich. Das Skript habe ich Newbie - konform mit dem Baukasten von
http://www.harry.homelinux.org zusammen geschustert. Vorher hatte ich aber auch schon mal ein kleines Skript laufen, was auch funktionierte. Nur waren dann die WG - Kollegen nicht sicher, dass ne "richtige" Firewall luppt ;-).

Code: Alles auswählen

case "$1" in
  start)
    echo "Starte IP-Paketfilter"

    # iptables-Modul
    modprobe ip_tables
    # Connection-Tracking-Module
    modprobe ip_conntrack
    # Das Modul ip_conntrack_irc ist erst bei Kerneln >= 2.4.19 verfuegbar
    modprobe ip_conntrack_irc
    modprobe ip_conntrack_ftp

    # Tabelle flushen
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X
    iptables -t nat -X
    iptables -t mangle -X

    # Default-Policies setzen
    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP

    # MY_REJECT-Chain
    iptables -N MY_REJECT

    # MY_REJECT fuellen
    iptables -A MY_REJECT -p tcp -j REJECT --reject-with tcp-reset
    iptables -A MY_REJECT -p udp -j REJECT --reject-with icmp-port-unreachable
    iptables -A MY_REJECT -p icmp -j DROP
    iptables -A MY_REJECT -j REJECT --reject-with icmp-proto-unreachable

    # MY_DROP-Chain
    iptables -N MY_DROP
    iptables -A MY_DROP -j DROP

    # Korrupte Pakete zurueckweisen
    iptables -A INPUT -m state --state INVALID -j DROP
    iptables -A OUTPUT -m state --state INVALID -j DROP
    iptables -A FORWARD -m state --state INVALID -j DROP

    # Stealth Scans etc. DROPpen
    # Keine Flags gesetzt
    iptables -A INPUT -p tcp --tcp-flags ALL NONE -j MY_DROP
    iptables -A FORWARD -p tcp --tcp-flags ALL NONE -j MY_DROP

    # SYN und FIN gesetzt
    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

    # SYN und RST gleichzeitig gesetzt
    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

    # FIN und RST gleichzeitig gesetzt
    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

    # FIN ohne ACK
    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

    # PSH ohne ACK
    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

    # URG ohne ACK
    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

    # Loopback-Netzwerk-Kommunikation zulassen
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A OUTPUT -o lo -j ACCEPT

    # Maximum Segment Size (MSS) für das Forwarding an PMTU anpassen
    iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

    # Connection-Tracking aktivieren
    iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -i ! ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    # HTTP
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 80 -j ACCEPT

    # HTTPS
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 443 -j ACCEPT

    # SMTP
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 25 -j ACCEPT

    # POP3
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 110 -j ACCEPT

    # POP3S
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 995 -j ACCEPT

    # IMAP
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 143 -j ACCEPT

    # IMAPS
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 993 -j ACCEPT

    # DNS
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 53 -j ACCEPT
    iptables -A INPUT -i ppp0 -m state --state NEW -p udp --dport 53 -j ACCEPT

    # FTP
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 21 -j ACCEPT

    # SSH
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 22 -j ACCEPT

    # MYSQL
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 3306 -j ACCEPT

    # NTP
    iptables -A INPUT -i ppp0 -m state --state NEW -p udp --dport 123 -j ACCEPT

    # IRC
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 6667 -j ACCEPT

    # EDONKEY
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 4661 -j ACCEPT
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 4662 -j ACCEPT
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 4663 -j ACCEPT
    iptables -A INPUT -i ppp0 -m state --state NEW -p udp --dport 4665 -j ACCEPT

    # HALF-LIFE
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 6000:6003 -j ACCEPT
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 7001:7002 -j ACCEPT
    iptables -A INPUT -i ppp0 -m state --state NEW -p udp --dport 27005 -j ACCEPT
    iptables -A INPUT -i ppp0 -m state --state NEW -p udp --dport 27010 -j ACCEPT
    iptables -A INPUT -i ppp0 -m state --state NEW -p udp --dport 27015:27016 -j ACCEPT

    # IPSEC
    iptables -A INPUT -i ppp0 -p 50 -j ACCEPT
    iptables -A INPUT -i ppp0 -p 51 -j ACCEPT
    iptables -A INPUT -i ppp0 -m state --state NEW -p udp --dport 500 -j ACCEPT

    # OPENVPN
    iptables -A INPUT -i ppp0 -m state --state NEW -p udp --dport 5000 -j ACCEPT

    
    # ICQ - Ports => von mir eingetragen am  21.10.2004
    
    
    iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 5010:5019 -j ACCEPT
    iptables -A INPUT -i ppp0 -m state --state NEW -p udp --dport 5010:5019 -j ACCEPT
    

    #iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 5010:5019 -j DNAT --to 192.168.0.4:5010:5019
    #iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 5010:5019 -j DNAT --to 192.168.0.4:5010:5019
    
    #iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 5010:5019 -j DNAT --to-destination 192.168.0.4 
    #iptables -t nat -A POSTROUTING -o eth0 -p tcp --dport 5010:5019 -j SNAT --to 192.168.0.4
    #iptables -A FORWARD -i ppp0 -m state --state NEW -p tcp -d 192.168.0.4 --dport 5010:5019 -j ACCEPT
       
    
    
    # LAN-Zugriff auf eth0
    iptables -A INPUT -m state --state NEW -i eth0 -j ACCEPT

    # Default-Policies mit REJECT
    iptables -A INPUT -j MY_REJECT
    iptables -A OUTPUT -j MY_REJECT
    iptables -A FORWARD -j MY_REJECT

    # Routing
    echo 1 > /proc/sys/net/ipv4/ip_forward 2> /dev/null

    # Masquerading
    iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

    # SYN-Cookies
    echo 1 > /proc/sys/net/ipv4/tcp_syncookies 2> /dev/null

    # Stop Source-Routing
    for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_source_route 2> /dev/null; done

    # Stop Redirecting
    for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/accept_redirects 2> /dev/null; done

    # Reverse-Path-Filter
    # Auskommentiert, da IPSEC mit RP_Filter nicht funktioniert!
#     for i in /proc/sys/net/ipv4/conf/*; do echo 2 > $i/rp_filter 2> /dev/null; done

    # Log Martians
    for i in /proc/sys/net/ipv4/conf/*; do echo 1 > $i/log_martians 2> /dev/null; done

    # BOOTP-Relaying ausschalten
    for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/bootp_relay 2> /dev/null; done

    # Proxy-ARP ausschalten
    for i in /proc/sys/net/ipv4/conf/*; do echo 0 > $i/proxy_arp 2> /dev/null; done

    # Ungültige ICMP-Antworten ignorieren
    echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses 2> /dev/null

    # ICMP Echo-Broadcasts ignorieren
    echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts 2> /dev/null

    # Max. 500/Sekunde (5/Jiffie) senden
    echo 5 > /proc/sys/net/ipv4/icmp_ratelimit

    # Speicherallozierung und -timing für IP-De/-Fragmentierung
    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

    # TCP-FIN-Timeout zum Schutz vor DoS-Attacken setzen
    echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

    # Maximal 3 Antworten auf ein TCP-SYN
    echo 3 > /proc/sys/net/ipv4/tcp_retries1

    # TCP-Pakete maximal 15x wiederholen
    echo 15 > /proc/sys/net/ipv4/tcp_retries2

    ;;

  stop)
    echo "Stoppe IP-Paketfilter"
    # Tabelle flushen
    iptables -F
    iptables -t nat -F
    iptables -t mangle -F
    iptables -X
    iptables -t nat -X
    iptables -t mangle -X
    echo "Deaktiviere IP-Routing"
    echo 0 > /proc/sys/net/ipv4/ip_forward

    # Default-Policies setzen
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    iptables -P FORWARD ACCEPT
    ;;

  status)
    echo "Tabelle filter"
    iptables -L -vn
    echo "Tabelle nat"
    iptables -t nat -L -vn
    echo "Tabelle mangle"
    iptables -t mangle -L -vn
    ;;

  *)
    echo "Fehlerhafter Aufruf"
    echo "Syntax: $0 {start|stop|status}"
    exit 1
    ;;

esac

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 23.10.2004 07:58:19

Moin moin,

ich würde an Deiner Stelle reichlich iptables-Befehle dazu eintragen, die Dir was ins Logfile blubbern, sprich, vor einem PREROUTING einfach mal mit -j LOG ins syslog schreiben lassen. Gleiches mit einer FORWARD und OUTPUT-Rule zum LAN hin. Dann solltest Du recht schnell drauf kommen, wo die Pakete "hängen" bleiben ...

Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE

Edgar
Beiträge: 11
Registriert: 28.05.2004 16:31:05
Wohnort: Ruhrgebiet

und wie geht das dann :-)

Beitrag von Edgar » 26.10.2004 15:24:59

@mistersixt

danke für den Tip => aber wie lasse ich mir die Fehlermedungen in ne LOG - Datei schreiben. Oder gibts die LOG - Datei automatisch ? Und wenn ja, wo mag die dann bloß zu finden sein :roll: ?

Trotzdem schon mal Danke für Deine Antwort


Edgar

Edgar
Beiträge: 11
Registriert: 28.05.2004 16:31:05
Wohnort: Ruhrgebiet

und wie geht das dann :-)

Beitrag von Edgar » 26.10.2004 15:25:04

@mistersixt

danek für den Tip => aber wie lasse ich mir die Fehlermedungen in ne LOG - Datei schreiben. Oder gibts die LOG - Datei automatisch ? Und wenn ja, wo mag die dann bloß zu finden sein :roll: ?

Trotzdem schon mal Danke für Deine Antwort


Edgar

Benutzeravatar
alo
Beiträge: 279
Registriert: 20.11.2002 13:28:46

Re: iptables => mal wieder nen Newbie der seine Ports nicht.

Beitrag von alo » 26.10.2004 16:49:19

Edgar hat geschrieben: iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 5010:5019 -j ACCEPT
iptables -A INPUT -i ppp0 -m state --state NEW -p udp --dport 5010:5019 -j ACCEPT

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 5010:5019 -j DNAT --to 192.168.0.4:5010:5019
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 5010:5019 -j DNAT --to 192.168.0.4:5010:5019
Ich kann mir nicht vorstellen, dass das funktioniert!
Ich dachte, man kann nur entweder
- eine Portrange an eine IP weiterleiten, oder
- einen Port an einen bestimmten Port einer Ziel-IP,
aber nicht beides gemischt.

Die Angabe [IP]:[Port-Range] hab ich jedenfalls noch nie gesehen....

(aber ich mag mich irren)
<erno> hm. I've lost a machine.. literally _lost_. it responds to ping, it works completely, I just can't figure out where in my apartment it is.

d0t
Beiträge: 18
Registriert: 20.02.2004 06:21:30
Wohnort: germering
Kontaktdaten:

Re: iptables => mal wieder nen Newbie der seine Ports nicht.

Beitrag von d0t » 27.10.2004 11:30:50

alo hat geschrieben:
Edgar hat geschrieben: iptables -A INPUT -i ppp0 -m state --state NEW -p tcp --dport 5010:5019 -j ACCEPT
iptables -A INPUT -i ppp0 -m state --state NEW -p udp --dport 5010:5019 -j ACCEPT

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 5010:5019 -j DNAT --to 192.168.0.4:5010:5019
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 5010:5019 -j DNAT --to 192.168.0.4:5010:5019
Ich kann mir nicht vorstellen, dass das funktioniert!
Ich dachte, man kann nur entweder
- eine Portrange an eine IP weiterleiten, oder
- einen Port an einen bestimmten Port einer Ziel-IP,
aber nicht beides gemischt.

Die Angabe [IP]:[Port-Range] hab ich jedenfalls noch nie gesehen....

(aber ich mag mich irren)
würd ich auch mal spontan sagen ...
so müsste es eigentlich schon tun

Code: Alles auswählen

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 5010:5019 -j DNAT --to 192.168.0.4
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 5010:5019 -j DNAT --to 192.168.0.4
zumindest is es bei mir so ... hmm
hinter die ip könnte man noch nen port schreiben aber eigentlich müsste die pakete ihren weg auch so finden

Benutzeravatar
alo
Beiträge: 279
Registriert: 20.11.2002 13:28:46

Re: iptables => mal wieder nen Newbie der seine Ports nicht.

Beitrag von alo » 27.10.2004 13:08:43

d0t hat geschrieben:

Code: Alles auswählen

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 5010:5019 -j DNAT --to 192.168.0.4
iptables -t nat -A PREROUTING -i ppp0 -p udp --dport 5010:5019 -j DNAT --to 192.168.0.4
hinter die ip könnte man noch nen port schreiben ...
ja eben nicht, wie ich finde. Ich kann ja nicht eine Portrange an einen Port weiterleiten!
also:

Code: Alles auswählen

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 5010:5019 -j DNAT --to 192.168.0.4:5010
würde ja keinen Sinn machen

Code: Alles auswählen

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 5010:5019 -j DNAT --to 192.168.0.4:5010:5019
geht meiner Meinung nach auch nicht, da die Zuordnung von Portrange A nach Portrange B nicht eindeutig ist (gut, hier sind's die gleichen Ports, aber das muss ja nicht so sein)
<erno> hm. I've lost a machine.. literally _lost_. it responds to ping, it works completely, I just can't figure out where in my apartment it is.

Antworten