De Bästa Sätten att Säkra Din SSH-Server

0
330
Eny Setiyowati/Shutterstock.kom

Säkra ditt Linux-system är SSH-anslutning knappt kommer att skydda din dator och dina data. Systemadministratörer och användare hem både behovet av att härda och säker internet-inför datorer, men SSH kan vara komplicerat. Här är tio enkla quick-wins för att hjälpa till att skydda din SSH-server.

SSH grundläggande Säkerhet

SSH står för Secure Shell. Namnet “SSH” används omväxlande för att betyda antingen SSH-protokollet i sig eller den programvara som gör att systemadministratörer och användare för att göra säkra anslutningar till fjärrdatorer med hjälp av protokollet.

SSH-protokollet är ett krypterat protokoll och har utformats för att ge en säker anslutning över ett osäkert nätverk, såsom internet. SSH i Linux bygger på en portabla versionen av OpenSSH-projektet. Den genomförs i en klassisk klient-server-modellen, med en SSH-server acceptera anslutningar från SSH-klienter. Klienten används för att ansluta till servern och för att visa session till det fjärranslutna användare. Servern accepterar anslutningen och genomför sessionen.

I dess standardkonfiguration, en SSH-server kommer att lyssna efter inkommande anslutningar på Transmission Control Protocol (TCP) port 22. Eftersom detta är ett standardiserat, kända porten, det är ett mål för hot aktörer och illasinnade robotar.

Hot skådespelare starta robotar för att söka igenom ett intervall av IP-adresser letar efter öppna portar. De hamnar då sökt för att se om det finns sårbarheter som kan utnyttjas. Tänka, “jag är säker, det är större och bättre mål än mig för skurkarna att sikta på,” är falskt resonemang. Den botar inte att välja mål som baseras på någon förtjänst, de är metodiskt söker system de kan bryta mot.

Du nominera dig själv som ett offer om du inte har säkrat ditt system.

Säkerhet Friktion

Säkerhet friktion är irritation—oavsett grad—som användare och andra kommer att uppleva när du genomför säkerhetsåtgärder. Vi har långa minnen och minns att införa nya användare till en dator, och att höra dem att be i en skräckslagen röst om de verkligen var tvungen att ange ett lösenord varje gång de loggar in till stordatorn. Att—dem—var säkerheten friktion.

(Förresten, uppfinningen av lösenord krediteras till Fernando J. Corbató, en annan figur i pantheon av datavetare vars kombination av arbete bidragit till de omständigheter som ledde till födelsen av Unix.)

Att införa säkerhetsåtgärder innebär oftast någon form av friktion för någon. Företagare måste betala för det. Datoranvändare kan behöva ändra sin invanda rutiner, eller komma ihåg en annan uppsättning av autentisering information, eller lägga till extra steg för att ansluta framgångsrikt. Systemadministratörer kommer ytterligare arbete att göra för att implementera och underhålla den nya säkerhetsåtgärder.

Härdning och låsa ner en Linux-eller Unix-liknande operativsystem som kan få mycket engagerad, mycket snabbt. Vad vi presenterar här är ett set av den lätt att genomföra åtgärder som kommer att förbättra säkerheten i din dator utan behov för tredje parts applikationer och utan att gräva igenom din brandvägg.

Dessa steg är inte sista ordet i SSH säkerhet, men de kommer att flytta dig en lång väg framåt från standardinställningarna, och utan alltför mycket friktion.

Använd SSH Version 2

I 2006, SSH-protokollet har uppdaterats från version 1 till version 2. Det var en betydande uppgradering. Det var så många förändringar och förbättringar, särskilt kring kryptering och säkerhet, att version 2 är inte bakåtkompatibel med version 1. För att förhindra anslutningar från version 1 kunder, du kan anmäla att din dator kommer bara att acceptera anslutningar från version 2 kunder.

Att göra så, redigera /etc/ssh/sshd_config. Vi kommer att göra detta en hel del under denna artikel. När du behöver för att redigera denna fil, detta är kommandot som du vill använda:

sudo gedit /etc/ssh/sshd_config

Lägg till raden:

Protokoll 2

Och spara filen. Vi kommer att starta SSH-demonen processen. Igen, vi kommer att göra detta en hel del under denna artikel. Detta är kommandot för att använda i alla fall:

sudo systemctl starta om sshd

Låt oss kolla att våra nya inställningen träder i kraft. Vi ska hoppa över till en annan maskin och försöka SSH på vår testmaskin. Och vi kommer att använda -1 (protokoll 1) möjlighet att tvinga ssh kommandot för att använda protokoll version 1.

ssh -1 dave@howtogeek.local

Bra, vår anslutning begäran avslås. Låt oss se till att vi kan fortfarande ansluta med protokoll 2. Vi kommer att använda -2 (protokoll 2) möjligheten att bevisa detta faktum.

ssh -2 dave@howtogeek.local

Det faktum att SSH-servern begär lösenord är en positiv indikation på att anslutning har gjorts och du interagerar med servern. Faktiskt, eftersom moderna SSH-klienter kommer som standard med protokoll 2, vi behöver inte ange protokoll nr 2 så länge som vår kund är uppdaterad.

ssh dave@howtogeek.local

Och vår kontakt är accepterat. Så det är bara svagare och mindre säkra protokoll 1 anslutningar som att bli avvisad.

Undvik Port 22

Port 22 är standard port för SSH-anslutningar. Om du använder en annan port, det tillför lite av säkerhet genom mörker till ditt system. Säkerhet genom otydlighet är aldrig anses som en äkta säkerhetsåtgärd, och jag rasade mot det i andra artiklar. I själva verket är några av de smartare robotar attack sond alla öppna portar och ta reda på vilken service de bär med sig, snarare än att förlita sig på en enkel look-up lista över portar och förutsatt att de ge den vanliga tjänster. Men med hjälp av en icke-standard port kan hjälpa till med att sänka buller och dålig trafik på port 22.

För att konfigurera en icke-standard port, redigera din konfigurationsfil för SSH:

sudo gedit /etc/ssh/sshd_config

Ta bort hash # från början av “Port” – raden och ersätt den “22” med portnumret för ditt val. Spara din konfigurationsfil och starta SSH-demonen:

sudo systemctl starta om sshd

Låt oss se vilken effekt det har haft. Över på vår andra dator, vi kommer att använda ssh kommandot för att ansluta till vår server. Ssh kommandot standardinställningar för att använda port 22:

ssh dave@howtogeek.local

Vår anslutning vägras. Låt oss försöka igen och ange port 470, hjälp -p (port) alternativ:

ssh -p 479 dave@howtogeek.local

Vår koppling är accepterat.

Filter Anslutningar Med TCP Wrappers

TCP Wrappers är lätt att förstå access control list. Det gör du som du vill utesluta och tillåta anslutningar baserade på egenskaperna för anslutningen begäran, såsom IP-adress eller värdnamn. TCP wrappers bör användas i samband med, och inte i stället för, en korrekt konfigurerad brandvägg. I vår specifika situation, vi kan strama upp saker och ting betydligt genom att använda TCP wrappers.

TCP wrappers redan var installerat på Ubuntu-18.04 LTS maskin som används för att undersöka denna artikel. Det måste vara installerad på Manjaro 18.10 och Fedora 30.

För att installera Fedora, använd detta kommando:

sudo yum install tcp_wrappers

Att installera om Manjaro, använd detta kommando:

sudo pacman -Syu tcp-omslag

Det är två filer som är involverade. Man håller den tillåtna listan, och håller den andra förnekas listan. Redigera förneka lista med:

sudo gedit /etc/hosts.förneka

Detta kommer att öppna gedit redaktör med förneka att filen laddats i det.

Du behöver lägga till följande rad:

ALLA : ALLA

Och spara filen. Som blockerar all åtkomst som inte har varit auktoriserad. Nu måste vi tillåta anslutningar du vill acceptera. För att göra det, behöver du redigera tillåt fil:

sudo gedit /etc/hosts.tillåta

Detta kommer att öppna gedit redaktör med tillåt fil som laddats i det.

Vi har lagt till i SSH-demonen namn, SSHD, och IP-adressen till den dator vi kommer att göra det möjligt att upprätta en anslutning. Spara filen, och låt oss se om de begränsningar och tillstånd är i kraft.

För det första, vi ska försöka att ansluta från en dator som inte är i den är värd.tillåt fil:

Anslutningen avslås. Vi kommer nu att försöka ansluta maskinen till IP-adress 192.168.4.23:

Vår koppling är accepterat.

Vårt exempel här är lite brutal—bara en enda dator som kan ansluta. TCP wrappers är ganska mångsidig och mer flexibel än detta. Det stöder värdnamn, jokertecken och subnät-masker för att acceptera anslutningar från serier av IP-adresser. Du uppmuntras att kolla på man-sidan.

Avvisa Anslutningar Med Inga Lösenord

Även om det är en dålig metod, en Linux systemadministratör kan skapa ett konto utan lösenord. Det innebär att fjärrkontrollen anslutningsbegäran från detta konto ha ett lösenord för att kontrollera mot. Dessa anslutningar kommer att accepteras men icke-autentiserade.

Standardinställningarna för SSH acceptera anslutningsbegäranden utan lösenord. Vi kan ändra på det mycket enkelt, och se till att alla anslutningar är autentiserade.

Vi behöver för att redigera din konfigurationsfil för SSH:

sudo gedit /etc/ssh/sshd_config

Bläddra igenom filen tills du ser den linje som läser med “#PermitEmptyPasswords nej.” Ta bort hash # i början av raden och spara filen. Starta SSH-demonen:

sudo systemctl starta om sshd

Använd SSH-Nycklar i Stället för Lösenord

SSH-nycklar för att ge ett säkert sätt att logga in på en SSH-server. Lösenord kan gissa, spruckna, eller brute-tvingade. SSH-nycklar är inte öppna för sådana typer av angrepp.

När du skapar en SSH-nycklar, skapar du ett par av nycklar. En publik nyckel, och den andra är den privata nyckeln. Den offentliga nyckeln är installerat på servrar som du vill ansluta till. Den privata nyckeln, som namnet antyder, är förvaras säkert på din egen dator.

SSH-nycklar kan du göra anslutningar utan ett lösenord som är—counterintuitively—säkrare än anslutningar som använder autentisering av lösenord.

När du gör en förfrågan om anslutning, fjärrdatorn använder sin kopia av din offentliga nyckel för att skapa ett krypterat meddelande som skickas tillbaka till din dator. Eftersom det var krypterad med din publika nyckel, din dator kan unencrypt det med din privata nyckel.

Datorn sedan extrakt lite information från meddelandet, särskilt sessions-ID, krypterar det och skickar det tillbaka till servern. Om den server som kan dekryptera det med en kopia av din publika nyckel, och om informationen i meddelandet matchar vad servern skickat till dig, din anslutning är bekräftad för att komma från dig.

Här, en anslutning sker till servern på 192.168.4.11, av en användare med SSH-nycklar. Observera att de finns inte ange ett lösenord.

ssh dave@192.168.4.11

SSH-nycklar förtjänar en artikel, allt för sig själva. Handily, vi har en för dig. Här är hur man kan skapa och installera en SSH-nycklar.

RELATERAT: Hur att Skapa och Installera en SSH-Nycklar Från Linux Shell

Avaktivera Autentisering Av Lösenord Helt Och Hållet

Naturligtvis, den logiska förlängningen av med hjälp av SSH-nycklar är att om alla fjärranslutna användare tvingas att anta dem, kan du stänga av lösenord för autentisering helt.

Vi behöver för att redigera din konfigurationsfil för SSH:

sudo gedit /etc/ssh/sshd_config

Bläddra igenom filen tills du ser raden som börjar med “#PasswordAuthentication ja.” Ta bort hash # från början på raden ändra till “ja” till “nej”, och spara filen. Starta SSH-demonen:

sudo systemctl starta om sshd

Inaktivera X11 Forwarding

X11 forwarding tillåter en fjärranvändare att köra grafiska program från din server via en SSH-session. I händerna på en hot skådespelare eller angripare, ett GRAFISKT gränssnitt kan göra sina baktala ändamål lättare.

En standard mantra inom it-säkerhet är om du inte har en bonafide anledning att ha den påslagen, stäng av den. Vi kommer att göra det genom att ändra i din konfigurationsfil för SSH:

sudo gedit /etc/ssh/sshd_config

Bläddra igenom filen tills du ser raden som börjar med “#X11Forwarding nej.” Ta bort hash # i början av raden och spara filen. Starta SSH-demonen:

sudo systemctl starta om sshd

Ställa in Timeout-Värdet för en Inaktiv

Om det finns en etablerad SSH-anslutning till din dator, och det har inte varit någon aktivitet på det för en tid, kan det utgöra en säkerhetsrisk. Det finns en chans att användaren har lämnat sitt skrivbord och är upptagen på annat håll. Någon annan som passerar genom deras skrivbord kan sitta ner och börja använda sin dator och via SSH på din dator.

Det är mycket säkrare att upprätta en timeout-gränsen. Den SSH-anslutning knappt kommer att släppas om den inaktiva perioden matcher tid. Än en gång, vi kommer att ändra din konfigurationsfil för SSH:

sudo gedit /etc/ssh/sshd_config

Bläddra igenom filen tills du ser raden som börjar med “#ClientAliveInterval 0” Bort hash # från början av raden, ändra siffran 0 till önskat värde. Vi har använt 300 sekunder, vilket är 5 minuter. Spara filen och starta SSH-demonen:

sudo systemctl starta om sshd

Ange en Gräns För Lösenord Försök

Att definiera en gräns för antalet autentiseringsförsök kan hjälpa till att förhindra att gissa lösenord och brute-force attacker. Efter det angivna antalet begäranden om autentisering, kommer användaren att bli bortkopplad från SSH-server. Som standard finns det ingen gräns. Men det är snabbt åtgärdat.

Återigen, vi behöver redigera din konfigurationsfil för SSH:

sudo gedit /etc/ssh/sshd_config

Bläddra igenom filen tills du ser raden som börjar med “#MaxAuthTries 0”. Ta bort hash # från början av raden, ändra siffran 0 till önskat värde. Vi har använt 3 här. Spara filen när du gjort dina ändringar och starta SSH-demonen:

sudo systemctl starta om sshd

Vi kan testa detta genom att försöka att ansluta och medvetet in ett felaktigt lösenord.

Observera att MaxAuthTries antalet verkade vara en mer än det antal försök användaren var tillåtet. Efter två dåliga försök, vårt test användaren är frånkopplad. Detta var med MaxAuthTries tre.

Inaktivera Root-Inloggning

Det är dålig praxis att logga in som root på din Linux-dator. Ska du logga in som en vanlig användare och använda sudo när du vill utföra åtgärder som kräver root-rättigheter. Ännu mer så bör du inte tillåter root att logga in på din SSH-server. Bara vanliga användare bör vara tillåtet att ansluta. Om de behöver för att utföra en administrativ uppgift, de ska använda sudo också. Om du är tvungen att låta ett root-användaren loggar in, kan du åtminstone tvinga dem att använda SSH-nycklar.

För sista gången, vi kommer att behöva redigera din konfigurationsfil för SSH:

sudo gedit /etc/ssh/sshd_config

Bläddra igenom filen tills du ser raden som börjar med “#PermitRootLogin förbjuda-lösenord” ta Bort hash # från början av raden.

  • Om du vill förhindra root från att logga in på alla, ersätt “förbjuda-lösenord” med “nej”.
  • Om du ska tillåta root för att logga in men att tvinga dem att använda SSH-nycklar, lämna “förbjuda-lösenord” på plats.

Spara ändringarna och starta SSH-demonen:

sudo systemctl starta om sshd

Den Ultimata Steg

Naturligtvis, om du inte behöver SSH som körs på din dator, se till att det är inaktiverat.

sudo systemctl stoppa sshd
sudo systemctl inaktivera sshd

Om du inte öppna fönster, ingen kan klättra i.

LÄS NÄSTA

  • “Vad Är Leetspeak, och Hur Använder Man Det?
  • “Ställ Dig Dessa Frågor Innan du ställer Upp en Smarthome
  • “Din Gamla Router Fortfarande Få Säkerhetsuppdateringar?
  • “Hur man Använder mkfs-Kommandot i Linux
  • “Windows-10 Är att Få Inbyggt Stöd för nätverkskameror