hannseman.raspbian
ansible-raspbian
Este rol configurará un entorno básico de Raspbian seguro con configuraciones sensatas.
Hará:
- Instalar paquetes del sistema específicos.
- Configurar el nombre del host.
- Configurar la región e idioma.
- Montar tmpfs en directorios que escriben mucho para aumentar la duración de la tarjeta SD.
- Cambiar la contraseña del usuario predeterminado.
- Establecer el editor predeterminado.
- Configurar SSH de forma segura.
- Configurar UFW.
- Configurar /boot/config.txt.
- Ejecutar raspi-config.
- Configurar Postfix para enviar correos electrónicos a través de un servidor SMTP.
- Habilitar actualizaciones automáticas.
- Instalar Fail2ban.
- Configurar Logwatch para enviar informes semanales.
No hará:
- Actualizar paquetes del sistema.
- Ejecutar
apt-get update
. Por favor, haz esto en una tarea previa. Ver Ejemplo de Playbook. - Instalar parches de seguridad, pero las actualizaciones automáticas deberían encargarse de eso.
Configuración
- Instala los requisitos de Python ejecutando
pip install -r requirements.txt
. - Instala sshpass ejecutando
sudo apt-get install sshpass
. - Graba la tarjeta SD con Raspbian Stretch Lite.
- Agrega un archivo vacío llamado
ssh
en la partición de arranque de la tarjeta SD grabada. - Opcional: Para habilitar Wi-Fi, coloca un archivo llamado
wpa_supplicant.conf
en la partición de arranque de la tarjeta SD grabada con el siguiente contenido:
network={
ssid="tu ssid"
psk="tu contraseña"
}
- Ejecuta el playbook.
Inventario
Se requiere sshpass para realizar la primera ejecución de Ansible
con la contraseña predeterminada raspberry
. La autenticación por contraseña sobre SSH se desactivará en
favor de la autenticación por clave pública con las claves especificadas en ssh_public_keys
.
Tu inventario debe contener lo siguiente:
[all:vars]
ansible_connection=ssh
ansible_user=pi
ansible_ssh_pass=raspberry
Variables
# Establece el nombre del sistema
system_hostname: "raspberrypi"
# La contraseña del sistema para ansible_ssh_user (debe configurarse como pi).
# NOTA: Debe ser cambiada a algo seguro.
system_ssh_user_password: "raspberry"
# La sal para la contraseña a utilizar.
# NOTA: Debe ser cambiada a algo seguro y aleatorio.
system_ssh_user_salt: "salt"
# La localidad del sistema
system_locale: "en_US.UTF-8"
# La zona horaria del sistema
system_timezone: "Europe/Stockholm"
# Lista de diccionarios de montajes tmpfs deseados.
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" }
# installa paquetes listados por apt-get
system_packages: []
# Ruta al editor predeterminado
system_default_editor_path: "/usr/bin/vi"
# Directorio de caché de Logwatch
logwatch_tmp_dir: /var/cache/logwatch
# Correo que recibe los informes de Logwatch
logwatch_mailto: "root"
# Nivel de detalle del informe de Logwatch
logwatch_detail: "Low"
# Con qué frecuencia se recibe el informe de Logwatch, puede ser semanal o diario
logwatch_interval: "weekly"
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
# Campo requerido, establece esto con tu dirección de Gmail
postfix_sasl_user:
# Campo requerido, establece esto con tu contraseña de Gmail
postfix_sasl_password:
postfix_smtp_tls_cafile: /etc/ssl/certs/ca-certificates.crt
# Actualiza /boot/config.txt con `{{ key }}: {{ value }}`
rpi_boot_config: {}
# ejecuta raspi-config -noint do_{{ key }} {{ value }]. Opciones: 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"
# Campo requerido, lista de claves públicas SSH para actualizar ~/.authorized_keys.
# Nota: Una de estas claves necesita ser la que Ansible está usando.
ssh_public_keys: []
# Cadena para presentar al conectarse al host por ssh
ssh_banner:
# Las reglas de UFW siempre deben permitir SSH para que Ansible funcione
ufw_rules:
- { rule: "allow", port: "22", proto: "tcp" }
# Configura si se debe permitir tráfico igmp
ufw_allow_igmp: false
# Destinatario del informe de actualizaciones automáticas
unattended_upgrades_email_address: root
# ¿Deberíamos reiniciar cuando se encuentra /var/run/reboot-required?
unattended_upgrades_auto_reboot: false
# Variable interna utilizada al ejecutar pruebas - no se debe usar.
ansible_raspbian_testing: false
Ejemplo de Playbook
- hosts: servers
become: true
pre_tasks:
- name: actualizar caché de 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
Acerca del proyecto
Setup a secure basic Raspbian environment with sensible defaults.
Instalar
ansible-galaxy install hannseman.raspbian
Licencia
mit
Descargas
248
Propietario