Bezpečnostné tipy (3)

17.01.2008 17:00 | Články | Adam Sloboda
V tomto dieli sa pozrieme najmä na tipy pre zabezpečenie svojich serverov so zneužiteľnými službami.

Bezpečný "locate"

Keď máme stroj s viacerými užívateľmi, je potrebné zabezpečiť aby ich práva boli rešpektované. locate je program, ktorý dokáže za veľmi krátky čas vyhľadať súbor podľa názvu. Táto rýchlosť je dosiahnutá tým, že miesto prehľadávania súborových systémov sa hľadá len vo vygenerovanej databáze. Pôvodný program má ale jednu chybu – ignoruje práva. Toto spôsobuje, že ktokoľvek môže prehľadávať aj podstromy, ktoré by nemal vidieť (t.j. keď má adresár execute bit nulový). Obyčajný locate je tradične súčasťou základnej inštalácie (balíček findutils). Bezpečná "secure locate" verzia podáva výsledky s ohľadom na práva. Balíček slocate nahradí vyhľadávací program (locate) a generátor databázy (updatedb). Po jeho nainštalovaní je potrebné spustiť updatedb (s právami roota) aby bola pôvodná databáza prepísaná.

NX bit

Užitočnou pomôckou k zvýšeniu bezpečnosti môže byť aj relatívna novinka v procesoroch – NX (No eXecute) bit. Týmto môžeme efektívne zabrániť zneužitiu najčastejších chýb v programoch ako je "buffer overflow". Tento bit nie je možné využiť na 32-bitových procesoroch bez jadra podporujúceho PAE, ani keď ho procesor podporuje. Na zapnutie podpory je potrebné pridať do nastavenia zavádzača (GRUB, LILO) nasledujúce parametre jadra:

noexec=on noexec32=on

Komplexnejším, ale zložitejším riešením obmedzenia práv programov je SELinux (Security Enhanced Linux).

Z podobného súdka je program execstack, ktorý je obyčajne distribuovaný v balíčku prelink. Tento program zakáže programu či knižnici spúšťanie kódu zo zásobníka:

execstack -c

Niektorým programom to nemuí robiť ale dobre, povoliť sa dá príkazom:

execstack -s

Zistiť nastavenie programu sa dá príkazom:

execstack -s

Tento program je dobrý najmä na zistenie či je program chránený bezpečnostným rozšírením jadra ExecShield.

root

root je administrátorský účet a nemal by sa používať na nič iné – žiadne X, žiadne IRC a tiež žiaden FTP ani SSH účet. Toto nie je nejaký konkrétny tip, len treba byť opatrný. Konkrétne je potrebné pre FTP server skontrolovať či konfiguračný súbor /etc/ftpusers obsahuje tento zákaz (pozor, nastavenie FTP môže byť aj úplne opačné a tento súbor potom obsahuje účty, ktoré majú povolený FTP login). OpenSSH server vyžaduje nastavenie v konfiguračnom súbore /etc/ssh/sshd_config:

PermitRootLogin no

Pokiaľ túto voľbu neobsahuje, je prihlásenie povolené.

SSH 2

SSH je bezpečné. Presnejšie, komunikačný protokol SSH verzie 2 je bezpečný. A preto je sa treba uistiť, že konfiguračný súbor /etc/ssh/sshd_config obsahuje nasledujúce nastavenie:

Protocol 2

Rozumne nové verzie distribúcií by mali toto nastavenie obsahovať a nemalo by byť potrebné nič meniť (pokiaľ tak nie je, treba si dať veľký pozor tiež na východzie nastavenie iných služieb).

Bezpečnejšie FTP

Bezpečnejšie môžeme dosiahnuť správnou voľbou serveru, potrebujeme taký, ktorý viac dbá o bezpečnosť než o počet funkcií. Tento výber teda zúžime na Pure-FTPd a vsftpd. Potom stačí zvoliť jeden, nainštalovať ho a nastaviť aby užívatelia videli iba svoj domovský adresár. Toto je dosiahnuté systémovým volaním chroot, ktoré spôsobí, že sa užívateľ dostane do predstieraného prosredia, v ktorom '/' sa "presunie" na nejaký adresár (v tomto prípade domovský adresár užívateľa) a nie je možné vidieť nič čo je nad ním. A teraz sa pozrime ako to nastaviť.

Pure-FTPd má toto nastavenie v súbore /etc/pure-ftpd/conf/ChrootEveryone (ak neexistuje, je potrebné ho vytvoriť), ktorý musí obsahovať hodnotu yes.

Pre vsftpd sa to nastaví pridaním alebo upravením nastavenia v súbore /etc/vsftpd.conf:

chroot_local_user=YES

Pravidelná zmena hesla

Zmena hesla po určitom čase môže veľmi prospieť bezpečnosti, pokiaľ nie sú nasadené príliš prísne pravidlá pre heslá a príliš často sa nevynucuje zmena. Vypršanie hesla je možné nastaviť v súbore /etc/login.defs. Obyčajne obsahuje túto hodnotu:

PASS_MAX_DAYS   99999

To je dostatočná doba aby nikto nepotreboval meniť heslo, takže to zmeníme:

PASS_MAX_DAYS   180

To je približne pol roka čo nie je príliš otravné. Pokiaľ užívateľ toto heslo nezmení, účet je zablokovaný. Aby užívateľ vedel, že onedlho vyprší heslo, nastavíme, aby bol upozorňovaný už týždeň vopred:

PASS_WARN_AGE   7

BIOS a bootloader

Občas sa zabúda na fyzický prístup k počítaču, kedy človek aj napriek rôznym zabezpečeniam (s výnimkou šifrovania) dokáže pristupovať ku všetkým dátam z iného operačného systému. Preto netreba zabudnúť nastaviť boot výhradne z disku a heslo do BIOS-u. V neposlednom rade je potrebné nastaviť heslo pre príkazový riadok v GRUB-e či zaheslovať iné operačné systémy.

Pre vyššiu bezpečnosť si necháme vypočítať z hesla hash, v čom nám pomôže program grub-md5-crypt. Potom stačí pridať voľbu s vygenerovaným hashom do /boot/grub/menu.lst:

password --md5 hash

Pokiaľ sú v GRUB-e voľby, ktoré chceme zaheslovať je potrebné za ich názov (title) pridať príkaz lock.

V prípade bootloaderu LILO je situácia jednoduchšia, stačí pridať do /etc/lilo.conf voľbu password=heslo, ale aby nikto nemal možnosť si ho prečítať, nastavíme práva len rootovi:

chmod 600 /etc/lilo.conf

Pokiaľ sa má voľba vzťahovať iba k jednému jadru, musí byť password pod voľbou image. A posledná možnosť je, keď chceme boot bez hesla, ale zákaz úpravy parametrov, pod password pridáme ešte restricted.

Po zmene nastavení je potrebné zavolať lilo, aby svoje nastavenia aktualizoval.

"bastille"

A na záver odporučím ešte program bastille, ktorý dokáže interaktívne zabezpečiť systém pričom vysvetľuje každú možnosť na ktorú sa pýta. Je to užitočná pomôcka, ktorá za zlomok času dokáže nastaviť systém podľa aktuálnych požiadaviek.

Záver

Toto je posledná časť seriálu o bezpečnostných tipoch. Začiatočníkom som sa pokúsil ukázať niektoré z nástrah a ich príčiny, skúsenejší snáď spoznali alebo si pripomenuli niektoré postupy a nastavenia. Systémy typu Unix sú známe svojou bezpečnosťou, no netreba zabúdať, že tá často nestojí len na jeho architektúre, ale že platí aj pravidlo, že systém je len tak bezpečný, akého má administrátora a najnebezpečnejší je falošný pocit bezpečia. Toto zďaleka nie je všetko čo sa dá o bezpečnosti naučiť, ale bežný skúsený používateľ s tým celkom môže vystačiť. Nakoniec už len poradím, na čo by sa mal orientovať niekto s hlbším záujmom o tému – SELinux, IDS (Intrusion Detection Systems; napr. Snort), chrootkit a podobne, cestu k nim si už isto nájdu sami.

    • re: 17.01.2008 | 18:42
      Avatar borg Arch, Debian jessie  Administrátor
      len opravim, ze program na vyhladavanie rootkitov sa vola chkrootkit a nie chrootkit.