2.2. Configuration des serveurs OpenSSH à l'aide du rôle de système sshd
Vous pouvez utiliser le rôle de système sshd
pour configurer plusieurs serveurs SSH en exécutant un script Ansible.
Vous pouvez utiliser le rôle système sshd
avec d'autres rôles système qui modifient la configuration de SSH et de SSHD, par exemple les rôles système RHEL de gestion des identités. Pour éviter que la configuration ne soit écrasée, assurez-vous que le rôle sshd
utilise des espaces de noms (RHEL 8 et versions antérieures) ou un répertoire de dépôt (RHEL 9).
Conditions préalables
-
Accès et autorisations à un ou plusieurs managed nodes, qui sont des systèmes que vous souhaitez configurer avec le rôle de système
sshd
. Accès et permissions à un control node, qui est un système à partir duquel Red Hat Ansible Core configure d'autres systèmes.
Sur le nœud de contrôle :
-
Les paquets
ansible-core
etrhel-system-roles
sont installés.
-
Les paquets
RHEL 8.0-8.5 donne accès à un dépôt Ansible distinct qui contient Ansible Engine 2.9 pour l'automatisation basée sur Ansible. Ansible Engine contient des utilitaires de ligne de commande tels que ansible
, ansible-playbook
, des connecteurs tels que docker
et podman
, ainsi que de nombreux plugins et modules. Pour plus d'informations sur la manière d'obtenir et d'installer Ansible Engine, consultez l'article de la base de connaissances Comment télécharger et installer Red Hat Ansible Engine.
RHEL 8.6 et 9.0 ont introduit Ansible Core (fourni en tant que paquetage ansible-core
), qui contient les utilitaires de ligne de commande Ansible, les commandes et un petit ensemble de plugins Ansible intégrés. RHEL fournit ce paquetage par l'intermédiaire du dépôt AppStream, et sa prise en charge est limitée. Pour plus d'informations, consultez l'article de la base de connaissances intitulé Scope of support for the Ansible Core package included in the RHEL 9 and RHEL 8.6 and later AppStream repositories (Portée de la prise en charge du package Ansible Core inclus dans les dépôts AppStream RHEL 9 et RHEL 8.6 et versions ultérieures ).
- Un fichier d'inventaire qui répertorie les nœuds gérés.
Procédure
Copiez l'exemple de playbook pour le rôle de système
sshd
:# cp /usr/share/doc/rhel-system-roles/sshd/example-root-login-playbook.yml path/custom-playbook.yml
Ouvrez le playbook copié en utilisant un éditeur de texte, par exemple :
# vim path/custom-playbook.yml --- - hosts: all tasks: - name: Configure sshd to prevent root and password login except from particular subnet include_role: name: rhel-system-roles.sshd vars: sshd: # root login and password login is enabled only from a particular subnet PermitRootLogin: no PasswordAuthentication: no Match: - Condition: "Address 192.0.2.0/24" PermitRootLogin: yes PasswordAuthentication: yes
Le playbook configure le nœud géré en tant que serveur SSH configuré de telle sorte que :
-
et le login de l'utilisateur
root
est désactivé -
et
root
n'est possible qu'à partir du sous-réseau192.0.2.0/24
Vous pouvez modifier les variables en fonction de vos préférences. Pour plus de détails, voir Variables de rôle du système du serveur SSH.
-
et le login de l'utilisateur
Facultatif : Vérifier la syntaxe du playbook.
# ansible-playbook --syntax-check path/custom-playbook.yml
Exécutez le playbook sur votre fichier d'inventaire :
# ansible-playbook -i inventory_file path/custom-playbook.yml ... PLAY RECAP ************************************************** localhost : ok=12 changed=2 unreachable=0 failed=0 skipped=10 rescued=0 ignored=0
Vérification
Connectez-vous au serveur SSH :
$ ssh user1@10.1.1.1
Où ?
-
user1
est un utilisateur du serveur SSH. -
10.1.1.1
est l'adresse IP du serveur SSH.
-
Vérifiez le contenu du fichier
sshd_config
sur le serveur SSH :$ cat /etc/ssh/sshd_config.d/00-ansible_system_role.conf # # Ansible managed # PasswordAuthentication no PermitRootLogin no Match Address 192.0.2.0/24 PasswordAuthentication yes PermitRootLogin yes
Vérifiez que vous pouvez vous connecter au serveur en tant que root depuis le sous-réseau
192.0.2.0/24
:Déterminez votre adresse IP :
$ hostname -I 192.0.2.1
Si l'adresse IP se situe dans la plage
192.0.2.1
-192.0.2.254
, vous pouvez vous connecter au serveur.Se connecter au serveur en tant que
root
:$ ssh root@10.1.1.1
Ressources supplémentaires
-
/usr/share/doc/rhel-system-roles/sshd/README.md
fichier. -
ansible-playbook(1)
page de manuel.