alivx.cis_ubuntu_20_04_ansible

Ansible CIS Ubuntu 20.04 LTS Härteoptimierung V1.1.0 Neueste 
CIS gehärtetes Ubuntu: Schutz vor Cyberangriffen und Malware für geschäftskritische Systeme. CIS-Benchmarks sichern Ihre Systeme, indem sie folgendes entfernen:
- unsichere Programme.
- nicht verwendete Dateisysteme deaktivieren.
- unnötige Ports oder Dienste deaktivieren.
- privilegierte Vorgänge prüfen.
- administrative Berechtigungen einschränken.
CIS-Benchmark-Empfehlungen werden in virtuellen Maschinen in öffentlichen und privaten Clouds übernommen. Sie werden auch verwendet, um lokale Bereitstellungen zu sichern. Für einige Branchen ist die Härtung eines Systems gemäß einem allgemein anerkannten Standard ein Kriterium, das Prüfer suchen. CIS-Benchmarks sind oft eine empfohlene Wahl für das Härtungsverfahren von Prüfern in Branchen, die PCI-DSS- und HIPAA-Konformität erfordern, wie z.B. im Bankwesen, in der Telekommunikation und im Gesundheitswesen. Wenn Sie versuchen, die Konformität mit einem branchenweit anerkannten Sicherheitsstandard wie PCI DSS, APRA oder ISO 27001 zu erreichen, müssen Sie nachweisen, dass Sie dokumentierte Härtungsstandards auf alle Systeme innerhalb des Prüfumfangs angewendet haben.
Die Ubuntu CIS-Benchmarks sind in verschiedene Profile organisiert, nämlich „Level 1“ und „Level 2“, die für Server- und Arbeitsumgebungen gedacht sind.
Ein Level 1-Profil ist eine praktische und vorsichtige Möglichkeit, ein System mit minimalen Auswirkungen auf die Leistung abzusichern.
- Deaktivierung nicht benötigter Dateisysteme,
- Einschränkung von Benutzerberechtigungen zu Dateien und Verzeichnissen,
- Deaktivierung nicht benötigter Dienste.
- Konfiguration von Netzwerkfirewalls.
Ein Level 2-Profil wird verwendet, wenn Sicherheit als sehr wichtig erachtet wird und dies negative Auswirkungen auf die Systemleistung haben kann.
- Erstellung separater Partitionen,
- Prüfung privilegierter Vorgänge
Das Ubuntu CIS-Härtungswerkzeug ermöglicht es Ihnen, das gewünschte Niveau der Härtung basierend auf einem Profil (Level 1 oder Level 2) und der Arbeitsumgebung (Server oder Arbeitsstation) für ein System auszuwählen. Beispiel:
ansible-playbook -i inventory cis-ubuntu-20.yaml --tags="level_1_server"
Sie können alle Tags auflisten, indem Sie den folgenden Befehl ausführen:
ansible-playbook -i host run.yaml --list-tags
Ich habe alle Rollen basierend auf dem
CIS Ubuntu Linux 20.04 LTS Benchmark
v1.1.0 - 07-21-2020
Überprüfen Sie das Beispielverzeichnis
Anforderungen
Sie sollten die Aufgaben sorgfältig lesen, um sicherzustellen, dass diese Änderungen Ihre Systeme nicht bremsen, bevor Sie dieses Playbook ausführen.
Sie können das kostenlose CIS-Benchmark-Buch von dieser URL herunterladen. Kostenloses Benchmark
Um mit dieser Rolle zu arbeiten, müssen Sie lediglich Ansible installieren. Ansible installieren
Rollenvariablen
Sie müssen die gesamte Standardkonfiguration überprüfen, bevor Sie dieses Playbook ausführen. Es gibt viele Rollenvariablen, die in defaults/main.yml definiert sind.
- Wenn Sie in Erwägung ziehen, diese Rolle auf Servern anzuwenden, sollten Sie ein grundlegendes Verständnis für den CIS-Benchmark haben und die Auswirkungen, die er auf ein System haben kann, zu schätzen wissen.
- Lesen und ändern Sie konfigurierbare Standardwerte.
Beispiele für Konfigurationen, die sofort in Betracht gezogen werden sollten: 5.1.8 Sicherstellen, dass Cron auf autorisierte Benutzer beschränkt ist und 5.2.17 Sicherstellen, dass SSH-Zugriff beschränkt ist, was standardmäßig den Zugriff auf den Host effektiv einschränkt (einschließlich über ssh).
Zum Beispiel:
- CIS-Ubuntu-20.04-Ansible/defaults/main.yml
# Abschnitt 5
# 5.1.8 Sicherstellen, dass Cron auf autorisierte Benutzer beschränkt ist
allowed_hosts: "ALL: 0.0.0.0/0.0.0.0, 192.168.2.0/255.255.255.0"
# 5.2.17 Sicherstellen, dass SSH-Zugriff beschränkt ist
allowed_users: ali saleh baker root # Geben Sie None oder eine Liste von Benutzern ein, die durch Leerzeichen getrennt sind
Wenn Sie Dateivorlagen ändern müssen, finden Sie diese unter files/templates/*
.
Abhängigkeiten
- Ansible-Version > 2.9
Beispiel-Playbook
Hier ist ein Beispiel für ein Playbook:
---
- hosts: host1
become: yes
remote_user: root
gather_facts: no
roles:
- { role: "CIS-Ubuntu-20.04-Ansible",}
Alle ausführen
Wenn Sie alle Tags ausführen möchten, verwenden Sie den folgenden Befehl:
ansible-playbook -i [inventoryfile] [playbook].yaml
Bestimmten Abschnitt ausführen
ansible-playbook -i host run.yaml -t section2
Mehrere Abschnitte ausführen
ansible-playbook -i host run.yaml -t section2 -t 6.1.1
Hinweis: Wenn Sie eine einzelne Aufgabe ausführen, stellen Sie sicher, dass Sie die Abhängigkeiten zwischen den Aufgaben beachten. Wenn Sie das Tag 4.1.1.2 Sicherstellen, dass der auditd-Dienst aktiviert ist, vor dem Ausführen von 4.1.1.1 Sicherstellen, dass auditd installiert ist ausführen, erhalten Sie zur Laufzeit einen Fehler.
Punkte mit
Tildesind noch nicht implementiert, daran arbeite ich gerade.Stellen Sie sicher, dass Sie einen Zeitdienst auswählen. Ich verwende ntp, Sie können jedoch auch andere Dienste wie [
systemd-timesyncd
,ntp
,chrony
] unter den Einstellungendefaults/main.yaml
verwenden.Testen 11.01.2020 Getestet auf AWS EC2 Ubuntu 20.04 LTS [Bestanden] 11.01.2020 Getestet auf lokalem Ubuntu 20.04 LTS-Server [Bestanden]
Stellen Sie sicher, dass Sie die Benutzerliste in
defaults/main.yaml
beilist_of_os_users
+allowed_users
aktualisieren, bevor Sie ausführen.Stellen
Sie sicher, dass Sie das richtige Subnetz indefaults/main.yaml
unterallowed_hosts
festgelegt haben.
Tabelle der Rollen:
1 Ersteinrichtung
- 1.1 Dateisystemkonfiguration
- 1.1.1 Deaktivieren nicht verwendeter Dateisysteme
- 1.1.1.1 Sicherstellen, dass das Einhängen von cramfs-Dateisystemen deaktiviert ist (Automatisiert)
- 1.1.1.2 Sicherstellen, dass das Einhängen von freevxfs-Dateisystemen deaktiviert ist - (Automatisiert)
- 1.1.1.3 Sicherstellen, dass das Einhängen von jffs2-Dateisystemen deaktiviert ist (Automatisiert)
- 1.1.1.4 Sicherstellen, dass das Einhängen von hfs-Dateisystemen deaktiviert ist (Automatisiert)
- 1.1.1.5 Sicherstellen, dass das Einhängen von hfsplus-Dateisystemen deaktiviert ist - (Automatisiert)
- 1.1.1.6 Sicherstellen, dass das Einhängen von udf-Dateisystemen deaktiviert ist (Automatisiert)
- 1.1.1.7 Sicherstellen, dass das Einhängen von FAT-Dateisystemen begrenzt ist (Manuell)
- 1.1.2 Sicherstellen, dass /tmp konfiguriert ist (Automatisiert)
- 1.1.3 Sicherstellen, dass die nodev-Option auf der /tmp-Partition gesetzt ist (Automatisiert)
- 1.1.4 Sicherstellen, dass die nosuid-Option auf der /tmp-Partition gesetzt ist (Automatisiert)
- 1.1.5 Sicherstellen, dass die noexec-Option auf der /tmp-Partition gesetzt ist (Automatisiert)
- 1.1.6 Sicherstellen, dass /dev/shm konfiguriert ist (Automatisiert)
- 1.1.7 Sicherstellen, dass die nodev-Option auf der /dev/shm-Partition gesetzt ist (Automatisiert)
- 1.1.8 Sicherstellen, dass die nosuid-Option auf der /dev/shm-Partition gesetzt ist (Automatisiert)
- 1.1.9 Sicherstellen, dass die noexec-Option auf der /dev/shm-Partition gesetzt ist (Automatisiert)
1.1.10 Sicherstellen, dass eine separate Partition für /var vorhanden ist (Automatisiert)1.1.11 Sicherstellen, dass eine separate Partition für /var/tmp vorhanden ist (Automatisiert)1.1.12 Sicherstellen, dass die nodev-Option auf der /var/tmp-Partition gesetzt ist (Automatisiert)1.1.13 Sicherstellen, dass die nosuid-Option auf der /var/tmp-Partition gesetzt ist (Automatisiert)1.1.14 Sicherstellen, dass die noexec-Option auf der /var/tmp-Partition gesetzt ist (Automatisiert)1.1.15 Sicherstellen, dass eine separate Partition für /var/log vorhanden ist (Automatisiert)1.1.16 Sicherstellen, dass eine separate Partition für /var/log/audit vorhanden ist - (Automatisiert)1.1.17 Sicherstellen, dass eine separate Partition für /home vorhanden ist (Automatisiert)1.1.18 Sicherstellen, dass die nodev-Option auf der /home-Partition gesetzt ist (Automatisiert)1.1.19 Sicherstellen, dass keine world-writable Dateien vorhanden sind (Manuell)1.1.20 Sicherstellen, dass die nosuid-Option auf den beschreibbaren Medienpartitionen gesetzt ist - (Manuell)1.1.21 Sicherstellen, dass die noexec-Option auf den beschreibbaren Medienpartitionen gesetzt ist - (Manuell)- 1.1.22 Sicherstellen, dass das Sticky-Bit auf allen world-writable Verzeichnissen gesetzt ist - (Automatisiert)
- 1.1.23 Automounting deaktivieren (Automatisiert)
- 1.1.24 USB-Speicher deaktivieren (Automatisiert)
1.2 Software-Updates konfigurieren
1.2.1 Sicherstellen, dass die Paketmanager-Repositorys konfiguriert sind (Manuell)1.2.2 Sicherstellen, dass GPG-Keys konfiguriert sind (Manuell)
1.3 Überprüfung der Integrität des Dateisystems
- 1.3.1 Sicherstellen, dass AIDE installiert ist (Automatisiert)
- 1.3.2 Sicherstellen, dass die Integrität des Dateisystems regelmäßig überprüft wird (Automatisiert)
1.4 Sichere Boot-Einstellungen
- 1.4.1 Sicherstellen, dass ein Bootloader-Passwort festgelegt ist (Automatisiert)
- 1.4.2 Sicherstellen, dass die Berechtigungen für die Bootloader-Konfiguration festgelegt sind (Automatisiert)
- 1.4.3 Sicherstellen, dass eine Authentifizierung für den Einzelbenutzermodus erforderlich ist (Automatisiert)
1.5 Zusätzliche Prozesshärtung
- 1.5.1 Sicherstellen, dass XD/NX-Unterstützung aktiviert ist (Automatisiert)
- 1.5.2 Sicherstellen, dass die Adressraum-Layout-Zufälligkeit (ASLR) aktiviert ist (Automatisiert)
- 1.5.3 Sicherstellen, dass Prelink deaktiviert ist (Automatisiert)
- 1.5.4 Sicherstellen, dass Kernel-Dumps eingeschränkt sind (Automatisiert)
1.6 Obligatorische Zugriffskontrolle
- 1.6.1 AppArmor konfigurieren
- 1.6.1.1 Sicherstellen, dass AppArmor installiert ist (Automatisiert)
- 1.6.1.2 Sicherstellen, dass AppArmor in der Bootloader-Konfiguration aktiviert ist (Automatisiert)
- 1.6.1.3 Sicherstellen, dass alle AppArmor-Profile im Durchsetzungs- oder Beschwerdemodus sind (Automatisiert)
- 1.6.1.4 Sicherstellen, dass alle AppArmor-Profile durchgesetzt werden (Automatisiert)
1.7 Warnbanner
- 1.7.1.1 Sicherstellen, dass die Tagesnachricht richtig konfiguriert ist (Automatisiert)
- 1.7.1.2 Sicherstellen, dass das lokale Anmeldewarnbanner richtig konfiguriert ist (Automatisiert)
- 1.7.1.3 Sicherstellen, dass das entfernte Anmeldewarnbanner richtig konfiguriert ist (Automatisiert)
- 1.7.1.4 Sicherstellen, dass die Berechtigungen auf /etc/motd konfiguriert sind (Automatisiert)
- 1.7.1.5 Sicherstellen, dass die Berechtigungen auf /etc/issue konfiguriert sind (Automatisiert)
- 1.7.1.6 Sicherstellen, dass die Berechtigungen auf /etc/issue.net konfiguriert sind (Automatisiert)
1.8 GNOME-Anzeige-Manager
- 1.8.1 Sicherstellen, dass der GNOME-Anzeige-Manager entfernt wurde (Manuell)
- 1.8.2 Sicherstellen, dass das GDM-Anmeldebanner konfiguriert ist (Manuell)
- 1.8.3 Sicherstellen, dass die Liste der deaktivierten Benutzer aktiviert ist (Manuell)
- 1.8.4 Sicherstellen, dass XDCMP nicht aktiviert ist (Manuell)
1.9 Sicherstellen, dass Updates, Patches und zusätzliche Sicherheitssoftware installiert sind (Automatisiert)
2 Dienste
- 2.1 inetd-Dienste
- 2.1.1 Sicherstellen, dass xinetd nicht installiert ist (Automatisiert)
- 2.1.2 Sicherstellen, dass openbsd-inetd nicht installiert ist (Automatisiert)
- 2.2 Dienste für spezielle Zwecke
- 2.2.1 Zeit-Synchronisierung
- 2.2.1.1 Sicherstellen, dass eine Zeit-Synchronisierung verwendet wird (Automatisiert)
- 2.2.1.2 Sicherstellen, dass systemd-timesyncd konfiguriert ist (Manuell)
- 2.2.1.3 Sicherstellen, dass chrony konfiguriert ist (Automatisiert)
- 2.2.1.4 Sicherstellen, dass ntp konfiguriert ist (Automatisiert)
- 2.2.2 Sicherstellen, dass das X Window System nicht installiert ist (Automatisiert)
- 2.2.3 Sicherstellen, dass der Avahi-Server nicht installiert ist (Automatisiert)
- 2.2.4 Sicherstellen, dass CUPS nicht installiert ist (Automatisiert)
- 2.2.5 Sicherstellen, dass der DHCP-Server nicht installiert ist (Automatisiert)
- 2.2.6 Sicherstellen, dass der LDAP-Server nicht installiert ist (Automatisiert)
- 2.2.7 Sicherstellen, dass NFS nicht installiert ist (Automatisiert)
- 2.2.8 Sicherstellen, dass der DNS-Server nicht installiert ist (Automatisiert)
- 2.2.9 Sicherstellen, dass der FTP-Server nicht installiert ist (Automatisiert)
- 2.2.10 Sicherstellen, dass der HTTP-Server nicht installiert ist (Automatisiert)
- 2.2.11 Sicherstellen, dass IMAP- und POP3-Server nicht installiert sind (Automatisiert)
- 2.2.12 Sicherstellen, dass Samba nicht installiert ist (Automatisiert)
- 2.2.13 Sicherstellen, dass der HTTP-Proxy-Server nicht installiert ist (Automatisiert)
- 2.2.14 Sicherstellen, dass der SNMP-Server nicht installiert ist (Automatisiert)
- 2.2.15 Sicherstellen, dass der Mailübertragungsagent im lokalen Modus konfiguriert ist - (Automatisiert)
- 2.2.16 Sicherstellen, dass der rsync-Dienst nicht installiert ist (Automatisiert)
- 2.2.17 Sicherstellen, dass der NIS-Server nicht installiert ist (Automatisiert)
2.3 Dienst-Clients
- 2.3.1 Sicherstellen, dass der NIS-Client nicht installiert ist (Automatisiert)
- 2.3.2 Sicherstellen, dass der rsh-Client nicht installiert ist (Automatisiert)
- 2.3.3 Sicherstellen, dass der Talk-Client nicht installiert ist (Automatisiert)
- 2.3.4 Sicherstellen, dass der Telnet-Client nicht installiert ist (Automatisiert)
- 2.3.5 Sicherstellen, dass der LDAP-Client nicht installiert ist (Automatisiert)
- 2.3.6 Sicherstellen, dass RPC nicht installiert ist (Automatisiert)
2.4 Sicherstellen, dass nicht essentielle Dienste entfernt oder maskiert sind (Manuell)
3 Netzwerkkonfiguration
- 3.1 Deaktivieren nicht verwendeter Netzwerkprotokolle und -geräte
- 3.1.1 IPv6 deaktivieren (Manuell)
- 3.1.2 Sicherstellen, dass drahtlose Schnittstellen deaktiviert sind (Automatisiert)
3.2 Netzwerkeinstellungen (Host-Only)
- 3.2.1 Sicherstellen, dass das Senden von Paketweiterleitungen deaktiviert ist (Automatisiert)
- 3.2.2 Sicherstellen, dass IP-Weiterleitung deaktiviert ist (Automatisiert)
3.3 Netzwerkeinstellungen (Host und Router)
- 3.3.1 Sicherstellen, dass Quell-gesteuerte Pakete nicht akzeptiert werden (Automatisiert)
- 3.3.2 Sicherstellen, dass ICMP-Weiterleitungen nicht akzeptiert werden (Automatisiert)
- 3.3.3 Sicherstellen, dass sichere ICMP-Weiterleitungen nicht akzeptiert werden (Automatisiert)
- 3.3.4 Sicherstellen, dass verdächtige Pakete protokolliert werden (Automatisiert)
- 3.3.5 Sicherstellen, dass Broadcast-ICMP-Anfragen ignoriert werden (Automatisiert)
- 3.3.6 Sicherstellen, dass falsche ICMP-Antworten ignoriert werden (Automatisiert)
- 3.3.7 Sicherstellen, dass die Rückwegfilterung aktiviert ist (Automatisiert)
- 3.3.8 Sicherstellen, dass TCP SYN-Cookies aktiviert sind (Automatisiert)
- 3.3.9 Sicherstellen, dass IPv6-Router-Anzeigen nicht akzeptiert werden (Automatisiert)
3.4 Ungewöhnliche Netzwerkprotokolle
- 3.4.1 Sicherstellen, dass DCCP deaktiviert ist (Automatisiert)
- 3.4.2 Sicherstellen, dass SCTP deaktiviert ist (Automatisiert)
- 3.4.3 Sicherstellen, dass RDS deaktiviert ist (Automatisiert)
- 3.4.4 Sicherstellen, dass TIPC deaktiviert ist (Automatisiert)
3.5 Firewall-Konfiguration
- 3.5.1 UncomplicatedFirewall konfigurieren
- 3.5.1.1 Sicherstellen, dass die Uncomplicated Firewall installiert ist (Automatisiert)
- 3.5.1.2 Sicherstellen, dass iptables-persistent nicht installiert ist (Automatisiert)
- 3.5.1.3 Sicherstellen, dass der ufw-Dienst aktiviert ist (Automatisiert)
- 3.5.1.4 Sicherstellen, dass der Loopback-Verkehr konfiguriert ist (Automatisiert)
- 3.5.1.5 Sicherstellen, dass ausgehende Verbindungen konfiguriert sind (Manuell)
- 3.5.1.6 Sicherstellen, dass Firewall-Regeln für alle offenen Ports existieren (Manuell)
- 3.5.1.7 Sicherstellen, dass die Standard-Deny-Firewall-Politik besteht (Automatisiert)
3.5.2 nftables konfigurieren3.5.2.1 Sicherstellen, dass nftables installiert ist (Automatisiert)3.5.2.2 Sicherstellen, dass die Uncomplicated Firewall nicht installiert oder deaktiviert ist - (Automatisiert)3.5.2.3 Sicherstellen, dass iptables geleert werden (Manuell)3.5.2.4 Sicherstellen, dass eine Tabelle existiert (Automatisiert)3.5.2.5 Sicherstellen, dass Basisketten existieren (Automatisiert)3.5.2.6 Sicherstellen, dass der Loopback-Verkehr konfiguriert ist (Automatisiert)3.5.2.7 Sicherstellen, dass ausgehende und etablierte Verbindungen konfiguriert sind - (Manuell)2433.5.2.8 Sicherstellen, dass die Standard-Deny-Politik für die Firewall besteht (Automatisiert)3.5.2.9 Sicherstellen, dass der nftables-Dienst aktiviert ist (Automatisiert)3.5.2.10 Sicherstellen, dass nftables-Regeln dauerhaft sind (Automatisiert)3.5.3 iptables konfigurieren3.5.3.1.1 Sicherstellen, dass iptables-Pakete installiert sind (Automatisiert)3.5.3.1.2 Sicherstellen, dass nftables nicht installiert ist (Automatisiert)3.5.3.1.3 Sicherstellen, dass die Uncomplicated Firewall nicht installiert oder deaktiviert ist - (Automatisiert)3.5.3.2.1 Sicherstellen, dass die Standard-Deny-Politik für die Firewall besteht (Automatisiert)3.5.3.2.2 Sicherstellen, dass der Loopback-Verkehr konfiguriert ist (Automatisiert)3.5.3.2.3 Sicherstellen, dass ausgehende und etablierte Verbindungen konfiguriert sind - (Manuell)3.5.3.2.4 Sicherstellen, dass Firewall-Regeln für alle offenen Ports existieren (Automatisiert)3.5.3.3.1 Sicherstellen, dass die Standard-Deny-Politik für IPv6 besteht (Automatisiert)3.5.3.3.2 Sicherstellen, dass der Loopback-Verkehr für IPv6 konfiguriert ist (Automatisiert)3.5.3.3.3 Sicherstellen, dass die ausgehenden und etablierten Verbindungen für IPv6 konfiguriert sind (Manuell)3.5.3.3.4 Sicherstellen, dass Firewall-Regeln für alle offenen Ports für IPv6 existieren - (Manuell)
4 Protokollierung und Auditierung
- 4.1 Systemkontierung konfigurieren (auditd)
- 4.1.1 Sicherstellen, dass die Auditierung aktiviert ist
- 4.1.1.1 Sicherstellen, dass auditd installiert ist (Automatisiert)
- 4.1.1.2 Sicherstellen, dass der Dienst auditd aktiviert ist (Automatisiert)
- 4.1.1.3 Sicherstellen, dass die Auditierung für Prozesse, die vor auditd gestartet werden, aktiviert ist - (Automatisiert)
- 4.1.1.4 Sicherstellen, dass audit_backlog_limit ausreichend ist (Automatisiert)
- 4.1.2 Datenaufbewahrung konfigurieren
- 4.1.2.1 Sicherstellen, dass die Größe des Audit-Protokollspeichers konfiguriert ist (Automatisiert)
- 4.1.2.2 Sicherstellen, dass Audit-Protokolle nicht automatisch gelöscht werden (Automatisiert)
- 4.1.2.3 Sicherstellen, dass das System deaktiviert wird, wenn die Audit-Protokolle voll sind - (Automatisiert)
- 4.1.3 Sicherstellen, dass Ereignisse, die das Datum- und Uhrzeit-Informationen ändern, erfasst werden (Automatisiert)
- 4.1.4 Sicherstellen, dass Ereignisse, die Benutzer-/Gruppeninformationen ändern, erfasst werden - (Automatisiert)
- 4.1.5 Sicherstellen, dass Ereignisse, die die Netzumgebung des Systems ändern, erfasst werden - (Automatisiert)
- 4.1.6 Sicherstellen, dass Ereignisse, die die obligatorischen Zugriffskontrollen des Systems ändern, erfasst werden (Automatisiert)
- 4.1.7 Sicherstellen, dass Anmelde- und Abmeldeereignisse erfasst werden (Automatisiert)
- 4.1.8 Sicherstellen, dass Informationen zur Sitzungserstellung erfasst werden (Automatisiert)
- 4.1.9 Sicherstellen, dass diskretionäre Zugriffskontroll-Berechtigungsänderungsereignisse erfasst werden (Automatisiert)
- 4.1.10 Sicherstellen, dass erfolglose unautorisierte Datei-Zugriffsversuche erfasst werden (Automatisiert)
- 4.1.11 Sicherstellen, dass die Verwendung privilegierter Befehle erfasst wird (Automatisiert)
- 4.1.12 Sicherstellen, dass erfolgreiche Dateisystemeinfügungen erfasst werden (Automatisiert)
- 4.1.13 Sicherstellen, dass Datei-Löschereignisse durch Benutzer erfasst werden (Automatisiert)
- 4.1.14 Sicherstellen, dass Änderungen am Umfang der Systemadministration (sudoers) erfasst werden (Automatisiert)
- 4.1.15 Sicherstellen, dass Ausführungen von Systemadministrator-Befehlen (sudo) erfasst werden (Automatisiert)
- 4.1.16 Sicherstellen, dass das Laden und Entladen von Kernelmodulen erfasst wird - (Automatisiert)
- 4.1.17 Sicherstellen, dass die Audit-Konfiguration unveränderlich ist (Automatisiert)
4.2 Protokollierung konfigurieren
- 4.2.1 rsyslog konfigurieren
- 4.2.1.1 Sicherstellen, dass rsyslog installiert ist (Automatisiert)
- 4.2.1.2 Sicherstellen, dass der Dienst rsyslog aktiviert ist (Automatisiert)
- 4.2.1.3 Sicherstellen, dass die Protokollierung konfiguriert ist (Manuell)
- 4.2.1.4 Sicherstellen, dass die Standarddateiberechtigungen von rsyslog konfiguriert sind - (Automatisiert)
- 4.2.1.5 Sicherstellen, dass rsyslog konfiguriert ist, um Protokolle an einen Remote-Protokollhost zu senden (Automatisiert)
- 4.2.1.6 Sicherstellen, dass entfernte rsyslog-Nachrichten nur von bestimmten Protokollhost akzeptiert werden. (Manuell)
- 4.2.2 journald konfigurieren
- 4.2.2.1 Sicherstellen, dass journald konfiguriert ist, um Protokolle an rsyslog zu senden - (Automatisiert)
- 4.2.2.2 Sicherstellen, dass journald konfiguriert ist, um große Protokolldateien zu komprimieren - (Automatisiert)
- 4.2.2.3 Sicherstellen, dass journald konfiguriert ist, um Protokolldateien auf persistentem Datenträger zu schreiben (Automatisiert)
- 4.2.3 Sicherstellen, dass alle Protokolldateien konfiguriert sind (Automatisiert)
- 4.3 Sicherstellen, dass logrotate konfiguriert ist (Manuell)
- 4.4 Sicherstellen, dass logrotate angemessene Berechtigungen zuweist (Automatisiert)
5 Zugriff, Authentifizierung und Autorisierung
- 5.1 Zeitbasierte Jobplaner konfigurieren
- 5.1.1 Sicherstellen, dass der Cron-Daemon aktiviert und aktiv ist (Automatisiert)
- 5.1.2 Sicherstellen, dass die Berechtigungen auf /etc/crontab konfiguriert sind (Automatisiert)
- 5.1.3 Sicherstellen, dass die Berechtigungen auf /etc/cron.hourly konfiguriert sind - (Automatisiert)
- 5.1.4 Sicherstellen, dass die Berechtigungen auf /etc/cron.daily konfiguriert sind - (Automatisiert)
- 5.1.5 Sicherstellen, dass die Berechtigungen auf /etc/cron.weekly konfiguriert sind - (Automatisiert)
- 5.1.6 Sicherstellen, dass die Berechtigungen auf /etc/cron.monthly konfiguriert sind - (Automatisiert)
- 5.1.7 Sicherstellen, dass die Berechtigungen auf /etc/cron.d konfiguriert sind (Automatisiert)
- 5.1.8 Sicherstellen, dass Cron auf autorisierte Benutzer beschränkt ist (Automatisiert)
- 5.1.9 Sicherstellen, dass „at“ auf autorisierte Benutzer beschränkt ist (Automatisiert)
5.2 SSH-Server konfigurieren
- 5.2.1 Sicherstellen, dass die Berechtigungen auf /etc/ssh/sshd_config konfiguriert sind - (Automatisiert)
- 5.2.2 Sicherstellen, dass die Berechtigungen auf SSH-privaten Hostschlüsseln konfiguriert sind - (Automatisiert)
- 5.2.3 Sicherstellen, dass die Berechtigungen auf SSH-öffentlichen Hostschlüsseln konfiguriert sind - (Automatisiert)
- 5.2.4 Sicherstellen, dass das SSH LogLevel angemessen ist (Automatisiert)
- 5.2.5 Sicherstellen, dass SSH X11-Weiterleitung deaktiviert ist (Automatisiert)
- 5.2.6 Sicherstellen, dass SSH MaxAuthTries auf 4 oder weniger gesetzt ist (Automatisiert)
- 5.2.7 Sicherstellen, dass SSH IgnoreRhosts aktiviert ist (Automatisiert)
- 5.2.8 Sicherstellen, dass SSH HostbasedAuthentication deaktiviert ist (Automatisiert)
- 5.2.9 Sicherstellen, dass SSH-Root-Anmeldung deaktiviert ist (Automatisiert)
- 5.2.10 Sicherstellen, dass SSH PermitEmptyPasswords deaktiviert ist (Automatisiert)
- 5.2.11 Sicherstellen, dass SSH PermitUserEnvironment deaktiviert ist (Automatisiert)
- 5.2.12 Sicherstellen, dass nur starke Chiffren verwendet werden (Automatisiert)
- 5.2.13 Sicherstellen, dass nur starke MAC-Algorithmen verwendet werden (Automatisiert)
- 5.2.14 Sicherstellen, dass nur starke Schlüsselwechsel-Algorithmen verwendet werden - (Automatisiert)
- 5.2.15 Sicherstellen, dass das SSH Idle Timeout-Intervall konfiguriert ist (Automatisiert)
- 5.2.16 Sicherstellen, dass die SSH LoginGraceTime auf eine Minute oder weniger gesetzt ist - (Automatisiert)
- 5.2.17 Sicherstellen, dass SSH-Zugriff beschränkt ist (Automatisiert)
- 5.2.18 Sicherstellen, dass das SSH-Warnbanner konfiguriert ist (Automatisiert)
- 5.2.19 Sicherstellen, dass SSH-PAM aktiviert ist (Automatisiert)
- 5.2.20 Sicherstellen, dass SSH AllowTcpForwarding deaktiviert ist (Automatisiert)
- 5.2.21 Sicherstellen, dass SSH MaxStartups konfiguriert ist (Automatisiert)
- 5.2.22 Sicherstellen, dass SSH MaxSessions begrenzt ist (Automatisiert)
5.3 PAM konfigurieren
- 5.3.1 Sicherstellen, dass die Anforderungen für die Erstellung von Passwörtern konfiguriert sind - (Automatisiert)
- 5.3.2 Sicherstellen, dass eine Sperre für fehlgeschlagene Passwortversuche konfiguriert ist - (Automatisiert)
- 5.3.3 Sicherstellen, dass die Wiederverwendung von Passwörtern eingeschränkt ist (Automatisiert)
- 5.3.4 Sicherstellen, dass der Passwort-Hash-Algorithmus SHA-512 ist (Automatisiert)
5.4 Benutzerkonten und -umgebung
- 5.4.1 Shadow Password Suite Parameter festlegen
- 5.4.1.1 Sicherstellen, dass die Passwortablaufzeit 365 Tage oder weniger beträgt (Automatisiert)
- 5.4.1.2 Sicherstellen, dass Mindesttage zwischen Passwortänderungen festgelegt sind - (Automatisiert)
- 5.4.1.3 Sicherstellen, dass die Tage für die Passwortablaufwarnung 7 oder mehr betragen - (Automatisiert)
- 5.4.1.4 Sicherstellen, dass das inaktive Passwort innerhalb von 30 Tagen oder weniger gesperrt ist (Automatisiert)
- 5.4.1.5 Sicherstellen, dass das letzte Passwortänderungsdatum aller Benutzer in der Vergangenheit liegt - (Automatisiert)
- 5.4.2 Sicherstellen, dass Systemkonten gesichert sind (Automatisiert)
- 5.4.3 Sicherstellen, dass die Standardgruppe für das Root-Konto GID 0 ist (Automatisiert)
- 5.4.4 Sicherstellen, dass der Standard-Benutzerumask 027 oder restriktiver ist - (Automatisiert)
- 5.4.5 Sicherstellen, dass der Standard-Zeitlimit für Benutzer-Shell 900 Sekunden oder weniger beträgt - (Automatisiert)
- 5.5 Sicherstellen, dass die Root-Anmeldung auf die Systemkonsole beschränkt ist (Manuell)
- 5.6 Sicherstellen, dass der Zugang zum su-Befehl eingeschränkt ist (Automatisiert)
6 Systemwartung
- 6.1 Dateiberechtigungen des Systems
6.1.1 System-Dateiberechtigungen prüfen (Manuell)- 6.1.2 Sicherstellen, dass die Berechtigungen auf /etc/passwd konfiguriert sind (Automatisiert)
- 6.1.3 Sicherstellen, dass die Berechtigungen auf /etc/gshadow konfiguriert sind (Automatisiert)
- 6.1.4 Sicherstellen, dass die Berechtigungen auf /etc/shadow konfiguriert sind (Automatisiert)
- 6.1.5 Sicherstellen, dass die Berechtigungen auf /etc/group konfiguriert sind (Automatisiert)
- 6.1.6 Sicherstellen, dass die Berechtigungen auf /etc/passwd- konfiguriert sind (Automatisiert)
- 6.1.7 Sicherstellen, dass die Berechtigungen auf /etc/shadow- konfiguriert sind (Automatisiert)
- 6.1.8 Sicherstellen, dass die Berechtigungen auf /etc/group- konfiguriert sind (Automatisiert)
- 6.1.9 Sicherstellen, dass die Berechtigungen auf /etc/gshadow konfiguriert sind (Automatisiert)
- 6.1.10 Sicherstellen, dass keine world-writable Dateien existieren (Automatisiert)
- 6.1.11 Sicherstellen, dass keine nicht zugewiesenen Dateien oder Verzeichnisse existieren (Automatisiert)
- 6.1.12 Sicherstellen, dass keine nicht gruppierten Dateien oder Verzeichnisse existieren (Automatisiert)
6.1.13 SUID- ausführbare Dateien prüfen (Manuell)6.1.14 SGID- ausführbare Dateien prüfen (Manuell)
6.2 Benutzer- und Gruppeneinstellungen
- 6.2.1 Sicherstellen, dass die Passwortfelder nicht leer sind (Automatisiert)
6.2.2 Sicherstellen, dass root das einzige Konto mit UID 0 ist (Automatisiert)6.2.3 Sicherstellen, dass die Integrität des root-PFADS sichergestellt ist (Automatisiert)- 6.2.4 Sicherstellen, dass alle Benutzer-Homeverzeichnisse existieren (Automatisiert)
- 6.2.5 Sicherstellen, dass die Berechtigungen der Benutzer-Homeverzeichnisse 750 oder restriktiver sind - (Automatisiert)
- 6.2.6 Sicherstellen, dass die Benutzer ihre Homeverzeichnisse besitzen (Automatisiert)
- 6.2.7 Sicherstellen, dass die Dot-Dateien der Benutzer nicht gruppen- oder world-writable sind - (Automatisiert)
6.2.8 Sicherstellen, dass keine Benutzer .forward-Dateien haben (Automatisiert)6.2.9 Sicherstellen, dass keine Benutzer .netrc-Dateien haben (Automatisiert)6.2.10 Sicherstellen, dass die .netrc-Dateien der Benutzer nicht gruppen- oder world-zugänglich sind - (Automatisiert)6.2.11 Sicherstellen, dass keine Benutzer .rhosts-Dateien haben (Automatisiert)6.2.12 Sicherstellen, dass alle Gruppen in /etc/passwd in /etc/group existieren - (Automatisiert)6.2.13 Sicherstellen, dass keine doppelten UIDs existieren (Automatisiert)6.2.14 Sicherstellen, dass keine doppelten GIDs existieren (Automatisiert)6.2.15 Sicherstellen, dass keine doppelten Benutzernamen existieren (Automatisiert)6.2.16 Sicherstellen, dass keine doppelten Gruppennamen existieren (Automatisiert)6.2.17 Sicherstellen, dass die Shadow-Gruppe leer ist (Automatisiert)
Fehlerbehebung
- Wenn Sie das Playbook auf demselben Computer ausführen möchten, fügen Sie dies zur Ausführung der Aufgabe hinzu:
- hosts: 127.0.0.1
connection: local
- Wenn Sie Probleme mit der Ausführung haben, versuchen Sie, das Playbook in einem anderen Pfad wie
/srv/
auszuführen. - Für Fehler wie
stderr: chage: user 'ubuntu' does not exist in /etc/passwd
, stellen Sie sicher, dass Sie die Konfiguration inCIS-Ubuntu-20.04-Ansible/defaults/main.yml
aktualisieren.
TASK [CIS-Ubuntu-20.04-Ansible : 1.4.1 Sicherstellen, dass AIDE installiert ist] ***********************************************************************************************************************************************************************************************************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?", "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": []}
- Für den obigen Fehler müssen Sie sicherstellen, dass kein apt-Prozess im Hintergrund läuft oder Sie müssen warten, bis apt den Prozess beendet hat.
TASK [CIS-Ubuntu-20.04-Ansible : 5.4.1.1 Sicherstellen, dass die Passwortablaufzeit 365 Tage oder weniger beträgt | 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": []}
- Stellen Sie sicher, dass Sie den richtigen Benutzer in
defaults/main.yaml
festgelegt haben.
TASK [CIS-Ubuntu-20.04-Ansible : Erstellen von Benutzern ohne Administratorzugriff] ***************************************************************************************************************
fatal: [golden]: FAILED! => {"msg": "crypt.crypt not supported on Mac OS X/Darwin, install passlib python module"}
Installieren Sie pip install passlib
.
Lizenz
GNU GENERAL PUBLIC LICENSE
Informationen zum Autor
Die Rolle wurde ursprünglich von Ali Saleh Baker entwickelt.
Wenn Sie Änderungen an diesem Repository vornehmen möchten, sprechen Sie bitte zuerst über das gewünschte Update über ein GitHub-Problem, eine E-Mail oder andere Kanäle mit mir :)
DevOps
ansible-galaxy install alivx.cis_ubuntu_20_04_ansible