Anzeige:
Ergebnis 1 bis 10 von 10

Thema: Port Forwarding mit IPTables

  1. #1
    Registrierter Benutzer
    Registriert seit
    May 2012
    Beiträge
    5

    Port Forwarding mit IPTables

    Hallo zusammen,

    ich habe folgendes Problem:
    Auf unserem alten Gateway konnte man den internen Webserver z.B. auf Port 8080 von außen über Port 20200 erreichen.
    Internet <-> Name.dyndns.org:20200 <-> Port Forwarding <-> 192.168.0.23:8080

    Das ganze wurde mit rinted realisiert und klappte bis dato ganz gut.

    Der neue Server läuft auch als Gateway, aber mit Iptables.
    Internet <-> ppp0 <-> IPTables Firewall und Routing <-> eth1 <-> internes Netz 192.168.0.0/24

    Wenn ich rinetd wieder in Betrieb nehme, tut sich nichts, da Iptables den Zugriff verhindert. All meine Versuche das Port Forwarding mit Iptables zu machen, sind bisher fehlgeschlagen.

    Hat jemand ne Idee, wie ich das realisieren kann?

    Habe folgendes zusätzlich zum unten angegebenen Skript versucht:

    /sbin/iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport <QUELLPORT> -j DNAT --to 192.168.202.23:<ZIELPORT>
    /sbin/iptables -A FORWARD -p tcp -i ppp0 -d 192.168.202.23 --dport <ZIELPORT> -j ACCEPT


    Code:
     
    #!/bin/bash
    
    echo "Starting firewall"
    
    LOGLIMIT=20
    IPTABLES=/sbin/iptables
    LAN_IFACE="eth1"
    INET_IFACE="ppp0"
    
    case "$1" in
    start)
       # alle alten Regeln entfernen
       echo "Loesche alte Regeln"
       $IPTABLES -F
       $IPTABLES -X
       $IPTABLES -t nat -F
    
       # Routing 
       echo 1 > /proc/sys/net/ipv4/ip_forward
       $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
       $IPTABLES -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE
       ### ERSTELLE NEUE KETTEN ###
       # Chain to log and reject a port by ICMP port unreachable 
       $IPTABLES -N LOGREJECT 
       $IPTABLES -A LOGREJECT -m limit --limit $LOGLIMIT/minute -j LOG \
              --log-prefix "FIREWALL REJECT " --log-level notice --log-ip-options --log-tcp-options 
       $IPTABLES -A LOGREJECT -j REJECT --reject-with icmp-port-unreachable 
     
       ### PROC MANIPULATION ###
       # auf Broadcast-Pings nicht antworten
       echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
       # halt die Klappe bei komischen ICMP Nachrichten
       echo 0 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
       # Kicke den ganzen IP Spoofing Shit
       # (Source-Validierung anschalten)
       echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
       # Setze Default-TTL auf 61 (Default fuer Linux ist 64)
       echo 61 > /proc/sys/net/ipv4/ip_default_ttl
       # warte max. 30 secs auf ein FIN/ACK
       echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
       # unterbreche Verbindungsaufbau nach 3 SYN-Paketen
       # Default ist 6
       echo 3 > /proc/sys/net/ipv4/tcp_syn_retries
       # unterbreche Verbindungsaufbau nach 3 SYN/ACK-Paketen
       # Default ist 6
       echo 3 > /proc/sys/net/ipv4/tcp_synack_retries
     
       ### MAIN PART ###
       # SSH auf den Server erlauben
       $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 2121 -j ACCEPT
       # OpenVPN durchlassen / erlauben
       $IPTABLES -A INPUT -m state --state NEW -p udp --dport 15555 -j ACCEPT
       $IPTABLES -P INPUT DROP
       $IPTABLES -P FORWARD DROP
       $IPTABLES -P OUTPUT ACCEPT
       $IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
       $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
       # im Loopback koennen wir jedem trauen 
       $IPTABLES -A INPUT -i lo -j ACCEPT
       # ebenso im LAN
       $IPTABLES -A INPUT -i $LAN_IFACE -j ACCEPT
       # erlaube Pings
       $IPTABLES -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
    
       # Alle TCP Packete, die bis hier hin kommen, werden 
            # geloggt und rejected 
            # Der Rest wird eh per Default Policy gedroppt... 
       $IPTABLES -A INPUT -p tcp -j LOGREJECT 
       $IPTABLES -A FORWARD -p tcp -j LOGREJECT
       ;;
    
    *)
     echo "Usage: `basename $0` {start}" >&2
     exit 64
     ;;
    esac
    
    exit 0
    Hoffentlich hat hier jemand ne Idee dazu.
    Das Skript wurde übrigens von hier entnommen.

    Gruß
    Matthias
    Geändert von MatthiasS (30.05.12 um 12:59 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    Sep 2003
    Beiträge
    2.990
    Zitat Zitat von MatthiasS Beitrag anzeigen
    /sbin/iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport <QUELLPORT> -j DNAT --to 192.168.202.23:<ZIELPORT>
    /sbin/iptables -A FORWARD -p tcp -i ppp0 -d 192.168.202.23 --dport <ZIELPORT> -j ACCEPT
    forward eingeschaltet?
    was sagt:
    Code:
    cat  /proc/sys/net/ipv4/ip_forward
    ....

  3. #3
    Registrierter Benutzer
    Registriert seit
    May 2012
    Beiträge
    5
    Zitat Zitat von muell200 Beitrag anzeigen
    was sagt:
    Code:
    cat  /proc/sys/net/ipv4/ip_forward
    1

    Ist eingeschaltet.

    Gruß
    Matthias

  4. #4
    Registrierter Benutzer Avatar von mkahle
    Registriert seit
    Aug 2004
    Ort
    Hanau am Main
    Beiträge
    547
    Du darfst die zwei extra Regeln

    Code:
    /sbin/iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport <QUELLPORT> -j DNAT --to 192.168.202.23:<ZIELPORT>
    /sbin/iptables -A FORWARD -p tcp -i ppp0 -d 192.168.202.23 --dport <ZIELPORT> -j ACCEPT
    nicht nach dem Skript ausführen, sondern mußt den Code innerhalb, vor der Zeile

    Code:
    $IPTABLES -A FORWARD -p tcp -j LOGREJECT
    ausgeführt haben. Zumindest die zweite der beiden Zeilen ... die NAT-Regel kannst Du auch an anderer Stelle einfügen.

    Die Zeile
    Code:
    $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
    ist übrigens doppelt in Deinem Skript.
    Warren's Regel:
    Willst du den Fachmann herausfinden, nimm den, der die meiste Zeit braucht und die höchsten Kosten für eine Sache voraussagt.

  5. #5
    Who's Johnny? Avatar von L00NIX
    Registriert seit
    Mar 2004
    Beiträge
    1.228
    Zitat Zitat von mkahle Beitrag anzeigen
    Die Zeile
    Code:
    $IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
    ist übrigens doppelt in Deinem Skript.
    Ist sie nicht, bei der zweiten fehlt das "NEW".

    Allerdings ist die zitierte Regel sehr offen und erlaubt generell alles zu routen. Keine gute Sache im Sinne der Sicherheit. Da kannst du die Policy für FORWARD gleich auf ACCEPT lassen.

    Gruß
    L00NIX

  6. #6
    Registrierter Benutzer
    Registriert seit
    May 2012
    Beiträge
    5
    Hi folks,

    vielen Dank für Eure Beiträge!
    Der Fehler lag leider ganz wo anders :/
    Das Gateway hat die Pakete zum Zielrechner+Zielport weitergeleitet
    und der Zielrechner hat auch geantwortet.
    Leider ist die Antwort nie zu meinem Gateway vorgedrungen, da der Zielrechner einen falschen(alten) Gateway Eintrag hatte.
    Auf dem Zielrechner lief das dann nach dem Motto: Quellpaket kommt nicht aus dem internen Netz - kein Routingeintrag fürs Quellnetz -> default Route wird benutzt -> Standard Gateway -> Nirvana.

    Die vollständige und richtige Lösung trage ich morgen nach.

    Gruß
    Matthias

  7. #7
    Registrierter Benutzer Avatar von mkahle
    Registriert seit
    Aug 2004
    Ort
    Hanau am Main
    Beiträge
    547
    Ups. Habe das NEW übersehen. Der Einwand mit dem offenen Scheunentor ist selbstverständlich korrekt ...
    Warren's Regel:
    Willst du den Fachmann herausfinden, nimm den, der die meiste Zeit braucht und die höchsten Kosten für eine Sache voraussagt.

  8. #8
    Who's Johnny? Avatar von L00NIX
    Registriert seit
    Mar 2004
    Beiträge
    1.228
    Zitat Zitat von mkahle Beitrag anzeigen
    Ups. Habe das NEW übersehen. Der Einwand mit dem offenen Scheunentor ist selbstverständlich korrekt ...
    Ganz so schlimm ist es nicht... wenn Masquerading aktiviert ist, kommen alle Rechner von Innen ins Internet.

    Wenn kein DNAT aktiv ist, dann erreicht man aus dem Internet nichts im internen Netz.

    Alles halb so wild...
    L00NIX

  9. #9
    Registrierter Benutzer
    Registriert seit
    May 2012
    Beiträge
    5
    Danke für eure Hinweise.

    Hier noch die aktuelle Lösung:
    Code:
    $IPTABLES -t nat -A PREROUTING --dst $EXTERNAL_IP -p tcp --dport 20200 -j DNAT --to-destination 192.168.0.23:8080
    $IPTABLES -t nat -A POSTROUTING --dst 192.168.0.23 -p tcp --dport 8080 -j SNAT --to-source $EXTERNAL_IP
    $IPTABLES -t nat -A OUTPUT --dst $EXTERNAL_IP -p tcp --dport 20200 -j DNAT --to-destination 192.168.0.23:8080
    Etwas unschön ist allerdings, dass sich wegen der 24Stunden-Zwangstrennung
    $EXTERNAL_IP mit ändern müsste, was jedoch nicht passiert, da die Regeln statisch sind.
    D.h. ich muss das Firewallskript periodisch (oder besser noch bei IP-Änderung) erneut ausführen.

    Edit: Wird jetzt via crontab alle 15min ausgeführt.
    Achtung Stolperfalle... cron nutzt als Standard Shell /bin/sh und hat einen eingeschränkten $PATH.
    Pfade in Skripten also auf jeden Fall fest eintragen, z.B. /sbin/iptables
    Geändert von MatthiasS (05.06.12 um 17:41 Uhr)

  10. #10
    Registrierter Benutzer
    Registriert seit
    Jun 2013
    Beiträge
    3
    Hi,
    tut mir leid, wenn ich so nen alten Thread wieder ausgrabe, aber ich hab dasselbe Problem:
    Ich bekomme einfach keine Portweiterleitung hin.
    Könntet ihr mir sagen, welche Regeln ich dazu genau benötige?

Ähnliche Themen

  1. iptables und http
    Von brooklyn1205 im Forum Router und Netzaufbau
    Antworten: 8
    Letzter Beitrag: 07.03.07, 17:19
  2. Ports blocken, es geht einfach nicht >.<
    Von Wayne Static im Forum Sicherheit
    Antworten: 9
    Letzter Beitrag: 29.07.05, 13:31
  3. ftpserver + iptables
    Von HellTron im Forum Sicherheit
    Antworten: 6
    Letzter Beitrag: 17.04.04, 23:11
  4. iptables Firewall & ICQ
    Von Schlams im Forum System installieren und konfigurieren
    Antworten: 23
    Letzter Beitrag: 14.08.03, 21:29
  5. probleme mit iptables-firewall!
    Von gravity im Forum Anbindung an die Aussenwelt
    Antworten: 8
    Letzter Beitrag: 17.06.03, 22:48

Lesezeichen

Berechtigungen

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