A Lynis első futtatása egy friss VPS-en általában 60 körüli értéket ad, és egy hosszú ajánláslistát, amelyben nem világos, mihez kapjon az ember. A jó hír: 80–85-ig egy este alatt el lehet jutni, és az út nagyobb része nem kozmetika, hanem valóban szükséges dolgok. A rossz: az utolsó tizenöt pont bérelt virtuális gépen egyáltalán nem szerezhető meg, és nincs értelme hajszolni.
Mit mutat az index, és mit nem
A hardening index a teljesített tesztek aránya az összeshez képest, súlyozva — nem a védettség százaléka. A Lynis nagyjából háromszáz tesztet futtat, és két különböző listát ad: warnings, ami valódi problémának tűnik, és suggestions, ami lehetséges javítás. Mindig a figyelmeztetésekkel kezdd; azokból általában csak néhány van.
Száz pont nem létezik: az ajánlások egy része a rendszer telepítésekor meghozott döntéseket igényel (külön partíciók a /home, /tmp és /var számára), egy része hozzáférést a rendszerbetöltőhöz, ami a VPS-en nincs, és egy részük ellentmond egymásnak. A saját indexed összehasonlítása másokéval szintén hiábavaló: a Lynis azért von le pontot, ami a gépen fut. Minden futó szolgáltatás még egy nyitott port, saját konfiguráció és tíz újabb ajánlás, ezért magas értékeket leggyakrabban ott látni, ahol az SSH-n kívül semmi nem fut. Egy éles szerverhez webhellyel, adatbázissal és levelezéssel a 85 jó eredmény.
Futtasd rootként
sudo lynis audit system
sudo nélkül a Lynis kihagyja az összes olyan tesztet, amelyhez rendszerfájlok kellenek, és alulbecsült indexet mutat — nem azért, mert a szerver rossz, hanem mert az ellenőrzések nem voltak elvégezhetők. A jelentés a /var/log/lynis-report.dat fájlba kerül, az olvasható napló a /var/log/lynis.log fájlba.
A kimenet minden sora egy tesztazonosítóval kezdődik, például SSH-7408 vagy KRNL-6000. Ez alapján kereshető meg a magyarázat és a kikapcsolás módja is — jegyezd meg a formáját, minden más e köré épül.
Mi hoz növekedést
SSH (SSH-7408). A legsúlyosabb blokk: egyetlen teszt egyszerre tíz paramétert ellenőriz. Ne szerkeszd a teljes sshd_config fájlt, tegyél le külön fájlt — így a csomagfrissítés semmit nem ír felül:
sudo tee /etc/ssh/sshd_config.d/10-hardening.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
MaxAuthTries 3
MaxSessions 2
X11Forwarding no
AllowTcpForwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
LogLevel VERBOSE
TCPKeepAlive no
EOF
sudo sshd -t && sudo systemctl reload ssh
Az sshd -t a szolgáltatás újratöltése előtt kötelező: egy hiba a konfigurációban élő munkamenet mellett kívül hagy. És mielőtt beállítod a PasswordAuthentication no értéket, egy második nyitott terminálból ellenőrizd, hogy a kulcs valóban működik.
Kernelparaméterek (KRNL-6000). A teszt húsz körüli sysctl-értéket ellenőriz. Fájl hozzájuk:
sudo tee /etc/sysctl.d/99-hardening.conf <<'EOF'
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
kernel.sysrq = 0
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.log_martians = 1
EOF
sudo sysctl --system
Hiányzó eszközök. A javaslatok tetemes része egyszerűen az, hogy „telepítsd, ami nincs”: auditd (rendszeresemények naplója), aide (fájlintegritás-ellenőrzés), debsums (csomagintegritás), unattended-upgrades (automatikus biztonsági frissítések), sysstat és acct (folyamatnyilvántartás), vírusellenőrző. Mindegyik egy-két ajánlást zár le, de nem a pontokért érdemes telepíteni őket, hanem mert nélkülük egy incidens után semmit nem tudsz rekonstruálni.
Apróságok jó megtérüléssel. umask 027 az /etc/login.defs fájlban; a jelszavak élettartama ugyanott; az /etc/issue és /etc/issue.net bannerek; fordítóprogramok csak root számára (chmod 700 /usr/bin/gcc). A bannerekről mondjuk ki őszintén: a védelemre egyáltalán nincsenek hatással, jogi formaság — de pontot adnak.
Egy csapda a login.defs körül
Az umask módosítása sed-del, sorcserével gyakran több UMASK sort hagy a fájlban egyszerre. A Lynis ilyenkor nem számítja be az értéket, és az AUTH-9328 teszt pirosan marad, noha a beállítás késznek látszik. Módosítás után ellenőrizd:
grep -c '^UMASK' /etc/login.defs
Pontosan egynek kell lennie. Ugyanez vonatkozik e fájl minden más paraméterére is.
Téves riasztások és helyes elnémításuk
Néhány figyelmeztetés egyáltalán nem a te szerveredre vonatkozik. Élő példa: egy nagy szolgáltató VPS-én a PKGS-7388 teszt azt jelzi, hogy a biztonsági tároló nem található — egyszerűen azért, mert a tárolók deb822 formátumban vannak leírva, tükörfájlra hivatkozva, míg a Lynis a régi sort keresi. A biztonsági frissítések eközben rendben érkeznek.
Az ilyet nem a jelentés sorainak törlésével kell elnémítani, hanem profillal. A profilfájlok kiterjesztése .prf (nem .prof, ezen könnyű elveszíteni fél órát), a saját szabályok pedig az /etc/lynis/custom.prf fájlba kerülnek:
skip-test=PKGS-7388
skip-test=KRNL-5788
Egy szabály érvényes: minden sor mellé kerüljön megjegyzés arról, miért hagyod ki a tesztet. Fél év múlva nem fogsz emlékezni, azért van-e kikapcsolva, mert nem alkalmazható, vagy mert nem volt kedved megjavítani — és a különbség e két eset között az egész lényeg.
Mit ne csinálj
Ne hajszold a számot. Az index könnyen felnyomható a kényelmetlen tesztek kikapcsolásával, és ez az egyetlen módja annak, hogy egy bizonyos szint fölé juss — csakhogy a szerver ettől nem lesz biztonságosabb. Más a hasznos: jegyezd fel a saját értékedet, és kövesd a változásokat. Egy frissítés vagy idegen konfigurációmódosítás után lezuhant index sokkal értékesebb jelzés, mint az abszolút nagysága.
Éppen ezért érdemes a Lynist nem egyszer, hanem ütemezetten futtatni, és a jelentéseket megőrizni, hogy legyen mihez hasonlítani. Hogy néz ki mindez egy oldalra gyűjtve, azt az alábbi bemutató mutatja: index, a figyelmeztetések listája tesztazonosítókkal, és az, ami az előző futás óta változott.