Sedem základných tipov pre zabezpečenie FreeBSD

10. 11. 2010
Doba čtení: 5 minut

Sdílet

FreeBSD okrem možnosti doinštalovania rôznych aplikácií pre zabezpečenie systému má pravdaže i vyspelé natívne komponenty, pomocou ktorých si užívateľ i administrátor vybuduje stenu voči okoliu. Možnosti základného zabezpečenia zhrnieme do siedmych tipov v duchu, „ako s FreeBSD začať“.

FreeBSD zabezpečíme nasledovne:

  1. Firewall
  2. šifrovanie swapu
  3. jail (pre administrátorov)
  4. kernel securelevels (bezpečnostné úrovne jadra)
  5. auditing portov
  6. zablokovanie Ctrl-Alt-Del (lokálne zabezpečenie)
  7. 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.fre­ebsd.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ť:

bitcoin školení listopad 24

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