Wie kann ich meinen SSH Port von außen blockieren mit iptables?

4 Antworten

iptables -A INPUT -s 192.168.0.0/16 -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j DROP

Je nach Regelwerk der Firewall müssen die Regeln aber auch an einer bestimmten Stelle eingesetzt werden. Die erste Zeile erlaubt den Zugriff von allen Adressen 192.168.x.x. Das sind die Adressen, die in der Regel im Heimnetz verwendet werden. Ggf. musst Du das anpassen. Die zweite Regel verbietet dann den SSH-Zugriff für alle anderen Absender.

Generell wäre es wohl gut, die Policy auf DROP zu setzen und nur das zuzulassen, was zugelassen werden soll.

iptables P INPUT drop
iptables -A INPUT -p tcp -m tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT

Die erste Zeile verbietet alles, die zweite Zeile erlaubt spezifisch HTTPS.

Zudem erhöht es die Sicherheit, wenn man bei SSH die Passwort-Authentisierung ausschaltet und Public Key Authentication konfiguriert.

Desweiteren weiss ich nicht was der ipp Dienst

IPP ist Internet Printing Protocol, also ein Druckdienst. Hast Du CUPS auf dem Rechner installiert? Nach außen hin ist das sicher nicht notwendig. Ob der Dienst überhaupt nötig ist oder ob er deinstalliert werden kann, kann ich nicht beurteilen. Ich weiß ja nicht, was das Gerät für Aufgaben hat.

Ich muss meine Antwort anpassen. Irgendwie habe ich den Screenshot übersehen.

Generell gilt: Ich gehe davon aus, dass Du den Server im Heimnetz stehen hast und auf dem Router eine Portweiterleitung konfiguriert hast. Wenn Du in der Portweiterleitung nur das weiterleitest, was außen erreichbar sein soll, ist das im Grunde schon mal ausreichend. Wenn Port 22 nicht weitergeleitet wird, ist Port 22 auch nicht aus dem Internet erreichbar. Sicherheitshalber kann man aber natürlich auch die Firewall konfigurieren. So werden dann eventuelle Fehler abgefangen, die durch Fehlverhalten oder Fehlkonfiguration des Routers entstehen.

Du hast den Portscan auf localhost gemacht. Um zu erkennen, was wirklich erreichbar ist, solltest Du auf die IP-Adresse des Interfaces scannen. Das kannst Du einmal mit der privaten Adresse machen (in der Regel 192.168.x.x), aber auch auf die öffentliche IP-Adresse, mit der Dein Gerät im Internet erreichbar ist. Da sollten sich schon Unterschiede ergeben.

Und ja, meine Frage:

Hast Du CUPS auf dem Rechner installiert?

lässt sich anhand des Screenshots mit "ja" beantworten ...

jonerunrder 
Fragesteller
 27.10.2022, 19:55

Vielen Dank!

0

Da gibt es verschiedene Wege:

  • Port 22 nicht per Router nach außen weiterreichen. Im LAN geht das gut, bei einem gemieteten Server eher nicht.
  • recht unkompliziert per ufw:
sudo ufw enable
sudo ufw deny 22

WARNUNG: Das führt dazu, dass AUCH DU selbst NICHT mehr auf den Server per SSH zugreifen kannst!

Waldelb3  27.10.2022, 19:46

mit dem Zusatz from kann man auch einstellen, dass das nur aus bestimmten Netzen erlaubt ist, bzw. blockiert. https://wiki.ubuntuusers.de/ufw/

Alternativ geht ansonsten noch gufw.

1

Das geht mit gufw: https://gufw.org/

Woher ich das weiß:Studium / Ausbildung – Informatik
denn momentan könnte jeder der mein Passwort weiß auf mein System zugreifen

Dass kannst du ändern indem du in der ssh-config das Login mit Passwort verbietest. Dann käme man nur noch mit einem ssh-key auf den Rechner.

Das Vorgehen ist hier beschrieben: https://www.pragmaticlinux.com/2021/05/configure-ssh-for-login-without-a-password/

Das wäre auch für mich die Variante der Wahl, denn deine IP nach Aussen ändert sich gewöhnlicherweise ja nach gewisser Zeit und du müsstest diese entsprechend oft aktualisieren. Kann man zwar auch automatisieren, aber du sperrst dich dann ja auch selbst aus.

Die Zeile würde sinngemäß lauten

iptables -I INPUT -p tcp -d 123.123.123.123/32 --dport 22 -j DROP

(Die IP-Adresse müsstest du natürlich mit deiner eigenen ersetzen)

franzhartwig  27.10.2022, 17:07

Damit wäre der SSH-Server nicht erreichbar. Du musst schon ein ACCEPT für das Heimnetz machen. Die Regel sollte dann auch eher auf die Absender- und nicht auf die Zieladresse lauten.

0
Stadewaeldchen  27.10.2022, 17:11
@franzhartwig
Damit wäre der SSH-Server nicht erreichbar.

Aus dem Internet. Ich hatte den Fragesteller so verstanden dass er das auch will.

ich möchte meinen Port 22 so konfigurieren, dass er nicht von außen erreichbar ist,

-----------------------------

Die Regel sollte dann auch eher auf die Absender- und nicht auf die Zieladresse lauten.

Viel Spaß beim Eintragen von knapp 3 Milliarden IP-Adressen. ;)

1
franzhartwig  27.10.2022, 17:19
@Stadewaeldchen
Aus dem Internet. Ich hatte den Fragesteller so verstanden dass er das auch will.

Richtig, das wollte er.

Wie hast Du jetzt die Erreichbarkeit im lokalen Netz gewährleistet? Du kannst davon ausgehen, dass der Server eine private IP-Adresse hat und die vom (Heim)Router per NAT nach außen erreichbar gemacht wird. Du kannst außerdem davon ausgehen, dass die Firewall auf dem Server läuft und nicht als separates Gerät zwischen Heimrouter und Internet steht. Auf dem dem Server kommen also die Pakete immer mit der privaten IP-Adresse als Zieladresse an. Eine Firewall-Regel auf die öffentliche IP-Adresse ist damit sinnlos.

0
Stadewaeldchen  27.10.2022, 17:52
@franzhartwig
Wie hast Du jetzt die Erreichbarkeit im lokalen Netz gewährleistet?

Ich gehe in meinem Beispiel davon aus, das 123.123.123.123 die öffentliche IP ist und dass der Firewall-Rechner direkt mit dem Internet verbunden ist (sonst richte ich auf dem Ding ja auch keine Firewall gegen das Internet ein). Vielleicht habe ich mich da auch unklar ausgedrückt.

die vom (Heim)Router per NAT nach außen erreichbar gemacht wird.

In dem Fall würde ich die Firewall-Regeln auch auf der Fritzbox, dem Speedport oder was er auch immer dort hat einrichten.

Noch einfacher und. mEn sinnvoller ist aber einfach das ssh-login mit Passwort abzuschalten, das ist dann auch unabhängig davon wo im Netz das Gerät steht.

0
franzhartwig  27.10.2022, 19:22
@Stadewaeldchen
Ich gehe in meinem Beispiel davon aus, das 123.123.123.123 die öffentliche IP ist

Tipp am Rande: Als Beispiele sollte man nicht real existierende IP-Adressen verwenden. Du hast hier eine Adresse von China Unicom erwischt. Es gibt drei reservierte /24-Netze für solche Zwecke. https://www.rfc-editor.org/rfc/rfc5737

und dass der Firewall-Rechner direkt mit dem Internet verbunden ist (sonst richte ich auf dem Ding ja auch keine Firewall gegen das Internet ein). Vielleicht habe ich mich da auch unklar ausgedrückt.

So ergibt die Regel Sinn. Ich gehe aber schwer davon aus, dass der Aufbau anders ist. Heimnetz halt.

In dem Fall würde ich die Firewall-Regeln auch auf der Fritzbox, dem Speedport oder was er auch immer dort hat einrichten.

Firewall-Regeln gibt es da nicht, schon gar nicht mit iptables. Da behilft man sich mit dem Portforwarding.

Noch einfacher und. mEn sinnvoller ist aber einfach das ssh-login mit Passwort abzuschalten, das ist dann auch unabhängig davon wo im Netz das Gerät steht.

Nichtsdestotrotz ist es eine gute Idee, einen im Internet nicht benötigten Dienst auch nicht im Internet zu exponieren.

0