SSH (Secure Socket Shell) är ett kommandoradsgränssnitt och protokoll för säkert att få tillgång till en fjärr Linux-server. Det ger en säker och krypterad kommunikation över ett nätverk och tillåter att data utbyts via en säker kanal mellan två servrar. Det används ofta av systemadministratörer för att styra webben och andra typer av servrar på distans. I den här artikeln ska vi visa hur du kan säkra din SSH-server.

Obs! Denna handledning förutsätter att SSH-servern kör Ubuntu 14.04 och klientmaskinen är en Linux.

Komma igång - installera SSH

Först måste du uppdatera ditt system och installera nödvändiga paket till ditt system.

För att uppdatera systemet och installera SSH-servern på servern, kör följande kommando:

 sudo apt-få uppdatering sudo apt-get install openssh-server 

För att installera SSH-klienten på klientmaskinen, kör följande kommando:

 sudo apt-get install openssh-client 

Konfigurera SSH för lösenordslös inloggning

Det finns två olika metoder för att logga in på en SSH-server: den ena är lösenordsbaserad autentisering och den andra är nyckelbaserad autentisering. Lösenordsautentisering är en mycket grundläggande metod som är lätt att använda och spricka. Användning av lösenordsautentisering är mycket osäker, speciellt om användaren använder ett svagt lösenord. Å andra sidan ger SSH-nycklar ett enkelt och säkert sätt att logga in på en fjärrserver, och den här metoden rekommenderas för alla användare.

På din klientmaskin generera SSH-nycklar med följande kommando:

 cd ~ / .ssh ssh-keygen -t rsa 

Tryck bara på Enter-tangenten vid varje prompten. Detta ger två filer: id_rsa.pub (public key) och id_rsa (privat nyckel).

Detta kommer att mata ut något som ser ut som följande:

På din server, skapa följande mapp (om den inte existerar):

 mkdir -p ~ / .ssh / 

Tillbaka till din klientmaskin, kopiera filen "id_rsa.pub" till din server med följande kommando:

 scp -P "yourport" ~ / .ssh / id_rsa.pub användarnamn @ serverip: ~ / .ssh 

Ändra "yourport" till portnumret som din SSH-server använder (standard är 22) och "serverip" till serverns IP-adress.

Ändra filnamn och installationsbehörigheter på din servermaskin.

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

För att testa om den nyckelbaserade autentiseringsmetoden fungerar, försök att ansluta till din SSH-server från klientmaskinen:

 ssh -P "yourport" användarnamn @ serverip 

Om du kan ansluta utan att ange ett lösenord fungerar den nyckelbaserade autentiseringsmetoden.

Säker SSH-konfigurationsfil

Filen "/ etc / ssh / sshd_config" är den systemövergripande konfigurationsfilen för SSH som låter dig ställa in olika alternativ för att förbättra säkerheten för en SSH-server. Standardkonfigurationen i config-filen är mycket osäker, så du måste redigera den först och ställa in lämpliga alternativ för att förbättra säkerheten.

För att redigera filen "/ etc / ssh / sshd_config", kör

 sudo nano / etc / ssh / sshd_config 

Ändra SSH-lyssningsporten

Som standard lyssnar SSH på port 22. Attackers använder portskannrar för att se om en SSH-tjänst körs eller inte. Det rekommenderas att ändra standardporten.

Ändra standardporten till 2200 genom att ändra:

 Hamn 22 

till

 Hamn 2200 

Använd endast protokoll 2

Version 1 i protokollet innehåller säkerhetsproblem. Protokoll 2 är standardinmatningen på Ubuntu.

Ändra raden som visas nedan:

 Protokoll 2 

Begränsa användarnas åtkomst

Det är nödvändigt att tillåta endast specifika användare att logga in på SSH. Det kan förbättra din säkerhet. Som standard är det här alternativet inte tillgängligt i SSH-konfigurationsfilen.

För att tillåta "user1" och "user2, " lägg till följande rad:

 AllowUsers user1 user2 

För att neka "baduser1" och "baduser2, " lägg till följande rad:

 DenyUsers baduser1 baduser2 

Inaktivera root-inloggning

Det är inte nödvändigt att logga in som root via ssh via ett nätverk. Vanliga användare kan också använda su eller sudo att få tillgång till root-nivå. De flesta angripare kommer att försöka använda root-användare för att logga in. Det här är en stor säkerhetsrisk, så det rekommenderas att neka root-inloggningen.

För att inaktivera root-inloggning, ändra linjen

 PermitRootLogin utan lösenord 

till

 PermitRootLogin nr 

Dölj senaste inloggningen

Du kan dölja vilka inloggade senast när en användare loggar in.

För detta, ändra linjen

 PrintLastLog ja 

till

 PrintLastLog nr 

Begränsa gränssnittet för att logga in

Som standard lyssnar ssh på alla nätverksgränssnitt. Om du vill tillåta en SSH-anslutning att accepteras från specifika IP-adresser kan du ändra linjen

 #ListenAddress :: 

till

 LyssnaAddress 192.168.1.20 

Inaktivera lösenordsutifiering

Att använda lösenordsautentisering är en stor säkerhetsrisk om användaren använder ett svagt lösenord. Det rekommenderas att använda "ssh-nycklar". En "ssh-nyckel" kan innehålla över 600 slumpmässiga tecken och vara svåra att bryta.

För detta, ändra linjen

 # PasswordAuthentication ja 

till

 PasswordAuthentication nr 

Inaktivera .rhosts-filer

.hhosts-filerna anger vilka användare som har tillgång till r-kommandon (rsh, rcp, rlogin, etc.) på den lokala maskinen utan ett lösenord. Som standard är en .rhosts-fil avstängd. Om inte, ändra sedan linjerna som visas nedan.

 IgnoreraRhosts ja RhostsAuthentication no RSAAuthentication ja 

Inaktivera värdbaserad autentisering

SSHs värdbaserade autentisering är säkrare än .hosts-autentisering. Det är dock inte rekommenderat att värdar litar på varandra. Som standard är detta alternativ inaktiverat.

Om inte, ändra sedan linjen som visas nedan.

 HostbaseradAuthentication nr 

Ange en time-out för inloggningsgrace

"LoginGraceTime" anger hur länge efter en anslutningsförfrågan servern ska vänta innan den kopplas från. Det rekommenderas att minska det till 60 sekunder.

För detta, ändra linjen

 Logga inGraceTime 120 

till

 LoginGraceTime 60 

Ange maximala startanslutningar

Att ställa in ett ordentligt maximalt antal samtidiga anslutningar till SSH-demonen kan vara till hjälp mot en brute-force attack.

För detta, ändra linjen

 #MaxStartups 10:30:60 

till

 MaxStartups 2 

Inaktivera vidarebefordran

Portöverföringstekniken används av angripare till tunnelnätverksanslutningar genom en SSH-session för att logga in i system. Det rekommenderas att inaktivera det här alternativet.

För detta, ändra linjen

 X11Förwarding ja 

till

 X11Forwarding nr 

Logga in mer information

Som standard loggar SSH allt. Om du vill logga in mer information som misslyckade inloggningsförsök. du kan ändra värdet på detta till "VERBOSE".

För detta, ändra linjen

 LogLevel INFO 

till

 LogLevel VERBOSE 

Inaktivera tomma lösenord

Det är nödvändigt att neka användare med tomma lösenord på din server. Som standard är PermitEmptyPasswords inaktiverat i Ubuntu.

Om inte, ändra sedan linjen som visas nedan.

 PermitEmptyPasswords nr 

Ställ in tomgångsintervallintervall

Som standard är dessa alternativ inte tillgängliga i SSH-standardkonfigurationsfilen. Det rekommenderas att ställa in en korrekt ledig timeout för att undvika en obevakad ssh-session.

Lägg till följande rader för detta.

 ClientAliveInterval 300 ClientAliveCountMax 0 

Strikt läge

Detta kommer att förhindra användning av osäker hemkatalog och nyckelfilbehörigheter. Som standard är det här alternativet aktiverat.

Om inte, ändra sedan följande rad.

 StrictModes yes 

Spara och avsluta nu filen / etc / ssh / sshd_config och starta om SSH-servern.

 sudo service ssh omstart 

Säkra SSH med TCP wrappers

Ett TCP-omslag ger värdbaserad åtkomstkontroll till nätverkstjänster som används för att filtrera nätverksåtkomst till Internet. Redigera din "/etc/hosts.allow" -fil för att tillåta SSH endast från 192.168.1.2 och 172.16.23.12.

 sudo nano /etc/hosts.allow 

Lägg till följande rad:

 sshd: 192.168.1.2 172.16.23.12 

Säkra SSH med hjälp av iptables

Som standard måste en SSH-server endast acceptera anslutningar från ditt LAN eller andra avlägsna webbplatser. Det rekommenderas att bara tillåta specifika IP-adresser för åtkomst till SSH och blockera åtkomst till SSH till obehöriga IP-adresser.

För att tillåta SSH-anslutningar endast från 192.168.1.2 kör följande kommando:

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

Inaktivera SSH-anslutningen från alla andra värdar genom att köra följande kommando:

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

Spara nu dina nya regler med följande kommando:

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

Slutsats

Ovanstående instruktioner är mycket kraftfulla tekniker för att säkra din SSH-server. Det här inlägget täcker all information som de flesta användare behöver för en SSH-server. Om du har några frågor, vänligen kommentera nedan.

Referens: SSH ubuntu