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
zamiastansible
do tworzenia zaszyfrowanego hasła - Ubuntu: dodano zadanie do automatycznego usuwania
- zaktualizowano workflow Github
- zaktualizowano komentarze o używaniu
MOLECULE
- użyto
alvistack
zamiastgeneric
obrazów Vagrant - użyto innych adresów IP
- użyto
v8.0.0
BREAKING/FEATURE
- wprowadzono zmienne
harden_linux_deploy_group
iharden_linux_deploy_group_gid
. Obie są opcjonalne. Jednak przynajmniejharden_linux_deploy_group
musi być określona, jeśliharden_linux_deploy_user
jest ustawione. Jeśliharden_linux_deploy_group
jest ustawione naroot
, nic nie zostanie zmienione. - jeśli
harden_linux_deploy_user
jest ustawione naroot
, 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ę odharden_linux_deploy_user_
, są używane tylko wtedy, gdyharden_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
iharden_linux_deploy_user_password
są teraz opcjonalne. Katalog $HOME użytkownikaharden_linux_deploy_user
jest tworzony tylko wtedy, gdyharden_linux_deploy_user_home
jest ustawione.
- wprowadzono zmienne
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
Ansible role for hardening Linux
ansible-galaxy install githubixx.harden_linux