Hoe een SSH-server te beveiligen in Ubuntu 14.04
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