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.

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 lub molecule 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

MIT

Informacje o autorze

Ta rola została stworzona przez Ali Muhammad.

O projekcie

Role to apply CIS Benchmark for Ubuntu Linux 20.04 LTS.

Zainstaluj
ansible-galaxy install estenrye.cis_ubuntu_2004
Licencja
mit
Pobrania
7k
Właściciel