Erlauben Sie nur die Kennwortauthentifizierung gegenüber dem SSH-Server vom internen Netzwerk

22

Ich habe einen OpenSSH 5.9p1-Server unter Ubuntu Precise 12.04, der Verbindungen sowohl aus dem internen Netzwerk als auch aus dem Internet akzeptiert. Ich möchte eine Authentifizierung mit öffentlichem Schlüssel für Verbindungen aus dem Internet fordern, akzeptiere jedoch entweder die Authentifizierung mit öffentlichem Schlüssel oder das Kennwort für Verbindungen aus dem internen Netzwerk. Kann ich OpenSSH so konfigurieren, dass dies implementiert wird?

mgorven
quelle

Antworten:

34

Mit der MatchAnweisung in /etc/ssh/sshd_configkönnen Sie Konfigurationsanweisungen selektiv anwenden. Eines der verfügbaren Übereinstimmungskriterien ist die Quelladresse der Verbindung. Auf diese Weise können Sie implementieren, was Sie möchten. Sie können die Kennwortauthentifizierung standardmäßig deaktivieren und dann für Verbindungen aus internen Netzwerk-IP-Bereichen aktivieren. (Beachten Sie, dass Sie auch deaktivieren möchten, um ChallengeResponseAuthenticationdie Verwendung von Kennwörtern zu verhindern.) In diesem Beispiel wird die Kennwortauthentifizierung für alle privaten IP-Bereiche von RFC1918 ermöglicht. Weitere Informationen finden Sie auf der Manpage sshd_config .

PasswordAuthentication no
ChallengeResponseAuthentication no

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

Beachten Sie, dass der Übereinstimmungsblock am Ende der Datei hinzugefügt werden sollte, da sonst alle darauf folgenden Elemente bis zum nächsten Übereinstimmungsblock abgeglichen werden. Die falsche Positionierung des Match-Blocks kann dazu führen, dass keine Verbindung hergestellt werden kann.

mgorven
quelle
3
Bitte beachten Sie: Wenn Sie dies tun und SSH von einem öffentlich zugänglichen Computer (Jumphost) zu einem Computer mit der obigen Konfiguration (interner Host) weiterleiten, können Sie sich dennoch für Angriffe öffnen, da die Quell-IP des Jumphost eine RFC1918-Adresse ist und Ermöglichen Sie die Kennwortauthentifizierung für Ihren internen Host.
c4urself