it-swarm.com.de

Härten der SSH-Sicherheit auf einem Debian 9-Server

Ich verwende die folgende Version von GNU/Linux Debian:

cat /etc/issue

sagt:

Debian GNU/Linux 9

Verwenden des folgenden Kernels:

uname -r

sagt:

4.9.0-2-AMD64

Und die folgende Version von OpenSSH ausführen:

apt-cache policy openssh-server | grep Installed

sagt:

Installed: 1:7.4p1-7

Meine Absicht ist es, die SSH-Sicherheit eines kleinen Servers zu härten, da ich von jeder IP-Adresse aus Zugriff haben muss, auch von jedem VPN.

Diese Schritte habe ich bisher gemacht:

  1. Deaktivieren des direkten Root-Zugriffs:

    cat /etc/ssh/sshd_config | grep PermitRootLogin
    

    ist eingestellt auf:

    PermitRootLogin no
    
  2. Durchsetzen des SSH-Protokolls Version 2:

    cat /etc/ssh/sshd_config | grep Protocol
    

    ist eingestellt auf:

    Protocol 2
    
  3. Der Port wurde in einen zufälligen geändert, den ich hier nicht schreiben werde. Sagen Sie also 12345:

    cat /etc/ssh/sshd_config | grep Port
    

    ist eingestellt auf:

    Port 12345
    
  4. Ich habe dafür ein Loch in die Firewall geschlagen:

    Sudo iptables -A INPUT -p tcp -m tcp --dport 12345 -m comment --comment "ssh" -j ACCEPT
    
  5. Ich habe einen neuen Schlüssel mit einer Länge von 8 Kilobit generiert (mir ist der CPU-Overhead und andere Nachteile eines so großen Schlüssels bekannt):

    ssh-keygen -t rsa -b 8192
    
  6. Ich habe dann die Größenübereinstimmungen überprüft:

    ll /home/fictional_user/.ssh/id_rsa*
    

    ist wie es sein sollte, sowie die Zugriffsrechte:

    -rw------- 1 fictional_user fictional_group 6.3K Mar 16 11:53 /home/fictional_user/.ssh/id_rsa
    -rw-r--r-- 1 fictional_user fictional_group 1.4K Mar 16 11:53 /home/fictional_user/.ssh/id_rsa.pub
    
  7. Ich habe diesen Schlüssel hinzugefügt und überprüft, dass es keinen anderen gibt:

    eval $(ssh-agent -s)
    ssh-add
    ssh-add -l
    

    ergebnisse in:

    8192 SHA256:gibberish /home/fictional_user/.ssh/id_rsa (RSA)
    8192 SHA256:gibberish [email protected]_computer (RSA)
    
  8. Ich habe den Schlüssel auf zwei Computer importiert, auf denen der Server gewartet wird:

    ssh-copy-id [email protected]_ip -p 12345
    
  9. Danach habe ich die Passwortauthentifizierung vollständig deaktiviert:

    cat /etc/ssh/sshd_config | grep PasswordAuthentication
    

    ist eingestellt auf:

    PasswordAuthentication no
    

Frage : Habe ich etwas vergessen oder ist dies das Maximum, das ich tun kann?

9

Es gibt eine Reihe von Dingen, die Sie tun können :

  • Richten Sie einen privaten Schlüssel ein der einen Algorithmus zum Strecken von Schlüsseln verwendet , um das brutale Erzwingen der Passphrase zu schützen.
  • Konfigurieren Sie AllowUsers in sshd, sodass nur benannte Konten Zugriff erhalten
  • Verwenden Sie fail2ban oder fwknop , um Angriffe von außen weiter zu verhindern (denken Sie daran, dass CVE-2008-0166 Debian-Benutzer nur einen von 32.767 möglichen Schlüsseln generiert haben).
  • Überwachen Sie Ihren Computer aktiv auf Angriffe

Nur ein paar Gedanken:

  • sshd unterstützt tcpwrappers. Dies bietet zusätzlichen Schutz, wenn Ihre Firewall nicht verfügbar ist.
  • unterstützt Ihr Dateisystem Attribute für diese öffentlichen Schlüssel? Machen Sie sie lieber so schreibgeschützt wie möglich.
  • ziehen Sie die ssh-Schlüsselzuweisung in Betracht, um die Zeit zu begrenzen, in der Schlüssel verwendet werden können.
1
bbaassssiiee