kmonticolo.ansible_os_hardening

os-hardening (Rola Ansible)

Status Budowy Czat Gitter Ansible Galaxy

Opis

Ta rola zapewnia liczne konfiguracje związane z bezpieczeństwem, oferując kompleksową ochronę podstawową. Ma być zgodna z Zasadami Bezpieczeństwa Linux DevSec.

Zawiera konfigurację:

  • Konfiguracja zarządzania pakietami, np. pozwala tylko na podpisane pakiety
  • Usuwanie pakietów z znanymi problemami
  • Konfiguracja modułu pam i pam_limits
  • Konfiguracja zestawu haseł Shadow
  • Konfiguracja uprawnień systemowych
  • Wyłączenie zrzutów rdzeniowych za pomocą ograniczeń
  • Ograniczenie logowania roota do konsoli systemowej
  • Ustawienie SUID
  • Konfiguracja parametrów jądra za pomocą sysctl
  • Instalacja i konfiguracja auditd

Nie będzie:

  • Aktualizować pakietów systemowych
  • Instalować poprawek bezpieczeństwa

Wymagania

  • Ansible 2.5.0

Ostrzeżenie

Jeśli używasz inspec do testowania swoich maszyn po zastosowaniu tej roli, upewnij się, że dodałeś użytkownika łączącego do zmiennej os_ignore_users. W przeciwnym razie inspec zakończy się niepowodzeniem. Więcej informacji można znaleźć w problemie #124.

Jeśli używasz Docker/Kubernetes+Docker, musisz nadpisać ustawienie przekazywania ip4 w sysctl.

- hosts: localhost
  roles:
    - dev-sec.os-hardening
  vars:
    sysctl_overwrite:
      # Włącz przekazywanie ruchu IPv4.
      net.ipv4.ip_forward: 1

Zmienne

Nazwa Wartość domyślna Opis
os_desktop_enable false true, jeśli to jest system desktopowy, tj. Xorg, KDE/GNOME/Unity itd.
os_env_extra_user_paths [] dodaj dodatkowe ścieżki do zmiennej PATH użytkownika (domyślnie pusta).
os_env_umask 027 ustawia domyślne uprawnienia dla nowych plików na 750
os_auth_pw_max_age 60 maksymalny wiek hasła (ustawienie na 99999 praktycznie je wyłącza)
os_auth_pw_min_age 7 minimalny wiek hasła (przed zezwoleniem na zmianę innego hasła)
os_auth_retries 5 maksymalna liczba prób uwierzytelnienia, zanim konto zostanie zablokowane na pewien czas
os_auth_lockout_time 600 czas w sekundach, który musi minąć, jeśli konto zostało zablokowane z powodu zbyt wielu nieudanych prób uwierzytelnienia
os_auth_timeout 60 limit czasu na uwierzytelnienie w sekundach, więc logowanie zakończy się, jeśli ten czas minie
os_auth_allow_homeless false true, jeśli zezwala się użytkownikom bez katalogu domowego na logowanie
os_auth_pam_passwdqc_enable true true, jeśli chcesz używać silnej kontroli haseł w PAM za pomocą passwdqc
os_auth_pam_passwdqc_options "min=disabled,disabled,16,12,8" ustaw na dowolną opcję (jako ciąg), którą chcesz przekazać do passwdqc
os_security_users_allow [] lista rzeczy, które użytkownik może robić. Może zawierać change_user.
os_security_kernel_enable_module_loading true true, jeśli chcesz zezwolić na zmianę modułów jądra, gdy system działa (np. modprobe, rmmod)
os_security_kernel_enable_core_dump false jądro zawiesiło się lub inaczej źle działa, a zrzut rdzenia jądra jest tworzony
os_security_suid_sgid_enforce true true, jeśli chcesz ograniczyć bity SUID/SGID. Istnieje już lista elementów, które są wyszukiwane w konfiguracji, ale możesz dodać własne
os_security_suid_sgid_blacklist [] lista ścieżek, z których powinny zostać usunięte bity SUID/SGID
os_security_suid_sgid_whitelist [] lista ścieżek, których bity SUID/SGID nie powinny być zmieniane
os_security_suid_sgid_remove_from_unknown false true, jeśli chcesz usunąć bity SUID/SGID z dowolnego pliku, który nie jest wyraźnie skonfigurowany w czarnej liście. To sprawi, że każda operacja Ansible przeszuka zamontowane systemy plików w poszukiwaniu bitów SUID/SGID, które nie są skonfigurowane w domyślnej i użytkownika czarnej liście. Jeśli znajdzie bit SUID/SGID, zostanie usunięty, chyba że ten plik znajduje się na twojej białej liście.
os_security_packages_clean true usuwa pakiety z znanymi problemami. Zobacz sekcję pakietów.
ufw_manage_defaults true true oznacza zastosowanie wszystkich ustawień z prefiksem ufw_
ufw_ipt_sysctl '' domyślnie wyłącza IPT_SYSCTL w /etc/default/ufw. Jeśli chcesz nadpisać wartości /etc/sysctl.conf używając ufw - ustaw na słownik sysctl, na przykład /etc/ufw/sysctl.conf
ufw_default_input_policy DROP ustaw domyślną politykę wejściową ufw na DROP
ufw_default_output_policy ACCEPT ustaw domyślną politykę wyjściową ufw na ACCEPT
ufw_default_forward_policy DROP ustaw domyślną politykę przekazywania ufw na DROP
os_auditd_enabled true Ustaw na false, aby wyłączyć instalację i konfigurację auditd.

Pakiety

Usuwamy następujące pakiety:

  • xinetd (NSA, Rozdział 3.2.1)
  • inetd (NSA, Rozdział 3.2.1)
  • tftp-server (NSA, Rozdział 3.2.5)
  • ypserv (NSA, Rozdział 3.2.4)
  • telnet-server (NSA, Rozdział 3.2.2)
  • rsh-server (NSA, Rozdział 3.2.3)
  • prelink (open-scap)

Wyłączone systemy plików

Wyłączamy następujące systemy plików, ponieważ najprawdopodobniej nie są używane:

  • "cramfs"
  • "freevxfs"
  • "jffs2"
  • "hfs"
  • "hfsplus"
  • "squashfs"
  • "udf"
  • "vfat" # tylko jeśli nie używasz uefi

Aby zapobiec wyłączeniu niektórych systemów plików, dodaj je do zmiennej os_filesystem_whitelist.

Instalacja

Zainstaluj rolę za pomocą Ansible Galaxy:

ansible-galaxy install dev-sec.os-hardening

Przykładowy plik uruchomieniowy

- hosts: localhost
  roles:
    - dev-sec.os-hardening

Zmiana zmiennych sysctl

Jeśli chcesz nadpisać zmienne sysctl, możesz użyć zmiennej sysctl_overwrite (w starszych wersjach musiałeś nadpisać cały sysctl_dict). Na przykład, jeśli chcesz zmienić zmienną przekazywania ruchu IPv4 na 1, zrób to w ten sposób:

- hosts: localhost
  roles:
    - dev-sec.os-hardening
  vars:
    sysctl_overwrite:
      # Włącz przekazywanie ruchu IPv4.
      net.ipv4.ip_forward: 1

Alternatywnie możesz zmienić hash-behaviour Ansible'a na merge, wtedy musisz nadpisać tylko pojedynczy hash, który potrzebujesz. Pamiętaj jednak, że zmiana zachowania haszu zmienia je dla wszystkich twoich plików uruchomieniowych i nie jest zalecana przez Ansible.

Lokal testing

Preferowanym sposobem lokalnego testowania roli jest użycie Docker. Musisz zainstalować Docker na swoim systemie. Zobacz Rozpocznij aby znaleźć odpowiedni pakiet Docker dla swojego systemu.

Możesz także używać Vagranta i Virtualbox lub VMWare do przeprowadzenia testów lokalnych. Musisz zainstalować Virtualbox i Vagranta na swoim systemie. Zobacz Pobieranie Vagranta aby znaleźć odpowiedni pakiet Vagrant dla swojego systemu. Do wszystkich naszych testów używamy test-kitchen. Jeśli nie jesteś zaznajomiony z test-kitchen, zapoznaj się z ich przewodnikiem.

Następnie zainstaluj test-kitchen:

# Zainstaluj zależności
gem install bundler
bundle install

Testowanie z Docker

# szybki test na jednej maszynie
bundle exec kitchen test default-ubuntu-1404

# test na wszystkich maszynach
bundle exec kitchen test

# do rozwoju
bundle exec kitchen create default-ubuntu-1404
bundle exec kitchen converge default-ubuntu-1404

Testowanie z Virtualbox

# szybki test na jednej maszynie
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test default-ubuntu-1404

# test na wszystkich maszynach
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test

# do rozwoju
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen create default-ubuntu-1404
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen converge default-ubuntu-1404

Więcej informacji znajdziesz w test-kitchen

Współtwórcy + Podziękowania

...

Ta rola opiera się głównie na przewodnikach:

Dzięki wszystkim!

Współpraca

Zobacz wytyczne dla współuczestników.

Licencja i autor

  • Autor:: Sebastian Gumprich

Licencjonowane na podstawie Licencji Apache, Wersja 2.0 (zwana dalej „Licencją”); nie możesz używać tego pliku, z wyjątkiem zgodnie z Warunkami Licencji. Możesz uzyskać kopię Licencji pod adresem

http://www.apache.org/licenses/LICENSE-2.0

Z wyjątkiem wymagań wynikających z obowiązującego prawa lub uzgodnienia na piśmie, oprogramowanie dostarczane na podstawie Licencji jest dostarczane na zasadzie „TAK JAK JEST”, BEZ GWARANCJI ANI WARUNKÓW JAKIEGOKOLWIEK RODZAJU, wyrażonych lub domniemanych. Zobacz Licencję w celu szczegółowych warunków dotyczących uprawnień i ograniczeń wynikających z Licencji.

O projekcie

This role provides numerous security-related configurations, providing all-round base protection.

Zainstaluj
ansible-galaxy install kmonticolo.ansible_os_hardening
Licencja
Unknown
Pobrania
72
Właściciel
DevSecOps Engineer