silverlogic.sshd

Serveur OpenSSH

État de Construction Ansible Galaxy

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.

Installer
ansible-galaxy install silverlogic.sshd
Licence
lgpl-3.0
Téléchargements
11.1k
Propriétaire