SSH Deamon beveiligen

Standaard wordt elke Linux server uitgerust met SSH en daar is niets mis mee. Via SSH is het namelijk behoorlijk makkelijk om een server op afstand te beheren. Nu zit daar gelijk het “probleem”. Als je SSH door je firewall heen laat gaan is het een kwestie van wachtwoorden raden. Dus de eerste tip die ik je wil geven is : Gebruik voor root een sterk wachtwoord. (minimaal 10 tekens lang en combineer met leestekens en cijfers. Bijvoorbeeld “d1t.is/33nstrk-w@chtWoorD”)

Daarnaast kun je nog meer doen om misbruik van SSH tegen te gaan. Zo kun je in /etc/ssh/sshd_config een extra regel zetten die ervoor zorgt dat niet iedere gebruiker overal vandaan via SSH kan inloggen op je computer. Hiervoor gebruik je de volgende regel:

AllowUsers root@172.16.100.* harald@*

Wat hier gebeurd is het volgende:

De gebruiker “root” mag alleen via SSH inloggen wanneer deze vanaf mijn locale netwerk komt. (in dit geval 172.16.100.X).De gebruiker harald daar integen mag overal vandaan inloggen. (gebruik voor deze gebruiker ook een sterk wachtwoord). Je server is lokaal te beheren door middel van het root account en op de rest van de wereld moet je eerst als harald inloggen om vervolgens met commando’s als “sudo” en “su” te werken om toch als root iets uit te kunnen voeren.

Als extra maatregel kun je gebruik maken van IPTABLES om bruteforce attacks tegen te gaan (hiervoor moet je firewall wel actief zijn, maar als je je server aan het internet hebt hangen heb je dat al gedaan toch) . In mijn omgeving worden SSH sessies die vanaf hetzelfde adres komen en ze doen dat meer dan 4 keer binnen 60 seconden, dan wordt de verbinding afgebroken. Om dit te doen moet je de volgende regels op de console invoeren:

iptables -N SSH_CHECK
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_CHECK
iptables -A SSH_CHECK -m recent --set --name SSH
iptables -A SSH_CHECK -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP

Vergeet niet SSH opnieuw te starten (rcsshd restart of /etc/init.d/sshd restart) en dan ben je klaar.

Over security kun je veel zeggen en ook veel ruzie maken. Om het laatste te voorkomen wil ik alleen een paar punten toevoegen, maar eigenlijk niet over discussiëren. De lezer moet zelf maar uitmaken wat zij/hij er wel of niet mee doet.

Gebruik nooit root om direct in te loggen. Dus ook niet over SSH (zoals boven toegestaan vanuit een bepaald subnet). Log in met een “normale” user (bijv. één die je speciaal voor systeembeheer hebt aangemaakt) en wordt dan root (indien nodig, niet alle beheer heeft meteen root nodig) met bijv.

su -

Bekijk of het gebruik van RSA sleutels in SSH iets is om de zaak voor jouw gebruik beter te beveiligen (zou ik zeker doen bij toegang vanaf het internet).

Als je SSH van buiten je eigen netwerk (dus vanaf het internet via je modem/router) wilt gebruiken, kun je er voor zorgen dat aan de buitenkant niet poort 22 openstaat (waar allerlei idioten proberen binnen te komen), maar een willekeurige hoog genummerde poort. In je router verbind je die dan door met poort 22 van je gewenste computer. Je kunt zo ook ondersheid maken tussen verschillende computers in je netwerk. Bijvoorbeeld: als je vanuit het netwerk SSH naar poort 68206 van je modem/router doet kom je uit op poort 22 van jouw systeema en als je SSH naar poort 304598 doet op poort 22 van systeemb.

Bedankt voor de toevoegingen. Je kunt veiligheid net zo ver doorvoeren als dat voor jou en jouw omgeving noodzakelijk of wenselijk is. Het is inderdaad slim om SSH op een andere poort te zetten, zeker als je direct aan het internet bent aangesloten en root moet je inderdaad alleen gebruiken wanneer dat echt noodzakelijk is.

[QUOTE=hcvv;2403623]Over security kun je veel zeggen en ook veel ruzie maken. Om het laatste te voorkomen wil ik alleen een paar punten toevoegen, maar eigenlijk niet over discussiëren. De lezer moet zelf maar uitmaken wat zij/hij er wel of niet mee doet.