hannseman.raspbian
ansible-raspbian
Ce rôle va configurer un environnement Raspbian de base sécurisé avec des paramètres par défaut sensés.
Il fera :
- Installer les paquets système spécifiés.
- Configurer le nom d'hôte.
- Configurer la langue.
- Monter tmpfs sur les répertoires à écriture intensive pour augmenter la durée de vie de la carte SD.
- Changer le mot de passe de l'utilisateur par défaut.
- Définir l'éditeur par défaut.
- Configurer SSH de manière sécurisée.
- Configurer UFW.
- Configurer /boot/config.txt.
- Exécuter raspi-config.
- Configurer Postfix pour envoyer des emails via un relais SMTP.
- Activer les mises à jour automatiques.
- Installer Fail2ban.
- Configurer Logwatch pour envoyer des rapports hebdomadaires.
Il ne fera pas :
- Mettre à jour les paquets système.
- Exécuter
apt-get update
. Veuillez le faire dans une pré-tâche. Voir Exemple de Playbook. - Installer des correctifs de sécurité, mais les mises à jour automatiques devraient s'en charger.
Installation
- Installez les dépendances Python en exécutant
pip install -r requirements.txt
. - Installez sshpass en exécutant
sudo apt-get install sshpass
. - Flashez la carte SD avec Raspbian Stretch Lite.
- Ajoutez un fichier vide nommé
ssh
dans la partition de démarrage de la carte SD flashée. - Optionnel : Pour activer le Wi-Fi, placez un fichier nommé
wpa_supplicant.conf
dans la partition de démarrage de la carte SD flashée avec le contenu suivant :
réseau={
ssid="votre ssid"
psk="votre mot de passe"
}
- Exécutez le playbook.
Inventaire
sshpass est nécessaire pour effectuer le premier lancement d'Ansible avec le mot de passe par défaut raspberry
. L'authentification par mot de passe via SSH sera alors désactivée au profit de l'authentification par clé publique avec les clés spécifiées dans ssh_public_keys
.
Votre inventaire doit contenir les éléments suivants :
[all:vars]
ansible_connection=ssh
ansible_user=pi
ansible_ssh_pass=raspberry
Variables
# Définit le nom d'hôte du système
system_hostname: "raspberrypi"
# Le mot de passe du système pour ansible_ssh_user (devrait être configuré comme pi).
# REMARQUE : Doit être changé pour quelque chose de sécurisé.
system_ssh_user_password: "raspberry"
# Le sel de mot de passe à utiliser.
# REMARQUE : Doit être changé pour quelque chose de sécurisé et aléatoire.
system_ssh_user_salt: "salt"
# La langue du système
system_locale: "en_US.UTF-8"
# Le fuseau horaire du système
system_timezone: "Europe/Stockholm"
# Liste des montages tmpfs souhaités.
system_tmpfs_mounts:
- { src: "/run", size: "10%", options: "nodev,noexec,nosuid" }
- { src: "/tmp", size: "10%", options: "nodev,nosuid" }
- { src: "/var/log", size: "10%", options: "nodev,noexec,nosuid" }
# apt-get installe les paquets listés
system_packages: []
# Chemin vers l'éditeur par défaut
system_default_editor_path: "/usr/bin/vi"
# Répertoire cache de Logwatch
logwatch_tmp_dir: /var/cache/logwatch
# Email qui reçoit les rapports Logwatch
logwatch_mailto: "root"
# Niveau de détail du rapport Logwatch
logwatch_detail: "Faible"
# À quelle fréquence recevoir le rapport Logwatch, peut être défini sur hebdomadaire ou quotidien
logwatch_interval: "hebdomadaire"
postfix_hostname: "{{ ansible_hostname }}"
postfix_mailname: "{{ ansible_hostname }}"
postfix_mydestination:
- "{{ postfix_hostname }}"
- localdomain
- localhost
- localhost.localdomain
postfix_relayhost: smtp.gmail.com
postfix_relayhost_port: 587
# Champ requis, définissez ceci avec votre adresse Gmail
postfix_sasl_user:
# Champ requis, définissez ceci avec votre mot de passe Gmail
postfix_sasl_password:
postfix_smtp_tls_cafile: /etc/ssl/certs/ca-certificates.crt
# Met à jour /boot/config.txt avec `{{ key }}: {{ value }}`
rpi_boot_config: {}
# exécute raspi-config -noint do_{{ key }} {{ value }]. Options : https://github.com/raspberrypi-ui/rc_gui/blob/master/src/rc_gui.c#L23-L70
rpi_cmdline_config: {}
ssh_sshd_config: "/etc/ssh/sshd_config"
# Champ requis, liste des clés publiques ssh à mettre à jour dans ~/.authorized_keys.
# Remarque : L'une de ces clés doit être celle que utilise Ansible.
ssh_public_keys: []
# Chaîne à présenter lors de la connexion à l'hôte via ssh
ssh_banner:
# Les règles UFW doivent toujours autoriser SSH pour que Ansible fonctionne
ufw_rules:
- { rule: "allow", port: "22", proto: "tcp" }
# Configure si le trafic igmp doit être autorisé
ufw_allow_igmp: false
# Destinataire du rapport des mises à jour automatiques
unattended_upgrades_email_address: root
# Devons-nous redémarrer lorsque /var/run/reboot-required est trouvé ?
unattended_upgrades_auto_reboot: false
# Variable interne utilisée lors de l'exécution des tests - ne doit pas être utilisée.
ansible_raspbian_testing: false
Exemple de Playbook
- hosts: servers
become: true
pre_tasks:
- name: mise à jour du cache apt
apt:
cache_valid_time: 600
roles:
- role: hannseman.raspbian
vars:
system_packages:
- apt-transport-https
- vim
system_default_editor_path: "/usr/bin/vim.basic"
system_ssh_user_password: hunter2
system_ssh_user_salt: pepper
postfix_sasl_user: [email protected]
postfix_sasl_password: hunter2
ssh_public_keys:
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJXTGInmtpoG9rYmT/3DpL+0o/sH2shys+NwJLo8NnCj
À propos du projet
Setup a secure basic Raspbian environment with sensible defaults.
Installer
ansible-galaxy install hannseman.raspbian
Licence
mit
Téléchargements
248
Propriétaire