Säkra upp Linux SSH

Jag har alltid en Linux SSH-server igång som jag kan surfa krypterat via över SSH var jag än befinner mig. Problemet med att ha den on-line alltid är alla de attacker den konstant utsätts för. Jag har funderat på att ändra så att jag endast kan logga in med hjälp av en RSA-nyckel men samtidigt skulle det innebära rätt stora begränsningar i min frihet att logga in var och när som helst.

Nyligen var där en diskussion på slashdot.org om säkerhet för maskiner som står igång på detta vis. Från denna diskussion tog jag med mig två nya sätt att säkra upp SSH-servern.

Det första var programmet DenyHosts. Tidigare har jag bara använt Fail2Ban. Fail2Ban registrerar misslyckade inloggningsförsök och låser ute de datorer som misslyckas ett förutbestämt antal gånger. Skillnaden mellan Fail2ban och DenyHosts är att den senare gör ungefär samma sak men har som tillägg att den utbyter denna information med andra datorer. Om min dator registrerar en misslyckad inloggning så rapporterar den detta till en central server. När ett visst antal försök från samma IP-nummer upptäcks så kommuniceras denna information ut till alla datorer som kör DenyHosts. Detta innebär att en zombie-dator som kör brute force attacker på flera maskiner upptäcks och blockeras. Det hela bygger givetvis på hur mycket man litar på att DenyHosts servrar.

Det andra sättet att stoppa intrångsförsök var en så kallad honeypot. Då man ibland kan vara klumpig och själv skriva in fel lösenord så kanske man är rädd att stänga ute sig själv med DenyHosts eller Fail2Ban. Ett förslag då var att köra en tjänst på servern vars enda syfte var att fånga inloggningsförsök. Om servern exempelvis inte kör en FTP-server så kan en sådan tjänst installeras. Istället för att agera som en fil-server blockerar den automatiskt alla IP-nummer som försöker ansluta till den. Eftersom ingen ska använda tjänsten kan man anta att alla som försöker logga in på den gör intrångsförsök. Givetvis kan olika datorer ge sig på FTP och SSH men en mindre zombie-datorer att oroa sig för är väl alltid bra. En alternativ metod är att ha en dator igång med SSH som inte används, om denna dator kör DenyHosts kan den dela med sig av information om inloggingsförsök till andra riktiga SSH-servrar i nätverket.

Leave a Reply