hannseman.raspbian

ansible-raspbian

Ansible Role Travis (.org)

Ta rola ustawia bezpieczne podstawowe środowisko Raspbian z rozsądnymi domyślnymi ustawieniami.

Co zrobi:

  • Zainstaluje określone pakiety systemowe.
  • Skonfiguruje nazwę hosta.
  • Skonfiguruje lokalizację.
  • Zamontuje tmpfs w katalogach intensywnie zapisywanych, aby wydłużyć żywotność karty SD.
  • Zmieni hasło na domyślnym koncie użytkownika.
  • Ustawi domyślny edytor.
  • Skonfiguruje bezpieczne połączenie SSH.
  • Skonfiguruje UFW.
  • Skonfiguruje /boot/config.txt.
  • Uruchomi raspi-config.
  • Skonfiguruje Postfix do wysyłania e-maili przez relay SMTP.
  • Włączy automatyczne aktualizacje.
  • Zainstaluje Fail2ban.
  • Skonfiguruje Logwatch do wysyłania tygodniowych raportów.

Czego nie zrobi:

  • Nie zaktualizuje pakietów systemowych.
  • Nie uruchomi apt-get update. Proszę zrobić to w zadaniu wstępnym. Zobacz Przykład Playbooka.
  • Nie zainstaluje poprawek zabezpieczeń, ale automatyczne aktualizacje powinny się tym zająć.

Ustawienia

  • Zainstaluj wymagania Pythona, uruchamiając pip install -r requirements.txt.
  • Zainstaluj sshpass, uruchamiając sudo apt-get install sshpass.
  • Nagraj obraz na karcie SD z Raspbian Stretch Lite.
  • Dodaj pusty plik o nazwie ssh do partycji rozruchowej karty SD.
  • Opcjonalnie: Aby włączyć Wi-Fi, umieść plik o nazwie wpa_supplicant.conf w partycji rozruchowej karty SD z następującą zawartością:
network={
        ssid="twoja nazwa sieci"
        psk="twoje hasło"
}
  • Uruchom playbook.

Inwentarz

sshpass jest wymagany do pierwszego uruchomienia Ansible z domyślnym hasłem raspberry. Uwierzytelnianie hasłem przez SSH zostanie następnie wyłączone na rzecz uwierzytelniania kluczem publicznym z kluczami określonymi w ssh_public_keys. Twój inwentarz powinien zawierać następujące informacje:

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

Zmienne

# Ustawia nazwę hosta systemu
system_hostname: "raspberrypi"
# Hasło systemowe dla ansible_ssh_user (powinno być skonfigurowane jako pi).
# UWAGA: Należy je zmienić na coś bezpiecznego.
system_ssh_user_password: "raspberry"
# Sól hasła do użycia.
# UWAGA: Należy ją zmienić na coś bezpiecznego i losowego.
system_ssh_user_salt: "salt"
# Lokalizacja systemu
system_locale: "en_US.UTF-8"
# Strefa czasowa systemu
system_timezone: "Europe/Stockholm"
# Lista katalogów do zamontowania jako tmpfs.
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" }
# Instalacje apt-get z wymienionymi pakietami
system_packages: []
# Ścieżka do domyślnego edytora
system_default_editor_path: "/usr/bin/vi"

# Katalog pamięci podręcznej Logwatch
logwatch_tmp_dir: /var/cache/logwatch
# E-mail do otrzymywania raportów Logwatch
logwatch_mailto: "root"
# Poziom szczegółowości raportu Logwatch
logwatch_detail: "Low"
# Jak często otrzymywać raport Logwatch, może być ustawione na tygodniowo lub codziennie
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
# Wymagane pole, ustaw to na adres e-mail Gmail
postfix_sasl_user:
# Wymagane pole, ustaw to na hasło do Gmail
postfix_sasl_password:
postfix_smtp_tls_cafile: /etc/ssl/certs/ca-certificates.crt

# Aktualizuje /boot/config.txt z `{{ key }}: {{ value }}`
rpi_boot_config: {}
# Uruchamia raspi-config -noint do_{{ key }} {{ value }}. Opcje: 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"
# Wymagane pole, lista kluczy publicznych ssh do zaktualizowania ~/.authorized_keys.
# Uwaga: Jeden z tych kluczy musi być używany przez Ansible.
ssh_public_keys: []
# Ciąg wyświetlany podczas łączenia z hostem przez ssh
ssh_banner:

# Reguły UFW zawsze powinny zezwalać na SSH, aby Ansible mógł działać
ufw_rules:
  - { rule: "allow", port: "22", proto: "tcp" }
# Konfiguruje, czy ruch igmp powinien być dozwolony
ufw_allow_igmp: false

# Odbiorca raportu automatycznych aktualizacji
unattended_upgrades_email_address: root
# Czy powinniśmy uruchomić ponownie, gdy zostanie znalezione /var/run/reboot-required?
unattended_upgrades_auto_reboot: false

# Wewnętrzna zmienna używana podczas uruchamiania testów - nie powinna być używana.
ansible_raspbian_testing: false

Przykład Playbooka

- hosts: servers
  become: true
  pre_tasks:
    - name: zaktualizuj 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
O projekcie

Setup a secure basic Raspbian environment with sensible defaults.

Zainstaluj
ansible-galaxy install hannseman.raspbian
Licencja
mit
Pobrania
248
Właściciel