Zoeken op website

Hoe u de OpenSSH-server kunt beveiligen en versterken


Als het gaat om toegang tot externe apparaten zoals servers, routers en switches, wordt het SSH-protocol ten zeerste aanbevolen, vanwege de mogelijkheid om verkeer te coderen en iedereen af te weren die zou proberen uw verbindingen af te luisteren.

Hoe het ook zij, de standaardinstellingen van SSH zijn niet onfeilbaar en er zijn aanvullende aanpassingen nodig om het protocol veiliger te maken. In deze handleiding onderzoeken we verschillende manieren die u kunt gebruiken om de OpenSSH-installatie op de server te beveiligen en te versterken.

1. Stel SSH-wachtwoordloze authenticatie in

Standaard vereist SSH dat gebruikers hun wachtwoord opgeven wanneer ze inloggen. Maar het punt is: hackers kunnen wachtwoorden raden of zelfs een brute force-aanval uitvoeren met behulp van speciale hacktools en zo toegang krijgen tot uw systeem. Voor de zekerheid wordt het gebruik van SSH-wachtwoordloze authenticatie ten zeerste aanbevolen.

De eerste stap is het genereren van een SSH-sleutelpaar dat bestaat uit een publieke sleutel en een privésleutel. De privésleutel bevindt zich op uw hostsysteem, terwijl de publieke sleutel vervolgens naar de externe server wordt gekopieerd.

Zodra de openbare sleutel succesvol is gekopieerd, kunt u nu naadloos SSH-toegang krijgen tot de externe server zonder dat u een wachtwoord hoeft op te geven.

De volgende stap is het uitschakelen van wachtwoordauthenticatie. Om dit te bereiken, moet u het SSH-configuratiebestand wijzigen.

sudo vim /etc/ssh/sshd_config

Blader in het configuratiebestand en zoek de volgende instructie. Verwijder de opmerkingen en wijzig de optie 'yes' in 'no'

PasswordAuthentication no

Start vervolgens de SSH-daemon opnieuw op.

sudo systemctl restart sshd

Op dit moment heeft u alleen toegang tot de externe server met behulp van de SSH-sleutelauthenticatie.

2. Schakel gebruikers-SSH-wachtwoordloze verbindingsverzoeken uit

Een andere aanbevolen manier om de beveiliging van uw server te versterken, is door SSH-aanmeldingen uit te schakelen voor gebruikers zonder wachtwoord. Dit klinkt een beetje vreemd, maar soms kunnen systeembeheerders gebruikersaccounts aanmaken en vergeten wachtwoorden toe te wijzen – wat een heel slecht idee is.

Om verzoeken van gebruikers zonder wachtwoord af te wijzen, gaat u opnieuw naar het configuratiebestand op /etc/ssh/sshd_config en zorgt u ervoor dat u over de onderstaande instructie beschikt:

PermitEmptyPasswords no

Start vervolgens de SSH-service opnieuw op om de wijziging door te voeren.

sudo systemctl restart sshd

3. Schakel SSH-rootaanmeldingen uit

Het is een goed idee wat er kan gebeuren als een hacker erin slaagt je root-wachtwoord bruut te forceren. Het toestaan van root-login op afstand is altijd een slecht idee en kan de veiligheid van uw systeem in gevaar brengen.

Om deze reden wordt het altijd aanbevolen om SSH remote root login uit te schakelen en in plaats daarvan vast te houden aan een gewone niet-rootgebruiker. Ga nogmaals naar het configuratiebestand en wijzig deze regel zoals weergegeven.

PermitRootLogin no

Als u klaar bent, start u de SSH-service opnieuw op om de wijziging door te voeren.

sudo systemctl restart sshd

Voortaan wordt root-login op afstand gedeactiveerd.

4. Gebruik SSH-protocol 2

SSH bestaat in twee versies: SSH protocol 1 en protocol 2. SSH protocol 2 werd in 2006 geïntroduceerd en is veiliger dan protocol 1 dankzij de sterke cryptografische controles, bulkversleuteling en robuuste algoritmen.

Standaard gebruikt SSH protocol 1. Om dit te veranderen naar het veiligere Protocol 2, voegt u de onderstaande regel toe aan het configuratiebestand:

Protocol 2

Start zoals altijd SSH opnieuw op om de wijzigingen door te voeren.

sudo systemctl restart sshd

In de toekomst zal SSH standaard Protocol 2 gebruiken.

Om te testen of SSH protocol 1 nog meer wordt ondersteund, voert u de opdracht uit:

ssh -1 user@remote-IP

U krijgt een foutmelding met de tekst “SSH-protocol v.1 wordt niet langer ondersteund”.

In dit geval was het commando:

ssh -1 [email 

Bovendien kunt u eenvoudig de tag -2 opgeven om er zeker van te zijn dat Protocol 2 het standaardprotocol is dat wordt gebruikt.

ssh -2 [email 

5. Stel de waarde voor de inactieve SSH-verbindingstime-out in

Als u uw pc langere tijd onbeheerd achterlaat met een inactieve SSH-verbinding, kan dit een beveiligingsrisico vormen. Iemand kan gewoon langskomen en uw SSH-sessie overnemen en doen wat hij of zij wil. Om dit probleem aan te pakken, is het daarom verstandig om een time-outlimiet voor inactiviteit in te stellen. Wanneer deze wordt overschreden, wordt de SSH-sessie gesloten.

Open nogmaals uw SSH-configuratiebestand en zoek de instructie “ClientAliveInterval”. Wijs een redelijke waarde toe. Ik heb de limiet bijvoorbeeld ingesteld op 180 seconden.

ClientAliveInterval 180

Dit houdt in dat de SSH-sessie wordt afgebroken als er na 3 minuten geen activiteit wordt geregistreerd, wat overeenkomt met 180 seconden.

Start vervolgens de SSH-daemon opnieuw op om de aangebrachte wijzigingen door te voeren.

sudo systemctl restart sshd

6. Beperk SSH-toegang tot bepaalde gebruikers

Voor een extra beveiligingslaag kunt u de gebruikers definiëren die het SSH-protocol nodig hebben om in te loggen en externe taken op het systeem uit te voeren. Hierdoor worden andere gebruikers buitengesloten die zonder uw toestemming toegang tot uw systeem proberen te krijgen.

Open zoals altijd het configuratiebestand en voeg de instructie “AllowUsers” toe, gevolgd door de namen van de gebruikers die u wilt toekennen. In het onderstaande voorbeeld heb ik de gebruikers ‘tecmint‘ en ‘james‘ toestemming gegeven om op afstand toegang te krijgen tot het systeem via SSH. Elke andere gebruiker die probeert toegang op afstand te krijgen, wordt geblokkeerd.

AllowUsers tecmint james

Start daarna SSH opnieuw op zodat de wijzigingen blijven bestaan.

sudo systemctl restart sshd

7. Configureer een limiet voor wachtwoordpogingen

Een andere manier waarop je een beveiligingslaag kunt toevoegen is door het aantal SSH-inlogpogingen zodanig te beperken dat na een aantal mislukte pogingen de verbinding wegvalt. Ga dus opnieuw naar het configuratiebestand en zoek de “MaxAuthTries” richtlijn en definieer een waarde voor het maximale aantal pogingen.

In dit voorbeeld is de limiet ingesteld op 3 pogingen, zoals weergegeven.

MaxAuthTries 3

En ten slotte herstart u de SSH-service zoals in de vorige scenario's.

Mogelijk vindt u de volgende SSH-gerelateerde artikelen ook nuttig:

  • Hoe OpenSSH 8.0 Server vanaf de bron in Linux te installeren
  • Fail2Ban installeren om SSH op CentOS/RHEL 8 te beschermen
  • Hoe de SSH-poort in Linux te wijzigen
  • Hoe SSH-tunneling of port forwarding in Linux te creëren
  • 4 manieren om SSH-verbindingen in Linux te versnellen
  • Hoe u alle mislukte SSH-inlogpogingen in Linux kunt vinden
  • Hoe u inactieve of inactieve SSH-verbindingen in Linux kunt verbreken
Conclusie

Dat was een overzicht van enkele maatregelen die u kunt nemen om uw externe SSH-verbindingen te beveiligen. Het is belangrijk om toe te voegen dat u altijd sterke wachtwoorden moet toewijzen aan gebruikers die externe toegang hebben om brute-force-aanvallen te dwarsbomen. Wij hopen dat u deze gids verhelderend vond. Uw feedback is zeer welkom.