Zámbó Marcell
[29 / 1] Linux biztonsági lehetőségeinek áttekintése
Linux biztonsági lehetőségeinek áttekintése.
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 2] Linux biztonsági lehetőségeinek áttekintése
Mi az a Linux? A Linux egy operációs rendszer, a szabad szoftverek és a nyílt forráskódú programok egyik legismertebb példája. A „Linux” elnevezés szigorú értelemben véve a Linuxrendszermagot jelenti, amelyet Linus Torvalds kezdett el fejleszteni 1991-ben. A köznyelvben mégis gyakran a teljes Unix-szerű operációs rendszerre utalnak vele, amely a Linux-rendszermagra és az 1983-ban, Richard Matthew Stallman vezetésével indult GNU projekt keretében született alapprogramokra épül. A Linux pontosabb neve ebben az értelemben GNU/Linux. a la Wikipedia ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 3] Linux biztonsági lehetőségeinek áttekintése
Miért van szükség biztonsági eszközökre? Mert az alkalmazások hibásak
Tervezési és implementációs hibák, interpreterek hibái
Rosszindulatú kódok
Mert a felhasználók sem tökéletesek
Tudatlanságból, kíváncsiságból vagy szándékos eredő károkozás
Biztonsági eszközök feladata:
A 0-nál nagyobb valószínűséggel bekövetkező problémák hatásainak csökkentése. ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 4] Linux biztonsági lehetőségeinek áttekintése
Néhány egyszerű szabály Minden rendszerelem maximum annyi jogosultsággal, rendelkezzen, amennyi a működéshez minimálisan szükséges! Törekedni kell arra, hogy az általunk használt rendszer csak olyan képességekkel rendelkezzen, melyekre szükségünk is van. Minden rendelkezésre álló eszközt fel kell használni a támadó dolgának megnehezítésére, a védelmi megoldásoktól a naplózási megoldásokig. ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 5] Linux biztonsági lehetőségeinek áttekintése
A tartalomból Nagyon sok témát érint az előadás, célom az egyes témák részletes ismertetése helyett az áttekintő kép, a lehető legtöbb lehetőség megmutatása
Hitelesítés - PAM: pam_cracklib, jelszó lejárati idők stb. Fájlrendszer ACL-ek, mount opciók Titkosított fájlrendszerek, file titkosítás. Exec logging, audit lehetőségek Apparmor, Grsecurity, SELinux (csak nagyon röviden :)) Hálózati biztonsági funkciók: Netfilter, IPSec Virtualizáció, mint szeparációs eszköz. PIE/ stack-protector / format-security / _FORTIFY_SOURCE / Seccomp
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 6] Linux biztonsági lehetőségeinek áttekintése
Jelmagyarázat: Mi ez a bigyó ott balra lent?!
K
P
1 Komplexitás? (1,2,3) Natív v. Patchelni kell? User v. Kernel? Mindkettő.
K P
1
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 7] Linux biztonsági lehetőségeinek áttekintése
Jelszavak biztonsága Rendszeres jelszóváltás kikényszerítése:
passwd -x <MAX_D> \ -w <WARN_D> \ -i \ felhasználónév
/etc/login.defs - man login.defs
ubuntu login: oracle Password: You are required to change your \ password immediately (root enforced) Changing password for oracle. (current) UNIX password:
PASS_MAX_DAYS, PASS_MIN_DAYS és PASS_WARN_AGE értékei, csak létrehozáskor számítanak, későbbi módosításokkor már nem!
Jelszó azonnali lejártra állítása: passwd -e felhasználónév
További hasznos parancsok: chage, usermod
U N 1
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 8] Linux biztonsági lehetőségeinek áttekintése
Kellően erős jelszavak kikényszerítése pam_(cracklib|unix).so
U N 2
Palindroma (pl: anyabanya) Csak kis/nagy betű különbség Azonos karakter az új és a régi jelszóban? (difok, difignore) Túl rövid-egyszerű: minlen, karakterosztályok: [d|u|l|o]credit Az új jelszó valamelyik megőrzött régebbivel azonos? egymást követő azonos karakter, usernév a jelszóban*
/etc/security/opasswd
Korábbi jelszavakat tárolja el a shadow-hoz hasonlóan, a pam_unix, pam_cracklib és pam_pwhistory használhatja
/etc/pam.d/passwd példa: password
required pam_cracklib.so \ difok=3 minlen=15 dcredit=2 \ ocredit=2
password
required pam_unix.so sha512 \ remember=5 use_authtok \ obscure
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 9] Linux biztonsági lehetőségeinek áttekintése
További érdekes PAM modulok pam_faildelay
Sikertelen azonosítás esetén várakoztat az adott kapcsolaton belül
auth
optional pam_faildelay.so Delay=10000000 # 10s
\
auth
required pam_tally2.so \ deny=4 even_deny_root \ unlock_time=1200
pam_tally[2]
Mint fent, csak tetszőleges kapcsolatban képes erre
pam_time
Idő alapú hozzáférés szabályozást valósít meg
U N 1
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 10] Linux biztonsági lehetőségeinek áttekintése
Posix ACL-ek Állományrendszer szintű Posix ACL-ek
Állomány rendszer függetlenek, de fs specifikus támogatás szükséges!
Az alap r/w/x jogokat terjeszti ki tetszőleges* u/g/o-okra.
Parancsok: man acl, chacl, getfacl, setfacl
U N 2
Kizáró felhasználók és csoportok fogalma Nem összekeverendő az attr paranccsal # su - oracle -c '/bin/id -u' 1002 # setfacl -m u:oracle:- /bin/id # su - oracle -c '/bin/id -u' -su: /bin/id: Permission denied
Mentés problémája, star ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 11] Linux biztonsági lehetőségeinek áttekintése
Ext2/3/4 attribútumok Fontosabb attribútumok
Immunitable: az fájl nem módosítható, törölhető, átnevezhető és linkelhető, kivéve akinek CAP_LINUX_IMMUTABLE-je van.
Append-only: csak a hozzáfűzéssel írható a fájl, törölni sem lehet, kivéve …
Parancsok:
man chattr
chattr [+-][ia] …
lsattr …
M N 1
mentés?
# echo 1 > file # chattr +a file # echo 2 > file bash: file: Operation not permitted # echo 2 >> file ; rm file rm: cannot remove `file': Operation not ... # cat file 1 2
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 12] Linux biztonsági lehetőségeinek áttekintése
Mount opciók Mount opciók
nodev – a device fájlok normál állományként működnek nosuid – a setuid/setgid tulajdonságokat figyelmen kívül hagyja noexec – a futtathatóságot figyelmen kívül hagyja ro – csak olvashatóvá teszi az adott partíciót
K N 1+
Mire jó ez?
Ahonnan parancs futhat, oda ne lehessen írni
Ahova lehet írni, onnan ne lehessen parancsot futtatni (scriptekkel mi a helyzet?)
# mount -o remount,noexec /boot # grep boot /proc/mounts /dev/sda1 /boot ext2 noexec 0 0
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 13] Linux biztonsági lehetőségeinek áttekintése
Titkosított fájlrendszerek, fájl titkosítás I. Mik ezek és mire (nem) jók? (crypto)loop
Dm-crypt + LUKS
EncFS
eCryptfs
TrueCrypt
Blokk szintű
Blokk szintű
FUSE
Kernel*
Blokk szintű
Teljes
Teljes
Részleges
Részleges
Teljes
A legrégebbi
De facto szabvány
Nem kell 0 uid hozzá
Multiplatform Csilli-villi
HW gyorsítás:
-
-
-
Gyorsabb mint az EncFS +
Átméretezhető
-
+
-
Multiplatform:
Igen
Igen (FreeOTFE)
Igen(BSD, OsX)
Titkosítás helye: Titkosítás mértéke: Előnye:
Licence:
M N 2
GPL
+
[ Nem értelmezhető ] Nem
Igen Kereskedelmi
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 14] Linux biztonsági lehetőségeinek áttekintése
Titkosított fájlrendszerek, fájl titkosítás II. Mire kell vigyázni, figyelni?!
Ne hagyjuk magára a rendszerünket még kikapcsolt állapotban sem! (Fizikai hozzáférés veszélyei: hardver mailware-ek, boot partíción történő machináció …)
Lehetőleg teljes titkosítást válasszunk és mindent titkosítsunk, ha szükséges (A swap-et is és ne suspendeljünk, hibernáljunk!)
Töltsük fel „szeméttel” az újonnan létrehozott titkosított területeket, ezzel megnehezítjük a támadó dolgát az elemzésben.
M N 2
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 15] Linux biztonsági lehetőségeinek áttekintése
Exec logging, audit lehetőségek Grsec execlog Auditd Helye: Kernel Hangolhatóság: Fix* Naplózás: Átláthatóbb, de bizonyos hossz felett levág
Kernel + User
Linux kernel audit alrendszere alkalmazás
Rugalmas* Teljes körű, de szabad szemmel csúf (ausearch)
audit.rules
M ? 2+
apt|yum install
audit.log
auditctl
Előnye: Sima syslog elég Előre definiált neki naplózási profilok: capp, lspp, stig … Telepítése: Patchelni kell
auditd.conf
auditd
audispd autrace
kernel
audit
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 16] Linux biztonsági lehetőségeinek áttekintése
Chroot Rendszerhívás ill. a rá épülő segéd alkalmazás (csak) fájlrendszer szintű szeparációt valósít meg a hívó process és leszármazottai számára Ha nem megfelelően hívjuk akkor még fs szinten sem biztonságos Karbantarthatóság? K N 2
/ /var
/lib
/etc
/var/www/ /var/www .../www/cgi
.../www/html
chdir(/var/www) chroot(.)
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 17] Linux biztonsági lehetőségeinek áttekintése
Capability-k A monolitikus root jog szétvált „capability”-kre Ezek eldobhatóvá váltak, csak azt tartjuk meg ami valóban kell a programunk számára Nem 0 uid is birtokolhatja Parancsok: capsh, man 7 capabilities K N 2
Fontosabb capability-k:
cap_audit_(write|control)
cap_(mac|net|sys)_admin
cap_kill
cap_linux_immutable
cap_set_*
cap_sys_(chroot|module)
3.6.9-es kernelben 37 van ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 18] Linux biztonsági lehetőségeinek áttekintése
Namespace-ek Chroot jellegű szeparáció az egyes namespace-ek között. Parancsok: unshare, newns, pam_namespaces Chroot-tal és capabilitikkel kombinálva gyakorlatilag független* userspace-ek futtathatók azonos rendszeren Mi ellen nem véd? K N 2+
Namespace-ek:
UTS (hostname)
IPC
PID (PID 1, signals, ptrace)
USER*
Network (veth; ip netns)
/sys/class/net/*/new_ns_pid
Mount (+ bind mountok)
/etc/mtab becsapós lehet ...
/proc//ns ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 19] Linux biztonsági lehetőségeinek áttekintése
C(ontrol)groups Erőforrás limitáció
Szabályozható erőforrások:
Processz priorizálás
CPU
Accounting: az egyes erőforrások használatának mérésére Kontroll: az egyes cgroupok leállítása, és újraindítása
Memória
Block device-ok elérési sebessége
Freezer alrendszer*
Parancsok: man cgcreate K N 1+
Hálózati sávszélessére nem nyújt megoldást, arra marad a tc
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 20] Linux biztonsági lehetőségeinek áttekintése
A DAC-ot kiterjesztő MAC/RBAC-ok ... Tulajdonság:
SELinux (LSM)
AppArmor (LSM)
Grsecurity
Patchelni kell? Öntanuló? Karbantarthatóság Melyik disztribúció tartalmazza? Ker. támogatás? Szükséges tudásszint? Egyéb tulajdonságaik:
Nem Nem (De: audit2allow) Körülményes CentOS / RedHat / Debian
Nem Igen (Yast wizard) Egyszerű Suse / OpenSuse / Ubuntu Igen (Novell) Attól függ, de jóval kisebb
Igen Igen (gradm -L) Egyszerű Hardened Gentoo
Elérési út alapú működés, nincs szükség állomány rendszer szintű címkézésre.
Path alapú ACL-eket használ. PaX!. Egyéb kiegészítések. Microsoft is ezt használja a Skype szerverein.
Igen (Redhat) Kifejezetten nagy Mindenre címkét akaszt: állományokra, processzekre, objektumokra. Címkékre figyelni kell másoláskor! NSA / CC EAL 4+
Nem (Közösségi) Legkisebb
Nagyon jó és részletes sorozat a témában nice tollából: http://hup.hu/node/108217 + RSBAC
M ?
3
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 21] Linux biztonsági lehetőségeinek áttekintése
És a többiek ...
TOMOYO (LSM) - SElinux-szerű Apparmor
SMACK (LSM) - Simplified Mandatory Access Control Kernel
RSBAC (nem LSM, pachelni kell) - Leginkább a GRSEC és a SElinux keverékének nevezhető. CC EAL 4+
LIDS (LSM, patchelni kell)- Linux Intrusion Detection System
Yama (LSM) - Gyakorlatilag a ptrace() használatát próbálja biztonságosabbá tenni.
Summa: 8(N)+3(P) MAC közül választhatunk (3.6.9 kernelen)
K
?
3
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 22] Linux biztonsági lehetőségeinek áttekintése
PaX Host Intrusion Prevention System (HIPS)
Memória ASLR kernel és userspace szintjén egyaránt
Non-exec memory/Read-Only memory, MPROTECT.
Kernel hardening patchek és gcc plugin*-ek segítségével a kernel forrás patchelése nélkül, fordítási időben javít számos sebezhetőséget.
Bizonyos format string bugok és tervezési hibák ellen nem véd :) Fejlesztője: pipacs/PaX Team, munkájáért a Pwnie életmű díját nyerte 2011-ben! K P 2+
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 23] Linux biztonsági lehetőségeinek áttekintése
Hálózati biztonsági funkciók: Netfilter, IPSec Netfilter
Állapottartó csomagszűrő, extrákkal …
Bejövő,átmenő és kimenő forgalom szűrésére és limitációjára alkalmas
IPSEC, SSL VPN-ek, SSH
Titkosított és hitelesített hálózati kapcsolatokat tesz lehetővé.
M N 1+
# iptables -I OUTPUT \ -m state --state ESTABLISHED,RELATED \ -m owner --uid-owner www-data -j ACCEPT # iptables -A OUTPUT \ -m owner --uid-owner www-data -j DROP
Bár mindenre igaz, de az iptablesre különösen: előbb értsük meg és csak utána használjuk!
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 24] Linux biztonsági lehetőségeinek áttekintése
Virtualizáció, mint szeparációs eszköz. Biztonsági szempontból a szeparáció a lényeges, nem az erőforrás kihasználás maximalizálása! Virtualizáció módjai: teljes vagy para, konténer alapú
Korántsem teljes lista: KVM, L4Linux, lguest, Linux-Vserver, Lxc, OpenVZ, Qemu, UML, Virtualbox, VMware, Xen
Alapvetően nem biztonsági megoldás, a virtualizációs réteg (és működéshez szükséges környezet) is tartalmazhat sebezhetőségeket Előnye: kényelmesen megvalósítható a szeparáció (kényelmesebben, mint a chroot segítségével) M ? 2+
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 25] Linux biztonsági lehetőségeinek áttekintése
Fordítási idejű biztonsági megoldások: gcc
-fPIC/-fpic/-fPIE/-fpie
-fstack-protector[-all]
őrt állít a függvényhívások mellé, amit azok visszatérésekor ellenőriz
-Werror=format-security,
önmagában nem sokat ér, de ASLR csak az így fordított kódok esetén hatékony
gcc - format string hibákat hivatott kiszűrni
_FORTIFY_SOURCE (kód megerősítés)
U N 2+
s[n]printf/str[n]cpy , a „%n” jellegű format string jellegű hibák kiszűrése, visszatérési értékek ellenőrzésének megkövetelése, explicit umask megadása fájl létrehozásakor, hosszellenőrzések kikényszerítése...
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 26] Linux biztonsági lehetőségeinek áttekintése
Seccomp Története (mod 1, 2 [kernel v3.5 óta]) Az adott program forráskódját kell módosítani vagy előtét programot (wrappert) kell futtatni. A program a prtcl(PR_SET_SECCOMP,...) fgv hívással mondja meg milyen syscall-okat fog használni, és secure computing mode-ba vált. Ha olyan syscall-t hív amit nem engedélyezett, akkor a kernel kilövi a processzt. Programok: minijail0
M P
3
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 27] Linux biztonsági lehetőségeinek áttekintése
A nyílt forrás adta egyéb lehetőségek És mindez együtt:
felesleges dolgoktól mentessé tett - Grsec/PaX-os – kernelen, külön namespaceben, cgroups által behatárolva, normál userként futó, chrootolt, capability mentesen, megfelelő gcc kapcsolókkal fordított Grsec/Seccomp által behatárolt syscall-okat használó processek futnak auditd pedig írja a logokat
Ami nem kell azt ne használd, telepítsd, fordítsd, konfiguráld bele a programodba! dpkg -p nemkellcsomag vi main.c ./configure –without-... make menuconfig vi /etc/akarmi.cfg
Mindezt ingyen és szabadon!
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 28] Linux biztonsági lehetőségeinek áttekintése
Itt a vége?
Nem, jöjjön egy kis gyakorlat ...
ISO/IEC 27001
ISO 9001
Zámbó Marcell
[29 / 29] Linux biztonsági lehetőségeinek áttekintése
Itt a vége? Igen!
Köszönöm a figyelmet!
ISO/IEC 27001
ISO 9001