Autoriser uniquement l'authentification par mot de passe sur le serveur SSH à partir du réseau interne

22

J'ai un serveur OpenSSH 5.9p1 fonctionnant sur Ubuntu Precise 12.04 qui accepte les connexions du réseau interne et d'Internet. Je voudrais exiger une authentification par clé publique pour les connexions à partir d'Internet, mais accepter l'authentification par clé publique ou par mot de passe pour les connexions à partir du réseau interne. Puis-je configurer OpenSSH pour implémenter cela?

mgorven
la source

Réponses:

34

La Matchdirective in /etc/ssh/sshd_configvous permet d'appliquer sélectivement des directives de configuration. L'adresse source de la connexion est l'un des critères de correspondance disponibles et peut donc être utilisé pour implémenter ce que vous voulez. Vous pouvez désactiver l'authentification par mot de passe par défaut, puis l'activer pour les connexions à partir des plages IP du réseau interne. (Notez que vous souhaitez également désactiver ChallengeResponseAuthenticationafin d'empêcher l'utilisation de mots de passe.) Cet exemple permet l'authentification par mot de passe de toutes les plages IP privées RFC1918. Voir la page de manuel sshd_config pour plus de détails.

PasswordAuthentication no
ChallengeResponseAuthentication no

Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
    PasswordAuthentication yes

Notez que le bloc Match doit être ajouté à la fin du fichier, sinon tout ce qui le suit sera mis en correspondance jusqu'au prochain bloc Match. Le mauvais positionnement du bloc Match peut entraîner l'impossibilité de se connecter.

mgorven
la source
3
Remarque: si vous faites cela et transférez SSH d'une machine accessible au public (jumphost) vers une machine avec la configuration ci-dessus (hôte interne), vous pouvez toujours vous ouvrir pour une attaque car l'IP source du jumphost serait une adresse RFC1918 et permettre l'authentification par mot de passe à votre hôte interne.
c4urself