Säker SSH-anslutning i CentOS 7

SSH är det viktigaste protokollet som används för att ansluta till och administrera Linuxservrar. På grund av detta är det en av de portar som oftast attackeras när skändliga aktörer försöker få tillgång till din server. I den här artikeln kommer vi att diskutera några metoder som du kan använda för att göra din SSH-anslutning säkrare.

Obs: Beroende på vilken produkt du har med OVHcloud kan vissa av de här stegen redan ha vidtagits. Om så är fallet går du bara vidare till nästa steg. Dessutom förutsätter stegen i den här artikeln att du autentiserar dig på din server med hjälp av SSH-nycklar. Om du istället använder ett lösenord kommer vissa steg i den här artikeln inte att fungera.

Förutsättningar

  • Hur man använder SSH-nycklar
  • Server som kör CentOS 7

Teman

  • Skapa en ny Sudo-användare
  • Ändra SSH-demon. Konfiguration

Skapa en ny Sudo-användare

Det är alltid bäst att inte tillåta root-autentisering via SSH eftersom detta är det användarnamn som folk försöker hacka sig in i mest. Det första vi vill göra för att säkra vår server är därför att skapa en ny sudoanvändare för SSH. För att göra det skriver du följande kommando och ersätter det röda användarnamnet med ett valfritt användarnamn:

# adduser username

Nästan ska vi ange ett lösenord för användaren:

# passwd username

Följ uppmaningen att skapa och bekräfta lösenordet. Nu vill vi ge vår nya användare sudo privilegier så att vi kan bli root och köra kommandon som kräver administrativa privilegier. Vi kan göra detta genom att ange följande kommando.

# usermod -aG wheel username

Sist vill vi göra det möjligt för vår nya användare att autentisera sig med hjälp av den offentliga SSH-nyckel som vi redan har gett root-användaren. Vi kan använda ett enkelt rsync-kommando för att kopiera den offentliga nyckeln över till vår nya användares authorized_keys-fil.

# rsync --archive --chown=username:username ~/.ssh /home/username

För att gå vidare till nästa steg ska du logga ut och se till att du kan autentisera dig på servern som den nya användaren med hjälp av SSH. Om du inte kan logga in som din nya användare kommer du fortfarande att kunna logga in som root; bekräfta att alla kommandon har angetts korrekt och försök logga in som din nya användare igen.

Ändring av konfigurationen för SSH-daemon

Då vi använder SSH-nycklar och en ny användare för att autentisera oss på vår server vill vi aldrig att någon ska kunna autentisera sig med ett lösenord eller användarnamnet root. För att åstadkomma detta vill vi först navigera till konfigurationsfilen för OpenSSH-daemon. För att göra det öppnar du filen i en valfri textredigerare med följande kommando:

$ sudo vi /etc/ssh/sshd_config

Det finns tre ändringar som vi vill göra i den här filen. För det första vill vi ändra porten som OpenSSH lyssnar på för begäranden.

Varning: Om du har några aktiva brandväggar måste du tillåta trafik genom den port du väljer, annars låser du dig själv ute från din server. Om du låser dig själv från din server kan du återfå tillgång via IPMI eller KVM. Om du vill veta mer kan du läsa vår artikel Getting Started with IPMI.

Toppst i filen ser du ett avsnitt som ser ut så här som standard:

#Port 22#AddressFamily any#ListenAddress 0.0.0.0#ListenAddress ::

Uncomment the ”Port” section and choose any valid port number like in the following example. I vårt exempel använder vi port 12345.

Port 12345#AddressFamily any#ListenAddress 0.0.0.0#ListenAddress ::

Nästan scrollar du ner till # Authentication:-delen av filen. Du kommer att se fem alternativ som visas på följande sätt som standard:

#LoginGraceTime 2m#PermitRootLogin yes
PermitRootLogin yes#StrictModes#MaxAuthTries 6#MaxSessions 10

Här vill vi ändra ”yes” bredvid ”PermitRootLogin” till ”no”. Det kommer att visas på följande sätt:

#LoginGraceTime 2m
#PermitRootLogin yesPermitRootLogin no#StrictModes#MaxAuthTries 6#MaxSessions 10

Nu vill vi bläddra ner i sshd_config-filen lite längre för att göra vår sista ändring – att inaktivera lösenordsautentisering. Du kommer att se ett avsnitt som ser ut så här som standard:

# To disable tunneled clear text passwords, change to no here!#PasswordAuthentication yes#PermitEmptyPasswords no
PasswordAuthentication yes

Vi vill ändra ”yes” bredvid ”PasswordAuthentication” till ett ”no”. Det kommer att se ut på följande sätt:

# To disable tunneled clear text passwords, change to no here!#PasswordAuthentication yes#PermitEmptyPasswords no
PasswordAuthentication no

Spara och avsluta filen. Slutligen måste vi starta om OpenSSH för att ändringarna ska träda i kraft. Gör detta genom att ange följande kommando:

$ sudo systemctl restart sshd.service

Vi tar en stund för att gå igenom vad vi gjorde här. Vi ändrade portnumret som vi använder för att lyssna på SSH-förfrågningar. Sedan inaktiverade vi SSH-åtkomst för root-användaren eller alla användare som försöker autentisera sig med ett lösenord. Om vi har gjort detta korrekt kommer följande kommando inte längre att fungera för att logga in på servern.

$ ssh [email protected]

För att logga in nu måste vi ange det portnummer som vi använder för att lyssna på SSH-förfrågningar. Det betyder att vi från och med nu måste använda följande kommando och ersätta siffran bredvid ”-p” med det portnummer vi valde tidigare:

$ ssh -p 12345 [email protected]

Säkerställ att det här kommandot fungerar och att det föregående inte gör det. Om det gör det är du redo att komma åt din server på ett säkert sätt via SSH.

Slutsats

Med så många dåliga aktörer som använder internet har det aldrig varit viktigare att säkra alla potentiella ingångar till din server. Genom att följa den här guiden har du bidragit till säkerheten för den vanligaste ingångspunkten på Linuxservrar.

Lämna ett svar

Din e-postadress kommer inte publiceras.