1.  [Strona główna](/) ›
2.  [Baza wiedzy](/baza-wiedzy/) ›
3.  CIS Benchmarks - hardening Linux

# CIS Benchmarks Level 1 - hardening Ubuntu i Debian

Opublikowano: 10 kwietnia 2026 · Kategoria: Bezpieczeństwo

⚡ W skrócie · 10 min czytania

-   CIS Benchmarks Level 1 dla Ubuntu/Debian: kluczowe kontrole (SSH, auditd, filesystem, cron), narzędzia Lynis i OpenSCAP, automatyzacja przez Ansible. Kompletny przewodnik.
-   Audyt przed hardowaniem - Lynis.
-   Hardowanie SSH - CIS Level 1.
-   auditd - logowanie zdarzeń bezpieczeństwa.
-   Uprawnienia plików i usługi.

Świeżo zainstalowany Ubuntu ma wiele domyślnych konfiguracji kompromitujących bezpieczeństwo: root SSH włączony, zbędne usługi działają, brak logowania bezpieczeństwa, uprawnienia plików za luźne. CIS Benchmarks to szczegółowa lista kontrolna co poprawić - opracowana przez społeczność ekspertów bezpieczeństwa i stosowana jako standard w certyfikacjach SOC2 i ISO 27001. Artykuł omawia najważniejsze kontrolki Level 1 dla Ubuntu/Debian, narzędzia do audytu (Lynis, OpenSCAP) i automatyzację przez Ansible.

## Audyt przed hardowaniem - Lynis

Zanim zaczniesz zmieniać konfigurację, uruchom Lynis żeby zobaczyć stan wyjściowy. Zapisz raport - po hardowaniu porównasz wyniki.

```
# Instalacja Lynis (wersja z repo projektowego, aktualniejsza niz apt)
sudo apt install lynis -y
# lub z repo Cisofy:
curl -s https://packages.cisofy.com/keys/cisofy-software-public.key | sudo apt-key add -
echo "deb https://packages.cisofy.com/community/lynis/deb/ stable main" | \
  sudo tee /etc/apt/sources.list.d/cisofy-lynis.list
sudo apt update && sudo apt install lynis

# Pelny audyt systemu
sudo lynis audit system

# Zapisz raport
sudo lynis audit system 2>&1 | tee /root/lynis-before.txt

# Kluczowe sekcje w output:
# [+] System Tools         - podstawowe narzedzia
# [+] Logging and Files    - syslog, auditd
# [+] SSH Support          - konfiguracja SSH
# [+] File Permissions     - uprawnienia kluczowych plikow
# [+] Hardening            - podsumowanie

# Wynik: Hardening index: 58/100 [############              ]
# Cel po hardowaniu: >75

# Wazniejsze logi Lynis
cat /var/log/lynis.log
cat /var/log/lynis-report.dat | grep warning
```

## Hardowanie SSH - CIS Level 1

```
# /etc/ssh/sshd_config - CIS Level 1 wymagania

# Protokol i uwierzytelnianie
# Protocol 2                       # tylko SSH2
# PermitRootLogin no               # ZAKAZ logowania root
# PasswordAuthentication no        # tylko klucze SSH
# PermitEmptyPasswords no          # ZAKAZ pustych hasel
# ChallengeResponseAuthentication no
# UsePAM yes                       # PAM aktywne

# Timeout i limity
# LoginGraceTime 60                # 60s na zalogowanie
# MaxAuthTries 4                   # max 4 proby hasla
# MaxSessions 4                    # max 4 sesje per polaczenie
# ClientAliveInterval 300          # sprawdz klienta co 5 min
# ClientAliveCountMax 0            # rozlacz po 1 braku odpowiedzi

# Przekierowania (wylaczyc na serwerach produkcyjnych)
# X11Forwarding no
# AllowTcpForwarding no
# GatewayPorts no
# PermitTunnel no

# Whitelist uzytkownikow (opcjonalne ale zalecane)
# AllowUsers deploy ansible monitoring

# Bezpieczne algorytmy (CIS Level 1)
# Ciphers aes128-ctr,aes192-ctr,aes256-ctr
# MACs hmac-sha2-256,hmac-sha2-512
# KexAlgorithms curve25519-sha256,ecdh-sha2-nistp256

# Zastosuj i sprawdz
sudo sshd -t   # walidacja konfiguracji (PRZED reload!)
sudo systemctl reload sshd

# Sprawdz ze nadal mozesz sie zalogowac (nowe okno terminala!)
ssh -v -i ~/.ssh/id_ed25519 user@serwer
```

## auditd - logowanie zdarzeń bezpieczeństwa

```
# Instalacja i uruchomienie auditd
sudo apt install auditd audispd-plugins -y
sudo systemctl enable --now auditd

# Kluczowe reguly CIS Level 1 (/etc/audit/rules.d/cis.rules)

# Loguj zmiany plikow systemowych
# -w /etc/passwd -p wa -k identity
# -w /etc/shadow -p wa -k identity
# -w /etc/group -p wa -k identity
# -w /etc/gshadow -p wa -k identity
# -w /etc/sudoers -p wa -k priv_esc
# -w /etc/sudoers.d/ -p wa -k priv_esc

# Loguj wywolania systemowe dotyczace uprawnien
# -a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -k perm_mod
# -a always,exit -F arch=b64 -S chown -S fchown -S fchownat -k perm_mod
# -a always,exit -F arch=b64 -S setuid -k setuid
# -a always,exit -F arch=b64 -S setgid -k setgid

# Loguj nieudane dostepy do plikow
# -a always,exit -F arch=b64 -S open -F exit=-EACCES -F auid>=1000 -k access
# -a always,exit -F arch=b64 -S open -F exit=-EPERM -F auid>=1000 -k access

# Loguj mount/unmount
# -a always,exit -F arch=b64 -S mount -k mounts

# Zaladuj reguly
sudo augenrules --load
sudo systemctl restart auditd

# Przeglad logow auditd
ausearch -k identity --start today
ausearch -k priv_esc --start yesterday
aureport --summary -i
```

## Uprawnienia plików i usługi

```
# CIS - uprawnienia kluczowych plikow
sudo chmod 644 /etc/passwd
sudo chmod 600 /etc/shadow
sudo chmod 644 /etc/group
sudo chmod 600 /etc/gshadow
sudo chown root:root /etc/passwd /etc/group
sudo chown root:shadow /etc/shadow /etc/gshadow

# Sprawdz pliki ze SUID/SGID (powinno byc minimum)
find / -perm /4000 -type f 2>/dev/null | grep -v proc
find / -perm /2000 -type f 2>/dev/null | grep -v proc

# Pliki bez wlasciciela (should be empty)
find / -nouser -o -nogroup 2>/dev/null | grep -v proc | grep -v sys

# Uprawnienia cron
sudo chmod og-rwx /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly /etc/crontab
sudo chown root:root /etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly /etc/crontab

# Usun zbedne uslugi (przykład Ubuntu server minimal)
sudo systemctl disable --now cups     # drukarki (niepotrzebne na VPS)
sudo systemctl disable --now avahi-daemon  # Bonjour/mDNS
sudo systemctl disable --now isc-dhcp-server 2>/dev/null

# Sprawdz co nasluchuje
ss -tlnp   # TCP listening ports
ss -ulnp   # UDP listening ports
```

## Sysctl - hardowanie parametrów sieci

```
# /etc/sysctl.d/99-cis-hardening.conf

# Ochrona przed IP spoofing i redirect
# net.ipv4.conf.all.send_redirects = 0
# net.ipv4.conf.default.send_redirects = 0
# net.ipv4.conf.all.accept_source_route = 0
# net.ipv4.conf.default.accept_source_route = 0
# net.ipv4.conf.all.accept_redirects = 0
# net.ipv4.conf.default.accept_redirects = 0
# net.ipv4.icmp_echo_ignore_broadcasts = 1
# net.ipv4.icmp_ignore_bogus_error_responses = 1

# Reverse path filtering
# net.ipv4.conf.all.rp_filter = 1
# net.ipv4.conf.default.rp_filter = 1

# SYN flood protection
# net.ipv4.tcp_syncookies = 1

# Randomizacja adresow przestrzeni adresowej (ASLR)
# kernel.randomize_va_space = 2

# Ogranicz dostep do dmesg (tylko root)
# kernel.dmesg_restrict = 1

# Wymagaj uprawnien do ptrace (debugowanie)
# kernel.yama.ptrace_scope = 1

# IPv6 (jesli nieuzywane - wylacz)
# net.ipv6.conf.all.disable_ipv6 = 1
# net.ipv6.conf.default.disable_ipv6 = 1

sudo sysctl -p /etc/sysctl.d/99-cis-hardening.conf
```

## OpenSCAP - audyt zgodności z CIS

```
# Instalacja OpenSCAP
sudo apt install openscap-scanner -y

# Pobierz profile CIS dla Ubuntu (SCAP Security Guide)
sudo apt install ssg-debderived -y
# Profile sa w /usr/share/xml/scap/ssg/content/

# Przeszukaj dostepne profile CIS dla Ubuntu
oscap info /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml | grep -i cis

# Skan zgodnosci z CIS Level 1
sudo oscap xccdf eval \
  --profile xccdf_org.ssgproject.content_profile_cis_level1_server \
  --results /tmp/oscap-results.xml \
  --report /tmp/oscap-report.html \
  /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml

# Otworz raport HTML w przegladarce (kopiuj z serwera)
scp user@serwer:/tmp/oscap-report.html ./

# Tryb naprawiania (apply fixes)
sudo oscap xccdf eval \
  --profile xccdf_org.ssgproject.content_profile_cis_level1_server \
  --remediate \
  /usr/share/xml/scap/ssg/content/ssg-ubuntu2204-ds.xml
```

## Automatyzacja Ansible - dev-sec roles

```
# Instalacja rol z Ansible Galaxy
ansible-galaxy install dev-sec.os-hardening dev-sec.ssh-hardening

# Playbook hardening.yml
# ---
# - hosts: webservers
#   become: yes
#   roles:
#     - dev-sec.os-hardening
#     - dev-sec.ssh-hardening
#   vars:
#     # Dostosuj do srodowiska
#     os_auth_timeout: 60
#     os_security_users_allow: ['vagrant']
#     ssh_permit_root_login: 'no'
#     ssh_password_authentication: 'no'
#     ssh_challenge_response_authentication: 'no'
#     ssh_client_alive_interval: 300
#     ssh_max_auth_tries: 4

# Uruchomienie z dry-run (check mode)
ansible-playbook hardening.yml --check --diff -i inventory.ini

# Pelne uruchomienie
ansible-playbook hardening.yml -i inventory.ini

# Uruchom ponownie Lynis po hardowaniu
sudo lynis audit system 2>&1 | tee /root/lynis-after.txt
diff /root/lynis-before.txt /root/lynis-after.txt | grep "Hardening index"
```

## Najczęstsze pytania

Co to są CIS Benchmarks i ile poziomów mają? +

CIS Benchmarks (Center for Internet Security) to standardy hardowania systemów - szczegółowe listy kontrolne konfiguracji bezpiecznej. Są dwa poziomy: Level 1 (podstawowy) - ustawienia bezpieczne i mało wpływające na funkcjonalność, odpowiednie dla większości serwerów. Level 2 (zaawansowany) - mocniejsze ograniczenia, mogą wymagać dostosowania dla konkretnych aplikacji. CIS Benchmarks są bezpłatne do pobrania z cisecurity.org i są standardem referencyjnym w branży (SOC2, ISO 27001, PCI DSS).

Co sprawdza Lynis i jak interpretować wynik? +

Lynis to narzędzie do audytu bezpieczeństwa Linux - sprawdza setki kontrolek: konfiguracja SSH, uprawnienia plików, obecność rootkitów, aktualizacje pakietów, firewall, auditd, szyfrowanie dysków, konfiguracja PAM. Na końcu podaje "Hardening Index" (0-100) - wynik powyżej 80 jest dobry dla serwera produkcyjnego. Każda sekcja ma status: OK (zielony), WARNING (żółty), SUGGESTION (niebieski). Suggestions to rekomendacje bez wpływu na bezpieczeństwo podstawowe.

Jakie są najważniejsze kontrole SSH z CIS Benchmark? +

CIS Level 1 dla SSH wymaga: PermitRootLogin no (logowanie root wyłączone), PasswordAuthentication no (tylko klucze SSH), Protocol 2, MaxAuthTries 4, LoginGraceTime 60, PermitEmptyPasswords no, X11Forwarding no. Dodatkowo rekomenduje AllowUsers lub AllowGroups (whitelist użytkowników SSH), ClientAliveInterval 300 i ClientAliveCountMax 0 (timeout sesji). Ustaw też Port na niestandardowy (np. 2222) - nie zwiększa bezpieczeństwa znacznie, ale redukuje szum w logach.

Czy automatyzacja hardowania przez Ansible jest bezpieczna? +

Tak, Ansible jest powszechnie stosowanym narzędziem do automatyzacji CIS hardowania. Dostępne są gotowe role: dev-sec.os-hardening i dev-sec.ssh-hardening z Ansible Galaxy - implementują większość kontrolek CIS Level 1. Ważne: zawsze testuj na środowisku staging przed zastosowaniem na produkcji. Część kontrolek może uniemożliwić działanie niektórych aplikacji (np. wymaganie SELinux może kolidować z niektórymi kontenerami). Rób snapshot/backup przed uruchomieniem playbooka.

## Sprawdź oferty pasujące do tego scenariusza

Poniżej masz szybkie przejścia do ofert i stron z kodami rabatowymi tam, gdzie są dostępne.

Contabo

VPS z pełnym dostępem root - możliwość wdrożenia pełnego CIS hardowania

Full Root

[Aktywuj rabat →](/out/contabo/#reklama "Contabo")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/contabo/)

Mikr.us

Tani VPS do testowania konfiguracji bezpieczeństwa i Lynis audytu

Security Test

[Aktywuj rabat →](/out/mikrus/#reklama "Mikr.us")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/mikrus/)

CyberFolks

Zarządzany hosting z wbudowanym bezpieczeństwem - bez ręcznego hardowania

Managed

[Aktywuj rabat →](/out/cyberfolks/#reklama "CyberFolks")

#Reklama · link partnerski

[Zobacz kod rabatowy →](/kody-rabatowe/cyberfolks/)

## Powiązane strony

-   [Bezpieczeństwo VPS - checklist](/baza-wiedzy/bezpieczenstwo-vps-checklist/)
-   [auditd - audyt bezpieczeństwa Linux](/baza-wiedzy/auditd-logi-audytu-linux/)
-   [Ansible - podstawy automatyzacji](/baza-wiedzy/ansible-podstawy-automatyzacja/)
-   [ModSecurity WAF - ochrona aplikacji webowych](/baza-wiedzy/modsecurity-waf-hosting/)
-   [Wszystkie artykuły](/baza-wiedzy/)
-   [CrowdSec - nowoczesna ochrona serwera z community blocklist
    
    CrowdSec: instalacja na Ubuntu, parsery Nginx/SSH/WordPress, bouncer nftables, community blocklist, konsola online.…
    
    ](/baza-wiedzy/crowdsec-ochrona-serwera/)
-   [SSH Penetration Testing - audyt bezpieczeństwa serwera
    
    Jak przetestować bezpieczeństwo SSH na własnym serwerze VPS: skanowanie portów Nmap, brute-force test Hydra, audit…
    
    ](/baza-wiedzy/ssh-penetration-testing/)
-   [Jaki VPS wybrać?](/jaki-vps-wybrac/)

Autor: [Redakcja HostGrade.pl](/autorzy/) Zespół redakcyjny · Aktualizacja: 10 kwietnia 2026

Artykuły HostGrade.pl przygotowuje i aktualizuje redakcja serwisu. Ceny startowe, ceny odnowienia i warunki planów sprawdzamy w cennikach i regulaminach dostawców, a potem liczymy całkowity koszt za 2 lata (cena startowa plus odnowienia). Zasady zbierania danych i liczenia kosztów opisujemy na stronie Metodologia. Linki partnerskie oznaczamy jako #reklama.

[O redakcji i metodologii →](/autorzy/)