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.