Så här säkrar du en SSH-server i Ubuntu 14.04
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