Skip to main content

SSH mit Public /Private Keys Linux

Alle Änderungen am eigenen System erfolgen immer auf eigene Verantwortung!

In loser Reihenfolge möchte ich auf Zusammenhänge hinweisen, die im Verbund mit der Gameserver- Bereitstellung zusammenhängen. Diese Erklärungen können ggf. anderen Usern helfen, ihre Systeme zu pflegen und zu warten.

Jeder Server wird, sobald dieser im Internet zur Verfügung steht, Angriffen ausgesetzt. Einer der Angriffsvarianten sind "Brute Force" Angriffe.
Bei einem LINUX System (Debian z.B.) sieht das dann so aus:


/var/log/auth.log:
Nov 4 16:45:57 atom-178 sshd[864]: Failed password for root from 116.31.116.28 port 57566 ssh2
Nov 4 16:45:59 atom-178 sshd[864]: Failed password for root from 116.31.116.28 port 57566 ssh2
Nov 4 16:46:02 atom-178 sshd[864]: Failed password for root from 116.31.116.28 port 57566 ssh2
Nov 4 16:46:02 atom-178 sshd[864]: Received disconnect from 116.31.116.28 port 57566:11: [preauth]
Nov 4 16:46:02 atom-178 sshd[864]: Disconnected from 116.31.116.28 port 57566 [preauth]

Diese Datei wird recht schnell immer umfangreicher. Sehen wir uns die Herkunft dieser IP an:
Gefundener whois-Eintrag von 116.31.116.28:

Using server whois.apnic.net.
Query string: "-V Md5.1 116.31.116.28"
% [whois.apnic.net]
% Whois data copyright terms www.apnic.net/db/dbcopyright.html
% Information related to '116.16.0.0 - 116.31.255.255'
% Abuse contact for '116.16.0.0 - 116.31.255.255' is 'anti-spam@ns.chinanet.cn.net'
inetnum: 116.16.0.0 - 116.31.255.255
netname: CHINANET-GD
descr: CHINANET Guangdong province network
descr: China Telecom
descr: No.31,jingrong street
descr: Beijing 100032
country: CN
admin-c: CH93-AP
tech-c: IC83-AP
mnt-by: APNIC-HM
mnt-lower: MAINT-CHINANET-GD
mnt-routes: MAINT-CHINANET-GD
status: ALLOCATED PORTABLE
remarks: --------------------------------------------------------
remarks: To report network abuse, please contact mnt-irt
remarks: For troubleshooting, please contact tech-c and admin-c
remarks: Report invalid contact via www.apnic.net/invalidcontact
remarks: --------------------------------------------------------
last-modified: 2016-05-04T00:07:31Z
source: APNIC
mnt-irt: IRT-CHINANET-CN
irt: IRT-CHINANET-CN
address: No.31 ,jingrong street,beijing
address: 100032
e-mail: anti-spam@ns.chinanet.cn.net
abuse-mailbox: anti-spam@ns.chinanet.cn.net
admin-c: CH93-AP
tech-c: CH93-AP
auth: # Filtered
mnt-by: MAINT-CHINANET
last-modified: 2010-11-15T00:31:55Z
source: APNIC
person: Chinanet Hostmaster
nic-hdl: CH93-AP
e-mail: anti-spam@ns.chinanet.cn.net
address: No.31 ,jingrong street,beijing
address: 100032
phone: +86-10-58501724
fax-no: +86-10-58501724
country: CN
mnt-by: MAINT-CHINANET
last-modified: 2014-02-27T03:37:38Z
source: APNIC
person: IPMASTER CHINANET-GD
nic-hdl: IC83-AP
e-mail: gdnoc_HLWI@189.cn
address: NO.18,RO. ZHONGSHANER,YUEXIU DISTRIC,GUANGZHOU
phone: +86-20-87189274
fax-no: +86-20-87189274
country: CN
mnt-by: MAINT-CHINANET-GD
remarks: IPMASTER is not for spam complaint,please send spam complaint to abuse_gdnoc@189.cn
abuse-mailbox: antispam_gdnoc@189.cn
last-modified: 2014-09-22T04:41:26Z
source: APNIC

Jemand aus Bejing möchte sich als user "root" per SSH einloggen und versucht ständig Passwörter zu erraten.
Einen Teil des Logins ist schnell erraten, der User "root" ist ja bekanntlich auf jedem System zu finden und leider mit erheblichen Rechten ausgestattet. Ein "Erraten" des Logins hätte erhebliche Folgen und wird das System sofort kompromittieren.

Lösungsansätze

Erste Lösungsmöglichkeit:

Login über einen anderen Port, nicht Port 22 (Standardport). Dies ist zwar schnell über die /etc/ssh/sshd_config erledigt:

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
#Port 22
...bringt aber nicht wirklich etwas: Die Login Versuche werden über ALLE Ports (zufällig) durchgeführt. Im Logfile oben versucht der Angreifer bereits Port 57566

Zweite Möglichkeit:

SSH ganz verbieten. OK, das erscheint als sehr sicher -- Nachteilig ist jedoch, daß dann die Konsole vor Ort geöffnet werden muß.

Dritte Möglichkeit:

Der Angriff wird immer mit einer Passworteingabe durchgeführt. Es gibt die Möglichkeit, im SSH eine Zwei-Schlüssel-Authentifizierung anzulegen.
Passworteingaben über die Tastatur werden nicht mehr zugelassen und sofort abgewiesen. SSH erzwingt die Angabe einer Schlüsseldatei (Private key) und vergleicht diese dann mit dem Öffentlichen key und der sogenannten Passphrase -- im zweiten Schritt. Ohne Schlüsselangebe wird jede Anfrage sofort abgewiesen:

Anlegen der Schlüssel

Gut beschrieben sind in der Literatur die LINUX eigenen Mittel zur Schlüsselerzeugung mittels ssh-keygen -t rsa -b 4096 jedoch hat nicht jeder Linux zu hause, sondern z.B. ein Windows System.
Per Putty_Gen, welches frei zu beziehen ist, können die Schlüssel aber auch auf einem Windows System erzeugt werden.



Der Private Key wird auf dem (Lokalen) Windows System abgelegt -- der Öffentliche Key wird per copy-paste als "authorized_keys2" angelegt. Dies wird folgendermassen durchgeführt:
In den jeweiligen home Verzeichnissen wird ein Verzeichnis .ssh (Berechtigung 700) erstellt. Sowie in diesem Verzeichnis eine Datei authorized_keys2 mit den Rechten 600 angelegt. Der Öffentliche Key wird dann in die Datei kopiert. Die Datei wird mit chown user:group authorized_keys2 für den Benutzer zugänglich gemacht,der sich anmelden möchte. Jeder Benutzer erhält also im Home Verzeichnis "seinen" Key. Um die PublicKey Authentication Methode zu aktivieren, wird in der ssh Konfigurationsdatei /etc/ssh/sshd_config
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
gesetzt.
Achtung: nach Änderung muß der ssh Dienst mit /etc/init.d/sshd restart neugestartet werden, damit die Änderungen der SSH Konfguration auch eingelesen werden. Wichtig:
Bitte erst den Auth Zugang testen: Sollte alles funktionieren, wird die Tastatureingabe mit PasswordAuthentication no in der /etc/ssh/sshd_config ausgeschlossen.

Kontakt: housewife3@web.de