Bezpečnostné tipy (2)

02.01.2008 14:00 | Články | Adam Sloboda
PAM (Pluggable Authentication Modules) je systém, ktorý oddeľuje programy od autentifikácie/prihlásenia pomocou jednotného rozhrania a umožňuje tvorbu modulov pre rôzne metódy prihlásenia. Okrem samotného prihlásenia sa tieto moduly môžu starať aj o iné záležitosti, niektoré z nich si teraz ukážeme.

Bezpečné heslá

Heslo, ktoré nie je jednoduché uhádnuť je základ bezpečnosti. Ako seba a ostatných donútiť zvoliť takéto heslo? V tom nám pomôže systém PAM a modul pam-passwdqc. Tento sa nachádza v balíčku libpam-passwdqc (Ubuntu, Debian). Po inštalácii je potrebné nastaviť aby sa tento modul používal. Upravíme konfiguračný súbor /etc/pam.d/common-password (tento by mal byť spoločný pre všetky programy, ktoré umožňujú meniť užívateľské heslo):

# pôvodné nastavenie
#password   required   pam_unix.so nullok obscure min=4 max=8 md5

# nové nastavenie
password    required   pam_passwdqc.so min=disabled,16,12,8,6 max=256
password    sufficient pam_unix.so use_authtok md5
password    required   pam_deny.so

Parameter min pre minimálne požiadavky na heslo sme nastavili nasledujúcim spôsobom (typy znakov sú veľké pismená, malé písmená, číslice a ostatné znaky):

  1. disabled – zakázali sme heslá tvorené len jedným typom znakov (akejkoľvek dĺžky)
  2. 16 – minimálna dĺžka hesla pozostávajúceho z dvoch typov znakov
  3. 12 – je nastavenie dĺžky pre "passphrase" (modul náhodne vygeneruje vyhovojúcu "passphrase")
  4. 8 – dĺžka hesla pozostávajúceho z troch typov znakov
  5. 6 – dĺžka hesla pozostávajúceho zo štyroch typov znakov

Tento modul má veľa možností nastavenia a popísať ich je nad rámec tohto článku, záujemcovia môžu nájsť podrobnú dokumentáciu v adresári /usr/share/doc/libpam-passwdqc.

Bezpečné heslá druhýkrát

Teraz keď máme bezpečné heslo, ako by sme ho mohli zabezpečiť ešte viac? Heslá sú uložené v súbore /etc/shadow (právo čítať tento súbor má len root), ale samozrejme nie v textovej podobe – je z nich vytvorený tzv. hash (nazývaný aj "one-way encryption" – jednosmerné šifrovanie). To ako ťažké je prelomiť tento hash je závislé od hashovacieho algoritmu, takže stačí nahradiť pôvodný autentifikačný modul novým, ktorý používa lepší algoritmus. Tento modul sa volá libpam-unix2 a podporuje algoritmus Blowfish.

Pozor, nasledujúce úpravy by mali robiť len ľudia, ktorí vedia čo môžu pokaziť, alebo majú také isté distribučné nastavenia. Zakomentované sú pôvodné nastavenia a pod nimi nové.

  • /etc/pam.d/common-account:
    #account required        pam_unix.so
    account required        pam_unix2.so
    
  • /etc/pam.d/common-auth:
    #auth    required        pam_unix.so nullok_secure
    auth    required        pam_unix2.so nullok
    
  • /etc/pam.d/common-password:
    #password   required   pam_unix.so nullok obscure min=4 max=8 md5
    password   required   pam_unix2.so nullok obscure min=4 max=8 blowfish
    
  • /etc/pam.d/common-session:
    #session required        pam_unix.so
    session required        pam_unix2.so
    

Teraz je ešte potrebné zmeniť si heslo, aby sa táto zmena naozaj prejavila. Žiaľ niektorý softvér ešte nemusí byť na takýto prechod pripravený (napr. XScreenSaver so slabšou podporou PAM) a môže byť výhodnejšie počkať kým túto zmenu spravia v samotnej distribúcii.

Bezpečné heslá tretíkrát

Teraz máme bezpečné heslo, heslo zabezpečené, čo môžeme ešte spraviť? Pokiaľ nám na počítači bežia nejaké služby (napr. FTP), tak k nim pravdepodobne chceme pristupovať. Obyčajne sa používa jediné užívateľské heslo pre všetky tieto služby. Takže teraz si ukážeme ako nám PAM a modul libpam-dotfile môže pomôcť nastaviť si iné heslá pre rôzne služby.

Keďže chceme mať iné heslo pre každú službu, musíme upraviť nastavenie pre každú z nich zvlášť. Konfiguračný súbor sa volá podľa služby pre ktorú je určený, napr. /etc/pam.d/vsftpd pre FTP server vsftpd.

# pôvodné nastavenie pre jednotné heslo
#auth    required       pam_unix.so nullok_secure
# zmeníme takýmto spôsobom: 
auth    sufficient       pam_unix.so nullok_secure
# a pridáme nastavenie pre pam-dotfile
auth    sufficient       pam_dotfile.so use_first_pass no_warn
auth    required         pam_deny.so

Teraz má každý užívateľ možnosť pridať si iné heslo na FTP týmto príkazom:

pam-dotfile-gen -a vsftpd

Takto je možné si pridať viacero hesiel, odstrániť ich je nutné úpravou súboru v domovskom adresári (v našom prípade ~/.pam-vsftpd).

Dočasné súbory

Spoločný adresár pre dočasné súbory (tradične /tmp) môže predstavovať riziko. Miesto spoliehania sa na dostatočné ošetrenie v programoch je možné ich donútiť používať iný, zabezpečený adresár. PAM modul libpam-tmpdir nastaví premenné prostredia TMP a TMPDIR, ktoré by mali všetky programy rešpektovať.

Stačí pridať nastavenie do /etc/pam.d/common-auth:

session    optional     pam_tmpdir.so

Odteraz sa bude používať po prihlásení špeciálny adresár, ku ktorému má prístup výhradne jeho majiteľ. Miesto kde sa tento adresár vytvára sa dá zmeniť v súbore /etc/security/tmpdir.conf:

tmpdir=/cesta/ku/tmp/adresaru

forkbomb

Tento Denial of Service (DoS) útok, ktorý sa rozoberal aj tu na fóre, spočíva v zahltení tabuľky procesov, ktorá je limitovaná konštantným číslom v jadre. Tomuto sa dá zamedziť nastavením limitu na počet procesov, ktoré môže užívateľ spustiť. Toto nastavenie sa nachádza v súbore /etc/security/limits.conf:

# pre všetkých
*        -       nproc            512
# pre člena skupiny
@skupina -       nproc           1024
# a root
root     -       nproc           2048

Toto sú ilustračné hodnoty, v prípade potreby je možné nastaviť aj oveľa väčšie hodnoty, no bežne je aj 512 viac než dosť. Na to aby sa toto nastavenie uplatnilo je potrebné sa odhlásiť a znovu prihlásiť. Ak by ani to nepomohlo, potom distribučné nastavenie nenačíta tieto hodnoty a je potrebné skontrolovať či súbory login či gdm (alebo nastavenie pre iné programy vykonávajúce login) v adresári /etc/pam.d/ obsahujú riadok ako:

session    required   pam_limits.so

Nabudúce

Nabudúce sa pozrieme ako sa dá zvýšiť bezpečnosť pri verejných službách a ukážeme si tiež ako nám môže hardware pomôcť proti zneužitiu chýb v programe.

    • Limits 03.01.2008 | 02:41
      Avatar Samuel BWPOW Kupka Almalinux, OpenWRT  Používateľ
      Celkom uzitocne moze byt aj nastavenie memlock:
      *          -    memlock         65536
      Pripadne aj nice a priority.
      Strach dát najevo své pocity a zjednat si u druhých respekt je jedním z problémů civilizovaného člověka, který se naučil zpochybňovat svou vlastní pravdu pro zdání objektivity