PHP Blogger

Startseite Schreib mir ne Mail! RSS Abo Webnews

SSH Server absichern: Port-Salat

Böse Buben und Hacker gibts leider überall. Da darf man schon mal ein bisschen paranoid sein. Als Angehöriger der deutschen Sprache erst recht - schliesslich sind wir als Schwarzmaler und Pessimisten bekannt. Naja. Noch schlimmer sollen in dieser traditionellen Hinsicht die Schweizer sein, aber so wirklich verifizieren kann ich das nicht. Hat man halt mal irgendwo gehört.

Wo Iren, Spanier und Franzosen Sonnenkinder und Optimisten sind, dürfen sich Deutsche, Österreicher und Schweizer in Missmut üben - aber ich will diesen Kampf der Nationalitäten nicht weiter entfachen. Schließlich gehts hier ja nur um eine Einleitung zum Thema. Irgendwie muss ich ja zur Sache kommen. Jetzt leider etwas verkrampfter als sonst.

So. Kurze Rede, gar kein Sinn: Ich musste diese Woche mal wieder einen Rootserver aufsetzen und nichts ist schöner, als from the scratch quasi auf der grünen Wiese oder mit einem nackten Arsch anzufangen. Puh. Irgendwie schreib ich heute nur Blödsinn. Naja, mal weiter im Text.

Wir haben also einen nackigen Rootserver mit nichts als einer minimalen Betriebsystem-Installation samt sshd am Laufen und sind mit einem Root-Account eingeloggt. Wer jetzt einen Grund für seinen Pessimismus haben möchte, sollte mal folgendes tun:

  1. Eine Woche nichts
  2. Nach einer Woche einen Blick in /var/log/messages oder eben ins Syslog werfen und
  3. mal gucken, wieviele Login-Attacks er auf seinem SSH-Port hatte

Oh weh - da soll mir mal einer sagen, er hatte keine Login-Attacke - das glaub ich nämlich nicht. In der Regel werden einfach so von Bots die IPs abgescannt und WKPs (Well Known Ports) wie eben SSH oder FTP angepingt und mit beschissenen Wörterbuch-Attacken bombardiert. Da kann es einem schon die Laune verderben, wenn man an Sicherheitslücken, unsichere Passworte und anderen Unsinn denkt. Halt! Komm vom Klo wieder her, wenn Du Dich übergeben hast *lach*

Was kann man dagegen tun? Auch wenn es .mario nicht gefällt: Wir kochen heute mal wieder. Es gibt Port-Salat. Hat leider nix mit Portwein zu tun, den kippen wir uns danach hinter die Binde. Oder eben ein gutes Bierchen.

So, also Port-Salat. Was meint denn der Dichter und Poet PHP Blogger damit?

Der Ansatzpunkt sind also die WKPs, die wie der Namen schon sagt: Jeder kennt. 21 ist FTP, 80 ist HTTP und 22 SSH - nur so als Beispiel. Wenn also jemand an FTP herankommen möchte, hat er unter anderem die Möglichkeit, einen kleinen Hack über Port 21 zu machen. Vielleicht schafft ers und er ist drin. Oder sie, falls es ein böses Mädchen ist (Es leben die guten Suchbegriffe!).

Wir packen also unsere Ports in den Port-Salat, ein paar Käsestreifen, ein bisschen Senf, vielleicht noch ein bisschen Schadenfreude. Dann umrühren und die Ports schön vermischen.

Jamie Oliver würde jetzt sicherlich noch empfehlen ein paar Daemons scharf anzubraten und in den Pott zu werfen, aber das sparen wir uns. Hatte ich schon erwähnt, das heute nur Müll aus meiner Tastatur kommt?

Aber weiter mit dem Port-Salat: Wir haben also jetzt alles schön durcheinander. Auf Port 21 läuft der Indianer, auf Port 80 der SSH-Daemon und Port 22 wird von z.B. ProFTPd beglückt. Eieiei, das ist ganz schön scheisse: FTP geht nicht mehr mit dem Default-Port, und der Internet Explorer samt Kollegen auf Safari oder brennenden Füchsen zeigen auch nix mehr an. Aber SSH ist jetzt super sicher und die Verwirrung ist komplett.

Okay. Ich gebe zu, es hätte genügt, nur den SSH Port umzulegen. Den braucht eh nur der Admin und dem ist es wurscht, ob er jetzt 22 oder was anderes beim connecten angibt.

Also ab mit dem Salat ins Klo und mal überlegen, was man an SSH noch ändern könnte. Vielleicht hatte ich es noch nicht erwähnt, aber SSH ist einer der mächtigsten Services, die auf einem Server laufen und daher besonders schützenswert. Was gibt es denn noch für eine bekannte Größe?

DER ROOT ACCOUNT. Verzeih mir die Schreierei. Ganz klar, den gibts auf jeder Maschine. Braucht man den? Nein, eigentlich nur zum Initialisieren und Warten eines Servers. Die meisten Dinge sollte man mit einem Standard-User erledigen. Mit mit den Befehlen su und sudo kann man ja jederzeit zum root werden.

Was spricht also dagegen, dem root-Account das Einloggen zu verbieten? Und so gehts:

  1. Standard-User anlegen, wenn es noch keinen gibt. Und ganz wichtig, vielleicht einen etwas ausgefallenen oder kryptischen Namen mit einem sicheren Passwort wählen.
  2. Neuen User testen (ganz wichtig, sonst sperrt man sich ganz schnell aus!)
  3. mit vi /etc/ssh/sshd_config (auf einem Debian System) die SSH-Daemon Config öffnen.
  4. Den Parameter “Port” (per default auf 22) auf einen beliebigen anderen Port setzen, der noch frei ist. Kann natürlich auch ein nicht verwendete WKP sein.
  5. PermitRootLogin” (per default auf “yes” auf den Wert “no” setzen.
  6. Wer seine Besucher beim Login begrüssen möchte, kann mit “Banner” noch eine Textdatei mit entsprechendem Text definieren.
  7. :wq
  8. /etc/init.d/ssh reload
  9. fertig.

Mit ein paar kleinen Config-Änderungen hat man seinem System ein bisschen mehr Sicherheitsluft gegönnt. Achso, connecten geht dann jetzt so:

ssh meinuser@meinserver.de -p 123

Hehe. 123 ist natürlich der Port, den Du eingestellt hast und meinuser der Benutzername des Users, den Du angelegt hat. Wenn Dir jetzt auch noch meinserver.de gehört, nennst Du wohl auch jahresdomain.de Dein eigen *lach*

So, die Kochprofis sind raus. Guten Hunger beim Verzehr des Port-Salats.

Ähnliche Artikel:

  1. Port-Fetischismus oder dirty Games mit Ports
  2. Automatische Update-Benachrichtung für Rootserver
  3. Formulare gegen XSS Angriffe absichern
  4. Wie verschwindet mal eben ein Gig RAM aus einem laufenden Server?

unset meint dazu:

6. Februar 2009 um 14:17

Und natürlich den SSH-Key nicht vergessen. Bei public Servern Pflicht ;-)

timi meint dazu:

6. Februar 2009 um 14:21

Hehe ja klar, guter Tipp! Danke für den Hinweis…

Beck meint dazu:

6. Februar 2009 um 14:51

Also ich vertrau da lieber auf Fail2Ban und Key Authentication.
Von Ports Umlegen halt ich nich so viel, schafft nur viel Verwirrung.

Ne andere schöne Möglichkeit wäre noch Port Knocking, is ja auch schnell eingerichtet.

timi meint dazu:

6. Februar 2009 um 15:08

Coooooooool Port Knocking. Das kannte ich noch nicht. Danke für den Tipp Herr Becker :)

robo47 meint dazu:

6. Februar 2009 um 15:40

Und man kann natürlich auch noch anstatt einem Passwort nur public-key-Authentifizierung erlauben für den User.

Beck meint dazu:

6. Februar 2009 um 17:46

@timi

Kenns schon seit ewigkeiten, hat mir mal n Kumpel erzählt.
Habs leider noch nich ausprobieren können, die Idee klingt aber seehr interessant :)

Und wie gesagt, ich betreib Fail2Ban mit ner bisschen bissigeren Config und hab keine Probleme damit. Man sollte halt nen 2. Server haben den man notfalls als Proxy benutzt, falls man sich mal selbst durch unachtsamkeit auf die iptables setzt :)

Alex B. meint dazu:

6. Februar 2009 um 18:45

Immer wieder schön deine Beiträge zu lesen.
Da kämpft man sich eine Stunde durch die trockenen Artikel der Fachzeitschriften, Blogs und Foren, und dann kommt man zu deinem Artikel. Einfach super. Ist zwar viel mehr Text als “nötig”, dafür super angenehm beim Lesen. :)

Yannick meint dazu:

6. Februar 2009 um 18:54

Du könntest auch nur lokale Zugriffe zu lassen, dann musst du auf dem selben Server aber noch einen Proxy laufen lassen. In deinem Putty, konfigurierst du dann deinen Proxy, über welchen du dann direkt auf den Server zugreifst. Dein Proxy benötigt aber natürlich ebenfalls noch eine Authentifizierung ;)
Du brauchst also zwei Logins um auf deinen Server per SSH zu connecten. Zur Sicherheit solltest du deinen Proxy aber jede Nacht per Conjob neu starten lassen, was wenn er doch ein mal abstützt? ;) Obwohl das bei Linux wohl nicht so viel passiert, sicher ist sicher :D

Treuer Leser meint dazu:

7. Februar 2009 um 00:03

Vielen Dank für die Tipps da ich mir in naher Zukunft einen root zulegen will.

timi meint dazu:

7. Februar 2009 um 10:02

Gern geschehen, vielen Dank fürs Lesen :) Sicherlich gibt es eine Menge Dinge, die man noch machen kann, um seinen Server abzusichern. Ich denke da ist jeder noch einen eigenen Artikel wert:

1. Key-Authentifizierung
2. Port Knocking (Finde ich persönlich am verlockendsten)
3. Fail2Ban (Auch sehr cool)

6. Woche - Ernährungspyramide, SSH Zauberweg, StudiVZ Entwicklerblog - Webentwickleralltag meint dazu:

8. Februar 2009 um 13:12

[...] Früher quälte ich mich immer durch irgendwelche Debian Foren und Dokumentationen, um SSH-Dienst der angemieteten Server/vServer abzusichern. Doch war das nun der Zauberweg? Der PHP-Blogger hat eine sehr gute Anleitung dazu erstellt. SSH absichern, Zauberweg [...]

Tom Schultz meint dazu:

9. Februar 2009 um 23:47

Toller Artikel, aber kann es sein das Du beim Schreiben böse Hunger geschoben hast?

timi meint dazu:

11. Februar 2009 um 12:34

Hehe geht so ;)

Stefan meint dazu:

12. Februar 2009 um 17:24

Guter Artikel, befürchte dass sich viele Root-Server Besitzer darüber erst Gedanken machen wenn es zu schon spät ist.

karsten meint dazu:

5. März 2009 um 06:02

Da kann ich dem Alex nur Recht geben. Es ist immer wieder schön deine Beiträge zu lesen. Absolut genial und lustig geschrieben. Jetzt aber nicht rot werden!! Auf jeden Fall bekommt man immer eine super und professionelle Antwort auf Fragen, und das mit einem geilen Text.

timi meint dazu:

13. März 2009 um 14:46

@Stefan: Das stimmt freilich, aber deshalb poste ich ja diese Artikel…
@Karsten: Vielen Dank, ich poste für Euch weiter ;)

seo meint dazu:

15. März 2009 um 19:37

*lol* Dein Einleitungstext!!!
Da bin ich gern Pessimist, denn ich sichere mich lieber hundert Mal ab und speichere und sichere alles ab, statt wie ein paar Kumpels von mir dann mit der Faust den Schreibtisch zu demonlieren, weil mal wieder stunden/tage/wochenlange Arbeit weg ist.

the-jet meint dazu:

18. März 2009 um 22:53

Ich verwende auf meinen Servern nur Password-Auth und Root-Login ist ebenfalls erlaubt. Wo genau liegt hier nun ein Sicherheitsproblem vor? Klingt vielleicht ein wenig arrogant, aber ich meine es ernst. Hat mich gerade ein wenig nachdenklich gemacht als ich lesen musste, dass Key-Auth ja Pflicht wäre. Ich verwende auf allen Servern Debian Etch (stable), externe Ports sind lediglich für SSH und Webserver offen, Passwortlänge für Root > 20 Zeichen. Ich bin bzw. war der Überzeugung meine Server sind relativ sicher. Es wäre nett wenn mir da einer was zu sagen könnte.

Marvin meint dazu:

3. April 2009 um 13:52

Ich habe bis jetzt immer zusätzlich zum Port umlegen auf DenyHosts gesetzt: http://denyhosts.sourceforge.net/ Das sperrt dann nach einer festgelegten Anzahl von Fehlversuchen die IP aus für eine festgelegte Zeit und das beste: Das System kann sich zentral alle aktuell gesperrten IPs abholen…Ist auf jeden Fall einen Blick Wert :-)

gameserver meint dazu:

15. April 2009 um 11:56

Wirklich unglaublich

LudwigR meint dazu:

14. Mai 2009 um 10:24

Hallo,

etwas spät aber doch. Sobald man mehrere Server betreut ist es am einfachst über IP-Tables nur noch SSH zugriffe von einer IP aus zu erlauben. Ich hab zb einen Server der mir als JumpBox dient, nur die IP dieses servers kann sich auf den anderen einloggen (gibt noch eine sicherheits ip falls dieser server mal ausfällt). Auf die jumpbox komm ich nur über PortKnocking. (bzw mittlerweile ist meine workstation die “jumpbox” :) weil ich eine statische ip habe)

der rechner ist dicht, keine brute force attacken.

lg
LudwigR

Download Boese Maedchen Reloaded # 2 from Rapidshare at RapidPorn XXX meint dazu:

25. Mai 2009 um 21:12

[...] PHP Blogger: SSH Server absichern: Port-Salat - Ein PHP Blog auf … [...]

Alex meint dazu:

27. Mai 2010 um 16:56

Die beste methode ist wie gesagt immernoch keys zu benutzen und root ssh-login zu verbieten ;).

SSH absichern | casibus meint dazu:

28. Mai 2010 um 11:16

[...] SSH Server absichern: Port-Salat keine Kommentare [...]

RSS für Kommentare zu diesem Artikel · TrackBack URI

Schreib Deine Meinung