hannseman.raspbian

ansible-raspbian

Ansible Rolle Travis (.org)

Diese Rolle richtet eine sichere Grundumgebung für Raspbian mit sinnvollen Voreinstellungen ein.

Sie wird:

  • Angegebene Systempakete installieren.
  • Den Hostnamen konfigurieren.
  • Die Locale einstellen.
  • tmpfs auf schreibintensive Verzeichnisse einbinden, um die Lebensdauer der SD-Karte zu verlängern.
  • Das Passwort des Standardbenutzers ändern.
  • Den Standardeditor festlegen.
  • Eine sichere SSH-Konfiguration einrichten.
  • UFW konfigurieren.
  • /boot/config.txt anpassen.
  • raspi-config ausführen.
  • Postfix so konfigurieren, dass E-Mails über einen SMTP-Relay gesendet werden.
  • Unattended-upgrades aktivieren.
  • Fail2ban installieren.
  • Logwatch so einstellen, dass wöchentliche Berichte gesendet werden.

Sie wird nicht:

  • Systempakete aktualisieren.
  • apt-get update ausführen. Bitte führe dies in einer pre_task aus. Siehe Beispiel Playbook.
  • Sicherheitsupdates installieren, aber unattended-upgrades sollte sich darum kümmern.

Einrichtung

  • Installiere die Python-Abhängigkeiten mit pip install -r requirements.txt.
  • Installiere sshpass mit sudo apt-get install sshpass.
  • Flashe die SD-Karte mit Raspbian Stretch Lite.
  • Füge eine leere Datei namens ssh in die Boot-Partition der geflashtten SD-Karte ein.
  • Optional: Um WLAN zu aktivieren, lege eine Datei namens wpa_supplicant.conf in die Boot-Partition der geflashten SD-Karte mit folgendem Inhalt:
network={
        ssid="dein ssid"
        psk="dein passwort"
}
  • Führe das Playbook aus.

Inventar

sshpass wird benötigt, um den ersten Ansible-Lauf mit dem Standardpasswort raspberry durchzuführen. Die Passwortauthentifizierung über SSH wird dann deaktiviert zugunsten der Authentifizierung mit öffentlichen Schlüsseln, die in ssh_public_keys angegeben sind. Dein Inventar sollte Folgendes enthalten:

[all:vars]
ansible_connection=ssh
ansible_user=pi
ansible_ssh_pass=raspberry

Variablen

# Setzt den Systemhostname
system_hostname: "raspberrypi"
# Das Systempasswort für ansible_ssh_user (sollte als pi konfiguriert werden).
# HINWEIS: Sollte in etwas Sicheres geändert werden.
system_ssh_user_password: "raspberry"
# Das Passwort-Salz, das verwendet werden soll.
# HINWEIS: Sollte in etwas Sicheres und Zufälliges geändert werden.
system_ssh_user_salt: "salt"
# Die System-Locale
system_locale: "en_US.UTF-8"
# Die System-Zeitzone
system_timezone: "Europe/Stockholm"
# Liste von Verzeichnissen für gewünschte tmpfs-Mounts.
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 installiert die aufgeführten Pakete
system_packages: []
# Pfad zum Standardeditor
system_default_editor_path: "/usr/bin/vi"

# Logwatch-Cache-Verzeichnis
logwatch_tmp_dir: /var/cache/logwatch
# E-Mail, die Logwatch-Berichte erhält
logwatch_mailto: "root"
# Detailgrad der Logwatch-Berichte
logwatch_detail: "Low"
# Wie oft Logwatch-Berichte empfangen werden sollen, kann wöchentlich oder täglich eingestellt werden
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
# Erforderliches Feld, setze dies auf deine Gmail-Adresse
postfix_sasl_user:
# Erforderliches Feld, setze dies auf dein Gmail-Passwort
postfix_sasl_password:
postfix_smtp_tls_cafile: /etc/ssl/certs/ca-certificates.crt

# Aktualisiert /boot/config.txt mit `{{ key }}: {{ value }}`
rpi_boot_config: {}
# führe raspi-config -noint do_{{ key }} {{ value }]. Optionen: 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"
# Erforderliches Feld, Liste von ssh öffentlichen Schlüsseln zum Aktualisieren von ~/.authorized_keys.
# Hinweis: Einer dieser Schlüssel muss der sein, den Ansible verwendet.
ssh_public_keys: []
# Zeichenkette, die beim Verbinden mit dem Host über ssh angezeigt wird
ssh_banner:

# UFW-Regeln sollten immer SSH erlauben, um Ansible funktionsfähig zu halten
ufw_rules:
  - { rule: "allow", port: "22", proto: "tcp" }
# Konfiguriert, ob IGMP-Traffic erlaubt sein soll
ufw_allow_igmp: false

# Empfänger der Berichte von unattended-upgrades
unattended_upgrades_email_address: root
# Soll neu gestartet werden, wenn /var/run/reboot-required gefunden wird?
unattended_upgrades_auto_reboot: false

# Interne Variable, die beim Ausführen von Tests verwendet wird - sollte nicht verwendet werden.
ansible_raspbian_testing: false

Beispiel Playbook

- hosts: servers
  become: true
  pre_tasks:
    - name: apt-Cache aktualisieren
      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
Über das Projekt

Setup a secure basic Raspbian environment with sensible defaults.

Installieren
ansible-galaxy install hannseman.raspbian
Lizenz
mit
Downloads
248