Tips en Trucs 2023

Mislukte SSH aanmeldingen opzoeken

Alle verbindingen naar buiten vormen een gevaar. Naast het constant bijwerken naar de laatste versie, het regelmatig back-uppen van belangrijke data is het ook handig om mislukte toegangspogingen op te sporen.

Elke poging om in te loggen op de SSH-server wordt op het systeem vastgelegd.

Beheerders kunnen de logbestanden bekijken om te zien of er vreemd inkomend verkeer is. Een logbestand bevat veel informatie, maar het is niet eenvoudig om alle uitvoer te lezen. We kunnen echter grep gebruiken om de uitvoer te doorzoeken en ons te richten op mislukte pogingen.

OpenSSH installeren

OpenSSH is een service die veilige toegang op afstand tot systemen biedt, het bevat ook de opdracht scp. Log in als root-gebruiker (su) of voer de opdrachten uit voorafgegaan door sudo om openSSH te installeren. In Debian worden gebruikers niet standaard aan sudo gekoppeld, waardoor je de su opdracht moet gebruiken om root rechten te krijgen:

dany@pindabook:~$ su
Wachtwoord: 
root@pindabook:/home/dany#

Zolang je werkt als gebruiker zonder root rechten, zie je een gekleurde prompt die eindigt met een $-teken. Als je met root rechten werkt, is de prompt kleurloos en is het eindteken een #. Daar je met root rechten alles kunt, kan je ook veel schade aanrichten. Werk dus alleen met root rechten als het echt nodig is.

De volgende opdracht installeert OpenSSH en zijn afhankelijkheden. Je ziet dat er ook aanvullende pakketten worden geïnstalleerd omdat OpenSSH er veel nodig heeft om goed te werken.

root@pindabook:/home/dany# apt install openssh-server
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd... Klaar
De statusinformatie wordt gelezen... Klaar 
De volgende extra pakketten zullen geïnstalleerd worden:
  openssh-sftp-server runit-helper
Voorgestelde pakketten:
  molly-guard monkeysphere ufw
De volgende NIEUWE pakketten zullen geïnstalleerd worden:
  openssh-server openssh-sftp-server runit-helper
0 opgewaardeerd, 3 nieuw geïnstalleerd, 0 te verwijderen en 0 niet opgewaardeerd.
Er moeten 528 kB aan archieven opgehaald worden.
Na deze bewerking zal er 2.214 kB extra schijfruimte gebruikt worden.
Wilt u doorgaan? [J/n] 
Ophalen:1 http://deb.debian.org/debian bookworm/main amd64 openssh-sftp-server amd64 1:9.2p1-2+deb12u1 [65,8 kB]
Ophalen:2 http://deb.debian.org/debian bookworm/main amd64 runit-helper all 2.15.2 [6.520 B]
Ophalen:3 http://deb.debian.org/debian bookworm/main amd64 openssh-server amd64 1:9.2p1-2+deb12u1 [455 kB]
528 kB opgehaald in 0s (5.066 kB/s) 
Voorconfigureren van pakketten ...
Voorheen niet geselecteerd pakket openssh-sftp-server wordt geselecteerd.
(Database wordt ingelezen ... 188676 bestanden en mappen momenteel geïnstalleerd.)
Uitpakken van .../openssh-sftp-server_1%3a9.2p1-2+deb12u1_amd64.deb wordt voorbereid...
Bezig met uitpakken van openssh-sftp-server (1:9.2p1-2+deb12u1) ...
Voorheen niet geselecteerd pakket runit-helper wordt geselecteerd.
Uitpakken van .../runit-helper_2.15.2_all.deb wordt voorbereid...
Bezig met uitpakken van runit-helper (2.15.2) ...
Voorheen niet geselecteerd pakket openssh-server wordt geselecteerd.
Uitpakken van .../openssh-server_1%3a9.2p1-2+deb12u1_amd64.deb wordt voorbereid...
Bezig met uitpakken van openssh-server (1:9.2p1-2+deb12u1) ...
Instellen van runit-helper (2.15.2) ...
Instellen van openssh-sftp-server (1:9.2p1-2+deb12u1) ...
Instellen van openssh-server (1:9.2p1-2+deb12u1) ...

Creating config file /etc/ssh/sshd_config with new version
Creating SSH2 RSA key; this may take some time ...
3072 SHA256:BHD0+st5+0+DJSFlUUrp0y8eu8VbdKLoUCZTxuu/2k4 root@pindabook (RSA)
Creating SSH2 ECDSA key; this may take some time ...
256 SHA256:x2iS1AuX22ba9g8VR0TnIgcGG50WlZa3mqDbxR7Hnos root@pindabook (ECDSA)
Creating SSH2 ED25519 key; this may take some time ...
256 SHA256:Y5MAI/qSBP+YHGGLCik6kO/60f8zvv8sStx4EHMFwSY root@pindabook (ED25519)
Created symlink /etc/systemd/system/sshd.service → /lib/systemd/system/ssh.service.
Created symlink /etc/systemd/system/multi-user.target.wants/ssh.service → /lib/systemd/system/ssh.service.
rescue-ssh.target is a disabled or a static unit, not starting it.
ssh.socket is a disabled or a static unit, not starting it.
Bezig met afhandelen van triggers voor man-db (2.11.2-2) ...
root@pindabook:/home/dany#

Na de installatie kan je ssh inschakelen (automatisch laten starten) door de volgende opdracht in het terminalvenster te typen:

root@pindabook:/home/dany# systemctl enable ssh
Synchronizing state of ssh.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ssh

Om te controleren of de SSH-server draait, kun je onderstaande opdracht gebruiken:

root@pindabook:/home/dany# systemctl status ssh
 ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; preset: enabled)
     Active: active (running) since Mon 2023-12-18 15:33:39 CET; 6min ago
       Docs: man:sshd(8)
             man:sshd_config(5)
   Main PID: 2346 (sshd)
      Tasks: 1 (limit: 9342)
     Memory: 1.4M
        CPU: 35ms
     CGroup: /system.slice/ssh.service
             └─2346 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"

dec 18 15:33:39 pindabook systemd[1]: Starting ssh.service - OpenBSD Secure Shell server...
dec 18 15:33:39 pindabook sshd[2346]: Server listening on 0.0.0.0 port 22.
dec 18 15:33:39 pindabook sshd[2346]: Server listening on :: port 22.
dec 18 15:33:39 pindabook systemd[1]: Started ssh.service - OpenBSD Secure Shell server.

In de bovenstaande schermafbeelding kan je zien dat de SSH-server al draait en ingeschakeld is, wat betekent dat deze tijdens het opstarten zal draaien.

Indien OpenSSH niet gestart is, kan je deze manueel starten met de opdracht:

root@pindabook:/home/dany# systemctl start ssh

Hoe alle mislukte SSH-aanmeldpogingen te vinden?

Een mislukte aanmeldpoging kan door verschillende redenen worden veroorzaakt en niet alleen door een geautomatiseerd aanmeldings-exploit. Een mislukte aanmeldpoging kan gebeuren wanneer:

Om mislukte SSH-aanmeldpogingen op te sporen, gaan we zelf enkele mislukte aanmeldingen uitvoeren. Dat kan via een ander terminalvenster of computer.

dany@main:~$ ssh test@pindabook.local
The authenticity of host 'pindabook.local (2a02:a03f:e02a:8901:a8fa:2902:a3c2:97f)' can't be established.
ECDSA key fingerprint is SHA256:x2iS1AuX22ba9g8VR0TnIgcGG50WlZa3mqDbxR7Hnos.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'pindabook.local' (ECDSA) to the list of known hosts.
Warning: the ECDSA host key for 'pindabook.local' differs from the key for the IP address '2a02:a03f:e02a:8901:a8fa:2902:a3c2:97f'
Offending key for IP in /home/dany/.ssh/known_hosts:94
Are you sure you want to continue connecting (yes/no)? yes
test@pindabook.local's password: 
Permission denied, please try again.
test@pindabook.local's password: 
Permission denied, please try again.
test@pindabook.local's password: 
test@pindabook.local: Permission denied (publickey,password).

Met de journalctl opdracht kunnen we de Systemd daemon logboeken bekijken.

root@pindabook:/home/dany# journalctl _SYSTEMD_UNIT=ssh.service | egrep "Failed|Failure"
dec 18 15:48:56 pindabook sshd[3019]: Failed password for invalid user test from 2a02:a03f:e02a:8901:8254:12a:d1ca:4d3f port 53310 ssh2
dec 18 15:49:03 pindabook sshd[3019]: Failed password for invalid user test from 2a02:a03f:e02a:8901:8254:12a:d1ca:4d3f port 53310 ssh2
dec 18 15:49:10 pindabook sshd[3019]: Failed password for invalid user test from 2a02:a03f:e02a:8901:8254:12a:d1ca:4d3f port 53310 ssh2

Om een lijst weer te geven van alle IP adressen die verantwoordelijk zijn voor mislukte SSH aanmeldpogingen, met het aantal pogingen ernaast, kun je deze opdracht gebruiken:

root@pindabook:/home/dany# journalctl _SYSTEMD_UNIT=ssh.service | egrep "Failed|Failure" | awk '{print $13}' | uniq -c | sort -nr
      3 2a02:a03f:e02a:8901:8254:12a:d1ca:4d3f

Nu we geen root rechten meer nodig hebben, verlaten we de sessie met:

root@pindabook:/home/dany# exit
exit
SSH logins

OpenSSH verwijderen

Om OpenSSH van de computer te verwijdren heb je root rechten nodig:

dany@pindabook:~$ su
Wachtwoord:

Linux distributies die met sudo werken, plaatsen voor de volgende opdrachten sudo. Om OpenSSH te verwijderen, gebruik je de volgende opdracht:

root@pindabook:/home/dany# apt purge openssh-server
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd... Klaar
De statusinformatie wordt gelezen... Klaar 
De volgende pakketten zijn automatisch geïnstalleerd en zijn niet langer nodig:
  openssh-sftp-server runit-helper
Gebruik 'apt autoremove' om ze te verwijderen.
De volgende pakketten zullen VERWIJDERD worden:
  openssh-server* task-ssh-server*
0 opgewaardeerd, 0 nieuw geïnstalleerd, 2 te verwijderen en 0 niet opgewaardeerd.
Na deze bewerking zal er 1.978 kB schijfruimte vrijkomen.
Wilt u doorgaan? [J/n] 
(Database wordt ingelezen ... 188726 bestanden en mappen momenteel geïnstalleerd.)
task-ssh-server (3.73) wordt verwijderd ...
openssh-server (1:9.2p1-2+deb12u1) wordt verwijderd ...
Bezig met afhandelen van triggers voor man-db (2.11.2-2) ...
(Database wordt ingelezen ... 188701 bestanden en mappen momenteel geïnstalleerd.)
Configuratiebestanden voor openssh-server (1:9.2p1-2+deb12u1) worden gewist ...

Om alle niet langer gebruikte afhankelijke pakketten te verwijderen, gebruik je de opdracht:

root@pindabook:/home/dany# apt autoremove
Pakketlijsten worden ingelezen... Klaar
Boom van vereisten wordt opgebouwd... Klaar
De statusinformatie wordt gelezen... Klaar 
De volgende pakketten zullen VERWIJDERD worden:
  openssh-sftp-server runit-helper
0 opgewaardeerd, 0 nieuw geïnstalleerd, 2 te verwijderen en 0 niet opgewaardeerd.
Na deze bewerking zal er 242 kB schijfruimte vrijkomen.
Wilt u doorgaan? [J/n] 
(Database wordt ingelezen ... 188685 bestanden en mappen momenteel geïnstalleerd.)
openssh-sftp-server (1:9.2p1-2+deb12u1) wordt verwijderd ...
runit-helper (2.15.2) wordt verwijderd ...
Bezig met afhandelen van triggers voor man-db (2.11.2-2) ...

Nu we geen root rechten meer nodig hebben, verlaten we de sessie:

root@pindabook:/home/dany# exit
exit