kmonticolo.ansible_os_hardening

os-härtung (Ansible Rolle)

Build-Status Gitter Chat Ansible Galaxy

Beschreibung

Diese Rolle bietet zahlreiche sicherheitsrelevante Konfigurationen und sorgt für umfassenden Basisschutz. Sie soll mit den DevSec Linux Baseline konform sein.

Sie konfiguriert:

  • Paketmanagement, z.B. nur signierte Pakete erlauben
  • Entfernen von Paketen mit bekannten Sicherheitsproblemen
  • Konfiguration des pam und pam_limits Moduls
  • Konfiguration der Shadow-Passwort-Suite
  • Berechtigungen für Systempfade konfigurieren
  • Deaktivieren von Core Dumps über weiche Limits
  • Eingeschränkte Root-Logins auf die Systemkonsole
  • SUIDs setzen
  • Kernelparameter über sysctl konfigurieren
  • Installieren und Konfigurieren von auditd

Es wird nicht:

  • Systempakete aktualisieren
  • Sicherheitsupdates installieren

Voraussetzungen

  • Ansible 2.5.0

Warnung

Wenn Sie Inspec verwenden, um Ihre Maschinen nach der Anwendung dieser Rolle zu testen, stellen Sie bitte sicher, dass der verbindende Benutzer zur Variable os_ignore_users hinzugefügt wird. Ansonsten wird Inspec fehlschlagen. Weitere Informationen finden Sie in Issue #124.

Wenn Sie Docker / Kubernetes+Docker verwenden, müssen Sie die sysctl-Einstellung für IPv4-Weiterleitung überschreiben.

- hosts: localhost
  roles:
    - dev-sec.os-hardening
  vars:
    sysctl_overwrite:
      # Aktivieren Sie die IPv4-Weiterleitung.
      net.ipv4.ip_forward: 1

Variablen

Name Standardwert Beschreibung
os_desktop_enable false true, wenn es sich um ein Desktop-System handelt, z.B. Xorg, KDE/GNOME/Unity/etc.
os_env_extra_user_paths [] zusätzliche Pfade zur PATH-Variable des Benutzers hinzufügen (standardmäßig leer).
os_env_umask 027 standardmäßige Berechtigungen für neue Dateien auf 750 setzen
os_auth_pw_max_age 60 maximale Passwortgültigkeit (auf 99999 setzen, um sie effektiv zu deaktivieren)
os_auth_pw_min_age 7 minimale Passwortgültigkeit (bevor eine andere Passwortänderung erlaubt ist)
os_auth_retries 5 maximale Anzahl von Authentifizierungsversuchen, bevor das Konto für einige Zeit gesperrt wird
os_auth_lockout_time 600 Zeit in Sekunden, die vergehen muss, wenn das Konto aufgrund zu vieler fehlgeschlagener Authentifizierungsversuche gesperrt wurde
os_auth_timeout 60 Authentifizierungs-Timeout in Sekunden, damit die Anmeldung abgebrochen wird, wenn diese Zeit abläuft
os_auth_allow_homeless false true, wenn Benutzer ohne Heimatverzeichnis sich anmelden dürfen
os_auth_pam_passwdqc_enable true true, wenn Sie starke Passwortprüfung in PAM mit passwdqc verwenden möchten
os_auth_pam_passwdqc_options "min=disabled,disabled,16,12,8" Optionen für passwdqc festlegen
os_security_users_allow [] Liste der Dinge, die ein Benutzer tun darf. Kann change_user enthalten.
os_security_kernel_enable_module_loading true true, wenn es erlaubt sein soll, Kernelmodule während des Betriebs zu ändern (z.B. modprobe, rmmod)
os_security_kernel_enable_core_dump false Kernel stürzt ab oder verhält sich sonst falsch und ein Kernel-Core-Dump wird erstellt
os_security_suid_sgid_enforce true true, wenn SUID/SGID-Bits reduziert werden sollen. Es gibt bereits eine Liste von Elementen, die gesucht werden, aber Sie können auch Ihre eigenen hinzufügen
os_security_suid_sgid_blacklist [] Liste von Pfaden, bei denen die SUID/SGID-Bits entfernt werden sollen
os_security_suid_sgid_whitelist [] Liste von Pfaden, bei denen die SUID/SGID-Bits nicht geändert werden dürfen
os_security_suid_sgid_remove_from_unknown false true, wenn Sie SUID/SGID-Bits von Dateien entfernen möchten, die nicht ausdrücklich in einer blacklist konfiguriert sind. Dies lässt jede Ansible-Ausführung durch die gemounteten Dateisysteme suchen, um konfigurationsunterstützende SUID/SGID-Bits zu finden.
os_security_packages_clean true entfernt Pakete mit bekannten Problemen. Siehe Abschnitt Pakete.
ufw_manage_defaults true true bedeutet, dass alle Einstellungen mit dem ufw_-Präfix angewendet werden
ufw_ipt_sysctl '' Deaktiviert standardmäßig IPT_SYSCTL in /etc/default/ufw. Wenn Sie Werte in /etc/sysctl.conf mit ufw überschreiben möchten, setzen Sie es auf Ihr sysctl-Dictionary, z.B. /etc/ufw/sysctl.conf
ufw_default_input_policy DROP Setzt die Standard-Eingabepolitik von ufw auf DROP
ufw_default_output_policy ACCEPT Setzt die Standard-Ausgabepolitik von ufw auf ACCEPT
ufw_default_forward_policy DROP Setzt die Standard-Weiterleitungsrichtlinie von ufw auf DROP
os_auditd_enabled true Auf false setzen, um die Installation und Konfiguration von auditd zu deaktivieren.

Pakete

Wir entfernen die folgenden Pakete:

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

Deaktivierte Dateisysteme

Wir deaktivieren die folgenden Dateisysteme, da sie höchstwahrscheinlich nicht verwendet werden:

  • "cramfs"
  • "freevxfs"
  • "jffs2"
  • "hfs"
  • "hfsplus"
  • "squashfs"
  • "udf"
  • "vfat" # nur wenn UEFI nicht verwendet wird

Um zu verhindern, dass einige der Dateisysteme deaktiviert werden, fügen Sie sie zur Variable os_filesystem_whitelist hinzu.

Installation

Die Rolle mit ansible-galaxy installieren:

ansible-galaxy install dev-sec.os-hardening

Beispiel-Playbook

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

Ändern von Sysctl-Variablen

Wenn Sie Sysctl-Variablen überschreiben möchten, können Sie die Variable sysctl_overwrite verwenden (in früheren Versionen mussten Sie das gesamte sysctl_dict überschreiben). Wenn Sie beispielsweise die IPv4-Weiterleitungsvariable auf 1 ändern möchten, machen Sie es so:

- hosts: localhost
  roles:
    - dev-sec.os-hardening
  vars:
    sysctl_overwrite:
      # Aktivieren der IPv4-Weiterleitung.
      net.ipv4.ip_forward: 1

Alternativ können Sie das Hash-Verhalten von Ansible auf merge ändern, dann müssen Sie nur den einzelnen Hash überschreiben, den Sie benötigen. Bitte beachten Sie jedoch, dass sich eine Änderung des Hash-Verhaltens auf alle Ihre Playbooks auswirkt und von Ansible nicht empfohlen wird.

Lokale Tests

Die bevorzugte Methode, um die Rolle lokal zu testen, besteht darin, Docker zu verwenden. Sie müssen Docker auf Ihrem System installieren. Siehe Erste Schritte für ein passendes Docker-Paket für Ihr System.

Sie können auch Vagrant und Virtualbox oder VMWare verwenden, um Tests lokal auszuführen. Sie müssen Virtualbox und Vagrant auf Ihrem System installieren. Siehe Vagrant Downloads für ein passendes Vagrant-Paket für Ihr System. Für all unsere Tests verwenden wir test-kitchen. Wenn Sie mit test-kitchen nicht vertraut sind, schauen Sie sich bitte ihren Leitfaden an.

Installieren Sie anschließend test-kitchen:

# Abhängigkeiten installieren
gem install bundler
bundle install

Tests mit Docker

# schneller Test auf einer Maschine
bundle exec kitchen test default-ubuntu-1404

# Test auf allen Maschinen
bundle exec kitchen test

# für die Entwicklung
bundle exec kitchen create default-ubuntu-1404
bundle exec kitchen converge default-ubuntu-1404

Tests mit Virtualbox

# schneller Test auf einer Maschine
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test default-ubuntu-1404

# Test auf allen Maschinen
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen test

# für die Entwicklung
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen create default-ubuntu-1404
KITCHEN_YAML=".kitchen.vagrant.yml" bundle exec kitchen converge default-ubuntu-1404

Für weitere Informationen siehe test-kitchen

Mitwirkende + Dank

...

Diese Rolle basiert hauptsächlich auf Leitfäden von:

Danke an alle!

Mitwirken

Siehe Mitwirkendenrichtlinie.

Lizenz und Autor

  • Autor:: Sebastian Gumprich

Lizenziert unter der Apache License, Version 2.0 (die "Lizenz"); Sie dürfen diese Datei nicht verwenden, es sei denn, dies geschieht im Einklang mit der Lizenz. Sie können eine Kopie der Lizenz unter folgender Adresse erhalten:

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

Sofern nicht gesetzlich vorgeschrieben oder in schriftlicher Vereinbarung vorgesehen, wird die unter der Lizenz vertriebene Software "WIE BESEHEN" bereitgestellt, OHNE GARANTIEN ODER BEDINGUNGEN IRGENDEHER, weder ausdrücklich noch stillschweigend. Siehe die Lizenz für die spezifischen Rechte und Einschränkungen.

Über das Projekt

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

Installieren
ansible-galaxy install kmonticolo.ansible_os_hardening
GitHub Repository
Lizenz
Unknown
Downloads
72
Besitzer
DevSecOps Engineer