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.
Linux-Firewall iptables unter Raspbian konfigurieren
- boandlkramer
- Thread is marked as Resolved.
-
-
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. SuperHab 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:
Codesudo 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:Code
Display More*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 -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 8000 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 8081 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 7227 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 7070 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A SSH-BruteForce -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set$ -A SSH-BruteForce -p tcp -m tcp --dport 22 -m state --state NEW -j SSH-Whitelist -A SSH-BruteForce -p tcp -m tcp --dport 22 -m state --state NEW -m recent --upd$ -A SSH-Whitelist -s 192.168.0.0/30 -m recent --remove --name ssh --rsource -j A$ COMMIT
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!
-
Hallo _hc_,
QuoteKomischerweise 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.
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.
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 ACCEPTWenn 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
-
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 ? =)
-
Danke für das Tutorial, aber:
das geht doch auch viel einfacher:
einfach das Paket "iptables-persistent" installieren mit
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 -
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.-> 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! :-) -
-
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 chees,
die benötigte Firewall-Regel habe ich auf der folgenden Seite ergänzt.
http://www.gtkdb.de/index_36_2253.html
Gruß Georg
-
//OT:
Ja hey Georg :) ...
Welche steife Brise hat Dich denn hierher geweht?
Schön, mal wieder was von Dir zu lesen.
Ich hoffe, ich treffe Dich dann öfter hier wieder an ...
Du als Allrounder fehlst einfach.cu,
-ds- -
-
Vielen Dank Boandlkramer, Du bist ein Held!
-
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?
Code
Display More*filter :INPUT DROP [159:12505] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [140:13492] -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 NEW -m tcp --dport 1800 -j ACCEPT -A INPUT -p tcp -m --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m --state NEW -m tcp --dport 443 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT
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.
Code
Display More*filter :INPUT DROP [159:12505] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [140:13492] -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 1800 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited COMMIT
Beim Thema OMD kann ich dir leider nicht weiterhelfen.
Gruß Georg
-
BTW: Warum brauchst Du die Regel mit dem target REJECT, wenn die default policy der INPUT chain DROP ist? -
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
-