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
sshen la partición de arranque de la tarjeta SD grabada. - Opcional: Para habilitar Wi-Fi, coloca un archivo llamado
wpa_supplicant.confen 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.raspbianLicencia
mit
Descargas
264
Propietario
