SSH (Secure Socket Shell) is een opdrachtregelinterface en een protocol voor veilige toegang tot een externe Linux-server. Het biedt een veilige en gecodeerde communicatie via een netwerk en maakt het mogelijk gegevens uit te wisselen via een beveiligd kanaal tussen twee servers. Het wordt veel gebruikt door systeembeheerders om op afstand het web en andere soorten servers te besturen. In dit artikel laten we u zien hoe u uw SSH-server kunt beveiligen.

Opmerking : deze zelfstudie gaat ervan uit dat op de SSH-server Ubuntu 14.04 wordt uitgevoerd en dat de clientcomputer een Linux is.

Aan de slag - installeer SSH

Eerst moet u uw systeem bijwerken en de nodige pakketten naar uw systeem installeren.

Voer de volgende opdracht uit om het systeem bij te werken en de SSH-server op de server te installeren:

 sudo apt-get update sudo apt-get install openssh-server 

Om de SSH-client op de clientcomputer te installeren, voert u de volgende opdracht uit:

 sudo apt-get install openssh-client 

SSH configureren voor wachtwoordloze aanmelding

Er zijn twee verschillende methoden om in te loggen op een SSH-server: een is op wachtwoord gebaseerde authenticatie en de andere is op sleutels gebaseerde authenticatie. Wachtwoordverificatie is een zeer basismethode die gemakkelijk te gebruiken en te kraken is. Het gebruik van wachtwoordverificatie is erg onveilig, vooral als uw gebruiker een zwak wachtwoord gebruikt. Aan de andere kant bieden SSH-sleutels een eenvoudige en veilige manier om in te loggen op een externe server en deze methode is aan te bevelen voor alle gebruikers.

Op uw clientcomputer genereert u SSH-sleutels met de volgende opdracht:

 cd ~ / .ssh ssh-keygen -t rsa 

Druk bij elke prompt op Enter. Dit produceert twee bestanden: id_rsa.pub (openbare sleutel) en id_rsa (persoonlijke sleutel).

Dit zal iets uitvoeren dat er als volgt uitziet:

Maak op uw server de volgende map (als deze nog niet bestaat):

 mkdir -p ~ / .ssh / 

Terug naar uw clientcomputer kopieert u het "id_rsa.pub" -bestand naar uw server met behulp van de volgende opdracht:

 scp -P "yourport" ~ / .ssh / id_rsa.pub gebruikersnaam @ serverip: ~ / .ssh 

Wijzig "yourport" in het poortnummer dat uw SSH-server gebruikt (de standaardinstelling is 22) en de "serverip" in het IP-adres van de server.

Wijzig op uw servermachine de bestandsnaam en instellingsmachtigingen.

 cat ~ / .ssh / id_rsa.pub >> ~ / .ssh / authorized_keys chmod 700 .ssh chmod 600 .ssh / authorized_keys rm .ssh / id_rsa.pub 

Als u wilt testen of de op toetsen gebaseerde verificatiemethode werkt, probeert u vanaf de clientcomputer verbinding te maken met uw SSH-server:

 ssh -P "yourport" gebruikersnaam @ serverip 

Als u verbinding kunt maken zonder een wachtwoord in te voeren, werkt de op toetsen gebaseerde verificatiemethode.

Secure SSH-configuratiebestand

Het bestand "/ etc / ssh / sshd_config" is het systeemomvattende configuratiebestand voor SSH, waarmee u verschillende opties kunt instellen om de beveiliging van een SSH-server te verbeteren. De standaardconfiguratie in het configuratiebestand is erg onveilig, dus u moet deze eerst bewerken en de juiste opties instellen om de beveiliging te verbeteren.

Om het bestand "/ etc / ssh / sshd_config" te bewerken, voert u uit

 sudo nano / etc / ssh / sshd_config 

Verander de luisterpoort van SSH

Standaard luistert SSH naar poort 22. Aanvallers gebruiken poortscanners om te zien of een SSH-service actief is of niet. Het wordt aanbevolen om de standaardpoort te wijzigen.

Als u de standaardpoort naar 2200 wilt wijzigen, wijzigt u:

 Poort 22 

naar

 Poort 2200 

Gebruik alleen Protocol 2

Versie 1 van het protocol bevat beveiligingsrisico's. Protocol 2 is het standaarditem op Ubuntu.

Wijzig de regel hieronder:

 Protocol 2 

Beperk gebruikers toegang

Het is noodzakelijk om alleen specifieke gebruikers toe te staan ​​om in te loggen bij SSH. Het kan uw veiligheid verbeteren. Standaard is deze optie niet beschikbaar in het SSH-configuratiebestand.

Om "user1" en "user2" toe te staan, voeg je de volgende regel toe:

 AllowUsers user1 user2 

Om "baduser1" en "baduser2" te weigeren, voegt u de volgende regel toe:

 DenyUsers baduser1 baduser2 

Schakel rootaanmelding uit

Het is niet nodig om in te loggen als root via ssh via een netwerk. Normale gebruikers kunnen ook su of sudo om toegang op sudo te krijgen. De meeste aanvallers proberen root-gebruiker te gebruiken om in te loggen. Dit is een groot beveiligingsrisico, daarom is het aan te raden de root-aanmelding te weigeren.

Wijzig de regel om rootaanmelding uit te schakelen

 PermitRootLogin zonder wachtwoord 

naar

 PermitRootLogin nr 

Verberg laatste login

U kunt verbergen wie het laatst is ingelogd wanneer een gebruiker inlogt.

Wijzig hiervoor de lijn

 PrintLastLog ja 

naar

 PrintLastLog Nr 

Beperk de interface om in te loggen

Standaard zal ssh luisteren op alle netwerkinterfaces. Als u wilt toestaan ​​dat een SSH-verbinding wordt geaccepteerd van specifieke IP-adressen, kunt u de lijn wijzigen

 #ListenAddress :: 

naar

 Luisteradres 192.168.1.20 

Schakel wachtwoordverificatie uit

Het gebruik van wachtwoordverificatie is een groot beveiligingsrisico als uw gebruiker een zwak wachtwoord gebruikt. Het wordt aanbevolen om "ssh-toetsen" te gebruiken. Een "ssh-sleutel" kan meer dan 600 willekeurige tekens bevatten en moeilijk te doorbreken zijn.

Wijzig hiervoor de lijn

 # PasswordAuthentication Ja 

naar

 WachtwoordAuthenticatie Nr 

Schakel .rhosts-bestanden uit

De .rhosts-bestanden geven aan welke gebruikers zonder wachtwoord toegang hebben tot de r-opdrachten (rsh, rcp, rlogin, enz.) Op de lokale computer. Standaard is een .rhosts-bestand uitgeschakeld; zo niet, wijzig dan de lijnen zoals hieronder getoond.

 IgnoreRhosts yes RhostsAuthentication no RSAAuthentication yes 

Host-gebaseerde authenticatie uitschakelen

SSH's op host gebaseerde authenticatie is veiliger dan .rhosts-authenticatie. Het wordt echter niet aangeraden dat hosts elkaar vertrouwen. Standaard is deze optie uitgeschakeld.

Als dit niet het geval is, wijzigt u de onderstaande regel.

 HostbasedAuthentication Nr 

Stel een inlog-time-out in

De "LoginGraceTime" geeft aan hoelang na een verbindingsverzoek de server zal wachten voordat deze wordt losgekoppeld. Het wordt aanbevolen om dit te verlagen naar 60 seconden.

Wijzig hiervoor de lijn

 LoginGraceTime 120 

naar

 LoginGraceTime 60 

Stel maximale startverbindingen in

Het instellen van een goed maximaal aantal gelijktijdige verbindingen met de SSH-daemon kan nuttig zijn tegen een brute-kracht aanval.

Wijzig hiervoor de lijn

 #MaxStartups 10:30:60 

naar

 MaxStartups 2 

Uitschakelen uitschakelen

De port forwarding-techniek wordt door aanvallers gebruikt om netwerkverbindingen via een SSH-sessie te tunnelen om in te loggen op systemen. Het is aan te raden deze optie uit te schakelen.

Wijzig hiervoor de lijn

 X11Forwarding ja 

naar

 X11Forwarding nr 

Meer informatie registreren

SSH registreert standaard alles. Als u meer informatie wilt registreren, zoals mislukte inlogpogingen. je kunt de waarde hiervan wijzigen in "VERBOSE".

Wijzig hiervoor de lijn

 LogLevel INFO 

naar

 LogLevel VERBOSE 

Schakel lege wachtwoorden uit

Het is noodzakelijk om gebruikers met lege wachtwoorden op uw server te weigeren. Standaard is PermitEmptyPasswords uitgeschakeld in Ubuntu.

Als dit niet het geval is, wijzigt u de onderstaande regel.

 PermitEmptyPasswords nee 

Stel het time-outinterval inactief in

Standaard is deze optie niet beschikbaar in het standaard configuratiebestand van SSH. Het wordt aanbevolen om een ​​juiste time-out voor inactief in te stellen om een ​​ssh-sessie zonder toezicht te voorkomen.

Voeg hiervoor de volgende regels toe.

 ClientAliveInterval 300 ClientAliveCountMax 0 

Strikte modus

Dit voorkomt het gebruik van een onveilige homedirectory en belangrijke bestandsrechten. Standaard is deze optie ingeschakeld.

Als dit niet het geval is, wijzigt u de volgende regel.

 StrictModes ja 

Sla nu op en sluit het bestand / etc / ssh / sshd_config af en start de SSH-server opnieuw op.

 sudo-service ssh opnieuw opstarten 

Secure SSH met TCP-wrappers

Een TCP-wrapper biedt hostgebaseerde toegangscontrole voor netwerkdiensten die worden gebruikt om netwerktoegang tot internet te filteren. Bewerk het bestand "/etc/hosts.allow" om SSH alleen toe te staan ​​van 192.168.1.2 en 172.16.23.12.

 sudo nano /etc/hosts.allow 

Voeg de volgende regel toe:

 sshd: 192.168.1.2 172.16.23.12 

Secure SSH met behulp van iptables

Standaard moet een SSH-server alleen verbindingen van uw LAN of andere externe sites accepteren. Het wordt aanbevolen om alleen specifieke IP-adressen toe te staan ​​om toegang te krijgen tot SSH en de toegang tot SSH te blokkeren voor niet-geautoriseerde IP-adressen.

Als u SSH-verbindingen alleen vanaf 192.168.1.2 wilt toestaan, voert u de volgende opdracht uit:

 sudo iptables -A INPUT -p tcp -m state --state NEW - source 192.168.1.2 --dport 2200 -j ACCEPT 

Schakel de SSH-verbinding van alle andere hosts uit door de volgende opdracht uit te voeren:

 sudo iptables -A INPUT -p tcp --dport 2200 -j DROP 

Bewaar nu uw nieuwe regels met behulp van de volgende opdracht:

 sudo iptables-save> /etc/iptables/rules.v4 

Conclusie

De bovenstaande instructies zijn zeer krachtige technieken voor het beveiligen van uw SSH-server. Dit bericht bevat alle informatie die de meeste gebruikers nodig hebben voor een SSH-server. Als je vragen hebt, kun je hieronder reageren.

Referentie: SSH ubuntu