Ssh
Document info | |
---|---|
Door | Dirk Postma |
Laatst bijgewerkt | 2015-10, 2016-05 |
Inleiding
Ssh (secure shell) is een programma waarmee een verbinding gemaakt kan worden met andere computers. Met ssh kan o.a. eenvoudig op een andere computer worden ingelogd zonder dat iedere keer om een wachtwoord wordt gevraagd. Sterker nog het is daarna veiliger om het gebruik van wachtwoorden helemaal uit te schakelen. Met ssh is het eveneens eenvoudig mogelijk om bestanden tussen computers uit te wisselen. Ssh heeft maar 1 netwerkpoort nodig, namelijk normaal gesproken poort 22. Het poort nummer kan eventueel aangepast worden. Of dat wel of niet verstandig is daarover wordt sterk van mening verschild.
Mijn aantekeningen staan in willekeurige volgorde.
ssh keys genereren
Om zonder wachtwoorden te kunnen werken zijn ssh keys nodig. Het genereren gaat als volgt.
ssh-keygen -t rsa
Sterkere key bestanden worden als volgt gemaakt:
ssh-keygen -t rsa -b 4096
Kies voor het gebruik van een passphrase!
Bron: https://help.ubuntu.com/community/SSH/OpenSSH/Keys
ssh keys kopieren
Nadat een public en private key paar is aangemaakt, is het handig de public key te kopieren naar de servers waarop
regelt matig wordt ingelogd. Er zal dan tijdens het inloggen niet meer om een wachtwoord worden gevraagd!
Ssh heeft een programma om het public key bestand te kopieren, dat heet issh-copy-id
.
Syntax:
ssh-copy-id <username>@<host>
Voorbeeld:
ssh-copy-id pi@192.168.1.115
Er wordt nog één keer gevraagd om een wachtwoord, en de keren daarna kom je binnen op de host zonder dat om een wachtwoord wordt gevraagd.
Bron: https://help.ubuntu.com/community/SSH/OpenSSH/Keys
ssh server configuratie bestand
Alle instellingen van ssh worden opgeslagen in dit bestand /etc/ssh/sshd_config
.
Runtime instellingen opvragen van ssh
Dit is een bijzonder fraaie optie. Met het volgende commando kunnen alle instellingen worden achterhaald, terwijl ssh draait.
sshd -T
Handig om controleren met welke instellingen/opties ssh draait.
ssh proces opnieuw opstarten
Nadat de coniguratie van ssh is aangepast, moet het proces opnieuw worden opgestart. Dat gaat als volgt.
sudo service ssh restart
ssh timeout instellen
Dit is een server instelling. Handig voor als niet actieve gebruikers automatisch naar een bepaalde tijd gekickt moeten worden. Pas het ssh configuratie bestand aan:
sudo vi /etc/ssh/sshd_config
Voeg hier aan toe:
# time out configureren
ClientAliveInterval 1800
ClientAliveCountMax 1
En herstart het ssh proces. Dit werkt niet zoals ik verwacht had. Ook moeilijk hierover informatie te vinden op internet.
Aantal inlog sessies beperken
Om het hackers moelijker te maken kan het aantal login sessies worden beperkt.
Wijzig in het configuratie maxstartups
bijvoorbeeld zoals onderstaand.
MaxStartups 3:50:10
Toeliching
3
: number of unauthenticated connections before we start dropping50
: percentage chance of dropping once we reach 10 (increases linearly for more than 10)10
: max number of connections at which we start dropping everything
Host keys (opnieuw) genereren
Indien een image wordt hergebruikt en hierin ssh reeds actief was, is het nodig nieuwe host keys te genereren. Verwijderen oude.
rm /etc/ssh/ssh_host_*
Aanmaken nieuw.
dpkg-reconfigure openssh-server
En hierna het ssh service proces herstarten.
issue.net
De inhoud van het bestand issue.net
wordt getoond indien je probeert in te loggen op een computer.
Het is een welkom scherm. Een voorbeeld.
Zet in het ssh configuratie bestand het gebruik van banners aan. Voeg onderstaande toe of haal het commentaar hekje weg voor deze optie.
Banner /etc/issue.net
Website voor maken van “ascii art”. http://patorjk.com/software/taag/
Voorkom dat root kan inloggen via ssh
Pas het configuratie bestand van ssh aan. Zet de optie PermitRootLogin
uit.
PermitRootLogin no
Permit beteket vergunning, dus root mag niet meer inloggen via ssh. En hierna ssh proces herstarten!
Edit het configuratie bestand van ssh, dat staat hier: vi /etc/ssh/sshd_config Permit betekent vergunning, pas PermitRootLogin, zet op no, doe:
Zet het gebruik van wachtwoorden uit
Edit het ssh configuratie bestand.
Zoek de regel waar staat PasswordAuthentication
, en zet deze optie op no
, zoals onderstaand.
PasswordAuthentication no
Herstart het ssh proces, hierna kan niet meer worden ingelogd met wachtwoorden, alleen nog maar met een public/private key.
Logingracetime, wacht op inloggen
Met deze parameter in het ssh configuratie bestand wordt geregeld hoelang ssh op de gebruiker wacht om in te loggen. Hierna wordt de verbinding verbroken. Standaard staat deze parameter op 120, 2 minuten. Dat kan veel korter.
LoginGraceTime 30
En om het te testen herstart het ssh proces.
Alleen bepaalde gebruikers mogen inloggen
Met de optie AllowUsers
in het ssh configuratie bestand kan geregeld worden dat alleen
bepaalde gebruikers mogen inloggen.
# Bepaalde gebruikers mogen inloggen
AllowUsers pi
En om het te testen herstart het ssh proces.
In dit voorbeeld mag alleen de gebruik pi
nog maar via ssh inloggen.
Bepaalde gebruikers mogen niet inloggen
Met de optie DenyUsers
kan geregeld worden dat bepaalde gebruikers juist niet mogen inloggen.
Een voorbeeld.
DenyUsers Dino Pebbles
En uiteraard herstart ssh proces.
Aantal sessies beperken
Deze optie wordt in een ander configuratie bestand geregeld. Edit het volgende bestand:
sudo vi /etc/security/limits.conf
En voeg hieraan het volgende toe om te voorkomen dat de gebruiker pi bijvoorbeeld vaker dan 2 kan inloggen.
pi hard maxlogins 2
Of bijvoorbeeld
@sftponly hard maxlogins 2
Nu geldt de beperking voor de groep
ssh poort wijzigen
Standaard gebruikt ssh poort 22. Dus hackers zullen vaak eerst deze poort proberen om de toegang tot een systeem te krijgen. Aanpassen van het poort nummer is daarom een verstandige keuze. Pas het configuratie bestand van ssh aan, en voeg bijvoorbeeld onderstaand toe.
Port 56789
Let op. Bij het inloggen zal daarna het poort nummer opgegeven moeten worden!