vérifier la configuration sshd

19

Comment puis-je vérifier la configuration de sshd?

Par exemple, je veux m'assurer que ces paramètres sont définis et appliqués:

AllowUsers user1 user2 
PasswordAuthentication no
PermitRootLogin no

Est-ce la seule façon de vérifier manuellement le contenu du fichier sshd_config, ou puis-je sonder sshdpour m'en assurer?

Juan Pablo
la source
2
Qu'entendez-vous par vérifier? Demandez-vous comment être sûr qu'une modification de configuration que vous avez effectuée est valide? Demandez-vous s'il existe un outil comme lint qui vérifiera une configuration valide?
Zoredache
2
Je ne pense pas que la question ne soit pas claire: il n'y a tout simplement aucun moyen de vérifier la valeur d'une option de configuration. Si vous voyez #UseLogin nodans votre fichier ssd_config, cela signifie que UseLogin est oui ou UseLogin est non? Vous devez donc vous référer au manuel pour trouver la valeur par défaut, qui peut avoir été modifiée lors de la compilation. Loin d'une question inutile ...
Xorax

Réponses:

27

Il existe un mode de test étendu, appelé avec l'option de ligne de commande -T, qui fait cela. Par exemple:

% sudo sshd -T | egrep -i 'allowusers|passwordauth|permitroot'
permitrootlogin yes
passwordauthentication yes

L'option existe dans Portable OpenSSH depuis 2008, cf. validez e7140f2 . Celui-ci a été publié avec 5.1p1, réalisé en juillet 2008, cf. les notes de version pour 5.1 , donc il existe dans à peu près toutes les installations de serveurs OpenSSH prises en charge aujourd'hui.

Josip Rodin
la source
3
Notez cependant que cela affichera les paramètres par défaut + les paramètres du /etc/ssh/sshd_configfichier. Les paramètres du fichier ne sont peut-être pas encore actifs, jusqu'à ce qu'ils les sshdaient rechargés avec quelque chose comme /etc/init.d/ssh reloadou l'équivalent sur votre système.
mivk
2
@mivk bon point, mais c'est à peu près la même chose pour le cours, car il est typique que nous utilisons ce type de commandes exactement après avoir apporté des modifications, mais avant de les appliquer, parce que nous voulons vérifier ce qui va se passer. Par exemple, apache2ctl -Sse comporte de la même manière.
Josip Rodin
4

Bien que cela ne sera pas vider toutes vos définitions de serveur, vous pouvez essayer de vous connecter au serveur avec un drapeau de débogage bavard: ssh -v user@server. Cela vous donnera beaucoup d'informations qui refléteront les options activées dans la configuration sshd.

Par exemple, jetez un œil à la sortie de cette connexion avec le commutateur -v (signatures de clés, domaine et adresses IP volontairement déguisés):

OpenSSH_6.0p1, OpenSSL 0.9.8w 23 Apr 2012
debug1: Reading configuration data /home/claudio/.ssh/config
debug1: /home/claudio/.ssh/config line 13: Applying options for serv01
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to somedomain.com [185.113.29.221] port 22.
debug1: Connection established.
debug1: identity file /home/claudio/.ssh/id_dsa type 2
debug1: identity file /home/claudio/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9
debug1: match: OpenSSH_5.9 pat OpenSSH_5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: ECDSA 3a:0d:b8:18:ca:67:4c:54:0f:c8:b2:1e:48:53:69:28
debug1: Host '[somedomain.com]:22' is known and matches the ECDSA host key.
debug1: Found key in /home/claudio/.ssh/known_hosts:7
Warning: Permanently added the ECDSA host key for IP address '[185.113.29.221]:22' to the list of known hosts.
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /home/claudio/.ssh/id_dsa
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: Authentication succeeded (publickey).
Authenticated to somedomain.com ([185.113.29.221]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.

De là, vous pouvez voir les méthodes d'authentification autorisées: publickey, mot de passe, clavier interactif. Vous pouvez également voir que l'itinérance n'est pas autorisée par ce serveur et que l'utilisateur claudio peut se connecter à l'aide de sa clé publique.

Vous pouvez augmenter le niveau de sortie d'informations en spécifiant plus de lettres «v», mais vous obtiendrez alors bien plus d'informations de bas niveau que vous ne le souhaiteriez probablement.

Claudio
la source
3

La configuration de sshd se trouve généralement dans le fichier suivant: /etc/ssh/sshd_config.

Pour interroger la configuration d'exécution, vous pouvez utiliser le mode de test étendu sshd -Tqui vous permet également de tester la correspondance client des paramètres.

gparent
la source
1
Je ne pense pas que cela réponde à la question qu'il pose, mais sa question n'est pas tout à fait claire.
Zoredache
1
On dirait qu'il demande comment vérifier la configuration. Pour autant que je sache, il n'y a aucun moyen d'interroger la configuration de sshd au moment de l'exécution. Ainsi, la configuration ne peut être trouvée que dans le fichier que j'ai mentionné.
gparent
Comme vous l'avez dit, la question n'a aucun sens, alors j'ai pensé que l'OP ne savait pas où se trouvait le fichier ou son nom exact.
gparent
Si vous allez me voter pour aucune raison valable après 4 ans, utilisez votre bon sens et consultez l'historique des questions, puis proposez une modification.
gparent
@gparent la question d'origine était quelque peu vague, et avait une faute de frappe dans le chemin du fichier de configuration, vous devriez donc avoir utilisé la fonction d'édition pour corriger cette chaîne dans la question; et de toute façon, la réponse à la question de vérification est maintenant montrée ci-dessus
Josip Rodin
2

il n'y a aucun moyen connu d'interroger la configuration d'une instance sshd en cours d'exécution, je pense, si vous faites référence au serveur openssh. selon ce que vous voulez faire, vous pouvez utiliser l'indicateur -t pour tester un fichier de configuration pour vous assurer qu'il est valide avant de redémarrer le serveur, afin de ne pas vous faire virer, en particulier. si vous n'avez pas d'accès hors bande au serveur.

johnshen64
la source
2

Le problème avec la recherche du fichier / etc / ssh / sshd_config comme suggéré par d'autres réponses est qu'il ne contient pas nécessairement toute la configuration. Ce fichier contient les valeurs de toutes les variables de configuration que vous souhaitez définir pour outrepasser les valeurs par défaut et, tel qu'il est fourni, contient en tant que commentaires les valeurs par défaut intégrées à sshd.

Si un fichier de configuration personnalisé est installé à la place de la version fournie, vous perdez de vue les valeurs par défaut qui sont compilées dans sshd, et s'il s'agit d'une version personnalisée, les valeurs par défaut peuvent ne pas correspondre aux commentaires dans sshd_config qui sont visibles.

De plus, il est parfaitement possible d'exécuter sshd avec un autre fichier de configuration avec l'option -f, de sorte que celui stocké dans / etc / ssh / sshd_config peut ne pas refléter les paramètres actuels.

Cela rend la question tout à fait valable et, à ma connaissance, impossible à répondre avec certitude.

Peter Gathercole
la source
Tout cela est vrai, mais cela ne s'applique pas aux 99% des serveurs qui exécuteront sshd installé à partir d'un package dont la configuration par défaut est compilée.
Andrew Schulman
Votre réponse est utile, mais il est en effet possible de répondre avec certitude à la question, cela fait un bon moment maintenant, veuillez voir ma réponse ci-dessous.
Josip Rodin