Files
change-password/README.md
T

98 lines
2.6 KiB
Markdown

# Rotation de mot de passe SSH/sudo
Petit projet Ansible pour changer le mot de passe d'un compte Linux existant
sur un ou plusieurs serveurs.
Le playbook demande le nouveau mot de passe au lancement et l'applique sur les
hotes cibles avec `chpasswd` via `sudo`. Le mot de passe n'est pas stocke dans
les fichiers du depot et la tache de changement est masquee avec `no_log: true`.
## Fichiers principaux
- `ansible.cfg` : configuration Ansible du projet.
- `inventories/hosts.yml` : inventaire principal et variables de connexion.
- `playbooks/change_password.yml` : playbook de changement de mot de passe.
## Configuration
Les variables communes sont definies dans `inventories/hosts.yml`, sous
`all.vars` :
```yaml
all:
vars:
ansible_user: admin
password_target_user: admin
```
- `ansible_user` est l'utilisateur SSH utilise pour se connecter aux serveurs.
- `password_target_user` est le compte dont le mot de passe sera change.
Gardez `password_target_user` identique a `ansible_user` lorsque le compte SSH
et le compte sudo sont les memes.
Les options propres a un serveur, par exemple une cle SSH dediee, se placent sur
l'entree de l'hote :
```yaml
test:
hosts:
test-server.example.com:
ansible_ssh_private_key_file: ~/.ssh/id_ed25519
```
## Utilisation
Lancez le playbook avec demande du mot de passe `sudo` :
```bash
ansible-playbook playbooks/change_password.yml --ask-become-pass
```
Le playbook demandera ensuite le nouveau mot de passe du compte cible, avec
confirmation.
## Deploiement progressif
Commencez par un petit groupe de test :
```bash
ansible-playbook playbooks/change_password.yml --ask-become-pass --limit test
```
Puis ciblez le groupe complet lorsque le test est valide :
```bash
ansible-playbook playbooks/change_password.yml --ask-become-pass --limit linux_servers
```
Si certains hotes utilisent un mot de passe SSH au lieu d'une cle SSH, ajoutez
`--ask-pass` :
```bash
ansible-playbook playbooks/change_password.yml --ask-pass --ask-become-pass --limit test
```
## Verification
Verifier que l'inventaire est lisible :
```bash
ansible-inventory --list
```
Verifier la syntaxe du playbook :
```bash
ansible-playbook playbooks/change_password.yml --syntax-check
```
## Regles de securite
- Ne commitez jamais de mot de passe en clair.
- Utilisez `vars_prompt`, `ansible-vault` ou une source externe pour les secrets.
- Conservez `no_log: true` sur les taches qui manipulent un mot de passe ou un
hash de mot de passe.
- Testez toujours sur un groupe restreint avant de cibler tous les serveurs.
- Ne modifiez pas la politique SSH pendant une rotation de mot de passe.