Door SSH- verbindingen te beveiligen , kunt u uw Linux-systeem en gegevens beschermen. Systeembeheerders en thuisgebruikers moeten ook computers met internetverbinding beveiligen. Hier zijn 10 eenvoudige manieren om u te helpen uw SSH-server te beveiligen.
Enkele basisprincipes van SSH-beveiliging
SSH staat voor Secure Shell. Met het SSH-protocol of de softwaretool kunnen systeembeheerders en gebruikers met behulp van dat protocol veilige verbindingen maken met externe computers.
Het SSH-protocol is een gecodeerd protocol dat is ontworpen om een veilige verbinding te bieden via een onveilig netwerk zoals internet. SSH in Linux is gebouwd op de draagbare versie van het OpenSSH-project. Het is geïmplementeerd in een klassiek client-servermodel met een SSH-server die verbindingen van SSH-clients accepteert. De client wordt gebruikt om verbinding te maken met de server en de sessie toegankelijk te maken voor externe gebruikers. De server accepteert de verbinding en start de sessie.
In de standaardconfiguratie zal de SSH-server “luisteren” naar inkomende verbindingen op Transmission Control Protocol (TCP), poort 22. Omdat dit een gestandaardiseerde en populaire poort is, is het een doelwit voor bedreigingen van actoren en kwaadaardige bots.
Kwaadwillige actoren lanceren bots die reeksen IP-adressen scannen op zoek naar open poorten. Vervolgens onderzoekt het deze poorten op exploiteerbare kwetsbaarheden. Denken: ik ben veilig, er zijn veel grotere en betere doelwitten dan ik waar slechteriken zich op kunnen richten, dat is volkomen verkeerd. Deze bots kiezen hun doelwitten niet op basis van welke criteria dan ook, ze zoeken alleen maar naar een manier om het systeem binnen te dringen.
U zult een slachtoffer zijn als u uw systeem niet beveiligt.
Beveiligingsfrictie
Een Security Friction point is elke situatie waarin de hoofdtaak wordt verhinderd of vertraagd vanwege beveiligingseisen.
Beveiligingsproblemen veroorzaken ongemak (op elk niveau) voor gebruikers en anderen wanneer u beveiligingsmaatregelen implementeert. Mensen die nieuw zijn met computersystemen maken zich misschien zorgen of ze daadwerkelijk elke keer dat ze inloggen op het mainframe een wachtwoord moeten invoeren. Voor hen is dit ook een vorm van veiligheidsfrictie.
Het invoeren van veiligheidsmaatregelen zal voor sommige mensen vaak enige vorm van wrijving met zich meebrengen. Ondernemers moeten voor deze maatregelen betalen. Computergebruikers moeten mogelijk hun gewoonten veranderen of andere authenticatie-informatie onthouden, en stappen toevoegen om succesvol verbinding te maken. Systeembeheerders zullen extra werk moeten doen om de nieuwe beveiligingsmaatregelen te implementeren en te onderhouden.
Het aanscherpen en vergrendelen van een Linux- of Unix-achtig besturingssysteem kan snel gaan. De beveiligingsmaatregelen hier bestaan uit een reeks eenvoudig te volgen stappen die de computerbeveiliging zullen verbeteren zonder dat er applicaties van derden en diepe firewall- interventie nodig zijn .
Gebruik SSH-protocol versie 2
In 2006 is het SSH-protocol bijgewerkt van versie 1 naar versie 2. Dit is een aanzienlijke upgrade. Er zijn veel veranderingen en verbeteringen, vooral op het gebied van encryptie en beveiliging, en versie 2 is niet achterwaarts compatibel met versie 1. Om verbindingen van versie 1-clients te voorkomen, kunt u computers opgeven om alleen verbindingen van versie 2 te accepteren.
Om dit te doen, bewerkt u het bestand /etc/ssh/sshd_config met behulp van de volgende opdracht:
sudo gedit /etc/ssh/sshd_config

Voeg de volgende regel toe:
Protocol 2
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
En sla het bestand op en start het SSH-daemonproces opnieuw met de volgende opdracht:
sudo systemctl restart sshd
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Test de nieuwe installatie in actie door over te schakelen naar een andere machine en te proberen via SSH toegang te krijgen tot de testmachine. We zullen de optie -1 (protocol 1) gebruiken om de ssh-opdracht te dwingen protocolversie 1 te gebruiken.
ssh -1 dave@howtogeek.local
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Verbindingsverzoek geweigerd. Zorg ervoor dat je nog steeds verbinding kunt maken met protocol 2. We zullen -2 (protocol 2) gebruiken om te testen.
ssh -2 dave@howtogeek.local
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Het feit dat de SSH-server om een wachtwoord vraagt, is een positief teken dat de verbinding tot stand is gebracht en dat u interactie heeft met de server. Moderne SSH-clients gebruiken standaard protocol 2. We hoeven protocol 2 niet te specificeren, op voorwaarde dat de client up-to-date is.
ssh dave@howtogeek.local
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
De verbinding is geaccepteerd.
Vermijd poort 22
Poort 22 is de standaardpoort voor SSH-verbindingen. Als een andere poort wordt gebruikt, voegt dit een beetje Security Through Obscurity (STO) toe aan uw systeem. Beveiliging door dubbelzinnigheid mag nooit als een echte veiligheidsmaatregel worden beschouwd. Sommige slimmere aanvalsbots onderzoeken zelfs alle open poorten en beslissen welke service ze uitvoeren, in plaats van te vertrouwen op een eenvoudige zoeklijst met poorten en ervan uit te gaan dat ze normaal gesproken een service bieden. Maar het gebruik van een niet-standaard poort kan het slechte verkeer op poort 22 helpen verminderen.
Om een niet-standaard poort te configureren, bewerkt u het SSH-configuratiebestand zoals hierboven.
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Verwijder de # aan het begin van de poortregel en vervang 22 door het nummer van uw keuze. Sla het configuratiebestand op en start de SSH-daemon opnieuw.
Op een andere computer gebruiken we de opdracht ssh om verbinding te maken met de server. De standaard ssh-opdracht gebruikt poort 22:
ssh dave@howtogeek.local
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Verbinding geweigerd. Probeer het opnieuw en geef poort 470 op met de optie –p (poort):
ssh -p 479 dave@howtogeek.local
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Verbinding bevestigd.
Sluit het filter aan met behulp van TCP Wrappers
TCP Wrappers zijn een eenvoudig te begrijpen toegangscontrolelijst. Hiermee kunt u verbindingen weigeren en toestaan op basis van kenmerken van het verbindingsverzoek, zoals IP-adres of hostnaam. TCP Wrappers moeten worden gebruikt met, en niet in plaats van, een goed geconfigureerde firewall.
TCP Wrappers zijn vooraf geïnstalleerd op Ubuntu 18.04 LTS- machines . Het moet geïnstalleerd worden op Manjaro 18.10 en Fedora 30.
Om op Fedora te installeren, gebruik je het volgende commando:
sudo yum install tcp_wrappers
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Gebruik deze opdracht om op Manjaro te installeren:
sudo pacman -Syu tcp-wrappers
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Er zijn twee bestanden opgenomen: één bestand bevat de lijst met toegestane bestanden en één bestand bevat de lijst met geweigerde bestanden. Bewerk de weigeringslijst met de volgende opdracht:
sudo gedit /etc/hosts.deny
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Met het bovenstaande commando wordt de gedit-editor geopend, waarbij het bestand weigert erin te laden.
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Je moet de regel toevoegen:
ALL : ALL
En sla het bestand op. Deze lijn blokkeert alle ongeautoriseerde toegang. Nu moeten we machtigingen verlenen aan de verbindingen die u wilt accepteren. Om dat te doen, moet u het machtigingenbestand bewerken:
sudo gedit /etc/hosts.allow
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Met de bovenstaande opdracht wordt de gedit-editor geopend met het downloadbare bestand erin.
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
We hebben de SSH-daemonnaam, SSHD, en het IP-adres van de computer waarmee de verbinding tot stand kan worden gebracht, toegevoegd. Sla het bestand op en kijk of de beperkingen en machtigingen van kracht zijn.
Eerst probeer je verbinding te maken vanaf een computer die niet in het bestand hosts.allow staat:
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Verbinding geweigerd. We zullen proberen verbinding te maken vanaf een machine met IP-adres 192.168.4.23:
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Verbinding geaccepteerd.
In het voorbeeld hier kan slechts één machine verbinding maken. TCP-wrappers zijn behoorlijk flexibel; het ondersteunt hostnamen, jokertekens en subnetmaskers om verbindingen uit IP-adresbereiken te accepteren.
Verbindingsverzoeken zonder wachtwoord weigeren
Hoewel dit niet goed is, kunnen Linux-systeembeheerders gebruikersaccounts zonder wachtwoord aanmaken. Dat betekent dat er geen wachtwoord vereist is voor externe verbindingen vanaf dit account. Deze verbindingen worden geaccepteerd, maar niet geverifieerd.
De standaardinstelling voor SSH accepteert verbindingsverzoeken zonder wachtwoord. We kunnen het eenvoudig wijzigen en ervoor zorgen dat al die verbindingen worden geverifieerd.
U moet het SSH-configuratiebestand bewerken.
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Blader omlaag in het bestand totdat u de regel ziet met de tekst #PermitEmptyPasswords no . Verwijder # aan het begin van de regel en sla het bestand op. Start de SSH-daemon opnieuw.
Gebruik SSH-sleutels in plaats van wachtwoorden
SSH-sleutels bieden een veilige manier om in te loggen op een SSH-server. Wachtwoorden kunnen worden gekraakt, geraden of bruut geforceerd . SSH-sleutels zijn niet kwetsbaar voor dit soort aanvallen.
Bij het genereren van een SSH-sleutel maak je een sleutelpaar aan. De ene is de publieke sleutel en de andere is de privésleutel. De publieke sleutel wordt geïnstalleerd op de servers waarmee u verbinding wilt maken. De privésleutel wordt veilig op uw computer bewaard.
Met SSH-sleutels kunnen verbindingen worden gemaakt zonder wachtwoord, wat veiliger is dan verbindingen met wachtwoordauthenticatie.
Wanneer een verbindingsverzoek wordt gedaan, gebruikt de externe computer een kopie van de openbare sleutel om een gecodeerd bericht te maken dat naar de computer wordt teruggestuurd. Omdat het met de publieke sleutel is gecodeerd, kan de computer het met de privésleutel decoderen.
De computer haalt vervolgens wat informatie uit het bericht, codeert het en stuurt het terug naar de server. Als de server het kan decoderen met een kopie van de openbare sleutel. Als de informatie in het bericht overeenkomt met wat de server u heeft gestuurd, wordt de verbinding bevestigd.
Hier wordt de verbinding gemaakt met de server op 192.168.4.11 door de gebruiker met de SSH-sleutel. Let op: er wordt niet gevraagd om een wachtwoord in te voeren.
ssh dave@192.168.4.11
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Schakel wachtwoordauthenticatie volledig uit
U kunt wachtwoordverificatie volledig uitschakelen als u SSH-sleutels gebruikt. We moeten het SSH-configuratiebestand bewerken.
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Blader door het bestand totdat u de regel ziet die begint met #PasswordAuthentication yes . Verwijder # aan het begin van de regel, verander ja in nee en sla het bestand op. Start de SSH-daemon opnieuw.
Schakel X11-doorsturen uit
Met X11 forwarding kunnen externe gebruikers grafische applicaties vanaf uw server uitvoeren via een SSH-sessie, maar dit kan gemakkelijk worden misbruikt door kwaadwillenden. Het is beter om het uit te schakelen door het SSH-configuratiebestand te bewerken.
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Blader door het bestand totdat u de regel #X11Forwarding no ziet , verwijder de # aan het begin van de regel en sla het bestand op. Start de SSH-daemon opnieuw.
Stel de time-outwaarde voor inactiviteit in
Als er een SSH-verbinding met een computer tot stand wordt gebracht en er gedurende een bepaalde periode geen activiteit op plaatsvindt, kan dit een veiligheidsrisico opleveren.
Daarom moet u een time-outlimiet instellen. De SSH-verbinding wordt verbroken als er binnen de tijdslimiet geen activiteit is. Nogmaals, we moeten het SSH-configuratiebestand bewerken.
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Blader door het bestand totdat u de regel ziet die begint met #ClientAliveInterval 0 . Verwijder de # aan het begin van de regel en verander het getal 0 in de gewenste waarde. Meestal stellen mensen het in op 300 seconden, wat neerkomt op 5 minuten. Sla het bestand op en start de SSH-daemon opnieuw.
Stel een limiet in voor het aantal wachtwoordinvoer
Het definiëren van een limiet voor het aantal bevestigingen kan het raden van wachtwoorden en brute-force-aanvallen helpen voorkomen. Na het opgegeven aantal authenticatieverzoeken wordt de verbinding van de gebruiker met de SSH-server verbroken. Standaard is er geen limiet op het aantal wachtwoordpogingen, maar u kunt dit wijzigen in het SSH-configuratiebestand.
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Blader door het bestand totdat u de regel ziet die begint met #MaxAuthTries 0 . Als u de # aan het begin van de regel verwijdert, verandert het getal in de gewenste waarde. U kunt dit instellen op 3. Sla het bestand op wanneer u wijzigingen aanbrengt en start de SSH-daemon opnieuw.
U kunt dit testen door te proberen verbinding te maken en het verkeerde wachtwoord in te voeren.
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Let op: het MaxAuthTries-nummer is meer dan het aantal pogingen dat de gebruiker mag doen. Na twee mislukte pogingen wordt de verbinding verbroken, wat betekent dat MaxAuthTries is ingesteld op 3.
Schakel root-login uit
U wordt geadviseerd om niet als root in te loggen, maar gewoon als een normale gebruiker op Linux te gebruiken en sudo te gebruiken om acties uit te voeren waarvoor root-rechten vereist zijn. Je moet root ook niet toestaan om in te loggen op de SSH-server. Alleen normale gebruikers mogen verbinding maken. Als ze een taak op beheerdersniveau moeten uitvoeren, kunnen ze ook sudo gebruiken. Als u de rootgebruiker moet toestaan in te loggen, kunt u hem dwingen een SSH-sleutel te gebruiken.
Bewerk het configuratiebestand om root-login uit te schakelen.
![Hoe een SSH-server te beveiligen Hoe een SSH-server te beveiligen]()
Blader door het bestand totdat u de regel ziet die begint met #PermitRootLogin verbod-wachtwoord , verwijder de # aan het begin van de regel.
- Als je wilt voorkomen dat root inlogt, vervang dan verbodswachtwoord door nee.
- Als je root toestaat in te loggen maar het gebruik van een SSH-sleutel forceert, laat het verbodswachtwoord dan intact.
Sla de wijzigingen op en start de SSH-daemon opnieuw.
Laatste stap
Als u SSH niet op uw computer nodig heeft, schakelt u het natuurlijk uit met de volgende opdracht:
sudo systemctl stop sshd
sudo systemctl disable sshd
Ik wens je succes!