Správa používateľov

Správa používateľov je najdôležitejšou časťou pri udržiavaní bezpečného systému. Nesprávne nastavenie  používateľov a ich privilégií často v mnohých systémoch vedie k ich napadnutiu. Preto je dôležité, aby sme pochopili, ako môžeme chrániť náš server pomocou jednoduchých a efektívnych techník správy používateľských účtov.

Kde je root?

Vývojári Ubuntu sa rozhodli kvôli bezpečnosti zakázať účet root (používateľ s najvyššími právami) v predvolenom nastavení pre všetky inštalácie Ubuntu. To neznamená, že účet root bol zrušený alebo že sa do neho nedá prihlásiť. Iba mu bolo pridelené heslo, ktoré nie je možné porovnať so zašifrovanou hodnotu, a preto sa k tomuto účtu nedá prihlásiť priamo.

Miesto priameho prihlásenia k účtu root používatelia môžu na vykonávanie administrátorských činností použiť nástroj sudo. Sudo umožňuje autorizovaným používateľom na istý čas získať práva root po zadaní svojho vlastného hesla miesto toho, aby museli zadať heslo prislúchajúce k účtu root. Táto jednoduchá, ale účinná metóda umožňuje zistiť pôvodcu každej vykonanej akcie a poskytuje administrátorovi podrobnejšie určiť, ktoré akcie môže používateľ s takýmito oprávneniami vykonať.

  • Ak kvôli nejakým dôvodom potrebujete povoliť účet používateľa root, stačí mu prideliť heslo:

    sudo passwd

    Sudo nás vyzve, aby sme zadali naše heslo a potom budeme môcť nastaviť nové heslo pre používateľa root tak, ako v nasledujúcom príklade:

    [sudo] password for username: (zadáme naše vlastné heslo)
    Enter new UNIX password: (zadáme nové heslo pre používateľa root)
    Retype new UNIX password: (znova zadáme heslo pre používateľa root)
    passwd: password updated successfully
  • Ak chceme účet používateľa root zablokovať, použijeme nasledujúci príkaz:

    sudo passwd -l root
  • Viac o nástroji sudo sa môžeme dozvedieť na man stránkach:

    man sudo

Prvý používateľ vytvorený inštalátorom Ubuntu je členom skupiny "admin", ktorá je v súbore /etc/sudoers zadefinovaná ako oprávnený používateľ príkazu sudo. Ak chceme niektorému ďalšiemu používateľovi povoliť prístup k oprávneniam používateľa root prostredníctvom príkazu sudo, jednoducho ho pridáme do skupiny admin.

Pridávanie a odstraňovanie používateľov

Proces správy lokálnych používateľov a skupín je jednoduchý, ale trochu sa odlišuje od ostatných operačných systémov GNU/Linux. Ubuntu a ostatné distribúcie založené na systéme Debian uprednostňujú na správu účtov balík "adduser".

  • Ak chceme pridať používateľský účet, použijeme nasledujúci príkaz a budeme odpovedať na otázky o názve účtu, hesle a ďalších identifikačných parametroch, akými sú napríklad celé meno, číslo telefónu, atď.

    sudo adduser meno_pouzivatela
  •  Ak chceme odstrániť používateľský účet a jeho primárnu skupinu, použijeme nasledujúci príkaz:

    sudo deluser meno_pouzivatela

    Odstránenie účtu nie je podmienené odstránením domovského priečinka. Je na nás, či priečinok zmažeme ručne alebo si ho ponecháme pre opätovné použitie.

    Každý používateľ, ktorý bude mať rovnaké číslo UID alebo GID ako predchádzajúci majiteľ, bude mať do tohto priečinka prístup, ak tomu nezabránime.

    AK budeme chcieť zmeniť hodnoty UID/GID na nejaké presnejšie, napríklad na rovnaké ako má root, a presunúť priečinok inam, aby v budúcnosti nenastali konflikty, zadáme tieto príkazy:

    sudo chown -R root:root /home/meno_pouzivatela/
    sudo mkdir /home/archivovani_pouzivatelia/
    sudo mv /home/meno_pouzivatela /home/archivovani_pouzivatelia/
  • Ak chceme dočasne uzamknúť alebo odomknúť používateľský účet, použijeme tieto príkazy:

    sudo passwd -l meno_pouzivatela
    sudo passwd -u meno_pouzivatela
  • Ak chceme pridať alebo vytvoriť skupinu, použijeme nasledujúce príkazy:

    sudo addgroup meno_skupiny
    sudo delgroup meno_skupiny
  • Ak chceme pridať používateľa do skupiny, použijeme nasledujúci príkaz:

    sudo adduser meno_pouzivatela meno_skupiny

Bezpečnosť používateľských profilov

Pri vytváraní nového používateľského účtu nástroj adduser vytvorí nový domovský priečinok  /home/meno_pouzivatela. Profil sa vymodeluje podľa obsahu priečinka /etc/skel, ktorý obsahuje všetky základné komponenty profilu.

Ak náš server bude domovom pre viacero používateľov, mali by sme venovať zvýšenú pozornosť nastaveniu oprávnení k používateľským priečinkom. V predvolenom stave sú domovské priečinky v Ubuntu vytvorené s všeobecnými právami pre čítanie/spúšťanie. To znamená, že všetci používatelia môžu prezerať a pristupovať k obsahu domovských priečinkov ostatných používateľov. To pre naše prostredie nemusí byť vhodné.

  • Ak chceme overiť, aké sú k priečinku pridelené oprávnenia, použijeme nasledujúci príkaz:

    ls -ld /home/meno_pouzivatela

    Nasledujúci výstup nás informuje, že priečinok /home/username je prístupný na čítanie všetkým:

    drwxr-xr-x  2 meno_pouzivatela meno_pouzivatela    4096 2007-10-02 20:03 meno_pouzivatela
  • Práva čítania priečinka pre všetkých môžeme zrušiť nasledujúcim príkazovom:

    sudo chmod 0750 /home/meno_pouzivatela
    [Note]

    Niektorí ľudia majú tendenciu bez uváženia používať rekurzívny prepínač  (-R), ktorý zmení práva aj všetkým podriadeným priečinkom a súborom. Toto však nie je nevyhnutné a môže to viesť k nežiaducim problémom. Zmena oprávnení k rodičovskému priečinku zabráni neautorizovanému prístupu aj ku všetkému čo je v ňom.

    Oveľa efektívnejším spôsobom je, ak globálne zmeníme predvolené oprávnenia k domovským priečinkom pre nástroj adduser. Otvoríme súbor /etc/adduser.conf a upravíme premennú DIR_MODE na také práva, aké chceme priradiť všetkým novovytvoreným domovským priečinkom.

    DIR_MODE=0750
  • Po úprave oprávnení priečinka použitím niektorej z uvedených techník opäť overíme oprávnenia k priečinku pomocou príkazu:

    ls -ld /home/meno_pouzivatela

    Výpis nižšie nám potvrdil, že priečinok už nemajú právo čítať všetci:

    drwxr-x---   2 meno_pouzivatela meno_pouzivatela    4096 2007-10-02 20:03 meno_pouzivatela

Politika hesiel

Používanie silných hesiel je jedným z najdôležitejších aspektov bezpečnosti. Mnoho napadnutí systému uskutočnených hrubou silou (vyskúšanie všetkých možností) alebo slovníkovým útokom bolo úspešných kvôli slabým heslám. Ak sa rozhodneme používať niektorú formu vzdialeného prístupu, ktorá vyžaduje lokálne heslá, je potrebné adekvátne nastaviť dolnú hranicu zložitosti hesla, maximálnu dĺžku platnosti hesla a časté auditovanie nášho autentifikačného systému.

Minimálna dĺžka hesla

V predvolenom stave je minimálna dĺžka hesla, ktorú Ubuntu vyžaduje, 4 znaky, a tiež je nastavené základné overenie náhodnosti. Táto hodnota sa nastavuje v súbore /etc/pam.d/common-password, spôsobom uvedeným nižšie.

password   required   pam_unix.so nullok obscure min=4 max=8 md5

Ak by sme chceli zvýšiť minimálnu dĺžku hesla na 6 znakov, zmeníme hodnotu príslušnej premennej na min=6.

password   required   pam_unix.so nullok obscure min=6 max=8 md5
[Note]

Premenná max=8 neznamená maximálnu dĺžku hesla. Hovorí o tom, že zložitosť hesla sa nebude kontrolovať pri heslách, ktoré sú dlhšie ako 8 znakov. Ak chcete pomôcť s náhodnosťou hesiel, môžete použiť balík libpam-cracklib.

Platnosť hesla

Pri vytváraní používateľských účtov by sme mali nastaviť minimálnu a maximálnu životnosť hesla a to, aby bol po jej uplynutí používateľ prinútený zadať nové heslo.

  • Ak chceme zobraziť stav účtu používateľa, použijeme nasledujúci príkaz:

    sudo chage -l meno_pouzivatela

    Výstup nižšie zobrazuje zaujímavé fakty o používateľskom účte, konkrétne to, že nie je aplikovaná žiadna politika:

    Last password change                                    : Jan 20, 2008
    Password expires : never
    Password inactive : never
    Account expires : never
    Minimum number of days between password change : 0
    Maximum number of days between password change : 99999
    Number of days of warning before password expires : 7
  • Ak chceme nastaviť niektorú z týchto hodnôt, použijeme nasledujúci príkaz a budeme sa riadiť interaktívnymi otázkami:

    sudo chage meno_pouzivatela

    V nasledujúcom príklade ručne nastavíme dátum vypršania platnosti hesla (-E) na 31.1.2008, minimálnu dobu platnosti hesla (-m) na 5 dní, maximálnu dobu platnosti hesla (-M) na 90 dní, dĺžku neaktívnosti, po ktorej heslo nebude platné (-I) na 5 dní a čas varovania pred skončením platnosti hesla (-W) na 14 dní.

    sudo chage -E 01/31/2008 -m 5 -M 90 -I 30 -W 14 meno_pouzivatela
  • Ak chceme zmeny overiť, použijeme znova príkaz:

    sudo chage -l meno_pouzivatela

    Výstup nižšie zobrazuje novú politiku, ktorá je odteraz platná pre daný účet:

    Last password change                                    : Jan 20, 2008
    Password expires : Apr 19, 2008
    Password inactive : May 19, 2008
    Account expires : Jan 31, 2008
    Minimum number of days between password change : 5
    Maximum number of days between password change : 90
    Number of days of warning before password expires : 14

Ďalšie možnosti zabezpečenia

Mnoho aplikácií používa alternatívne autentifikačné mechanizmy, ktoré môžu byť ľahko prehliadnuté dokonca aj skúsenými správcami systémov. Preto je dôležité pochopiť a riadiť spôsob, akým sa budú používatelia autentifikovať k jednotlivým službám a aplikáciám na serveri.

SSH prístup zablokovaných používateľov

Jednoduché zablokovanie/uzamknutie používateľského účtu nezabráni pred vzdialeným pripojením používateľov k serveru, ak mali pred tým nastavenú autentifikáciu pomocou verejného RSA kľúča. Budú sa môcť stále pripojiť a budú mať k dispozícii príkazový riadok bez potreby zadávania akéhokoľvek hesla. Nesmieme preto zabudnúť skontrolovať domovský priečinok používateľa, či neobsahuje súbor, ktorý umožňuje tento typ autentifikovaného prístupu napr. /home/meno_pouzivatela/.ssh/authorized_keys.

Odstránime alebo premenujeme priečinok .ssh/ v domovskom priečinku používateľa, čím predídeme ďalšiemu využitiu možnosti SSH autentifikácie.

Uistíme sa, či so zablokovaným používateľom nie sú nadviazané SSH spojenia. Je možné, že bude mať nadviazané prichádzajúce alebo odchádzajúce pripojenia. Zrušíme všetky, ktoré nájdeme.

SSH prístup povolíme iba používateľom, ktorí by ho mali mať. Napríklad môžeme vytvoriť skupinu s názvom "sshlogin" a pridať názov skupiny do premennej AllowGroups v súbore /etc/ssh/sshd_config.

AllowGroups sshlogin

Potom používateľov, ktorí majú mať prístup k SSH, pridáme do skupiny "sshlogin" a reštartujeme službu SSH.

sudo adduser meno_pouzivatela sshlogin
sudo /etc/init.d/ssh restart

Autentifikácia pomocou externej databázy používateľov

Väčšina vyspelejších sietí používa centralizovanú autentifikáciu a riadenie prístupu ku všetkým systémovým zdrojom. Ak ste nakonfigurovali server tak, aby autentifikoval používateľov pomocou externej databázy, uistíme sa, či sme účet zablokovali lokálne aj externe, a tým zaistíme, že nebude možné ani núdzové lokálne prihlásenie.