FreeBSD zabezpečíme nasledovne:
- Firewall
- šifrovanie swapu
- jail (pre administrátorov)
- kernel securelevels (bezpečnostné úrovne jadra)
- auditing portov
- zablokovanie Ctrl-Alt-Del (lokálne zabezpečenie)
- chflags
Firewall
FreeBSD má tri natívne komponenty pre firewalling – IPFILTER (IPF), IPFIREWALL (IPFW) a PF (Packet Filter) z OpenBSD. FreeBSD má takisto aj nástroje pre bandwidth kontrolu (kontrola priepustnosti dát), ktoré sú súčasťou firewallu (altq – PF; dummynet – IPFW).
IPFILTER môže byť ľahšie konfigurovateľný s ohľadom na niektoré vlastnosti (NAT). Viac možností firewallingu napokon urýchľuje aj prácu. V prípade, že ste ste zvykli na PF, budete mať jeden z najvyspelejších firewallov.
Všetky tri možnosti firewallu v skratke aktivujete pomocou kldload
: kldload ipf
(IPFILTER, konfiguračný súbor: /etc/ipf.rules
); kldload pf
(OpenBSD Packet Filter, konfiguračný súbor: /etc/pf.conf); kldload ipfw
(IPFIREWALL, konfiguračný súbor: /etc/rc.firewall
a /etc/ipfw.rules
). ipfw
spustíte cez rc.conf ( firewall_enable="YES"
a pomocou firewall_script
uvediete cestu k súboru) alebo manuálne ( sh /etc/ipfw.rules
).
Pravidlá pre firewall IPFW na konci tejto stránky môžete ihneď použiť, treba len zmeniť riadok odkazujúci sa na sieťovú kartu („pif“), ktorou ste pripojení k internetu.
Na internete je veľa vzorových konfiguračných súborov pre PF. PF aktivujete (pokiaľ je modul pf načítaný v jadre): pfctl -e
(deaktivujete ho: pfctl -d
) a pravidlá načítate zo súboru: pfctl -f /etc/pf.conf
.
Politika pravidiel pre firewall je najskôr všetko zakázať a potom postupne povoliť to, čo potrebujete. Základný pf.conf súbor, ktorý možno hneď použiť, nájdete na stránkach OpenBSD.
Šifrovanie swapu
Šifrovanie swapu je vo FreeBSD od verzie 5.3-RELEASE a nie je implicitne aktívne ako v OpenBSD. Do swapu sa však ukladajú citlivé dáta, ktoré je niekedy nutné šifrovať. FreeBSD pre šifrovanie swapu ponúka dva spôsoby, ale jeden z nich je tak trochu ešte experimentálny (informuje manuálová stránka gbde
). Pre šifrovanie swapu použite geli
– stačí pridať riadok do /boot/loader.conf
: geom_eli_load="YES"
a potom do /etc/fstab
(resp. upraviť existujúci riadok s odkazom na swap – vždy s písmenkom „b“):
(pôvodný) /dev/ad0s1b none swap sw 0 0 (upravený) /dev/ad0s1b.eli none swap sw 0 0
Povahu šifrovania možno neskôr dolaďovať pomocou /etc/rc.conf
, napríklad: geli_swap_flags="-e blowfish -l 128 -s 4096 -d"
Pre overenie, či šifrovanie naozaj funguje, použite swapinfo
(prípona „eli“ znamená, že šifrovanie swapu je aktívne):
$ swapinfo Device 1K-blocks Used Avail Capacity /dev/ad0s3b.eli 819200 0 819200 0%
Jail
Jail je mechanizmus podobný virtualizácii, pomocou ktorého administrátori rozdelia systém na menšie minisystémy, ktoré sa nazývajú jaily. Jaily uplatňujú najmä administrátori (pre ftp, www server alebo iné služby).
Úrovne jadra – „kernel securelevels“
FreeBSD používa bezpečnostný mechanizmus, pri aktivácii ktorého jadro sa k niektorým úlohám správa reštriktívne a nepovolí ich ani administrátorovi. Administrátor dá niektorým súborom napríklad atribút „immutable“ (nezmeniteľný). Keď je aktivovaná istá úroveň securelevel, vlastnosť súborov s atribútom „immutable“ nemôže odobrať ani administrátor.
Ak si chcete pozrieť, aký je aktuálny štatút securelevel vo vašom systéme, zadajte: sysctl kern.securelevel
FreeBSD používa niekoľko úrovní securelevel, pre obšírnejšie informácie pozrite do manuálovej stránky ( man securelevel
). V skratke ich môžeme zhrnúť:
a) –1 (bez bezpečnosti)
b) 0 (tiež bez úrovne bezpečnosti – používa sa však pri zavádzaní systému, v ktorom už sú aktivované bezpečnostné úrovne; túto úroveň nie je potrebné špeciálne nastaviť)
c) 1 (úroveň bezpečnosti, kedy nikto nemôže odobrať atribút „immutable“, ale ani moduly načítať do jadra)
d) 2 (vysoká úroveň bezpečia – úroveň 1 je v platnosti, ale rozšírená o zákaz zápisu na disk, teda nepôjde ani newfs
)
e) 3 (sieťová úroveň bezpečia, tiež vysoká, aktivovaná je úroveň 1 i 2 a nemožno meniť ani pravidlá firewallingu)
Úrovne jadra môžete hneď (bez reštartu) otestovať napríklad pomocou sysctl kern.securelevel=1
. Zápis do /etc/rc.conf si vyžaduje reštart počítača:
kern_securelevel_enable="YES" kern_securelevel=1
Pokiaľ systém beží a vy aktivujete jednu úroveň securelevel, potom môžete postupovať už len do vyšších úrovní. V prípade, že chcete úroveň znížiť, nutný je reštart.
Auditing portov
Nástroj portaudit
kontroluje zraniteľnosť softvéru tretích strán (ports) pomocou databázy, ktorá sa pravidelne aktualizuje. Z bezpečnostných dôvodov je teda vždy lepšie inštalovať balíčky iba pomocou ports ( make install
). Nástroj nájdete v /usr/ports/ports-mgmt
, odkiaľ si ho môžete inštalovať. Príkazom portaudit -F
túto databázu stiahnete z internetu a hneď budete mať najnovšie informácie o tom, aký softvér a kde má diery: portaudit -a
. Jedným z takýchto varovaní je napríklad:
Affected package: opera-10.10.20091120_2 Type of problem: opera -- Data URIs can be used to allow cross-site scripting. Reference: http://portaudit.FreeBSD.org/77b9f9bc-7fdf-11df-8a8d-0008743bf21a.html
Na stránke portaudit.freebsd.org nájdete všetko pohromade.
6) Deaktivácia Ctrl+Alt+Del
Ctrl+Alt+Del predstavuje lokálne riziko, kedy užívateľ môže reštartovať počítač a z bezpečnostných dôvodov sa odporúča reštart pomocou kláves Ctrl+Alt+Del zablokovať: sysctl hw.syscons.kbd_reboot: 1 -> 0
. Zákaz však musíte mať najskôr zakompilovaný v jadre: options SC_DISABLE_REBOOT
Chflags
Podľa požiadaviek i intenzity obáv je vhodné niektorým systémovým súborom priradiť atribút „immutable“ – súbor s takým atribútom (nezmeniteľný) nemôže nikto zmeniť okrem vás, pričom vo vyšších bezpečnostných úrovniach securelevel vylúčite aj samého seba. Na serveri to má niekoľko veľkých výhod:
chflags schg /etc/sysctl.conf # atribút priradíte chflags noschg /etc/sysctl.conf # atribút odoberiete
Bezpečnostné tipy na záver
Logy vo FreeBSD sa nachádzajú v adresári /var/logs
a treba ich priebežne sledovať. Niektoré ďalšie tipy pre zabezpečenie sú: použiť blackhole
, čím skomplikujete portscanning ( man blackhole
). Keď príde požiadavka na pripojenie k portu, na ktorom nebeží nijaká služba, systém, ktorý sa pripája, dostane správu „Connection refused“; ak nastavíte hodnotu blackhole na „2“, FreeBSD sa bude správať ako „čierna diera“ (black hole) a skenujúci systém nedostane nijakú správu, že na danom porte nič nebeží:
sysctl net.inet.tcp.blackhole=2 sysctl net.inet.udp.blackhole=1
Vhodné je aktivovať aj „process accounting“ – budete vedieť, aké procesy bežali v systéme. Aktivujete ho v /etc/rc.conf
: accounting_enable="YES"
a predchádzajúce aktivity vášho systému zobrazíte príkazmi ako sa
a lastcomm
.
Napokon je vhodné skryť procesy. Pokiaľ vo FreeBSD zadáte príkaz ps
, v každom účte uvidíte všetky spustené procesy. Vo viacužívateľskom prostredí tak môže ktokoľvek sledovať iného užívateľa, preto sa odporúča toto zablokovať:
sysctl security.bsd.see_other_uids=0 sysctl security.bsd.see_other_gids=0
Zámenou „0“ za „1“ sa ps
bude správať ako predtým. Rôzne príkazy sysctl
je najlepšie zapísať do /etc/sysctl.conf
.
Odkazy
Niektoré aplikácie tretích strán pre auditing a zabezpečenie FreeBSD