Hoe beveilig ik de SSH-dienst op mijn Linux-server?
We raden alle klanten met een virtuele of dedicated server van STRATO aan om de SSH-dienst in te stellen. Dit doe je via de hierna genoemde stappen. Stap 3 is overigens optioneel.
We raden je de volgende procedure aan:
Maak een gebruiker aan die bij de groep users hoort en een thuismap heeft in /home:
useradd -g users -d /home/[gebruikersnaam] -s /bin/bash [gebruikersnaam]
passwd [gebruikersnaam]
mkdir /home/[nutzername]
chown [gebruikersnaam]:users /home/[gebruikersnaam]/
Lukt dat? Dan kun je de volgende stap nemen.
Blokkeer het inloggen voor de gebruiker ‘root’
Nadat je in de eerste stap een andere gebruiker hebt aangemaakt, is het verstandig om het inloggen voor ‘root’ helemaal uit te schakelen.Heeft je server een seriële console? Dan is het natuurlijk nog steeds mogelijk om op je server in te loggen als rootgebruiker.
• Hoe maak je verbinding met je dedicated Server via RemoteConsole?
Verander in het bestand /etc/ssh/sshd_config de regel:
PermitRootLogin yes
in
PermitRootLogin no
/etc/init.d/ssh reload (Debian/Ubuntu)Nu is het niet langer mogelijk om als root via SSH op het systeem in te loggen. Gebruik in plaats daarvan de nieuw aangemaakte gebruikersnaam met het bijbehorende wachtwoord. Zodra je daarmee bent ingelogd, gebruik je de opdracht su -l om een shell met gewijzigde identiteit te starten. Vul je geen gebruikersnaam in? Dan wordt automatisch de root-gebruiker gekozen en moet je het root-wachtwoord invoeren.
/etc/init.d/sshd reload (SUSE)
Zodra je het wachtwoord hebt ingevoerd, kun je op de gebruikelijke manier verder werken als administrator (root).
Inloggen alleen toestaan met PubKeyAuthentication
Je kunt je server nóg beter beschermen tegen SSH-inbraakpogingen door de authenticatieprocedure te wijzigen. Je kiest dan voor een SSH-configuratie op basis van public key-authenticatie. Dit betekent dat er een key-bestand op de computer van de gebruiker aanwezig moet zijn. Zonder dat bestand kan hij niet op de server inloggen, want authenticatie met alleen een wachtwoord is voor het inloggen via SSH dan niet meer voldoende.Natuurlijk vereist het bewaren van je private key een hoge mate van zorgvuldigheid. We raden je bijvoorbeeld aan om de key op te slaan in een versleutelde container of op een externe gegevensdrager (USB-stick). Ook is het zeer verstandig om een back-up van het bestand met de private key te maken en die op een geschikte plaats te bewaren.
De hierna genoemde procedure is het handigst:
- Maak eerst het benodigde key-paar (private en public key).
- Maak daarna een map aan genaamd .ssh in de thuismap van [gebruikersnaam]; deze map is voor de public key.
- Upload de public key naar de server in die nieuw aangemaakte map.
- Vervolgens geef je extra toestemming voor public key-authenticatie.
- Test of die public key-authenticatie goed werkt.
- Schakel de SSH-dienst volledig over op public key-authenticatie.
De keys op een Linux-systeem of macOS X-systeem aanmaken
ssh-keygen -t dsa
Dit proces creëert twee sleutelbestanden:
Your identification has been saved in /home/[gebruikersnaam]/.ssh/id_dsa
Your public key has been saved in /home/[gebruikersnaam]/.ssh/id_dsa.pub
2. Vervolgens upload je de public key naar de doelserver met SecureCopy.
Met de volgende opdracht upload je het public key-bestand (id_dsa.pub) vanaf een Linux of macOS X-computer met de nieuwe bestandsnaam authorised_keys naar de map .ssh/ van de nieuwe gebruiker:
scp ~/.ssh/id_dsa.pub [gebruikernaam]@jouw_servernaam.tld:.ssh/authorized_keys
3. Controleer of de public key-authenticatie is toegestaan op de doelserver en configureer die indien nodig.
Dit gaat het best via de volgende methode.
Wijzig in het bestand /etc/ssh/sshd_config indien nodig de regel
PubkeyAuthentication no
in
PubkeyAuthentication yes
Nu moet je de configuratiebestanden van de dienst opnieuw laden:
/etc/init.d/ssh reload (Debian/Ubuntu)
/etc/init.d/sshd reload (SUSE)
4. Controleer daarna of de public key-authenticatie ook werkt.
Met de volgende opdracht maak je een SSH-verbinding met je server vanaf een Linux of MacOS X-computer. Ook voer je zo de private key in. Je hoeft daarna alleen maar het wachtwoord voor je lokale key-bestand in te voeren:
ssh -i ~/.ssh/id_dsa -l [gebruikersnaam] jouw_servernaam.tld5. Ben je vervolgens ingelogd? Dan kun je de authenticatieprocedure volledig wijzigen naar SSH public key-authenticatie. Dat doe je als volgt:
Verander in het bestand /etc/ssh/sshd_config zonodig de regel
PasswordAuthentication yes
in
PasswordAuthentication no
en de regel
ChallengeResponseAuthentication yes
in
ChallengeResponseAuthentication no
Vervolgens moet je de configuratiebestanden van de dienst opnieuw laden:
/etc/init.d/ssh reload (Debian/Ubuntu)
/etc/init.d/sshd reload (SUSE)
Keys aanmaken op een Windows-systeem
1. Keys aanmakenIn Windows gebruik je de tool Puttygen voor het beheren van keys. Je kunt het downloaden op de Putty-website.
Om een key te genereren, kies je eerst het type key (meestal SSH2, RSA of DSA), voer je vervolgens de lengte in bits in en klik je tot slot op Generate. Via muisbewegingen worden random-waarden verzameld, dus de generate-balk vult zich alleen als je de muis beweegt.
Zodra de key is aangemaakt, voer je een persoonlijk wachtwoord in bij Key passphrase. Je moet het bevestigen in het vak Confirm passphrase.
De verdere stappen komen overeen met de methodes onder punten 3 tot en met 5. Voor het uploaden van de public key naar de directory ~/.ssh/ raden we het programma WinSCP aan.
Gebruik je WinSCP? Dan vraagt het programma je om bij de eerste verbinding met je server een authenticatie-key te accepteren of te weigeren. Kies hier voor accepteren. Dan weet je lokale client bij volgende verbindingspogingen namelijk dat jouw server inderdaad van jou is, niet van iemand anders.