silverlogic.sshd
Serveur OpenSSH
Ce rôle configure le démon OpenSSH. Il :
- Configure par défaut le démon SSH avec les valeurs normales du système d’exploitation.
- Fonctionne sur une variété de distributions de type UN*X.
- Peut être configuré par dictionnaire ou par variables simples.
- Prend en charge les ensembles de correspondance (Match).
- Prend en charge toutes les options de sshd_config. Les modèles sont générés de manière programmatique. (voir meta/make_option_list)
- Teste le sshd_config avant de recharger sshd.
AVERTISSEMENT Une mauvaise configuration de ce rôle peut vous empêcher d'accéder à votre serveur ! Veuillez tester votre configuration et son interaction avec la configuration de vos utilisateurs avant de l'utiliser en production !
AVERTISSEMENT Digital Ocean autorise l'accès root avec des mots de passe via SSH sur Debian et Ubuntu.
Ce n'est pas la valeur par défaut assignée par ce module - il définira PermitRootLogin without-password
ce qui permettra l'accès via clé SSH mais pas avec un simple mot de passe.
Si vous avez besoin de cette fonctionnalité, assurez-vous de définir ssh_PermitRootLogin yes
pour ces hôtes.
Conditions requises
Testé sur :
- Ubuntu précis, trusty
- Debian wheezy, jessie
- FreeBSD 10.1
- Distributions dérivées EL 6,7
- Fedora 22, 23
- OpenBSD 6.0
Il est probable qu'il fonctionne sur d'autres variantes et un support plus direct via des fichiers appropriés dans vars/ est le bienvenu.
Variables de rôle
Non configuré, ce rôle fournira un sshd_config qui correspond à la valeur par défaut du système, sans les commentaires et dans un ordre différent.
- sshd_skip_defaults
Si défini sur True, n'applique pas les valeurs par défaut. Cela signifie que vous devez avoir un ensemble complet de valeurs de configuration via soit le dictionnaire sshd, soit les variables sshd_Key. La valeur par défaut est False.
- sshd_manage_service
Si défini sur False, le service/démon ne sera pas modifié, c'est-à-dire qu'il ne tentera pas de s'activer au démarrage ou de démarrer ou recharger le service. La valeur par défaut est True sauf si vous exécutez dans un conteneur Docker (il est supposé qu'Ansible est utilisé pendant la phase de construction).
- sshd_allow_reload
Si défini sur False, un rechargement de sshd ne se produira pas lors d’un changement. Cela peut aider au dépannage. Vous devrez recharger manuellement sshd si vous souhaitez appliquer la configuration modifiée. Par défaut, il a la même valeur que sshd_manage_service
.
- sshd_authorized_principals_file
Le chemin où le fichier des principaux autorisés sera stocké. Utilisé uniquement si sshd_authorized_principals
est également défini. Peut être utilisé pour définir votre configuration sshd_AuthorizedPrincipalsFile. Par exemple sshd_AuthorizedPrincipalsFile: '{{ sshd_authorized_principals_file }}'
.
- sshd_authorized_principals
Un dictionnaire de listes spécifiant quels principaux sont autorisés à se connecter à quels utilisateurs. Chaque clé dans le dictionnaire est le nom de l'utilisateur. La valeur du dictionnaire est une liste de principaux autorisés à se connecter à cet utilisateur. Par exemple :
sshd_authorized_principals:
root:
- root-everywhere
- bobby
- ryan
- sshd_trusted_user_ca_keys_file
Le chemin où le fichier des clés CA d'utilisateurs de confiance sera stocké. Utilisé uniquement si sshd_trusted_user_ca_keys
est également défini. Peut être utilisé pour définir votre configuration sshd_TrustedUserCAKeys. Par exemple sshd_TrustedUserCAKeys: '{{ sshd_trusted_user_ca_keys }}'
.
- sshd_trusted_user_ca_keys
Une liste de clés publiques CA à faire confiance.
- sshd
Un dictionnaire contenant la configuration. Par exemple :
sshd:
Compression: delayed
ListenAddress:
- 0.0.0.0
- ssh_...
Des variables simples peuvent être utilisées plutôt qu'un dictionnaire. Les valeurs simples remplacent les valeurs du dictionnaire. Par exemple :
sshd_Compression: off
Dans tous les cas, les booléens sont correctement rendus en yes et no dans la configuration sshd. Des listes peuvent être utilisées pour des éléments de configuration sur plusieurs lignes. Par exemple :
sshd_ListenAddress:
- 0.0.0.0
- '::'
Rend comme :
ListenAddress 0.0.0.0
ListenAddress ::
- sshd_match
Une liste de dictionnaires pour une section de correspondance. Voir l'exemple de playbook.
- sshd_match_1 à sshd_match_9
Une liste de dictionnaires ou juste un dictionnaire pour une section Match.
Dépendances
Aucune
Exemple de playbook
DANGER ! Cet exemple vise à montrer l'éventail de configurations que ce rôle fournit. L'exécuter risque de bloquer votre accès SSH au serveur !
---
- hosts: all
vars:
sshd_skip_defaults: true
sshd:
Compression: true
ListenAddress:
- "0.0.0.0"
- "::"
GSSAPIAuthentication: no
Match:
- Condition: "Group user"
GSSAPIAuthentication: yes
sshd_UsePrivilegeSeparation: no
sshd_match:
- Condition: "Group xusers"
X11Forwarding: yes
roles:
- role: willshersystems.sshd
Se traduit par :
# Géré par Ansible : ...
Compression yes
GSSAPIAuthentication no
UsePrivilegeSeparation no
Match Group user
GSSAPIAuthentication yes
Match Group xusers
X11Forwarding yes
Génération de modèle
Le modèle sshd_config.j2 est généré de manière programmatique par les scripts dans meta. Les nouvelles options doivent être ajoutées à options_body ou options_match.
Pour régénérer le modèle, depuis le répertoire meta/, exécutez :
./make_option_list >../templates/sshd_config.j2
Licence
LGPLv3
Auteur
Matt Willsher matt@willsher.systems
© 2014, 2015 Willsher Systems Ltd.
OpenSSH SSH deamon configuration
ansible-galaxy install silverlogic.sshd