GNU/Linux >> Znalost Linux >  >> Linux

Jak nastavit tlog na hostitelích Linux pro protokolování terminálu

Protokolování terminálu může znít jako trochu narušení soukromí, ale existuje mnoho důvodů, proč možná budete chtít vědět, jaké příkazy vaši uživatelé spouštějí. Ať už je to kvůli dodržování předpisů nebo jen dobré správě systému, někdy prostě chcete vědět, co vaši uživatelé dělají. Pokud spravujete flotilu linuxových systémů a potřebujete vědět, co dělají lidé, kterým jste svěřili shell, možná budete chtít zvážit tlog. . tlog. je terminálový I/O logger, který je součástí RHEL a několika dalších distribucí. Zaznamenává více než jen stisknutí kláves; také zaznamenává přijatý výstup. Lze jej použít k doslovnému přehrání relace.

V tomto článku vás provedu základním tlog. konfiguraci a demonstrovat část síly, kterou má. Linux je docela dobrý v protokolování akcí. Může například zaznamenávat příkazy, které byly spuštěny pomocí sudo . bezpečné log vám může sdělit, kdo je přihlášený nebo kdo se mu nepodařilo přihlásit, ale nic z krabice centrálně nezaznamenává každou akci pořízeno neprivilegovaným uživatelem. Ano, většina shellů uchovává historii, ale uživatelé ji mohou upravit nebo dokonce smazat, pokud vědí, co dělají. tlog. nástroj sám o sobě není spolehlivý, ale další vrstva protokolování nemůže uškodit. Má však svá omezení a obavy, které nastiňuje níže propojená dokumentace Red Hat. Také tlog. přihlásí JSON, aby jej bylo možné analyzovat nebo dokonce přehrát později.

Mým cílem je ukázat vám sílu tlog. spolu s Cockpitem. Cockpit, pokud si nejste vědomi, je webové administrační rozhraní, které je součástí RHEL. Použití Cockpitu je volitelné a pokud chcete použít tlog. bez toho je to jen dobře. Jednoduše přeskočte pokyny, které zahrnují konfiguraci kokpitu.

[ Mohlo by se vám také líbit: Nastavení logrotate v systému Linux ]

Nastavit tlog

Pro tento návod používám čerstvě nainstalovaný minimální systém RHEL 8.3. Oficiální dokumentaci Red Hat Enterprise Linux 8 o protokolování terminálu naleznete zde. Chcete-li začít, vše, co potřebujete, je systém RHEL 8 s předplatným. Tento proces by měl být téměř identický na CentOS 8. Nainstalujte tlog. a Cockpit a poté povolte nahrávání relace v sssd (Démon služeb zabezpečení systému). Můžete použít tlog. několika dalšími způsoby, ale tento přístup vám umožňuje spravovat tlog. přes sssd, namísto na uživatele.

Nejprve nainstalujte požadované balíčky:

[root@gangrif-tlogtest ~]# yum install -y tlog cockpit cockpit-session-recording

Po dokončení instalace povolte a spusťte Cockpit:

[root@gangrif-tlogtest ~]# systemctl enable cockpit.socket --now
Created symlink /etc/systemd/system/sockets.target.wants/cockpit.socket → /usr/lib/systemd/system/cockpit.socket.

Cockpit můžete otestovat nasměrováním webového prohlížeče na https://your-server's-IP:9090 . Pokud to nefunguje, možná budete muset povolit Cockpit v hostitelském nebo síťovém firewallu. V mém případě to nebylo nutné.

Dále přidejte tlog. do konfigurace sssd. Démon sssd umožňuje mnoho přizpůsobení vašeho zásobníku ověřování, včetně věcí, jako jsou adresáře vzdálených uživatelů. V tomto případě jej používáte pro místní tlog. integrace. Existuje několik způsobů, jak to nastavit. Chystám se přidat tlog. nahrávání relace pro konkrétní skupinu zvanou podezřelí uživatelé , takže každý uživatel přidaný do této skupiny bude přihlášen. Pokud chcete, můžete přihlásit jednotlivé uživatele nebo všechny uživatele. Přidejte následující konfiguraci do /etc/sssd/conf.d/sssd-session-recording.conf . Ujistěte se, že tento soubor vlastní root:root a uživatelé/ostatní nemohou soubor číst ani zapisovat. Sssd je v tomhle vybíravý z dobrého důvodu.

[root@gangrif-tlogtest ~]# cat /etc/sssd/conf.d/sssd-session-recording.conf
[session_recording]
scope = some
groups = suspicious-users

Pokud nepoužíváte nebo nemůžete použít sssd, existuje možnost, která ručně konfiguruje tlog. pro uživatele. Tato možnost je popsána ve výše uvedené dokumentaci.

Po umístění tohoto souboru restartujte sssd. Nyní otestujte konfiguraci.

Protokolovat uživatelské relace

Ten gangrif uživatel, vypadá podezřele. Dejte ho do podezřelých uživatelů skupina, která tlog. je nakonfigurován pro záznam.

[root@gangrif-tlogtest tlog]# groupmems -g suspicious-users -a gangrif
[root@gangrif-tlogtest ~]# id gangrif
uid=1000(gangrif) gid=1000(gangrif) groups=1000(gangrif),10(wheel),1001(suspicious-users)

Když se přihlásíte jako gangrif , zobrazí se pěkný varovný banner, který označuje, že jste sledováni. Tento banner lze upravit nebo odstranit pomocí upozornění direktiva v /etc/tlog/tlog-rec-session.conf . Možná budete muset uživatelům sdělit, že jsou sledováni. Pro mě, tlog. je výkonnější, pokud neupozorňujete potenciálního útočníka, že je sledován. Když jim řeknete, co máte na svém místě, dáte jim vědět, co zkusit zakázat.

Heslo uživatele
[nlager@batou-lan ~]$ ssh [email protected]
[email protected]'s password:
Web console: https://gangrif-tlogtest.tamlab.rdu2.redhat.com:9090/ or https://10.8.109.214:9090/

Last login: Tue Dec 22 15:29:44 2020 from 10.10.116.62

ATTENTION! Your session is being recorded!

[gangrif@gangrif-tlogtest ~]$

Zobrazit relaci v kokpitu

Ve výchozím nastavení tlog. přihlásí do systémového deníku. Nejjednodušší způsob, jak dostat svá přihlášená data zpět, je použít protokolování relace Cockpit panel. Je to vlastně docela kluzké a dobře poskládané. Relaci si můžete přehrát a podívat se, jaké příkazy byly zadány, včetně překlepů, příkazů, které byly napsány, ale selhaly, nebo příkazů, které byly uzavřeny pomocí Ctrl+C . Pokud stisknete zobrazení protokolu Tento prohlížeč vám dokonce zobrazí související systémové protokoly, které se během relace aktualizovaly. Je to opravdu pěkný nástroj.

Přepnout ze systémového žurnálu na protokolování souborů

Pokud nepoužíváte Cockpit, prohlížení protokolů bude trochu komplikovanější, protože data, která hledáte, jsou v systémovém deníku. V tomto případě mi přišlo nejjednodušší jednoduše přepnout tlog. k nahrávání do souboru. Mohli byste se také přihlásit k syslogu, což by mělo podobný účinek a možná by bylo jednodušší ho udržovat. Pro jednoduchost budu zapisovat přímo do souboru. Měl bych vás varovat, že přesunutí tlog. odhlásí se ze systémového deníku a do souboru přeruší integraci Cockpit.

Nejprve vytvořte místo pro uložení souborů a ujistěte se, že do něj lze zapisovat pomocí tlogu uživatel. Přidal jsem adresář do /var/log s názvem tlog. a nastavte vlastnictví na tlog:tlog .

Dále v /etc/tlog/tlog-rec-session.conf , sdělte tlog. kam uložit své protokoly. V souboru najdete stanzy pro různé konfigurace. Jedna je označena Parametry zapisovače souborů . Tento parametr umožňuje definovat cestu k výstupnímu souboru. Konfigurace mé cesty vypadala takto:

    // File writer parameters
    "file": {
            // The "file" writer log file path.
            "path" : "/var/log/tlog/tlog.log"
    },

Nyní sdělte tlog. použít zapisovač souboru místo výchozího nastavení, kterým je žurnál. Ve spodní části konfiguračního souboru najdete řádek těsně před koncovkou } který obsahuje //"writer":"journal" nastavení. Změňte toto nastavení na soubor takhle:

        // The type of "log writer" to use for logging. The writer needs
        // to be configured using its dedicated parameters.
        "writer" : "file"
}

Až se váš cílový uživatel příště přihlásí, soubor /var/log/tlog/tlog.log by měly být vytvořeny a relace zaznamenány tam. Na tomto budete chtít nastavit rotaci protokolů, a pokud máte externí zapisovač, měli byste tam tento soubor poslat. Tato data jsou užitečná, pouze pokud jsou k dispozici, když je potřebujete. Pokud jej útočník najde a smaže, nebude vám to k ničemu.

Zobrazit relaci pomocí tlog-play

Jakmile budete mít tyto protokoly v souboru, můžete se na ně podívat. Můžete použít journalctl , ale protože jsou protokoly ve formátu JSON, nejsou pro lidi snadno čitelné. Jako příklad, můj rm -rf příklad příkazu shora vypadá asi takto:

{"ver":"2.2","host":"gangrif-tlogtest.tamlab.rdu2.redhat.com","rec":"2a5a7ca40dd6424e91f587c0e012e623-3cf2-1f1e2d","user":"gangrif","term":"xterm-256color","session":31,"id":1,"pos":0,"timing":"=185x50+31>61+136>1+105>1+135>1+193>1+218>1+202>4+161>4+111>1+167>1+181>1+93>1+196>1+1412>2+2>166+1897>1+251>1+208>1+159>1+73>1+110>1+90>1+73>1+119>1+285>1+504>1+143>1+136>1+961>1+175>1+144>1+865>4","in_txt":"","in_bin":[],"out_txt":"\u001b]0;gangrif@gangrif-tlogtest:~\u0007[gangrif@gangrif-tlogtest ~]$ rm rf\b\u001b[K\b\u001b[K-rf /\r\nrm: it is dangerous to operate recursively on '/'\r\nrm: use --no-preserve-root to override this failsafe\r\n\u001b]0;gangrif@gangrif-tlogtest:~\u0007[gangrif@gangrif-tlogtest ~]$ mwahahaha!!!!   \b\u001b[K","out_bin":[]}

Informace nejsou snadno čitelné, ale naštěstí existuje nástroj, který to zjednoduší. Můžete použít tlog-play s relacemi zaznamenanými v žurnálu a umožňuje vám zadat ID nahrávky pro výstup této konkrétní nahrávky. Při analýze souboru místo toho ID nahrávky nefunguje. Všechny nahrávky skončí ve stejném souboru a nemůžete je všechny jen přehrát, protože ID relace nejsou stejná. Musíte je rozdělit. Můžete identifikovat ID relace, kterou chcete sledovat, a poté grep toto ID relace do nového souboru před tlog-play bude s tím spokojený. Možná lze nakonfigurovat syslog tak, aby automaticky rozděloval tyto soubory při jejich zápisu.

[root@gangrif-tlogtest tlog]# grep 2a5a7ca40dd6424e91f587c0e012e623-3da9-1fdf38 tlog.log >> session.log
[root@gangrif-tlogtest tlog]# tlog-play -i session.log
[gangrif@gangrif-tlogtest ~]$ rm -rf /
rm: it is dangerous to operate recursively on '/'
rm: use --no-preserve-root to override this failsafe
[gangrif@gangrif-tlogtest ~]$ logout

[root@gangrif-tlogtest tlog]#

Relace se přehraje na obrazovce pomocí časových údajů z protokolu JSON. Je to pěkně vymakané. Dokážete si představit, jak by to mohlo být užitečné při provádění forenzní analýzy po zjištění výpadku nebo kompromitace. Můžete dokonce použít tlog. pro věci, jako je nahrávání ukázky něčeho na příkazovém řádku.

[ Získejte tuto bezplatnou knihu od Red Hat a O'Reilly – Kubernetes Operators:Automation the Container Orchestration Platform. ] 

Sbalit

Všechny tyto řeči o sledování vstupu vašeho uživatele mohou vyvolávat určité otázky. Jako, zaznamenávají se hesla? A co relace SSH, které přeskakují na jiného hostitele? A co X sezení? Dokumentace uvádí X relací jako upozornění, ale tlog. nezachycuje je. Protokolování hesel je ve výchozím nastavení vypnuto, ale v případě potřeby jej lze povolit.

Doufám, že tento článek vám pomůže dokončit práci pomocí tlog., ať už je to kvůli dodržování předpisů nebo jen nahrání úhledného dema nějaké nové technologie.


Linux
  1. Jak nastavit nastavení proxy na příkazovém řádku nebo terminálu Linuxu

  2. Jak nastavit hlavičky a knihovny pro vývoj Linuxu

  3. Jak nastavit ID procesu v Linuxu pro konkrétní program

  1. Jak nastavit nebo změnit název hostitele systému v systému Linux

  2. Jak nastavit proměnnou $Path v Linuxu

  3. Jak nastavím výchozí přezdívku pro nová připojení irssi?

  1. Jak nastavit tiskárnu v systému Linux

  2. Jak používám Cockpit pro domácí správu linuxového serveru

  3. Jak nastavit Cron Job v Linuxu