Nočnou morou každého administrátora je, že niekto získa jeho roota. Presne k tomuto účelu slúži software, ktorý si so sebou nesie príznačne meno rootkit. Jedná sa o škodlivý software, ktorého úlohou je získať administrátorské práva.

Od čias prvého rootkitu už prešla dlhá doba a o ich podobe a význame by sa dalo polemizovať viď. wiky. Ale mi tu dnes naštastie nie sme kvôli polemizovaniu. Našou úlohou bude dnes z ľahka si ukázať ako si večer pred spaním prečesať systém.

Intrusion detection system (IDS)

By sme mohli z angličtiny voľne preložiť ako systém na detekciu preniknutia. Úlohou týchto softwarov je zistiť prelomenie bezpečnosti počítačových systémov, pomocou monitorovania siete a prebiehajúcich procesov.

Avšak aby to nebolo celé také jednoduché IDS nebude prvé na čo sa pozrieme, skúsime to najprv vlastnými silami. Poďme na to.

Čo teda robiť v prípade keď si myslím, že niekto cudzí ma prístup do systému ?

Napadlo to aj Vás? Najprv sa uistíme, že nie je prihlásený v našom systéme. Spravíme tak pomocou príkazov w a who.

Výstup by potom vyzeral takto:

root@bs:~# w
 01:06:53 up 1 day, 7 min,  1 user,  load average: 0.31, 0.39, 0.32
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
adminko   pts/0    192.168.88.236   18:57    0.00s  2:35   0.05s sshd: adminko [priv]

Z výpisu vidíme, že prvým údajom je meno prihláseného používateľa, v našom prípade adminko. Za ním následuje TTY . Tento názov nám hovorí akým spôsobom sme prihlasení. V mojom prípade sa jedná PTS/0 a teda je jasné, že som prihlásený cez niektorý z pseudoterminálov ako napr. cez telnet, alebo ssh. Na rozdiel od TTY, kde hovoríme v úvodzovkách o niečom hmatateľnejšom ako myš a klávesnica, či sériové pripojenie. Ďalšou položkou je LOGIN@. Určuje čas prihlásenia do systému. IDLE hovorí o tom koľko času ubehlo od poslednej aktivity. JCPU zase hovorí o tom koľko času potreboval systém, kým spracoval všetky naše príkazy. A nakoniec PCPU hovorí o tom koľko času bolo potrebného na výkonanie poslednej operácie.

Ďalšie zaujímavé príkazy, ktoré by sme mohli ešte použiť sú who, ps -a, uptime, ale tie si už pozrite sami.

Ak by sme náhodou našli používateľa o ktorom si nie sme istý kým tento človek je môžeme použiť príkaz finger, vďaka ktorému zistíme informácie o používateľovi počítača. Napr:

root@bs:~# finger adminko
Login: adminko                           Name: NajkrajsiAdminVhre
Directory: /home/adminko                 Shell: /bin/bash
On since Fri Oct 16 18:57 (CEST) on pts/0 from 192.168.88.236
   6 seconds idle
     (messages off)
No mail.
No Plan.

Ak by sme sa rozhodli, že daný používateľ nám v systéme zavádza, môžeme ho jednoducho vykopnúť. Najprv však si musíme zistiť jeho PID. To spravíme pomocou príkazu who -u, ktorý nám zobrazí aktuálne prihlásených používateľov a jedno dvoležité čísleko, ktoré potrebujeme aby sme mohli zastaviť proces, ktorý drží používateľa v systéme. Ak by sme chceli konkrétneho používateľa môžeme si pomôcť s grepom. Myslite správne grep nie je ovocie, ale príkaz, ktorý nám vráti z výberu riadky, ktoré zodpovedajú vyhľadávaciemu vzoru. Takže a výsledný príkaz na výpis informácií o jednom konkrétnom prihlásenom používateľovi by mohol vyzerať takto: who -u | grep adminko

root@bs:~# who -u | grep adminko
adminko   pts/0        2020-10-16 18:57   .        585566 (192.168.88.236)

Vo výpise vidíme opäť meno používateľa, typ terminálu, dátum a čas prihlásenia sa do systému, momentálne pre nás dôležité číslo procesu PID, ktorý drží používateľa v systéme a IP adresu terminálu, z ktorého sa používateľ prihlásil. V našom prípade by potom konečný príkaz na vykopnutie používateľa vyzeral takto:

root@bs:~# kill 585566

Ak by nám to nestačilo, môžeme skontrolovať posledné prihlásenia do systému pomocou príkazu: last, výstup by potom mohol vyzerať takto:

root@bs:~# last
adminko   pts/0        192.168.88.236   Fri Oct 16 18:57   still logged in
adminko   web console                   Fri Oct 16 02:48 - 02:48  (00:00)
adminko   pts/0        192.168.88.236   Fri Oct 16 01:17 - 08:57  (07:39)
adminko   system boot  5.4.0-51-generic Fri Oct 16 00:59   still running
adminko   pts/0        192.168.88.236   Fri Oct 16 00:30 - 00:58  (00:27)
adminko   system boot  5.4.0-51-generic Fri Oct 16 00:14 - 00:58  (00:43)
adminko   pts/0        192.168.88.236   Fri Oct 16 00:06 - 00:13  (00:06)
reboot   system boot  5.4.0-51-generic Thu Oct 15 23:00 - 00:13  (01:13)
adminko   pts/0        192.168.88.236   Mon Oct  5 16:01 - 19:44  (03:43)
adminko   pts/0        192.168.88.236   Mon Oct  5 15:20 - 16:01  (00:40)
adminko   pts/0        192.168.88.236   Sat Oct  3 19:12 - 06:25  (11:12)
adminko   pts/0        192.168.88.236   Fri Oct  2 19:45 - 15:36  (19:51)
reboot   system boot  5.4.0-48-generic Fri Oct  2 19:42 - 22:58 (13+03:15)
adminko   web console                   Fri Oct  2 16:55 - 16:55  (00:00)

Ak by sme niektorého z používateľov predsa len podozrievali z niečoho, môžeme na neho použiť tažké zbrane v podobe histórie príkazov, ktoré použil spravíme tak pomocou príkazu history, príkaz by mohol potom vyzerať takto:

root@bs:~# su adminko
adminko@bs:/root$ history
    1  sudo lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL
    2  sudo fdisk -l
    3  sudo parted -l
    4  ..
    5  ls
    6  ls -a
    7  sudo -i
    

V prvom kroku sme použili príkaz su adminko, vďaka ktorému sme sa na chvíľku prevtelili do účtu tohto používateľa a následne sme pomocou príkazu history zobrazili použité príkazy. Skúsený používateľ, takto vie ľahko vyčítať, či to tento používateľ s naším linuxovým serverom mysli dobre, alebo ani nie..

Zobrazené príkazy sa nachádzajú v domovskom adresári používateľa na adrese /home/adminko/.bash_history nevýhodou je, že šikovný používateľ môže takýto súbor buď zmazať, alebo upraviť.

V ďalšom príspevku si povieme niečo o monitorovaní sieti, procesoch a ukážeme si už aj nejaký ten program, ktorý nám pomôže odhaliť zradu v systéme.