Ein ssh Server erlaubt den Zugriff auf einen Server vom Internet aus. D.h. ein jeder kann, in der sshd Standardfallkonfiguration, sofern er Userid und Passwort kennt oder errät auf den Server zugreifen. Wenn er dann noch root Rechte erlangt ist der Server schnell unter Kontrolle des Angreifers und wird dann möglichst verdeckt zu diversen Dingen missbraucht (ftp-server, DOS Client, Mail SPAM Schleuder, ...) und der Eigentümer des Servers haftet rechtlich fuer alle Aktionen, die von dem Server ausgehen. Das kann unangenehm bis teuer werden ... Die folgende Seite bechreibt,wie man seie sshd Server Config aendernmuss, um den Server vor Angriffen zu sichern.
 

Deshalb muss sich jeder, der einen Server ins Netz stellt genau überlegen wie er den Zugriff auf den Server sichern will.


Folgende Dinge sind ein MUSS:
  1. root Zugriff per ssh verbieten
  2. Wenn moeglich nur Zugriff mit keys erlauben. Ansonsten sichere Passwoerter benutzen
  3. Zugriffsmoeglichkeiten soweit wie moeglich einschraenken
  4. ssh attacks abwehren
Die sshd_config Parameter sollten folgendermassen sein:
  1. PermitRootLogin no
  2. Protocol 2
  3. AllowGroups users
  4. AllowUsers xxx yyy zzz, xxx, yyy und zzz sind user die aufs System per ssh dürfen
  5. ClientAliveInterval 15
  6. LoginGraceTime 10
  7. PubkeyAuthentication yes
  8. PasswordAuthentication no
  9. MaxAuthTries 3
  10. MaxStartups 1
  11. PrintLastLog yes
  12. KeepAlive no
Hier ist meine sshd_config als Beispiel.
 
Folgende Massnahmen koennen ergriffen werden um ssh Attacks zu unterbinden:
  1. http://denyhosts.sourceforge.net/ installieren. Damit werden alle Ips per iptables geblocked, die ssh attacks versuchen
  2. Port xx wobei xx ein unbenutzer Port ist in sshd_config. Damit laufen alle ScriptKiddies ins Leere.
  3. Eintrag der folgenden Zeilen in die SuSEfirewall2-custom. Damit werden ssh Attacks extrem verzoegert:
    iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
    iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 1200 --hitcount 2 --rttl --name SSH -j LOG --log-prefix SSH_brute_force
    iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 1200 --hitcount 2 --rttl --name SSH -j DROP

  4. Ein VPN einrichten. Dann ist der ssh Port nicht mehr von aussen zu sehen.
  5. Hosts.allow/.deny sollte benutzt werden können, da tcp_wrappers support normalerweise standmäßig eingebaut ist bei sshd.
Wie kann man prüfen ob tcp_wrappers verfügbar ist?
 
[framp@obelix ~]$ ldd /usr/sbin/sshd | grep 'libwrap.so'
 libwrap.so.0 => /usr/lib/libwrap.so.0 (0x00a7700)
 
 
Wenn etwas mit 'libwrap.so' zurückgegeben wird, funktioniert tcp_wrappers mit  sshd.
 
 

 

Kommentar schreiben
Hinweis:
Die eMail ist versteckt und nicht öffentlich sichtbar. Sie wird benutzt um über neue Kommentare zu informieren.