web-dev-qa-db-fra.com

Renforcer la sécurité SSH sur un serveur Debian 9

J'utilise la version suivante de GNU/Linux Debian:

cat /etc/issue

dit:

Debian GNU/Linux 9

Utilisation du noyau suivant:

uname -r

dit:

4.9.0-2-AMD64

Et en exécutant la version suivante d'OpenSSH:

apt-cache policy openssh-server | grep Installed

dit:

Installed: 1:7.4p1-7

Mon intention est de durcir la sécurité SSH d'un petit serveur, car j'ai besoin d'avoir accès à partir de n'importe quelle IP, même de n'importe quel VPN.

Ces étapes, j'ai fait jusqu'à présent:

  1. Désactiver l'accès root direct:

    cat /etc/ssh/sshd_config | grep PermitRootLogin
    

    est réglé sur:

    PermitRootLogin no
    
  2. Application de la version 2 du protocole SSH:

    cat /etc/ssh/sshd_config | grep Protocol
    

    est réglé sur:

    Protocol 2
    
  3. Port changé en un aléatoire, que je n'écrirai pas ici, alors dites 12345:

    cat /etc/ssh/sshd_config | grep Port
    

    est réglé sur:

    Port 12345
    
  4. J'ai percé un trou dans le pare-feu pour cela:

    Sudo iptables -A INPUT -p tcp -m tcp --dport 12345 -m comment --comment "ssh" -j ACCEPT
    
  5. J'ai généré une nouvelle clé d'une longueur de 8 kilobits (je suis conscient de la surcharge du processeur et des autres inconvénients d'une telle grande clé):

    ssh-keygen -t rsa -b 8192
    
  6. J'ai ensuite vérifié les correspondances de taille:

    ll /home/fictional_user/.ssh/id_rsa*
    

    est comme il se doit, ainsi que les droits d'accès:

    -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. J'ai ajouté cette clé et vérifié qu'il n'y en a pas d'autre:

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

    résulte en:

    8192 SHA256:gibberish /home/fictional_user/.ssh/id_rsa (RSA)
    8192 SHA256:gibberish fictional_user@fictional_computer (RSA)
    
  8. J'ai importé la clé sur deux machines, qui maintiendront le serveur:

    ssh-copy-id fictional_user@public_ip -p 12345
    
  9. Ensuite, j'ai complètement désactivé l'authentification par mot de passe:

    cat /etc/ssh/sshd_config | grep PasswordAuthentication
    

    est réglé sur:

    PasswordAuthentication no
    

Question: Ai-je oublié quelque chose ou c'est le maximum que je peux faire?

9
LinuxSecurityFreak

Il y a un certain nombre de choses que vous pouvez faire:

  • Configurer une clé privée qui utilise un algorithme d'étirement des clés pour protéger le forçage brut de la phrase secrète.
  • Configurez AllowUsers dans sshd pour que seuls les comptes nommés puissent y accéder
  • Utilisez fail2ban ou fwknop pour empêcher davantage les attaques extérieures (rappelez-vous que CVE-2008-0166 a obligé les utilisateurs Debian à générer une seule des 32 767 clés possibles)
  • Surveillez activement votre machine pour détecter les attaques

Quelques réflexions:

  • sshd prend en charge tcpwrappers, ce qui ajoute une protection lorsque votre pare-feu est en panne.
  • votre système de fichiers prend-il en charge les attributs de ces clés publiques? Rendez-les plutôt en lecture seule possible.
  • considérez ssh-keysigning pour limiter la durée d'utilisation des clés.
1
bbaassssiiee