HarryHarcourt.Ansible-RHEL7-CIS-Benchmarks
HarryHarcourt.Ansible-RHEL7-CIS-Benchmarks
Cała zasługa należy się anthcourtney za oryginalny framework, który można znaleźć pod tym linkiem: https://github.com/anthcourtney/ansible-role-cis-amazon-linux
Ta implementacja została przekształcona dla systemu Red Hat Enterprise Linux 7.X (testowane 7.1 - 7.7) oraz CentOS 7.4 (testowane 7.4 - 7.7, warto zauważyć, że wersje CentOS poniżej 7.4 mogą mieć problemy z SSH).
W wielu miejscach ta implementacja została uczyniona idempotentną i nadal jest.
Ta implementacja umożliwia włączanie i konfigurację niektórych usług.
CIS RHEL Linux Benchmark. https://benchmarks.cisecurity.org/tools2/linux/CIS_Red_Hat_Enterprise_Linux_7_Benchmark_v2.1.1.pdf
Rola ta została opracowana i przetestowana na systemach Red Hat Linux 7.1, 7.2, 7.3, 7.4, 7.5, 7.6 i 7.7 przy użyciu standardowych AMI AWS. Rola ta została również opracowana i przetestowana na CentOS 7.4 przy użyciu standardowych AMI AWS.
Dlaczego warto używać tej roli?
Jeśli starasz się osiągnąć zgodność z akceptowanym standardem bezpieczeństwa, takim jak PCI DSS, APRA lub ISO 27001, musisz wykazać, że zastosowałeś udokumentowane standardy zabezpieczeń na wszystkich systemach w zakresie oceny.
Jeśli korzystasz z Red Hat Linux, ta rola próbuje dostarczyć jedną część rozwiązania zagadki zgodności.
Uwaga!
Jeśli rozważasz zastosowanie tej roli na jakichkolwiek serwerach, powinieneś mieć podstawową znajomość CIS Benchmark (lub innych podobnych benchmarków) oraz zrozumienie wpływu, jaki może to mieć na system.
Proszę poświęcić czas na zapoznanie się ze standardem oraz z konfiguracjami domyślnymi i wykluczyć wszelkie elementy przed zastosowaniem ich w systemie.
Przykład elementów, które powinny być natychmiastowo rozważone do wykluczenia (lub przynajmniej do modyfikacji powiązanych wartości domyślnych) obejmuje:
3.4.2
oraz3.4.3
, które w domyślnym ustawieniu skutecznie ograniczają dostęp do hosta (w tym przez ssh) tylko do localhost.
Przykładowy Playbook
Przykładowy playbook, który używa tej roli, wygląda następująco:
---
- hosts: localhost
connection: local
gather_facts: true
become: yes
roles:
- Ansible-RHEL7-CIS-Benchmarks
Bardziej zaawansowany przykład, który obejmuje modyfikacje domyślnych wartości oraz wykluczenie niektórych elementów w benchmarku uznawanych za niepotrzebne w fikcyjnym środowisku, wygląda następująco:
---
- hosts: localhost
connection: local
gather_facts: true
become: yes
vars:
cis_level_1_exclusions:
- 5.4.4
- 3.4.2
- 3.4.3
- 6.2.13
cis_pass_max_days: 45
cis_umask_default: 002
roles:
- Ansible-RHEL7-CIS-Benchmarks
Uwaga, że użycie become: yes
jest wymagane, ponieważ 99% zadań wymaga dostępu uprzywilejowanego do wykonania.
Zmienne Roli
Zobacz defaults/main.yml
dla zmiennych, które mogą być nadpisane wedle preferencji.
Opcje
Tagi (i ich kombinacje) mogą być używane do uruchomienia konkretnego poziomu standardu CIS, sekcji lub pojedynczej rekomendacji. Na przykład:
- Uruchom tylko zadania Poziomu 1
ansible-playbook playbook.yml -t level-1
- Uruchom tylko zadania w Sekcji 3
ansible-playbook playbook.yml -t section-3
- Uruchom tylko zadania 1.3.1 i 2.2.10
ansible-playbook playbook.yml -t 1.3.1,2.2.10
- Uruchom tylko zadania punktowane
ansible-playbook playbook.yml -t scored
Ograniczenia
Obecnie zaimplementowane są tylko elementy Poziomu 1 benchmarku. Elementy Poziomu 2 będą dodawane w miarę możliwości.
Niektóre kontrole nie zostały zaimplementowane:
- 3.6.2. Zestawy reguł zapory są specyficzne dla środowiska.
- 3.6.3. Zestawy reguł zapory są specyficzne dla środowiska.
- 3.6.4. Zestawy reguł zapory są specyficzne dla środowiska.
- 3.6.5. Zestawy reguł zapory są specyficzne dla środowiska.
- 4.2.1.2. Określenie, co powinno być rejestrowane i miejsce docelowe wiadomości jest specyficzne dla środowiska.
- 4.2.2.2. Określenie, co powinno być rejestrowane i miejsce docelowe wiadomości jest specyficzne dla środowiska.
- 4.2.2.3. Edycja inline pliku konfiguracyjnego syslog-ng jest uważana za zbyt nieprecyzyjną i najlepiej rozwiązywana za pomocą dostarczonego pliku konfiguracyjnego, który odpowiada na to i inne pokrewne wymagania.
- 4.2.2.4. Edycja inline pliku konfiguracyjnego syslog-ng jest uważana za zbyt nieprecyzyjną i najlepiej rozwiązywana za pomocą dostarczonego pliku konfiguracyjnego, który odpowiada na to i inne pokrewne wymagania.
- 4.2.2.5. Edycja inline pliku konfiguracyjnego syslog-ng jest uważana za zbyt nieprecyzyjną i najlepiej rozwiązywana za pomocą dostarczonego pliku konfiguracyjnego, który odpowiada na to i inne pokrewne wymagania.
- 4.3. Konfiguracja logrotate jest specyficzna dla miejsca.
- 5.3.2. Edycja wielu linii plików konfiguracyjnych pam jest uważana za zbyt nieprecyzyjną i niebezpieczną, a najlepiej rozwiązywana za pomocą dostarczonego pliku konfiguracyjnego, który odpowiada na to i inne pokrewne wymagania.
- 5.3.3. Edycja wielu linii plików konfiguracyjnych pam jest uważana za zbyt nieprecyzyjną i niebezpieczną, a najlepiej rozwiązywana za pomocą dostarczonego pliku konfiguracyjnego, który odpowiada na to i inne pokrewne wymagania.
Kompatybilność
Ta rola jest kompatybilna z następującymi wersjami ansible:
- 2.0.2
- 2.1.3
- 2.2.0
- 2.3.0
- 2.7.0
- 2.8.x
- 2.9.x
Ta rola nie była testowana w żadnych innych wersjach ansible.
Testowanie
Poniższe procesy testowe są stosowane przez dewelopera tej roli:
- Sprawdzana jest składnia roli. Zobacz
make syntax
. ansible-review
jest uruchamiane na roli, a wszelkie ostrzeżenia uznane za odpowiednie są naprawiane. Zobaczmake review
.- Rola jest stosowana na kontenerze docker przy użyciu zarówno ansible v2.1.3, jak i ansible v2.2. Zobacz
make test
.
Niektóre testy zostały zgłoszone, ale nie zostały jeszcze wdrożone:
- Test zastosowania roli na obrazie Vagrant
mvbcoding/awslinux
, przy użyciu provisionera ansible.
Licencja
Uwaga: Istniały pewne nieporozumienia dotyczące licencji, która powinna być użyta dla tej roli Ansible; podstawowe źródło tej roli od Anthony'ego Courtney'a nie miało pliku licencji, jednak meta/main.yml odnosiło się do MIT, a README (poniżej) wskazywało na BSD. Bez żadnej informacji zwrotnej od Anthony'ego (przez zgłoszenie problemu w źródle oryginalnym i skontaktowanie się z Anthony'm przez LinkedIn) zdecydowałem się przyjąć licencję MIT dla tej roli.
MIT.
Informacje o autorze
Rola została pierwotnie opracowana przez Anth Courtney.
Ta rola została rozwinięta przez Ben Wright.
Wszystkie uwagi, problemy i PR są mile widziane i doceniane.
Idempotent CIS Benchmarks for RHEL/CentOS Linux V2
ansible-galaxy install HarryHarcourt.Ansible-RHEL7-CIS-Benchmarks