Linux-Firewall iptables unter Raspbian konfigurieren

  • Hallo Georg, danke für die Hilfe. Werde mir das morgen noch mal anschauen. Stimmt da habe ich irgendwas falsch gemacht mit dem DEFAULT. Danke schön.

  • Vielen Dank für dieses Tutorial!
    Bin nach dieser Anleitung vorgegangen und mein Raspi ist nun via der DMZ-Funktion des Routers von überall erreichbar. Super :D


    Hab noch eine kurze Frage, vielleicht kann mir jemand helfen:


    Ich möchte nun von außen über das Internet über meinen Raspi einen weiteren Server in meinem internen LAN erreichen. Hab schon etwas darüber gelesen, soweit ich das verstanden habe muss ich einen Port forwarden. Folgende Befehle hab ich in der Konsole ausgeführt:

    Code
    sudo iptables -t nat -A PREROUTING -p tcp --dport 7070 -j DNAT --to-destination XX.XX.XX.XX:80
    sudo iptables -t nat -A POSTROUTING -p tcp --dport 7070 -j MASQUERADE


    XX.XX.XX.XX:80 sind die IP und der Port des Servers im internen LAN der von außen über den Port 7070 erreichbar sein soll.
    Komischerweise tut sich gar nix; der Server ist weder von außen erreichbar, noch wurde irgendwas in iptables durch die oben genannten Befehle ergänzt. Meine derzeitige iptables:


    Würde mich freuen wenn mir jemand sagen, wie ich in diesem Fall korrekt vorzugehen habe! Danke!


    EDIT: Eins hab ich noch vergessen: bei mir ist alles verkabelt, kein WLAN!

    Edited once, last by _hc_ ().

  • Hallo _hc_,


    Quote

    Komischerweise tut sich gar nix; der Server ist weder von außen erreichbar, noch wurde irgendwas in iptables durch die oben genannten Befehle ergänzt.


    Du hast vermutlich die zwei Befehle ausgeführt und dir dann nur den Inhalt der "/etc/network/iptables" angesehen. Da wirst du auch keine Änderung feststellen können. Mit den beiden Befehlen werden die Firewall-Regeln erstellt aber noch nicht in die "/etc/network/iptables" eingetragen. Wenn du nach dem Systemstart mal den folgenden Befehl aufrufst, werden dir die aktiven Firewall-Regeln angezeigt.


    Code
    sudo iptables -L


    Jetzt kannst du mal deine zwei Befehle ausführen und dir danach nochmals mit dem genannten Befehl die Firewall-Regeln anzeigen lassen. Du solltest jetzt auch deine zwei neuen Regeln angezeigt bekommen. Solange du die beiden Regeln aber nicht in die "/etc/network/iptables" eingetragen hast, werden diese beim Systemstart auch nicht geladen. Bevor du aber neue Regeln einträgst solltest du diese testen. Sollte etwas schief gehen (du sperrst dich zum Beispiel aus), reicht ein Neustart um den funktionierenden Zustand zurück zu erhalten.


    Du schreibst der Raspberry Pi benutzt nur LAN. Hast du dann eine zweite Netzwerkkarte über USB angeschlossen? Wenn nicht, wundere ich mich, warum du nicht gleich auf deinem Router die Portweiterleitung für das andere System einrichtest. Du musst sowieso den Port 7070 im Router konfigurieren. Also warum den Umweg über den Raspberry Pi gehen?


    Zurück zu deinen Regeln. Hast du nur diese Regeln erstellt oder auch das IP-Forwarding aktiviert? Das IP-Forwarding kannst du temporär über den folgenden Befehl einschalten.


    Code
    sudo sysctl -w net.ipv4.ip_forward=1


    Damit es dauerhaft aktiv bleibt (also einen Neustart überlebt) musst du die "/etc/sysctl.conf" anpassen. Aber probiere es ruhig erstmal aus bevor du die Konfigurationsdatei änderst.


    Gruß Georg

  • Wenn man beim Ausführen des iptables-restore Befehl ständig den Fehler "Could not insert 'iptables': Exec format error" bekommt, hilft da nur ein dist-upgrade bzw rekompilieren des Modules/Kernels?

  • Hey, ich bin relativ neu im Linux Bereich, habe aber heute meinen Raspberry Pi bekommen und wollte ihn bevor ich mir Projekte vornehme erst einmal sichern. Dazu wollte ich das Tutorial befolgen, jedoch komme ich bei diesem Punkt nicht weiter.


    *filter
    :INPUT DROP [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [234:30791]
    :SSH-BruteForce - [0:0]
    :SSH-Whitelist - [0:0]
    -A INPUT -j SSH-BruteForce
    -A INPUT -i lo -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT


    Wenn ich die Textdatei über SSH öffne und dann mit Rechtsklickt die oberen Zeilen einfüge bekomme ich eine Fehlermeldung :(


    vielen dank schonmal, mfg Dreamz

  • Dadurch das georg vi genommen als editor muss zuerst in den Einfügen-Modus wechseln (Einfg-Taste), dann einfügen (mittels rechtsklick), dann ESC, dann :wq zum speichern und beenden. Alternativ einen anfängerfreundlicheren Editor nehmen, wie zum Beispiel nano.


    Wenn eine Fehlermeldung erscheint, sollte man die auch posten ;)

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

    Edited once, last by dbv ().

  • Ok hab es nun soweit hinbekommen, eine Frage hätte ich da noch, wie kann ich jetzt im nachhinein die Datei wieder bearbeiten um neue Portregeln hinzuzufügen ? =)

    Edited once, last by Dreamz ().

  • Danke für das Tutorial, aber:


    das geht doch auch viel einfacher:


    einfach das Paket "iptables-persistent" installieren mit


    Code
    apt-get install iptables-persistent


    Das erstellt automatisch unter /etc/iptables die Datei "rules.v4" (und "rules.v6" falls man auch IPv6 auf seinem RPi betreibt). Der Inhalt dieser Dateien wird während der Paketinstallation automatisch anhand der aktuellen IPTABLES erstellt. Im Endeffekt wird ein "iptables-save >/etc/iptables/rules.v4" ausgeführt. Dann hat man eine Datei, die man komfortabel bearbeiten kann. Man muss sich nicht um Startsktripte kümmern, weil dieses Paket automatisch das Init-Skript unter /etc/init.d/iptables-persistent erstellt hat und diese Regeldatei nach jedem Boot auch reinlädt.


    Viele Grüße,
    Michael

  • Erst mal 'Chapeau' für Deinen ganzen Einsatz hiert, das hat wirklich Hand und Fuß.


    Eine Regel würde mich noch interessieren (ich hoffe ich habe sie hier nicht überlesen): und zwar wie man den Remote-Zugriff z.B. mit rdesktop und xrdp auf den Raspberry freischaltet.
    Im Connection-Log wurde (vor Einrichtung der firewall) Folgendes angezeigt: "connecting to sesman ip 127.0.0.1 port 3350" und "connecting to 127.0.0.1 5910"
    (vgl.:http://www.welzels.de/blog/201…desktop-zum-raspberry-pi/)


    Wie muss ich diese ip-Adresse und diese bzw. noch andere Ports in der iptables einbauen?


    Thx!
    Chees

    Edited once, last by chees ().

  • Und dann habe ich noch eine Frage:


    Mir gelingt es nicht, per FTP den Verzeichnisinhalt aufzulisten.
    Habe Proftp installiert nach diesem Tutorial: http://www.forum-raspberrypi.d…rver-proftpd-installation
    Allerdings der letzte optionale Schritt mit dem Anpassen der Rechte hat nicht funktioniert, deshalb habe ich ihn weggelassen.

    Code
    chmod 775 /var/www


    -> chmod: Beim Setzen der Zugriffsrechte für „/var/www“: Die Operation ist nicht erlaubt


    Die Ranges habe ich wie in Beitrag 18 beschrieben in der proftp-conf und in der iptables freigeschaltet.


    Der Zugriff per FTP funktioniert, allerdings wird der Verzeichnisinhalt nicht gelistet. An was kann das liegen ? An den Berechtigungen ?


    Grüße
    chees


  • Die Ranges habe ich wie in Beitrag 18 beschrieben in der proftp-conf und in der iptables freigeschaltet.


    Ok, hat sich erledigt: habe beim Aktivieren d. passiven Transfers in der proftpd.conf eine # übersehen, die ich noch entfernen musste, damit der Eintrag wirksam wird.
    Jetzt funktioniert es prima! :-)

    Edited once, last by chees ().

  • Trotzdem ich wohl zu spät komme: Ich glaube sowas -> hier <- bzw. das -> hier <- kann man immer brauchen.
    Danke übrigens an dieser Stelle an OReilly ...



    // Edit: ps915 ... diesmal habe ich aber aufgepasst ;) ... trotzdem, check das bitte mal.



    -ds-

  • Hat vielleicht doch jemand möglicherweise einen Tipp, wie man die Remote-Verbindung per rdesktop und xrdp in den iptables freigibt?
    (vgl. Beitrag 29) ?


    Grüße
    chees

  • Hallo Georg und Kollegen,


    ich bitte hiermit einmal um Prüfung meines iptables-Regelwerkes, ich kann dieses nämlich nicht importieren. Er meldet hier Fehler in Zeile 8 hab ich hierbei irgendwo einen Fehler gemacht? SSH nutze ich nicht auf 22 sondern auf port 18XX (hab das mal beispielhaft auf 1800 geändert ist das das Problem?



    Was hab ich falsch gemacht?
    BTW: Ich möchte gern OMD auf dem Raspi laufen lassen da müsste Port 80 Freischaltung genügen, oder brauche ich da noch mehr?
    Danke und Gruß
    Georg

  • Hallo Georg,


    du hast "state" als Argument für den Parameter "-m" vergessen. Die folgenden Regeln sollten funktionieren.



    Beim Thema OMD kann ich dir leider nicht weiterhelfen.


    Gruß Georg

  • Code
    *filter
    :INPUT DROP [159:12505]
    -A INPUT -j REJECT --reject-with icmp-host-prohibited


    BTW: Warum brauchst Du die Regel mit dem target REJECT, wenn die default policy der INPUT chain DROP ist?

    The most popular websites without IPv6 in Germany.


  • Hallo,


    erst einmal ganz lieben Dank für die gute Erklärung. Das hat mir echt weiter geholfen. Jetzt habe ich aber eine Frage, und zwar nutze ich auf meinem Pi einen Squeezeserver von Logitech um mit meinem LAN-Radio Musik hören zu können. Leider weiß ich nicht wie ich die Ports herausfinde oder gar in die iptable eingeben kann und zwar so, dass ich nur von intern darauf zu greifen kann. Kannst du mir dabei helfen?
    Besten Dank schonmal im voraus,


    MfG


    Malte