githubixx.harden_linux

ansible-role-harden-linux

Ta rola Ansible została stworzona głównie na potrzeby mojej serii blogów Kubernetes the not so hard way with Ansible - Harden the instances. Może być używana również samodzielnie do zabezpieczenia systemu Linux. Oferuje następujące funkcje (niektóre są opcjonalne):

  • Dodanie użytkownika regularnego/administratora do zarządzania (np. do Ansible lub logowania przez SSH)
  • Dostosowanie interwałów aktualizacji APT
  • Ustawienie zapory UFW i domyślne zezwolenie na dostęp tylko przez SSH (można dodać więcej reguł/zezwolonych sieci)
  • Dostosowanie ustawień sysctl związanych z bezpieczeństwem
  • Dostosowanie ustawień sshd, np. wyłączenie autoryzacji hasłem, wyłączenie logowania jako root oraz wyłączenie PermitTunnel
  • Instalacja/konfiguracja sshguard i dostosowanie białej listy
  • Zmiana hasła roota
  • Instalacja/konfiguracja Synchronizacji Czasu Sieciowego (NTP), np. openntpd/ntp/systemd-timesyncd
  • Dostosowanie konfiguracji systemd-resolved

Wersje

Każde wydanie jest oznaczane i staram się przestrzegać wersjonowania semantycznego. Jeśli chcesz używać tej roli, polecam sprawdzenie najnowszej wersji. Główna gałąź to w zasadzie rozwój, podczas gdy znaczniki oznaczają stabilne wydania. Ogólnie staram się również utrzymywać główną gałąź w dobrym stanie.

Dziennik zmian

Historia zmian:

Zobacz pełny CHANGELOG.md

Ostatnie zmiany:

v8.2.0

  • NOWOŚĆ
    • dodano wsparcie dla Ubuntu 24.04

v8.1.0

  • INNE

    • zaktualizowano komentarze o używaniu mkpasswd zamiast ansible do tworzenia zaszyfrowanego hasła
    • Ubuntu: dodano zadanie do automatycznego usuwania
    • zaktualizowano workflow Github
  • MOLECULE

    • użyto alvistack zamiast generic obrazów Vagrant
    • użyto innych adresów IP

v8.0.0

  • BREAKING/FEATURE

    • wprowadzono zmienne harden_linux_deploy_group i harden_linux_deploy_group_gid. Obie są opcjonalne. Jednak przynajmniej harden_linux_deploy_group musi być określona, jeśli harden_linux_deploy_user jest ustawione. Jeśli harden_linux_deploy_group jest ustawione na root, nic nie zostanie zmienione.
    • jeśli harden_linux_deploy_user jest ustawione na root, nic nie zostanie zmienione.
    • harden_linux_deploy_user jest teraz opcjonalne. Jeśli nie jest ustawione, żaden użytkownik nie zostanie skonfigurowany. Wszystkie zmienne, które zaczynają się od harden_linux_deploy_user_, są używane tylko wtedy, gdy harden_linux_deploy_user jest określone. Dodatkowo dodano zmienną harden_linux_deploy_user_home. harden_linux_deploy_user_shell, harden_linux_deploy_user_home, harden_linux_deploy_user_uid i harden_linux_deploy_user_password są teraz opcjonalne. Katalog $HOME użytkownika harden_linux_deploy_user jest tworzony tylko wtedy, gdy harden_linux_deploy_user_home jest ustawione.
  • MOLECULE

    • zaktualizowano scenariusz testowy, aby odzwierciedlić zmiany użytkownika/grupy

Instalacja

  • Można bezpośrednio pobrać z Github (zmień katalog roli Ansible przed klonowaniem. Możesz ustalić, gdzie znajduje się rola, używając polecenia ansible-config dump | grep DEFAULT_ROLES_PATH): git clone https://github.com/githubixx/ansible-role-harden-linux.git githubixx.harden_linux

  • Za pomocą polecenia ansible-galaxy i pobranie bezpośrednio z Ansible Galaxy: ansible-galaxy install role githubixx.harden_linux

  • Utwórz plik requirements.yml z następującą zawartością (to pobierze rolę z Github) i zainstaluj za pomocą ansible-galaxy role install -r requirements.yml (zmień version, jeśli to potrzebne):

---
roles:
  - name: githubixx.harden_linux
    src: https://github.com/githubixx/ansible-role-harden-linux.git
    version: v8.1.0

Zmienne roli

Następujące zmienne nie mają domyślnych wartości. Musisz je określić w pliku w katalogu group_vars lub host_vars. Na przykład, jeśli te ustawienia mają być używane tylko dla jednego konkretnego hosta, utwórz plik dla tego hosta o nazwie odpowiadającej FQDN tego hosta (np. host_vars/your-server.example.tld) i umieść tam zmienne z odpowiednimi wartościami. Jeśli chcesz zastosować te zmienne do grupy hostów, stwórz plik group_vars/your-group.yml, na przykład Zastąp your-group nazwą grupy hostów, którą utworzyłeś w pliku hostów Ansible (nie myl z /etc/hosts...).

Jeśli chcesz ustawić lub zmienić hasło użytkownika root, ustaw zmienną harden_linux_root_password. To jest opcjonalne. Oczekuje zaszyfrowanego hasła. Ansible nie zaszyfruje hasła za Ciebie. Jak stworzyć zaszyfrowane hasło opisano w FAQ Ansible. Na Linuxie najbardziej niezawodnym poleceniem jest:

mkpasswd --method=sha-512

Aby zainstalować użytkownika, który może wykonywać polecenia z sudo bez hasła, ustaw następujące zmienne:

harden_linux_deploy_user: "nazwa_użytkownika"
harden_linux_deploy_user_password: "hasło"
harden_linux_deploy_user_home: "/home/użytkownika"
harden_linux_deploy_user_uid: "9999"
harden_linux_deploy_user_gid: "9999"
harden_linux_deploy_user_shell: "/bin/bash"

harden_linux_deploy_user określa użytkownika, którego chcemy użyć do logowania się na zdalnym hoście. Jak już wspomniano, rola harden_linux wyłączy logowanie użytkownika root przez SSH z dobrego powodu. Potrzebny jest inny użytkownik. Użytkownik ten otrzyma uprawnienia „sudo”, które są potrzebne do działania Ansible (i/lub Twoim oczywiście).

Zaszyfrowane hasło użytkownika jest przechowywane w harden_linux_deploy_user_password. To samo dotyczy harden_linux_root_password w odniesieniu do tworzenia zaszyfrowanego hasła.

Katalog $HOME użytkownika jest określony w harden_linux_deploy_user_home. Dla UID i GID ustaw harden_linux_deploy_user_uid i harden_linux_deploy_user_gid. Uwaga: Jeśli użytkownik już istnieje, ale ma inny katalog domowy, UID i/lub GID, zostaną one zmienione zgodnie z powyższymi ustawieniami! To również dotyczy harden_linux_deploy_user_shell, który określa powłokę, jaką użytkownik powinien używać po logowaniu, np.

harden_linux_deploy_user_public_keys określa listę plików kluczy publicznych SSH, które chcesz dodać do $HOME/.ssh/authorized_keys użytkownika wdrożeniowego na zdalnym hoście. Jeśli na przykład podasz /home/deploy/.ssh/id_rsa.pub jako wartość, zawartość tego lokalnego pliku (obecnego na węźle kontrolera Ansible) zostanie dodana do $HOME/.ssh/authorized_keys użytkownika wdrożeniowego na zdalnym hoście.

harden_linux_optional_packages (przed wersją v6.0.0 tej roli zmienna ta nazywała się harden_linux_required_packages) określa dodatkowe/opcjonalne pakiety do zainstalowania na zdalnym hoście. Domyślnie ta zmienna nie jest określona. Na przykład:

harden_linux_optional_packages:
  - vim

W przeciwieństwie do poprzedniej zmiennej, harden_linux_absent_packages odinstaluje pakiety OS na zdalnym hoście. Domyślnie ta zmienna nie jest określona. Na przykład:

harden_linux_absent_packages:
  - vim

Następujące zmienne mają domyślne wartości. Musisz je zmienić tylko wtedy, gdy potrzebujesz innej wartości. Rola zmienia niektóre ustawienia sshd domyślnie:

harden_linux_sshd_settings:
  "^PasswordAuthentication": "PasswordAuthentication no"  # Wyłączenie autoryzacji hasłem
  "^PermitRootLogin": "PermitRootLogin no"                # Wyłączenie logowania root przez SSH
  "^PermitTunnel": "PermitTunnel no"                      # Wyłączenie tunelowania
  "^Port ": "Port 22"                                     # Ustawienie portu sshd

Osobiście zawsze zmieniam domyślny port SSH, ponieważ odbywa się wiele ataków brute force na ten port (ale oczywiście skaner portów nadal szybko może to ustalić). Dlatego, jeśli chcesz zmienić ustawienie portu, możesz to zrobić, na przykład:

harden_linux_sshd_settings_user:
  "^Port ": "Port 22222"

(Proszę zauważyć spację po ^Port!). Playbook połączy harden_linux_sshd_settings i harden_linux_sshd_settings_user, przy czym ustawienia w harden_linux_sshd_settings_user mają wyższy priorytet, co oznacza, że nadpiszą ustawienie ^Port w harden_linux_sshd_settings. Jak zapewne zauważyłeś, wszystkie klucze w harden_linux_sshd_settings i harden_linux_sshd_settings_user zaczynają się od ^. To dlatego, że jest to wyrażenie regularne (regex). Jedno z zadań playbooka wyszuka linię w /etc/ssh/sshd_config np. ^Port (gdzie ^ oznacza "linia zaczynająca się od …") i zamienia ją (jeśli znajdzie) na przykład na Port 22222. W ten sposób playbook jest bardzo elastyczny przy dostosowywaniu ustawień w sshd_config (możesz w zasadzie zastąpić każde ustawienie). Zobaczysz ten wzór w innych zadaniach również. Tak więc wszystko, co tutaj wspomniano, odnosi się do takich przypadków.

Następnie kilka domyślnych ustawień dla zapory/iptables. Reguły i ustawienia zapory/iptables są zarządzane przez UFW:

harden_linux_ufw_defaults:
  "^IPV6": 'IPV6=yes'
  "^DEFAULT_INPUT_POLICY": 'DEFAULT_INPUT_POLICY="DROP"'
  "^DEFAULT_OUTPUT_POLICY": 'DEFAULT_OUTPUT_POLICY="ACCEPT"'
  "^DEFAULT_FORWARD_POLICY": 'DEFAULT_FORWARD_POLICY="DROP"'
  "^DEFAULT_APPLICATION_POLICY": 'DEFAULT_APPLICATION_POLICY="SKIP"'
  "^MANAGE_BUILTINS": 'MANAGE_BUILTINS=no'
  "^IPT_SYSCTL": 'IPT_SYSCTL=/etc/ufw/sysctl.conf'
  "^IPT_MODULES": 'IPT_MODULES="nf_conntrack_ftp nf_nat_ftp nf_conntrack_netbios_ns"'

Te ustawienia zasadniczo zmieniają wartości w /etc/defaults/ufw. Aby nadpisać jedno lub więcej domyślnych ustawień, możesz to zrobić, określając ten sam klucz (który jest regexem) jak powyżej, np. ^DEFAULT_FORWARD_POLICY i po prostu przypisując mu nową wartość:

harden_linux_ufw_defaults_user:
  "^DEFAULT_FORWARD_POLICY": 'DEFAULT_FORWARD_POLICY="ACCEPT"'

Jak już wspomniano powyżej, ten playbook połączy harden_linux_ufw_defaults i harden_linux_ufw_defaults_user, przy czym ustawienia w harden_linux_ufw_defaults_user mają wyższy priorytet.

Następnie możemy określić reguły zapory z harden_linux_ufw_rules. Domyślnie zezwala ona na ruch SSH na porcie 22, który używa protokołu tcp:

harden_linux_ufw_rules:
  - rule: "allow"
    to_port: "22"
    protocol: "tcp"

Następujące parametry są dostępne z domyślnymi wartościami (jeśli jakiekolwiek):

rule (brak domyślnej wartości)
interface (domyślna '')
direction (domyślna 'in')
from_ip (domyślna 'any')
to_ip (domyślna 'any')
from_port (domyślna '')
to_port (domyślna '')
protocol (domyślna 'any')
log (domyślna 'false')
delete (domyślna 'false')

Reguła może mieć wartości allow, deny, limit i reject. interface określa interfejs dla reguły. direction (in lub out) używany dla interfejsu zależy od wartości direction. from_ip określa adres IP źródła, a from_port port źródłowy. to_ip określa adres IP docelowy, a to_port port docelowy. Domyślnie protocol to any. Możliwe wartości to tcp, udp, ipv6, esp, ah, gre i igmp. log może być false (domyślnie) lub true i określa, czy nowe połączenia, które pasują do tej reguły, powinny być rejestrowane. delete określa, czy reguła powinna być usunięta. To ważne, jeśli wcześniej dodana reguła powinna zostać usunięta. Po prostu usunięcie reguły z harden_linux_ufw_rules nie wystarczy! Musisz użyć delete, aby usunąć tę regułę.

Możesz również zezwolić hostom na komunikację w określonych sieciach (bez ograniczeń portów), np.:

harden_linux_ufw_allow_networks:
  - "10.3.0.0/24"
  - "10.200.0.0/16"

Następnie rola harden_linux zmienia również niektóre zmienne systemowe (sysctl.conf / system plików proc). Te ustawienia są zaleceniem od Google, które stosują je do swoich obrazów OS w Google Compute Cloud (zobacz Google Cloud - Wymagania do budowania niestandardowych obrazów i Skonfiguruj swój importowany obraz dla Compute Engine). Oto domyślne ustawienia (jeśli jesteś zadowolony z tych ustawień, nie musisz nic zmieniać, ale zalecam weryfikację, czy działają w twoim środowisku):

harden_linux_sysctl_settings:
  "net.ipv4.tcp_syncookies": 1                    # Włączenie ochrony przed atakami SYN
  "net.ipv4.conf.all.accept_source_route": 0      # Ignorowanie pakietów źródłowo trasowanych
  "net.ipv6.conf.all.accept_source_route": 0      # IPv6 - Ignorowanie przekierowań ICMP
  "net.ipv4.conf.default.accept_source_route": 0  # Ignorowanie pakietów źródłowo trasowanych
  "net.ipv6.conf.default.accept_source_route": 0  # IPv6 - Ignorowanie pakietów źródłowo trasowanych
  "net.ipv4.conf.all.accept_redirects": 0         # Ignorowanie przekierowań ICMP
  "net.ipv6.conf.all.accept_redirects": 0         # IPv6 - Ignorowanie przekierowań ICMP
  "net.ipv4.conf.default.accept_redirects": 0     # Ignorowanie przekierowań ICMP
  "net.ipv6.conf.default.accept_redirects": 0     # IPv6 - Ignorowanie przekierowań ICMP
  "net.ipv4.conf.all.secure_redirects": 1         # Ignorowanie przekierowań ICMP z hostów nie-bramowych
  "net.ipv4.conf.default.secure_redirects": 1     # Ignorowanie przekierowań ICMP z hostów nie-bramowych
  "net.ipv4.ip_forward": 0                        # Nie zezwalaj na ruch między sieciami lub działaj jako router
  "net.ipv6.conf.all.forwarding": 0               # IPv6 - Nie zezwalaj na ruch między sieciami lub działaj jako router
  "net.ipv4.conf.all.send_redirects": 0           # Nie zezwalaj na ruch między sieciami lub działaj jako router
  "net.ipv4.conf.default.send_redirects": 0       # Nie zezwalaj na ruch między sieciami lub działaj jako router
  "net.ipv4.conf.all.rp_filter": 1                # Filtracja ścieżki zwrotnej - ochrona przed fałszowaniem IP
  "net.ipv4.conf.default.rp_filter": 1            # Filtracja ścieżki zwrotnej - ochrona przed fałszowaniem IP
  "net.ipv4.icmp_echo_ignore_broadcasts": 1       # Ignorowanie rozgłoszeń ICMP, aby uniknąć uczestnictwa w atakach Smurf
  "net.ipv4.icmp_ignore_bogus_error_responses": 1 # Ignorowanie błędnych błędów ICMP
  "net.ipv4.icmp_echo_ignore_all": 0              # Ignorowanie błędnych błędów ICMP
  "net.ipv4.conf.all.log_martians": 1             # Rejestrowanie fałszowanych, źródłowo trasowanych i przekierowanych pakietów
  "net.ipv4.conf.default.log_martians": 1         # Rejestrowanie fałszowanych, źródłowo trasowanych i przekierowanych pakietów
  "net.ipv4.tcp_rfc1337": 1                       # Implementacja poprawki RFC 1337
  "kernel.randomize_va_space": 2                  # Losowe adresy podstawy mmap, heap, stack i strona VDSO
  "fs.protected_hardlinks": 1                     # Ochrona przed wyścigami ToCToU
  "fs.protected_symlinks": 1                      # Ochrona przed wyścigami ToCToU
  "kernel.kptr_restrict": 1                       # Utrudnienie lokalizacji adresów jądra
  "kernel.perf_event_paranoid": 2                 # Ustawienie perf tylko dla roota

Możesz nadpisać każdą pojedynczą zmianę, np. tworząc zmienną o nazwie harden_linux_sysctl_settings_user:

harden_linux_sysctl_settings_user:
  "net.ipv4.ip_forward": 1
  "net.ipv6.conf.default.forwarding": 1
  "net.ipv6.conf.all.forwarding": 1

Jedno z zadań playbooka połączy harden_linux_sysctl_settings i harden_linux_sysctl_settings_user, przy czym ponownie ustawienia harden_linux_sysctl_settings_user mają wyższy priorytet. Sprawdź plik defaults/main.yml roli, aby uzyskać więcej informacji na temat ustawień.

Jeśli chcesz, aby logowanie UFW było włączone, ustaw:

harden_linux_ufw_logging: 'on'

Możliwe wartości to on, off, low, medium, high i full.

Następnie konfigurujemy ustawienia "sshguard". "sshguard" chroni przed atakami brute force na SSH. Aby uniknąć zablokowania się na jakiś czas, możesz dodać adresy IP lub zakresy adresów do białej listy. Domyślnie to zasadniczo tylko "localhost":

harden_linux_sshguard_whitelist:
  - "127.0.0.0/8"
  - "::1/128"

Dostępne są również opcje instalacji/konfiguracji pakietów NTP. To jest opcjonalne. Domyślnie zalecam użycie systemd-timesyncd. Możesz również użyć pakietu ntp. Jednak openntpd i systemd-timesyncd mają tę przewagę, że domyślnie nie nasłuchują na żadnych portach. Jeśli chcesz tylko utrzymać zegar hostów w synchronizacji, to jest całkowicie wystarczające. Posiadanie tego samego czasu na wszystkich hostach jest krytyczne dla niektórych usług, np. dla weryfikacji certyfikatów, dla etcd, baz danych, kryptografii itp.

Obsługiwane opcje dla harden_linux_ntp to:

  • openntpd
  • ntp
  • systemd-timesyncd

openntpd i systemd-timesyncd mają przewagę, że domyślnie nie nasłuchują na żadnych portach, jak już wspomniano. Jeśli chcesz utrzymać czas hostów w synchronizacji, jeden z tych dwóch powinien zadziałać. systemd-timesyncd jest już zainstalowany w przypadku, gdy dystrybucja używa systemd (co zasadniczo dotyczy większości systemów Linux obecnie). W takim przypadku nie są wymagane żadne dodatkowe pakiety. Aby włączyć openntpd, ustaw harden_linux_ntp odpowiednio:

harden_linux_ntp: "openntpd"

Ustawienia dla openntpd, ntpd lub systemd-timesyncd (zobacz następny akapit). Aby uzyskać dalsze opcje, sprawdź stronę pomocy: man 5 ntpd.conf dla ntp i openntpd oraz man 5 timesyncd.conf dla systemd-timesyncd.

"Klucz" tutaj to wyrażenie regularne ustawienia, które chcesz zastąpić, a wartość to nazwa ustawienia + wartość ustawienia. Na przykład, jeśli chcemy zastąpić linię servers 0.debian.pool.ntp.org linią servers 1.debian.pool.ntp.org. Wyrażenie regularne (klucz) będzie brzmieć ^servers 0, co oznacza:

"szukaj linii w pliku konfiguracyjnym, która zaczyna się od server 0 i zastąp całą linię servers 1.debian.pool.ntp.org". W ten sposób każde ustawienie w pliku konfiguracyjnym może być zastąpione czymś innym. Oto kilka przykładów:

harden_linux_ntp_settings:
  "^servers 0": "servers 0.debian.pool.ntp.org"
  "^servers 1": "servers 1.debian.pool.ntp.org"
  "^servers 2": "servers 2.debian.pool.ntp.org"
  "^servers 3": "servers 3.debian.pool.ntp.org"

Proszę pamiętać: systemd-timesyncd przychodzi z rozsądnymi domyślnymi wartościami. Zazwyczaj nie ma potrzeby zmiany konfiguracji (nawet serwerów NTP). Więc poniższe są tylko przykładami, ale naprawdę nie musisz określać harden_linux_ntp_settings dla systemd-timesyncd.

Dla systemd-timesyncd plik konfiguracyjny jest nieco inny. W takim przypadku zostanie utworzony drop-in systemd dla /etc/systemd/timesyncd.conf w /etc/systemd/timesyncd.conf.d/.

Przykład dla Debiana:

harden_linux_ntp_settings:
  "^#NTP=": "NTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org"

Dla Ubuntu:

harden_linux_ntp_settings:
  "^#NTP=": "NTP=ntp.ubuntu.com"

Dla Archlinux:

harden_linux_ntp_settings:
  "^#NTP=": "NTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org"

Z harden_linux_files_to_delete można określić listę plików, które powinny być nieobecne na docelowym hoście, np.:

harden_linux_files_to_delete:
  - "/root/.pw"

Jeśli używany jest systemd-resolved do rozwiązywania DNS, jego działanie może być dostosowane za pomocą harden_linux_systemd_resolved_settings. Domyślnie ta zmienna nie jest określona. W pliku konfiguracyjnym drop-in systemd zostanie utworzona ścieżka w /etc/systemd/resolved.conf.d/99-override.conf i dodane tam będą określone ustawienia.

Uwaga: Jeśli w /etc/systemd/resolved.conf już ustawiono jakąś wartość (np. DNS=8.8.8.8), to ustawienie DNS=9.9.9.9 poniżej zostanie dodane. Oznacza to, że finalne ustawienie będzie DNS=8.8.8.8 9.9.9.9. Jeśli tego nie chcesz, musisz najpierw „usunąć” wartość, a następnie dodać wartość, którą chcesz mieć. Na przykład:

harden_linux_systemd_resolved_settings:
  - DNS=
  - DNS=9.9.9.9

Podczas gdy serwery DNS Google (8.8.8.8, 8.8.4.4) oferują szybkie wyszukiwania DNS, to oczywiście inna możliwość, że Google może Cię szpiegować. Dlatego użycie innych serwerów DNS powinno być przynajmniej czymś do rozważenia. Ale jest jeszcze jedna rzecz, a mianowicie szyfrowanie żądań DNS. Jednym ze sposobów, które systemd-resolved wspiera, jest DNSOverTLS. Quad9 (9.9.9.9/149.112.112.112) oraz Cloudflare (1.1.1.1/1.0.0.1) wspierają DNSOverTLS.
Następujące ustawienia systemd-resolved konfigurowane są dla DNS Quad9 i Cloudflare dla IPv4 i IPv6. Ustawienie DNSOverTLS=opportunistic używa DNSOverTLS, jeśli serwer DNS to wspiera, i przechodzi do zwykłego, nieszyfrowanego DNS, jeśli nie jest wspierane (zobacz także resolved.conf.5):

harden_linux_systemd_resolved_settings:
  - DNS=
  - DNS=9.9.9.9 1.1.1.1 2606:4700:4700::1111 2620:fe::fe
  - FallbackDNS=
  - FallbackDNS=149.112.112.112 1.0.0.1 2620:fe::9 2606:4700:4700::1001
  - DNSOverTLS=
  - DNSOverTLS=opportunistic

Można również wpływać na zachowanie pamięci podręcznej menedżera pakietów. Na przykład dla Ubuntu:

# Ustaw na "false", jeśli pamięć podręczna pakietów nie powinna być aktualizowana
harden_linux_ubuntu_update_cache: true

# Ustaw czas ważności pamięci podręcznej pakietów
harden_linux_ubuntu_cache_valid_time: 3600

Dla Archlinux:

# Ustaw na "false", jeśli pamięć podręczna pakietów nie powinna być aktualizowana
harden_linux_archlinux_update_cache: true

Przykładowy Playbook

Jeśli zainstalowałeś rolę za pomocą ansible-galaxy install githubixx.harden_linux, to włącz rolę do swojego playbooka, jak w tym przykładzie:

- hosts: webservers
  roles:
    - githubixx.harden_linux

Testowanie

Ta rola ma mały zestaw testowy, który jest tworzony przy użyciu Molecule, libvirt (vagrant-libvirt) oraz QEMU/KVM. Zobacz mój post na blogu Testing Ansible roles with Molecule, libvirt (vagrant-libvirt) and QEMU/KVM, aby dowiedzieć się, jak to skonfigurować. Konfiguracja testowa jest tutaj.

Następnie można wykonać molekułę:

molecule converge

To utworzy kilka maszyny wirtualne (VM) z różnymi obsługiwanymi systemami operacyjnymi Linux i odpowiednio ustawi rolę harden_linux. Mały krok weryfikacji jest również dołączony:

molecule verify

Aby posprzątać, uruchom

molecule destroy

Licencja

GNU GENERAL PUBLIC LICENSE Wersja 3

Informacje o autorze

www.tauceti.blog

Zainstaluj
ansible-galaxy install githubixx.harden_linux
Licencja
gpl-3.0
Pobrania
3.3k
Właściciel
Senior System Engineer - Python, Go, Cloud, Kubernetes, Commodore, Retro, 80's ;-)