How To SSH Server Einrichten unter Linux

How To SSH Server Einrichten unter Linux

Man sollte immer seinen SSH Server um konfigurieren da die Standard Konfiguration leider nicht die Sicherste ist und daher ein Sicherheitsrisiko darstellt.

Wechsel vom user zu root oder man arbeitet mit sudo:


Installation:


Dateien:

Wechsel in das SSH Verzeichnis: cd /etc/ssh/ Verzeichnis:

Die ssh_config ist nur für den Client und daher uninteressant.

Key und Pub sind die Verschlüsselungs Keys der SSH Verbindung für den SSH Server, diese löschen wir alle um neue zu erstellen bis auf die ECDSA da diese maximal 512Bit können und standardmäßig schon auf 512 Bit sind.

Die DSA Keys werden gelöscht da DSA als unsicher gilt werden wir kein DSA nutzen, sondern nur RSA und ECDSA sowie ED25519.

Wer mehr über ECDSA Wissen möchten kann sich noch den Wiki Artikel durch lesen.


Keys:

DSA und RSA Keys löschen:


Neuen RSA Key erstellen:


So jetzt haben wir einen RSA Key erstellt mit 4096Bit Verschlüsselung, das minimum liegt bei 2048Bit, aber etwas mehr schadet nie.

Man kann auch einen 8192Bit erstellen oder sogar noch höher.

Das maximum liegt bei 32kBit aber dazu brauch man dann auch die Zeit bis das System damit fertig ist, man muss auch davon ausgehen das dann die Verbindungsgeschwindigkeit in die knie geht bei einer so hohen Verschlüsselung.


ECDSA-Key erstellen:

Bitrate muss man nicht angeben da ECDSA fix mit 256Bit arbeitet.

Wie beim RSA Key wird nach einem Pfad und Dateiname gefragt, wie beim RSA angeben.


ED25519-Key erstellen:

Bitrate muss man nicht angeben da ED25519 fix mit 256Bit arbeitet.

Wie beim RSA Key wird nach einem Pfad und Dateiname gefragt, wie beim RSA angeben.


Nochmal das Aktuelle Verzeichnis:


Konfiguration:

Jetzt geht es an die sshd_config , das ist die für den SSH Server.

nano sshd_config erstmal die Standard Config:


Anpassung:

Und jetzt passen wir das alles so an damit es Sicher ist und so wie wir das wollen.

Port 22 kann man so lassen, ich Empfehle aber einen Port zu nutzen der über 1024 ist und auch sonst von keinem anderen Dienst genutzt wird, da hier immer Attacken drauf laufen. Um einen freien Port zu finden der über 1024 liegt kann auf der Wiki Seite finden.

Ich änder den Port einfach mal als Beispiel in 12345, danach sieht das dann so aus Port 12345 und bitte benutzt diesen Port NICHT !!!

Der Nächste Punkt ist dann die ListenAddress die gibt an auf welche IP der SSH hört. Hat man einen Server mit mehr als eine IP Adresse sollte man hier die 2. nehmen.

Also ändern wir die Zeile ab von #ListenAddress 0.0.0.0 auf ListenAddress 0.0.0.0 bedeutet hier das der SSH Server auf alle Ip Adressen hört, was keiner wirklich will.

Hat man nur eine IP muss man anderen maßnahmen ergreifen um seinen Server zu schützen. (siehe hierzu meinen Artikel über Iptables)

Ändern auf ListenAddress 192.168.178.7 kann ich sicherstellen das mein SSH Server nur noch auf diese eine IP hört und auch nur über diese erreichbar ist.

Die # muss natürlich weg da hier durch die Zeile sonst ignoriert wird.

Die Zeile Protocol 2 lassen wir so, da hiermit das SSH Protokoll auf die Version 2 geschaltet wird, es gibt noch SSH 1 aber das gilt als unsicher und wird nicht mehr genutzt.


Pfadangaben zu den Keys für die Verschlüsselung:

Da wir keinen DSA Key mehr haben kann die Zeile gelöscht werden oder mit # deaktiviert werden.

Da die RSA Key Datei genauso heisst wie vorher muss hier nichts angepasst werden.

Hat man jedoch den Pfad oder den Dateinamen geändert muss man dies anpassen!

Abgeänderte Version:

Key lebenszeit und Bit höhe:

Was viele hier falsch machen ist hier was zu ändern, braucht man aber nicht, da ganz klar dabei steht Version 1 also geht es hier um SSH 1 was wir nicht nutzen daher sind die Zeilen unnütz.


Wenn man möchte kann man noch das Logging ändern was ratsam ist da man dann mehr information erhält was bei einem Angriff oder Einbruch wichtig sein könnte.

Daher ändere ich das Logging von Loglevel INFO zu LogLevel ERROR.


Was ich auch noch ändere ist die Login Zeit bei untätigkeit.

Die ist Standardmäßig auf 120 (Minuten) gesetzt, diese reduziere ich auf 30 (Minuten).

Das heißt die Zeile LoginGraceTime 120 auf LoginGraceTime 30 ändern. Man kann da auch 10 für 10 Minuten eintragen wie man möchte.


PermitRootLogin without-password
Aus der Manpage:

Man kann dies so lassen oder ändert es auf No, bis Debian 7 stand der Wert auf yes was ein absolutes NOGO ist und geändert werden muss!

Auch wenn das Anmelden als root verboten ist sollte man sich nie ohne Passwort anmelden dürfen.


Nun schalten wir die „Message of the Day“ an auch einfach Motd genannt in dem die Option PrintMotd no auf PrintMotd yes geändert wird.

Als kleinen Schutz definieren wir noch die maximalen Unbekannte Verbindungen (inaktive) MaxStartups 3:50:10 = Maximal 3 unbekannte Verbindungen: 50% chance das die Verbindung gekappt wird bevor die 3 Verbindungen erreicht werden:ab 10 Verbindungen wird alles blockiert.

Wichtig: das Betrifft nur einen Client (IP) und nicht alle Verbindungen.


Datei und Pfad für das Banner(Rechtlicher hinweis beim Login für jeden user):

Beispiel:


So zum schluss definieren wir ganz genau welcher user sich via SSH Anmelden darf und wer nicht, das wird zwar auch durch die Datei /etc/passwd definiert, wird aber gerne vergessen beim Anlegen von neuen Usern dies beim erstellen zu definieren oder später in der Datei ab zu ändern. Ist also ein doppelter Schutz.

An die Denyusers kommt man am besten in dem man ein cat /etc/passwd macht.

Hier werden alle User aufgelistet die im System eingetragen sind und es können alle auf die Deny Liste bis auf die User denen es erlaubt werden soll via SSH Zugriff auf das System zu erhalten.

Kein Lokaler Dienst wird je versuchen sich via SSH Anzumelden daher können auch diese User accounts alle hier eingetragen werden.

Ihr könnte die Liste auch erweitern, je nachdem was alle so auf Eurem Server drauf ist.

Jetzt ist die Konfiguration abgeschlossen und ihr könnt die Datei mit strg+o Speichern und mit strg+x schließen.


Abschluss und Test:

Und der SSH Dienst neu gestartet werden service ssh restart

Und wir können uns auf unseren SSH Server Verbinden:

Man sieht wann sich das letzte mal in das System eingeloggt wurde und von wo.

Danach kommt das Banner.

In dem Banner kann einfacher Text drin stehen, man kann aber auch ein Bash Script rein schreiben, was einem etwas dann noch irgendwas Anzeigt.


Zur weiteren Absicherung des System und SSH sollte man noch die Artikel lesen:

Iptables Grundlagen

Root Server absichern

Viel Spass und bei Fragen oder Anregungen bitte einen Kommentar hinterlassen.

Gruß Euer DocSchneidi ak Cheech

Tagged , , , , , , , , , , , , , , , , , , , , , . Bookmark the permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.