 Autor: [Adam Nadolny](/autorzy/adam-nadolny) Ekspert DevOps i infrastruktury · Zweryfikowano Kwiecień 2026

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

Ś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 · 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 · 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 · 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/)