estenrye.cis_ubuntu_2004
Ansible Rola: cis_ubuntu_2004 :computer:
Rola Ansible do stosowania CIS Benchmark dla Ubuntu Linux 20.04 LTS.
Obecnie dostępne wersje to:
- CIS Benchmark dla Ubuntu Linux 20.04 LTS v1.1.0
- CIS Benchmark dla Ubuntu Linux 20.04 LTS v1.0.0
Wersjonowanie
Tabela poniżej określa wersje roli dostępne na Ansible Galaxy i GitHub Releases, w odniesieniu do odpowiadających wersji CIS Benchmark dla Ubuntu Linux 20.04 LTS.
Wersja CIS Ubuntu 20.04 Benchmark | Wersja Ansible Galaxy | Wersja tag repozytorium |
---|---|---|
1.0.0 | 1.0.0, 1.0.1, 1.0.2 | 1.0.0, 1.0.1, 1.0.2 |
1.1.0 | 2.0.0, 2.0.1, 2.1.0, 3.0.0, 3.1.0 | 2.0.0, 2.0.1, 2.1.0, 3.0.0, 3.1.0 |
1. Instrukcje instalacji/pobierania:
Ta rola jest dostępna na Ansible Galaxy. Możesz zainstalować/pobrać rolę cis_ubuntu_2004
na swoim węźle kontrolera Ansible z Ansible Galaxy lub bezpośrednio z repozytorium.
Bez pliku requirements.yml:
Instalacja/Pobieranie najnowszej (domyślnej) dostępnej wersji tagu:
ansible-galaxy install darkwizard242.cis_ubuntu_2004
Instalacja/Pobieranie konkretnej dostępnej wersji tagu (przykład: 3.1.0):
ansible-galaxy install darkwizard242.cis_ubuntu_2004,3.1.0
Instalacja/Pobieranie konkretnej dostępnej wersji z gałęzi repozytorium (przykład:
master
):ansible-galaxy install darkwizard242.cis_ubuntu_2004,master
Instalacja/Pobieranie konkretnej dostępnej wersji z gałęzi repozytorium (przykład:
feature/cis_version_1.1.0
):ansible-galaxy install darkwizard242.cis_ubuntu_2004,feature/cis_version_1.1.0
Instalacja/Pobieranie konkretnej dostępnej wersji z gałęzi repozytorium (przykład:
feature/cis_version_1.0.0
):ansible-galaxy install darkwizard242.cis_ubuntu_2004,feature/cis_version_1.0.0
Z plikiem requirements.yml:
Dodaj do istniejącego pliku requirements.yml wraz z innymi rolami lub stwórz nowy, aby zainstalować cis_ubuntu_2004
.
Najnowsza wersja bezpośrednio z Ansible Galaxy.
- name: darkwizard242.cis_ubuntu_2004
Konkretną wersję bezpośrednio z Ansible Galaxy.
- name: darkwizard242.cis_ubuntu_2004 version: 3.1.0
Konkretna gałąź z repozytorium.
- name: cis_ubuntu_2004 src: https://github.com/darkwizard242/cis_ubuntu_2004 version: master
Instalacja/Pobieranie po dodaniu do requirements.yml :
ansible-galaxy install -r requirements.yml
UWAGA: Instalacja roli w sposób opisany powyżej tylko pobiera rolę, aby była dostępna do użycia w twoich playbookach ansible. Możesz przeczytać instrukcje dotyczące instalacji/pobierania ról tutaj.
2. Kilka uwag:
Benchmarki dotyczące partycjonowania dysku i ich punktów montowania z Sekcji 1 nie są stosowane w tej roli. Powód jest prosty - każdy system architektur i układ dysku indywidualnych/organizacyjnych mogą się różnić. Zalecam zastosowanie ich samodzielnie. Oto lista tych benchmarków:
- 1.1.10 Zapewnij istnienie oddzielnej partycji dla /var (Automatyczna)
- 1.1.11 Zapewnij istnienie oddzielnej partycji dla /var/tmp (Automatyczna)
- 1.1.12 Zapewnij, że partycja /var/tmp zawiera opcję nodev (Automatyczna)
- 1.1.13 Zapewnij, że partycja /var/tmp zawiera opcję nosuid (Automatyczna)
- 1.1.14 Zapewnij, że partycja /var/tmp zawiera opcję noexec (Automatyczna)
- 1.1.15 Zapewnij istnienie oddzielnej partycji dla /var/log (Automatyczna)
- 1.1.16 Zapewnij istnienie oddzielnej partycji dla /var/log/audit (Automatyczna)
- 1.1.17 Zapewnij istnienie oddzielnej partycji dla /home (Automatyczna)
- 1.1.18 Zapewnij, że partycja /home zawiera opcję nodev (Automatyczna)
- 1.1.19 Zapewnij, że opcja nodev ustawiona jest na partycjach dla mediów wymiennych (Ręcznie)
- 1.1.20 Zapewnij, że opcja nosuid ustawiona jest na partycjach dla mediów wymiennych (Ręcznie)
- 1.1.21 Zapewnij, że opcja noexec ustawiona jest na partycjach dla mediów wymiennych (Ręcznie)
Następujące benchmarki z Sekcji 4 także nie zostały wdrożone:
- 4.2.1.5 Zapewnij, że rsyslog jest skonfigurowany do wysyłania logów do zdalnego hosta logów (Automatyczna)
- 4.2.1.6 Zapewnij, że zdalne wiadomości rsyslog są akceptowane tylko na wyznaczonych hostach logów (Ręcznie)
- 4.3 Zapewnij, że logrotate jest skonfigurowane (Ręcznie)
3. Wymagania
Brak.
4. Zmienne roli
Domyślne zmienne roli wykorzystywane w zadaniach roli znajdują się w defaults/main/
.
defaults/main/main.yml zawiera zmienne odnoszące się do całych sekcji CIS, takie jak następujące oraz zmienne systemowe, jak te wymienione w sekcji Ważne zmienne:
ubuntu_2004_cis_section1: true
ubuntu_2004_cis_section2: true
ubuntu_2004_cis_section3: true
ubuntu_2004_cis_section4: true
ubuntu_2004_cis_section5: true
ubuntu_2004_cis_section6: true
Celem wspomnianych powyżej zmiennych jest wskazanie, że wszystkie zadania dotyczące tych sekcji powinny być zastosowane przez rolę cis_ubuntu_2004
.
Zmienne dla każdej z sekcji znajdują się w osobnych plikach.
- Zmienne sekcji 1 znajdują się w defaults/main/section_01.yml
- Zmienne sekcji 2 znajdują się w defaults/main/section_02.yml
- Zmienne sekcji 3 znajdują się w defaults/main/section_03.yml
- Zmienne sekcji 4 znajdują się w defaults/main/section_04.yml
- Zmienne sekcji 5 znajdują się w defaults/main/section_05.yml
- Zmienne sekcji 6 znajdują się w defaults/main/section_06.yml
Domyślne wartości roli dla wszystkiego w roli cis_ubuntu_2004
mogą być zastąpione przez przekazywanie ich w playbooku lub inną metodą priorytetu zmiennych.
5. Zależności
Brak.
6. Przykłady playbooków:
Przykładowe playbooki zostały udostępnione w folderze playbook-examples. Zawiera on playbooki z ustawieniami domyślnymi i dostosowanymi wymaganiami.
UWAGA: Biorąc pod uwagę, że niektóre kontrolki CIS związane z siecią mogą usunąć dostęp do systemu, zalecam zastosowanie lub eksperymentowanie z playbookiem playbook-examples/playbook_with_custom_firewall_changes.yml jako pierwszego. Zmień typ połączenia i hosty w playbooku, aby dopasować je do swoich potrzeb.
Stosowanie przykładów:
Jeśli korzystasz z któregokolwiek z dostarczonych playbooków w folderze playbook-examples, możesz wybrać jeden z nich i uruchomić następujące polecenie, aby je zastosować:
ansible-playbook playbook_with_defaults.yml
ansible-playbook playbook_with_custom_firewall_changes.yml
ansible-playbook playbook_with_ipv6.yml
ansible-playbook playbook_with_ufw.yml
Zakładając, że stworzysz własny playbook o nazwie myplaybook.yml, możesz po prostu uruchomić go za pomocą następującego polecenia.
ansible-playbook myplaybook.yml
Stosowanie przykładów przy użyciu tagów:
Wszystkie zadania w roli mają przypisane tagi w oparciu o przypisanie poziomu CIS, numer reguły i numer sekcji. Domyślnie zastosowane zostaną zarówno kontrole poziomu 1, jak i poziomu 2. Dlatego, jeśli chcesz uruchomić dostosowane działania dla poziomów, numerów reguł lub sekcji - możesz używać następujących przykładów:
Przykład tylko do zastosowania kontroli poziomu 1:
ansible-playbook <playbook-name-here>.yml --tags "level_1"
Przykład tylko do zastosowania kontroli poziomu 2:
ansible-playbook <playbook-name-here>.yml --tags "level_2"
Przykład do zastosowania kontroli z konkretnej sekcji (np. sekcja 4 benchmarku CIS Ubuntu 20.04):
ansible-playbook <playbook-name-here>.yml --tags "section4"
Przykład do zastosowania konkretnej kontroli (np. kontrola 6.2.2 benchmarku CIS Ubuntu 20.04):
ansible-playbook <playbook-name-here>.yml --tags "rule_6_2_2"
7. Lokalny rozwój i CI/CD:
Dla lokalnego rozwoju roli cis_ubuntu_2004 wykonaj następujące kroki:
Forkuj repozytorium.
Sklonuj je lokalnie.
Zainstaluj Vagrant na swoim komputerze. Instrukcje instalacji dostępne tutaj lub jeśli potrzebujesz, możesz skorzystać z roli darkwizard242.vagrant, ale proszę potwierdzić, czy jest zgodna z Twoim systemem operacyjnym.
Zainstaluj Virtualbox na swoim komputerze. Instrukcje instalacji dostępne tutaj, lub jeśli potrzebujesz, możesz skorzystać z roli darkwizard242.virtualbox, ale proszę potwierdzić, czy jest zgodna z Twoim systemem operacyjnym.
Zainstaluj wymagane moduły używając:
# Aby zainstalować moduły pip globalnie, gdy działa się jako użytkownik bez uprawnień administratora. sudo -H python3 -m pip install -U molecule ansible-lint flake8 pytest-testinfra molecule-vagrant
LUB
# Aby zainstalować moduły pip lokalnie dla użytkownika, gdy działa się jako użytkownik bez uprawnień administratora. python3 -m pip install -U molecule ansible-lint flake8 pytest-testinfra molecule-vagrant
Wprowadź zmiany i uruchom
molecule test
lubmolecule converge
.
Polecenie molecule test uruchomi cały zestaw skonfigurowanych testów molekularnych.
Polecenie molecule converge jedynie utworzy instancję vagranta i zastosuje wszystkie operacje zdefiniowane w roli.
Oczywiście, możesz również po prostu pobrać kod dla roli cis_ubuntu_2004, wprowadzić zmiany i uruchomić go za pomocą ansible-playbook na maszynie testowej, jeśli nie znasz molecule.
Gdy tworzysz Pull Request - automatycznie uruchomi to budowę TravisCI tutaj. Konfiguracja dla budowy TravisCI znajduje się w .travis.yml. To wykona różne zadania, takie jak:
- Sklonowanie kodu z pull requesta.
- Wykonanie aktualizacji pamięci podręcznej repozytorium.
- Instalacja pakietów wstępnych.
- Instalacja Vagrant i Virtualbox.
- Wykonanie kontroli jakości kodu SonarCloud dla całego kodu repozytorium.
- Uruchomienie testu molekularnego (które utworzy pudełko vagranta, zastosuje kod roli i uruchomi zestaw testów TestInfra dla roli cis_ubuntu_2004).
8. Wkład:
Wkład jest mile widziany. Instrukcje dotyczące składania wkładu zostały opisane tutaj.
Inspiracja
Zainspirowane świetną pracą wielu członków społeczności Ansible (Florian Utz i ansible-lockdown, aby wymienić tylko niektóre z wielu). Nie przestawaj tworzyć :metal:
Licencja
Informacje o autorze
Ta rola została stworzona przez Ali Muhammad.