alivx.cis_ubuntu_20_04_ansible

Ansible CIS Ubuntu 20.04 LTS Zabezpieczenia Wersja 1.1.0 Ostatnia Status budowy

Zabezpieczony system Ubuntu CIS: zapobieganie atakom cybernetycznym i złośliwemu oprogramowaniu dla systemów krytycznych dla misji. Standardy CIS zabezpieczają Twoje systemy poprzez usunięcie:

  1. programów niebezpiecznych.
  2. wyłączenie nieużywanych systemów plików.
  3. wyłączenie niepotrzebnych portów lub usług.
  4. audyt operacji z uprawnieniami.
  5. ograniczenie uprawnień administracyjnych.

Zalecenia standardów CIS są stosowane w maszynach wirtualnych zarówno w chmurach publicznych, jak i prywatnych. Stosuje się je również do zabezpieczania wdrożeń lokalnych. Dla niektórych branż, wzmocnienie systemu zgodnie z publicznie znanym standardem jest kryterium, które kontrolerzy biorą pod uwagę. Standardy CIS są często wyborem dla wzmocnienia systemu, które audytorzy zalecają w branżach wymagających zgodności z PCI-DSS i HIPAA, takich jak bankowość, telekomunikacja i opieka zdrowotna. Jeśli chcesz uzyskać zgodność z akceptowanym standardem bezpieczeństwa w branży, takim jak PCI DSS, APRA lub ISO 27001, musisz wykazać, że zastosowałeś udokumentowane standardy wzmocnienia na wszystkich systemach w zakresie oceny.

Standardy CIS Ubuntu są zorganizowane w różne profile, mianowicie „Poziom 1” oraz „Poziom 2”, przeznaczone dla środowisk serwerowych i roboczych.

Profil Poziom 1 jest praktyczny i rozsądny, aby zabezpieczyć system bez dużego wpływu na wydajność.

  • Wyłączenie niepotrzebnych systemów plików,
  • Ograniczenie uprawnień użytkowników do plików i katalogów,
  • Wyłączenie niepotrzebnych usług.
  • Konfigurowanie zapór sieciowych.

Profil Poziom 2 jest używany w sytuacjach, gdy bezpieczeństwo jest bardzo ważne i może mieć negatywny wpływ na wydajność systemu.

  • Tworzenie oddzielnych partycji,
  • Audyt operacji z uprawnieniami.

Narzędzie do wzmocnienia Ubuntu CIS pozwala wybrać pożądany poziom zabezpieczeń zgodnie z danym profilem (Poziom 1 lub Poziom 2) oraz środowisko pracy (serwer lub stacja robocza) dla systemu. Przykład:

ansible-playbook -i inventory cis-ubuntu-20.yaml --tags="level_1_server"

Możesz wypisać wszystkie tagi, uruchamiając poniższe polecenie:

ansible-playbook -i host run.yaml --list-tags

Wszystkie role napisałem na podstawie

CIS Ubuntu Linux 20.04 LTS Benchmark
v1.1.0 - 21-07-2020

Sprawdź katalog przykładowy


Wymagania

Musisz dokładnie przeczytać zadania, aby upewnić się, że te zmiany nie zniszczą Twoich systemów przed uruchomieniem tego playbooka.

Możesz pobrać darmową książkę o standardzie CIS pod tym adresem Bezpłatny standard

Aby zacząć pracować w tej roli, wystarczy zainstalować Ansible. Instalacja Ansible


Zmienne roli

Musisz przejrzeć wszystkie domyślne konfiguracje przed uruchomieniem tego playbooka. W pliku defaults/main.yml zdefiniowanych jest wiele zmiennych roli.

  • Jeśli rozważasz zastosowanie tej roli na jakichkolwiek serwerach, powinieneś mieć podstawową znajomość standardu CIS i rozumienie potencjalnego wpływu, jaki może mieć to na system.
  • Przeczytaj i zmień konfigurowalne wartości domyślne.

Przykłady konfiguracji, które powinny być natychmiast rozważone do wyłączenia:

5.1.8 Upewnij się, że cron jest ograniczony do autoryzowanych użytkowników oraz 5.2.17 Upewnij się, że dostęp SSH jest ograniczony, które domyślnie skutecznie ograniczają dostęp do hosta (w tym poprzez ssh).

Na przykład:

  • CIS-Ubuntu-20.04-Ansible/defaults/main.yml
#Sekcja 5
#5.1.8 Upewnij się, że cron jest ograniczony do zaufanych użytkowników
allowed_hosts: "WSZYSTKIE: 0.0.0.0/0.0.0.0, 192.168.2.0/255.255.255.0"
# 5.2.17 Upewnij się, że dostęp SSH jest ograniczony
allowed_users: ali saleh baker root #Włóż None lub lista użytkowników oddzielona spacją

Jeśli potrzebujesz zmienić szablony plików, znajdziesz je w files/templates/*


Zależności

  • Ansible w wersji > 2.9

Przykładowy Playbook

Poniżej przykład playbooka

---
- hosts: host1
  become: yes
  remote_user: root
  gather_facts: no
  roles:
    - { role: "CIS-Ubuntu-20.04-Ansible",}

Uruchom wszystko

Jeśli chcesz uruchomić wszystkie tagi, użyj poniższego polecenia:

ansible-playbook -i [plik_inwentaryzacyjny] [playbook].yaml

Uruchom konkretną sekcję

ansible-playbook -i host run.yaml -t section2

Uruchom wiele sekcji

ansible-playbook -i host run.yaml -t section2 -t 6.1.1
  • Uwaga: Podczas uruchamiania pojedynczego zadania, upewnij się, że nie ma zależności między zadaniami, na przykład, jeśli uruchomisz tag 4.1.1.2 Upewnij się, że usługa auditd jest włączona przed uruchomieniem 4.1.1.1 Upewnij się, że auditd jest zainstalowany otrzymasz błąd w czasie wykonywania.

  • Punkty z tyldą jeszcze nie zaimplementowane, obecnie nad tym pracuję.

  • Upewnij się, że wybierasz jedną usługę naraz, ja używam ntp, ale możesz użyć innych usług, takich jak [systemd-timesyncd, ntp, chrony] w ustawieniach defaults/main.yaml

    Testy 11/1/2020 Przetestowano na AWS EC2 ubuntu 20.04 LTS [Zdał] 11/1/2020 Przetestowano na lokalnym serwerze Ubuntu 20.04 LTS [Zdał]

  • Przed uruchomieniem upewnij się, że zaktualizujesz listę użytkowników w pliku defaults/main.yaml w list_of_os_users + allowed_users

  • Upewnij się, że ustawiłeś właściwą podsieć w defaults/main.yaml w allowed_hosts


Tabela Ról:

1 Wstępna konfiguracja

  • 1.1 Konfiguracja systemu plików
  • 1.1.1 Wyłączanie nieużywanych systemów plików
  • 1.1.1.1 Upewnij się, że montowanie systemów plików cramfs jest wyłączone (Automatycznie)
  • 1.1.1.2 Upewnij się, że montowanie systemów plików freevxfs jest wyłączone - (Automatycznie)
  • 1.1.1.3 Upewnij się, że montowanie systemów plików jffs2 jest wyłączone (Automatycznie)
  • 1.1.1.4 Upewnij się, że montowanie systemów plików hfs jest wyłączone (Automatycznie)
  • 1.1.1.5 Upewnij się, że montowanie systemów plików hfsplus jest wyłączone - (Automatycznie)
  • 1.1.1.6 Upewnij się, że montowanie systemów plików udf jest wyłączone (Automatycznie)
  • 1.1.1.7 Upewnij się, że montowanie systemów FAT jest ograniczone (Ręcznie)
  • 1.1.2 Upewnij się, że /tmp jest skonfigurowane (Automatycznie)
  • 1.1.3 Upewnij się, że opcja nodev jest ustawiona na partycji /tmp (Automatycznie)
  • 1.1.4 Upewnij się, że opcja nosuid jest ustawiona na partycji /tmp (Automatycznie)
  • 1.1.5 Upewnij się, że opcja noexec jest ustawiona na partycji /tmp (Automatycznie)
  • 1.1.6 Upewnij się, że /dev/shm jest skonfigurowane (Automatycznie)
  • 1.1.7 Upewnij się, że opcja nodev jest ustawiona na partycji /dev/shm (Automatycznie)
  • 1.1.8 Upewnij się, że opcja nosuid jest ustawiona na partycji /dev/shm (Automatycznie)
  • 1.1.9 Upewnij się, że opcja noexec jest ustawiona na partycji /dev/shm (Automatycznie)
  • 1.1.10 Upewnij się, że istnieje oddzielna partycja dla /var (Automatycznie)
  • 1.1.11 Upewnij się, że istnieje oddzielna partycja dla /var/tmp (Automatycznie)
  • 1.1.12 Upewnij się, że opcja nodev jest ustawiona na partycji /var/tmp (Automatycznie)
  • 1.1.13 Upewnij się, że opcja nosuid jest ustawiona na partycji /var/tmp (Automatycznie)
  • 1.1.14 Upewnij się, że opcja noexec jest ustawiona na partycji /var/tmp (Automatycznie)
  • 1.1.15 Upewnij się, że istnieje oddzielna partycja dla /var/log (Automatycznie)
  • 1.1.16 Upewnij się, że istnieje oddzielna partycja dla /var/log/audit - (Automatycznie)
  • 1.1.17 Upewnij się, że istnieje oddzielna partycja dla /home (Automatycznie)
  • 1.1.18 Upewnij się, że opcja nodev jest ustawiona na partycji /home (Automatycznie)
  • 1.1.19 Upewnij się, że opcja nodev jest ustawiona na partycjach mediów wymiennych (Ręcznie)
  • 1.1.20 Upewnij się, że opcja nosuid jest ustawiona na partycjach mediów wymiennych - (Ręcznie)
  • 1.1.21 Upewnij się, że opcja noexec jest ustawiona na partycjach mediów wymiennych - (Ręcznie)
  • 1.1.22 Upewnij się, że bit sticky jest ustawiony na wszystkich katalogach zapisywalnych przez wszystkich - (Automatycznie)
  • 1.1.23 Wyłącz automatyczne montowanie (Automatycznie)
  • 1.1.24 Wyłącz pamięć USB (Automatycznie)

1.2 Konfiguracja aktualizacji oprogramowania

  • 1.2.1 Upewnij się, że repozytoria menedżera pakietów są skonfigurowane (Ręcznie)
  • 1.2.2 Upewnij się, że klucze GPG są skonfigurowane (Ręcznie)

1.3 Sprawdzanie integralności systemu plików

  • 1.3.1 Upewnij się, że AIDE jest zainstalowane (Automatycznie)
  • 1.3.2 Upewnij się, że integralność systemu plików jest regularnie sprawdzana (Automatycznie)

1.4 Ustawienia bezpiecznego uruchamiania

  • 1.4.1 Upewnij się, że hasło do bootloadera jest ustawione (Automatycznie)
  • 1.4.2 Upewnij się, że uprawnienia do konfiguracji bootloadera są skonfigurowane (Automatycznie)
  • 1.4.3 Upewnij się, że wymagana jest autoryzacja do trybu pojedynczego użytkownika (Automatycznie)

1.5 Dodatkowe wzmocnienie procesów

  • 1.5.1 Upewnij się, że wsparcie XD/NX jest włączone (Automatycznie)
  • 1.5.2 Upewnij się, że losowość przestrzeni adresowej (ASLR) jest włączona (Automatycznie)
  • 1.5.3 Upewnij się, że prelink jest wyłączony (Automatycznie)
  • 1.5.4 Upewnij się, że zrzuty rdzeni są ograniczone (Automatycznie)

1.6 Obowiązkowa kontrola dostępu

  • 1.6.1 Konfiguracja AppArmor
  • 1.6.1.1 Upewnij się, że AppArmor jest zainstalowany (Automatycznie)
  • 1.6.1.2 Upewnij się, że AppArmor jest włączony w konfiguracji bootloadera (Automatycznie)
  • 1.6.1.3 Upewnij się, że wszystkie profile AppArmor są w trybie egzekucji lub skarg (Automatycznie)
  • 1.6.1.4 Upewnij się, że wszystkie profile AppArmor egzekwują (Automatycznie)

1.7 Banery ostrzegawcze

  • 1.7.1.1 Upewnij się, że komunikat dnia jest poprawnie skonfigurowany (Automatycznie)
  • 1.7.1.2 Upewnij się, że lokalny baner ostrzegawczy przy logowaniu jest poprawnie skonfigurowany (Automatycznie)
  • 1.7.1.3 Upewnij się, że zdalny baner ostrzegawczy przy logowaniu jest poprawnie skonfigurowany (Automatycznie)
  • 1.7.1.4 Upewnij się, że uprawnienia do /etc/motd są skonfigurowane (Automatycznie)
  • 1.7.1.5 Upewnij się, że uprawnienia do /etc/issue są skonfigurowane (Automatycznie)
  • 1.7.1.6 Upewnij się, że uprawnienia do /etc/issue.net są skonfigurowane (Automatycznie)

1.8 Menedżer wyświetlania GNOME

  • 1.8.1 Upewnij się, że Menedżer Wyświetlania GNOME jest usunięty (Ręcznie)
  • 1.8.2 Upewnij się, że baner logowania GDM jest skonfigurowany (Ręcznie)
  • 1.8.3 Upewnij się, że lista użytkowników jest wyłączona (Ręcznie)
  • 1.8.4 Upewnij się, że XDCMP nie jest włączony (Ręcznie)

1.9 Upewnij się, że aktualizacje, poprawki i dodatkowe oprogramowanie zabezpieczające są zainstalowane (Automatycznie)

2 Usługi

  • 2.1 Usługi inetd
  • 2.1.1 Upewnij się, że xinetd nie jest zainstalowane (Automatycznie)
  • 2.1.2 Upewnij się, że openbsd-inetd nie jest zainstalowane (Automatycznie)
  • 2.2 Usługi specjalizowane
  • 2.2.1 Synchronizacja czasowa
  • 2.2.1.1 Upewnij się, że synchronizacja czasowa jest używana (Automatycznie)
  • 2.2.1.2 Upewnij się, że systemd-timesyncd jest skonfigurowany (Ręcznie)
  • 2.2.1.3 Upewnij się, że chrony jest skonfigurowane (Automatycznie)
  • 2.2.1.4 Upewnij się, że ntp jest skonfigurowane (Automatycznie)
  • 2.2.2 Upewnij się, że system X Window nie jest zainstalowany (Automatycznie)
  • 2.2.3 Upewnij się, że serwer Avahi nie jest zainstalowany (Automatycznie)
  • 2.2.4 Upewnij się, że CUPS nie jest zainstalowane (Automatycznie)
  • 2.2.5 Upewnij się, że serwer DHCP nie jest zainstalowany (Automatycznie)
  • 2.2.6 Upewnij się, że serwer LDAP nie jest zainstalowany (Automatycznie)
  • 2.2.7 Upewnij się, że NFS nie jest zainstalowane (Automatycznie)
  • 2.2.8 Upewnij się, że serwer DNS nie jest zainstalowany (Automatycznie)
  • 2.2.9 Upewnij się, że serwer FTP nie jest zainstalowany (Automatycznie)
  • 2.2.10 Upewnij się, że serwer HTTP nie jest zainstalowany (Automatycznie)
  • 2.2.11 Upewnij się, że serwer IMAP i POP3 nie jest zainstalowany (Automatycznie)
  • 2.2.12 Upewnij się, że Samba nie jest zainstalowana (Automatycznie)
  • 2.2.13 Upewnij się, że serwer proxy HTTP nie jest zainstalowany (Automatycznie)
  • 2.2.14 Upewnij się, że serwer SNMP nie jest zainstalowany (Automatycznie)
  • 2.2.15 Upewnij się, że agent transferu poczty jest skonfigurowany w trybie lokalnym - (Automatycznie)
  • 2.2.16 Upewnij się, że usługa rsync nie jest zainstalowana (Automatycznie)
  • 2.2.17 Upewnij się, że serwer NIS nie jest zainstalowany (Automatycznie)

2.3 Klienci usług

  • 2.3.1 Upewnij się, że klient NIS nie jest zainstalowany (Automatycznie)
  • 2.3.2 Upewnij się, że klient rsh nie jest zainstalowany (Automatycznie)
  • 2.3.3 Upewnij się, że klient talk nie jest zainstalowany (Automatycznie)
  • 2.3.4 Upewnij się, że klient telnet nie jest zainstalowany (Automatycznie)
  • 2.3.5 Upewnij się, że klient LDAP nie jest zainstalowany (Automatycznie)
  • 2.3.6 Upewnij się, że RPC nie jest zainstalowany (Automatycznie)
  • 2.4 Upewnij się, że usługi nieistotne są usunięte lub zmaskowane (Ręcznie)

3 Konfiguracja sieci

  • 3.1 Wyłącz nieużywane protokoły i urządzenia sieciowe
  • 3.1.1 Wyłącz IPv6 (Ręcznie)
  • 3.1.2 Upewnij się, że interfejsy bezprzewodowe są wyłączone (Automatycznie)

3.2 Parametry sieci (Tylko host)

  • 3.2.1 Upewnij się, że wysyłanie przekierowań pakietów jest wyłączone (Automatycznie)
  • 3.2.2 Upewnij się, że przekazywanie IP jest wyłączone (Automatycznie)

3.3 Parametry sieci (Host i router)

  • 3.3.1 Upewnij się, że pakiety z przekierowaniem źródłowym nie są akceptowane (Automatycznie)
  • 3.3.2 Upewnij się, że przekierowania ICMP nie są akceptowane (Automatycznie)
  • 3.3.3 Upewnij się, że bezpieczne przekierowania ICMP nie są akceptowane (Automatycznie)
  • 3.3.4 Upewnij się, że podejrzane pakiety są rejestrowane (Automatycznie)
  • 3.3.5 Upewnij się, że rozgłoszenia ICMP są ignorowane (Automatycznie)
  • 3.3.6 Upewnij się, że fałszywe odpowiedzi ICMP są ignorowane (Automatycznie)
  • 3.3.7 Upewnij się, że filtracja odwrócona jest włączona (Automatycznie)
  • 3.3.8 Upewnij się, że ciasteczka SYN TCP są włączone (Automatycznie)
  • 3.3.9 Upewnij się, że ogłoszenia routera IPv6 nie są akceptowane (Automatycznie)

3.4 Niezwykłe protokoły sieciowe

  • 3.4.1 Upewnij się, że DCCP jest wyłączony (Automatycznie)
  • 3.4.2 Upewnij się, że SCTP jest wyłączony (Automatycznie)
  • 3.4.3 Upewnij się, że RDS jest wyłączony (Automatycznie)
  • 3.4.4 Upewnij się, że TIPC jest wyłączony (Automatycznie)

3.5 Konfiguracja zapory

  • 3.5.1 Konfiguracja UncomplicatedFirewall
  • 3.5.1.1 Upewnij się, że Uncomplicated Firewall jest zainstalowany (Automatycznie)
  • 3.5.1.2 Upewnij się, że iptables-persistent nie jest zainstalowane (Automatycznie)
  • 3.5.1.3 Upewnij się, że usługa ufw jest włączona (Automatycznie)
  • 3.5.1.4 Upewnij się, że ruch pętli zwrotnej jest skonfigurowany (Automatycznie)
  • 3.5.1.5 Upewnij się, że połączenia wychodzące są skonfigurowane (Ręcznie)
  • 3.5.1.6 Upewnij się, że zasady zapory istnieją dla wszystkich otwartych portów (Ręcznie)
  • 3.5.1.7 Upewnij się, że domyślna zasada zapory jest zaprzeczająca (Automatycznie)
  • 3.5.2 Konfiguracja nftables
  • 3.5.2.1 Upewnij się, że nftables jest zainstalowane (Automatycznie)
  • 3.5.2.2 Upewnij się, że Uncomplicated Firewall nie jest zainstalowane lub zostało wyłączone - (Automatycznie)
  • 3.5.2.3 Upewnij się, że iptables są wyczyszczone (Ręcznie)
  • 3.5.2.4 Upewnij się, że tabela istnieje (Automatycznie)
  • 3.5.2.5 Upewnij się, że istnieją podstawowe łańcuchy (Automatycznie)
  • 3.5.2.6 Upewnij się, że ruch pętli zwrotnej jest skonfigurowany (Automatycznie)
  • 3.5.2.7 Upewnij się, że połączenia wychodzące i ustalone są skonfigurowane - (Ręcznie)243
  • 3.5.2.8 Upewnij się, że domyślna zasada zapory jest zaprzeczająca (Automatycznie)
  • 3.5.2.9 Upewnij się, że usługa nftables jest włączona (Automatycznie)
  • 3.5.2.10 Upewnij się, że zasady nftables są trwałe (Automatycznie)
  • 3.5.3 Konfiguracja iptables
  • 3.5.3.1.1 Upewnij się, że pakiety iptables są zainstalowane (Automatycznie)
  • 3.5.3.1.2 Upewnij się, że nftables nie jest zainstalowane (Automatycznie)
  • 3.5.3.1.3 Upewnij się, że Uncomplicated Firewall nie jest zainstalowane lub wyłączone - (Automatycznie)
  • 3.5.3.2.1 Upewnij się, że domyślna zasada zapory jest zaprzeczająca (Automatycznie)
  • 3.5.3.2.2 Upewnij się, że ruch pętli zwrotnej jest skonfigurowany (Automatycznie)
  • 3.5.3.2.3 Upewnij się, że połączenia wychodzące i ustalone są skonfigurowane - (Ręcznie)
  • 3.5.3.2.4 Upewnij się, że zasady zapory istnieją dla wszystkich otwartych portów (Automatycznie)
  • 3.5.3.3.1 Upewnij się, że zasada zapory domyślnej IPv6 jest zaprzeczająca (Automatycznie)
  • 3.5.3.3.2 Upewnij się, że ruch pętli zwrotnej IPv6 jest skonfigurowany (Automatycznie)
  • 3.5.3.3.3 Upewnij się, że połączenia wychodzące i ustalone IPv6 są skonfigurowane (Ręcznie)
  • 3.5.3.3.4 Upewnij się, że zasady zapory IPv6 istnieją dla wszystkich otwartych portów - (Ręcznie)

4 Logowanie i audyt

  • 4.1 Konfiguracja księgowości systemowej (auditd)
  • 4.1.1 Upewnij się, że audyt jest włączony
  • 4.1.1.1 Upewnij się, że auditd jest zainstalowany (Automatycznie)
  • 4.1.1.2 Upewnij się, że usługa auditd jest włączona (Automatycznie)
  • 4.1.1.3 Upewnij się, że audyt dla procesów, które rozpoczynają się przed audytem, jest - włączony (Automatycznie)
  • 4.1.1.4 Upewnij się, że limit zaległości audytu jest wystarczający (Automatycznie)
  • 4.1.2 Skonfiguruj retencję danych
  • 4.1.2.1 Upewnij się, że rozmiar pamięci masowej dziennika audytu jest skonfigurowany (Automatycznie)
  • 4.1.2.2 Upewnij się, że dzienniki audytu nie są automatycznie usuwane (Automatycznie)
  • 4.1.2.3 Upewnij się, że system jest wyłączany, gdy dzienniki audytu są pełne - (Automatycznie)
  • 4.1.3 Upewnij się, że zbierane są zdarzenia, które zmieniają informację o dacie i godzinie - (Automatycznie)
  • 4.1.4 Upewnij się, że zbierane są zdarzenia, które zmieniają informacje o użytkownikach/grupach - (Automatycznie)
  • 4.1.5 Upewnij się, że zbierane są zdarzenia, które zmieniają środowisko sieciowe systemu - (Automatycznie)
  • 4.1.6 Upewnij się, że zbierane są zdarzenia, które zmieniają obowiązkowe kontrole dostępu systemu - (Automatycznie)
  • 4.1.7 Upewnij się, że zbierane są zdarzenia logowania i wylogowywania (Automatycznie)
  • 4.1.8 Upewnij się, że zbierane są informacje o inicjacji sesji (Automatycznie)
  • 4.1.9 Upewnij się, że zbierane są zdarzenia modyfikacji uprawnień kontroli dostępu (Automatycznie)
  • 4.1.10 Upewnij się, że zbierane są nieudane próby nieautoryzowanego dostępu do plików (Automatycznie)
  • 4.1.11 Upewnij się, że zbierane są użycia poleceń z uprawnieniami (Automatycznie)
  • 4.1.12 Upewnij się, że zbierane są udane montowania systemu plików (Automatycznie)
  • 4.1.13 Upewnij się, że zbierane są zdarzenia usuwania plików przez użytkowników (Automatycznie)
  • 4.1.14 Upewnij się, że zbiera się zmiany dotyczące zakresu administracyjnego systemu (sudoers) - (Automatycznie)
  • 4.1.15 Upewnij się, że zbierane są wykonania poleceń administratora systemu (sudo) - (Automatycznie)
  • 4.1.16 Upewnij się, że załadunek i wyładunek modułów jądra są zbierane - (Automatycznie)
  • 4.1.17 Upewnij się, że konfiguracja audytu jest niezmienna (Automatycznie)

4.2 Konfiguracja logowania

  • 4.2.1 Skonfiguruj rsyslog
  • 4.2.1.1 Upewnij się, że rsyslog jest zainstalowany (Automatycznie)
  • 4.2.1.2 Upewnij się, że usługa rsyslog jest włączona (Automatycznie)
  • 4.2.1.3 Upewnij się, że logowanie jest skonfigurowane (Ręcznie)
  • 4.2.1.4 Upewnij się, że domyślne uprawnienia plików rsyslog są skonfigurowane - (Automatycznie)
  • 4.2.1.5 Upewnij się, że rsyslog jest skonfigurowany do wysyłania logów do zdalnego hosta logów (Automatycznie)
  • 4.2.1.6 Upewnij się, że wiadomości rsyslog zdalne są akceptowane tylko na wyznaczonych hostach logów. (Ręcznie)
  • 4.2.2 Skonfiguruj journald
  • 4.2.2.1 Upewnij się, że journald jest skonfigurowany do wysyłania logów do rsyslog - (Automatycznie)
  • 4.2.2.2 Upewnij się, że journald jest skonfigurowany do kompresowania dużych plików dzienników - (Automatycznie)
  • 4.2.2.3 Upewnij się, że journald jest skonfigurowany do zapisywania plików dzienników na trwały dysk (Automatycznie)
  • 4.2.3 Upewnij się, że uprawnienia do wszystkich plików dzienników są skonfigurowane (Automatycznie)
  • 4.3 Upewnij się, że logrotate jest skonfigurowane (Ręcznie)
  • 4.4 Upewnij się, że logrotate przypisuje odpowiednie uprawnienia (Automatycznie)

5 Dostęp, uwierzytelnianie i autoryzacja

  • 5.1 Konfiguracja harmonogramów zadań opartych na czasie
  • 5.1.1 Upewnij się, że demon cron jest włączony i działa (Automatycznie)
  • 5.1.2 Upewnij się, że uprawnienia do /etc/crontab są skonfigurowane (Automatycznie)
  • 5.1.3 Upewnij się, że uprawnienia do /etc/cron.hourly są skonfigurowane - (Automatycznie)
  • 5.1.4 Upewnij się, że uprawnienia do /etc/cron.daily są skonfigurowane - (Automatycznie)
  • 5.1.5 Upewnij się, że uprawnienia do /etc/cron.weekly są skonfigurowane - (Automatycznie)
  • 5.1.6 Upewnij się, że uprawnienia do /etc/cron.monthly są skonfigurowane - (Automatycznie)
  • 5.1.7 Upewnij się, że uprawnienia do /etc/cron.d są skonfigurowane (Automatycznie)
  • 5.1.8 Upewnij się, że cron jest ograniczony do autoryzowanych użytkowników (Automatycznie)
  • 5.1.9 Upewnij się, że at jest ograniczony do autoryzowanych użytkowników (Automatycznie)

5.2 Konfiguracja serwera SSH

  • 5.2.1 Upewnij się, że uprawnienia do /etc/ssh/sshd_config są skonfigurowane - (Automatycznie)
  • 5.2.2 Upewnij się, że uprawnienia do prywatnych kluczy hosta SSH są - skonfigurowane (Automatycznie)
  • 5.2.3 Upewnij się, że uprawnienia do publicznych kluczy hosta SSH są skonfigurowane - (Automatycznie)
  • 5.2.4 Upewnij się, że poziom logowania SSH jest odpowiedni (Automatycznie)
  • 5.2.5 Upewnij się, że przekazywanie X11 SSH jest wyłączone (Automatycznie)
  • 5.2.6 Upewnij się, że SSH MaxAuthTries jest ustawione na 4 lub mniej (Automatycznie)
  • 5.2.7 Upewnij się, że SSH IgnoreRhosts jest włączone (Automatycznie)
  • 5.2.8 Upewnij się, że uwierzytelnianie oparte na hoście SSH jest wyłączone (Automatycznie)
  • 5.2.9 Upewnij się, że logowanie roota przez SSH jest wyłączone (Automatycznie)
  • 5.2.10 Upewnij się, że SSH PermitEmptyPasswords jest wyłączone (Automatycznie)
  • 5.2.11 Upewnij się, że SSH PermitUserEnvironment jest wyłączone (Automatycznie)
  • 5.2.12 Upewnij się, że używane są tylko silne algorytmy szyfrowania (Automatycznie)
  • 5.2.13 Upewnij się, że używane są tylko silne algorytmy MAC (Automatycznie)
  • 5.2.14 Upewnij się, że używane są tylko silne algorytmy wymiany kluczy - (Automatycznie)
  • 5.2.15 Upewnij się, że jest skonfigurowany interwał timeout SSH (Automatycznie)
  • 5.2.16 Upewnij się, że SSH LoginGraceTime jest ustawione na minutę lub mniej - (Automatycznie)
  • 5.2.17 Upewnij się, że dostęp SSH jest ograniczony (Automatycznie)
  • 5.2.18 Upewnij się, że baner ostrzegawczy SSH jest skonfigurowany (Automatycznie)
  • 5.2.19 Upewnij się, że SSH PAM jest włączone (Automatycznie)
  • 5.2.20 Upewnij się, że SSH AllowTcpForwarding jest wyłączone (Automatycznie)
  • 5.2.21 Upewnij się, że SSH MaxStartups jest skonfigurowane (Automatycznie)
  • 5.2.22 Upewnij się, że SSH MaxSessions jest ograniczone (Automatycznie)

5.3 Konfiguracja PAM

  • 5.3.1 Upewnij się, że wymagania dotyczące tworzenia haseł są skonfigurowane - (Automatycznie)
  • 5.3.2 Upewnij się, że zablokowanie nieudanych prób hasła jest skonfigurowane - (Automatycznie)
  • 5.3.3 Upewnij się, że następujące odpady haseł są ograniczone (Automatycznie)
  • 5.3.4 Upewnij się, że algorytm haszujący hasła to SHA-512 (Automatycznie)

5.4 Konta użytkowników i środowisko

  • 5.4.1 Ustawienia parametrów pakietu Shadow
  • 5.4.1.1 Upewnij się, że wygaśnięcie hasła wynosi 365 dni lub mniej (Automatycznie)
  • 5.4.1.2 Upewnij się, że dni minimalne między zmianami hasła są skonfigurowane - (Automatycznie)
  • 5.4.1.3 Upewnij się, że dni ostrzeżenia przed wygaszeniem hasła wynoszą 7 lub więcej - (Automatycznie)
  • 5.4.1.4 Upewnij się, że zablokowanie hasła przez nieaktywność wynosi 30 dni lub mniej (Automatycznie)
  • 5.4.1.5 Upewnij się, że data ostatniej zmiany hasła wszystkich użytkowników jest w przeszłości - (Automatycznie)
  • 5.4.2 Upewnij się, że konta systemowe są zabezpieczone (Automatycznie)
  • 5.4.3 Upewnij się, że domyślna grupa dla konta root to GID 0 (Automatycznie)
  • 5.4.4 Upewnij się, że domyślny umask użytkownika to 027 lub bardziej restrykcyjny - (Automatycznie)
  • 5.4.5 Upewnij się, że domyślny timeout powłoki użytkownika wynosi 900 sekund lub mniej - (Automatycznie)
  • 5.5 Upewnij się, że logowanie roota jest ograniczone do konsoli systemowej (Ręcznie)
  • 5.6 Upewnij się, że dostęp do polecenia su jest ograniczony (Automatycznie)

6 Utrzymanie systemu

  • 6.1 Uprawnienia plików systemowych
  • 6.1.1 Audyt uprawnień plików systemowych (Ręcznie)
  • 6.1.2 Upewnij się, że uprawnienia do /etc/passwd są skonfigurowane (Automatycznie)
  • 6.1.3 Upewnij się, że uprawnienia do /etc/gshadow są skonfigurowane (Automatycznie)
  • 6.1.4 Upewnij się, że uprawnienia do /etc/shadow są skonfigurowane (Automatycznie)
  • 6.1.5 Upewnij się, że uprawnienia do /etc/group są skonfigurowane (Automatycznie)
  • 6.1.6 Upewnij się, że uprawnienia do /etc/passwd- są skonfigurowane (Automatycznie)
  • 6.1.7 Upewnij się, że uprawnienia do /etc/shadow- są skonfigurowane (Automatycznie)
  • 6.1.8 Upewnij się, że uprawnienia do /etc/group- są skonfigurowane (Automatycznie)
  • 6.1.9 Upewnij się, że uprawnienia do /etc/gshadow są skonfigurowane (Automatycznie)
  • 6.1.10 Upewnij się, że nie istnieją pliki zapisywalne przez wszystkich (Automatycznie)
  • 6.1.11 Upewnij się, że nie istnieją pliki ani katalogi bez właścicieli (Automatycznie)
  • 6.1.12 Upewnij się, że nie istnieją pliki ani katalogi bez grup (Automatycznie)
  • 6.1.13 Audyt wykonywalnych SUID (Ręcznie)
  • 6.1.14 Audyt wykonywalnych SGID (Ręcznie)

6.2 Ustawienia użytkowników i grup

  • 6.2.1 Upewnij się, że pola haseł nie są puste (Automatycznie)
  • 6.2.2 Upewnij się, że root jest jedynym kontem UID 0 (Automatycznie)
  • 6.2.3 Upewnij się, że integralność ROOT PATH jest zachowana (Automatycznie)
  • 6.2.4 Upewnij się, że katalogi domowe wszystkich użytkowników istnieją (Automatycznie)
  • 6.2.5 Upewnij się, że uprawnienia katalogów domowych użytkowników wynoszą 750 lub są bardziej restrykcyjne (Automatycznie)
  • 6.2.6 Upewnij się, że użytkownicy są właścicielami swoich katalogów domowych (Automatycznie)
  • 6.2.7 Upewnij się, że pliki kropkowe użytkowników nie są zapisywalne przez grupę lub wszystkich (Automatycznie)
  • 6.2.8 Upewnij się, że żaden użytkownik nie ma plików .forward (Automatycznie)
  • 6.2.9 Upewnij się, że żaden użytkownik nie ma plików .netrc (Automatycznie)
  • 6.2.10 Upewnij się, że pliki .netrc użytkowników nie są dostępne dla grupy lub wszystkich (Automatycznie)
  • 6.2.11 Upewnij się, że żaden użytkownik nie ma plików .rhosts (Automatycznie)
  • 6.2.12 Upewnij się, że wszystkie grupy w /etc/passwd istnieją w /etc/group - (Automatycznie)
  • 6.2.13 Upewnij się, że nie istnieją duplikaty UID (Automatycznie)
  • 6.2.14 Upewnij się, że nie istnieją duplikaty GID (Automatycznie)
  • 6.2.15 Upewnij się, że nie istnieją duplikaty nazw użytkowników (Automatycznie)
  • 6.2.16 Upewnij się, że nie istnieją duplikaty nazw grup (Automatycznie)
  • 6.2.17 Upewnij się, że grupa shadow jest pusta (Automatycznie)

Rozwiązywanie problemów

  • Jeśli chcesz uruchomić playbook na tej samej maszynie, upewnij się, że dodasz to do zadania uruchamiającego:
- hosts: 127.0.0.1
  connection: local
  • Jeśli napotkałeś problem z wykonywaniem, spróbuj uruchomić playbook w innej ścieżce, takiej jak /srv/.
  • W przypadku błędu takiego jak stderr: chage: user 'ubuntu' does not exist in /etc/passwd, upewnij się, że zaktualizujesz konfigurację w CIS-Ubuntu-20.04-Ansible/defaults/main.yml
TASK [CIS-Ubuntu-20.04-Ansible : 1.4.1 Upewnij się, że AIDE jest zainstalowane] ***********************************************************************************************************************************************************************************************************fatal: [192.168.80.129]: FAILED! => {"cache_update_time": 1611229159, "cache_updated": false, "changed": false, "msg": "'/usr/bin/apt-get -y -o \"Dpkg::Options::=--force-confdef\" -o \"Dpkg::Options::=--force-confold\"      install 'nullmailer' 'aide-common' 'aide' -o APT::Install-Recommends=no' failed: E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 5194 (unattended-upgr)\nE: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?\n", "rc": 100, "stderr": "E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 5194 (unattended-upgr)\nE: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?\n", "stderr_lines": ["E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 5194 (unattended-upgr)", "E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?"], "stdout": "", "stdout_lines": []}
  • W przypadku powyższego błędu musisz upewnić się, że nie ma działającego procesu apt w tle lub musisz poczekać, aż apt zakończy swoje działanie.
TASK [CIS-Ubuntu-20.04-Ansible : 5.4.1.1 Upewnij się, że wygaśnięcie hasła wynosi 365 dni lub mniej | chage] ***************************************************************************************************************************************************************************failed: [192.168.80.129] (item=ubuntu) => {"ansible_loop_var": "item", "changed": true, "cmd": ["chage", "--maxdays", "300", "ubuntu"], "delta": "0:00:00.005478", "end": "2021-01-21 12:49:45.463615", "item": "ubuntu", "msg": "non-zero return code", "rc": 1, "start": "2021-01-21 12:49:45.458137", "stderr": "chage: user 'ubuntu' does not exist in /etc/passwd", "stderr_lines": ["chage: user 'ubuntu' does not exist in /etc/passwd"], "stdout": "", "stdout_lines": []}
  • Upewnij się, że ustawiłeś właściwego użytkownika w pliku defaults/main.yaml
TASK [CIS-Ubuntu-20.04-Ansible : Tworzenie użytkowników bez dostępu administracyjnego] ***************************************************************************************************************
fatal: [golden]: FAILED! => {"msg": "crypt.crypt not supported on Mac OS X/Darwin, install passlib python module"}

Zainstaluj pip install passlib


Licencja

GNU GENERAL PUBLIC LICENSE

Informacje o autorze

Rola była pierwotnie rozwijana przez Ali Saleh Baker.

Gdy chcesz przyczynić się do tego repozytorium, najpierw proszę omówić zmianę, którą chcesz wprowadzić, za pomocą problemu na GitHubie, e-mailem lub za pomocą innych kanałów ze mną :)

Zainstaluj
ansible-galaxy install alivx.cis_ubuntu_20_04_ansible
Licencja
gpl-3.0
Pobrania
402
Właściciel
Everything