commandok logolása

Fórumok

Olyan egyszerű megoldást szeretnék kialakítani, ami logol minden kiadott parancsot egy linux-os gépen (jelen esetben ubuntu). Tehát lenne vagy egy vagy felhasználónként külön külön file, amiben minden kiadott kiadott parancs időpontja, maga a parancs összes opcióval szerepelne. Mindez felhasználótól külön helyen tárolódna root jogosultsággal, illetve második lépésben elküldve a syslog-ng-vel egy másik gépre. Ez utóbbi már nem probléma.
Inkább a parancsgyűjtés és logolásban kérnék segítséget.

Hozzászólások

Bash alapon ezt kalapáltam össze, amikor nálunk volt ez téma:


PROMPT_COMMAND='[ $SECONDS -gt 1 ] && { history 1 | cut -c8- ; } | logger -p local1.info'

apt-get install snoopy

Ez alapból az auth.log-ba nyomja a logot.

Ez miért fontos? Dolgozónak úgysincs root joga. Ha meg minden logolva van, az eléggé olyan, mintha azt is látnák, amikor az ember a tökét vakarja meg...

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE

Van az úgy, hogy...

A közkedvelt program tojik az auditálhatóságra, de használni kell, mert csak...
továbbá a "közkedvelt" program számos fícsört hiányol, amit pótolni kell, pl. shellből hívott programokkal...

elkészül a júzerpúl vörköráund, amit a megadott júzereknek futtatniuk kell tudniuk, viszont olyan helyen dolgozik, ahol nyoma sem marad annak, hogy ki mit csinált.
Ilyenkor jó, ha látszik, ki mit indított - nem feltétlenül azért, hogy tudható legyen, kit kell kirúgni, hanem csak hogy legalább az ki lehessen nyomozni, hogy júzer bakija okoz egy anomáliát, vagy a kiegészített program nem csak hiányos, de szar is.

~/.bash_history ?
Igaz, datum nincs benne, de a kiadott parancsok igen. Innen mar irhatsz ra egy scriptet, ami otpercenkent lemasolja, osszehasonlitja az elozo allapottal es ami valtozott, azt legalabb ot percre be tudod loni... (huh, Toncsi1987 commentjeit olvastam, valahogy nagyon nem megy most a foglamazas...)

--
http://www.micros~1

Időt is lehet bele tenni:


      HISTTIMEFORMAT
              If this variable is set and not null, its value is used as a format string  for  strftime(3)  to
              print  the  time  stamp associated with each history entry displayed by the history builtin.  If
              this variable is set, time stamps are written to the history  file  so  they  may  be  preserved
              across shell sessions.

Ha HISTFILE változóba beleteszed a felhasználónevet és a dátumot akkor külön history file lesz minden belépéshez, így megállapítható ki csinált mit és mikor. Ez auditra tökéletesen alkalmatlan, mert ezeket a fájlokat lehet módosítani, de feledékeny rendszergazdáknak jól jöhet...

cron-nak van normális logja. HISTFILE meg elég sok shell-ben van. A history nem használható igazán audit célra, de ha megvan visszamenőleg az összes beírt parancs az jól tud jönni. Ez akkor is megéri ha néha elveszhet a history mert a bash nem írja ki vagy ha meghaladjuk a HISTFILESIZE-t :)

+1. Meg ugye az echo -n > ~/.bash_history, meg a szóközzel kezdődő parancssor, meg indít egy mc-t, indít egy vi-t, majd abból egy másik shell-t...
Anno ttysnoop-ot lőttem össze úgy, hogy tudott ssh-s bejelentkezést is naplózni (gyakorlatilag a *getty is fullosan ki lett váltva vele).

Szervusz,

ha felteszel egy grsec-es kernelt az is nagyon szépen logol (mindent)

Üdv:
Sherpa

Ahányszor meglátom a post címét következetesen kommandósok logolását olvasok és mindig meglepődök, hogy ez meg mi. :)
Bocs az offért.

Én a sudosh-t ajánlanám ilyen célokra:

http://sourceforge.net/projects/sudosh/

Megcsinálja, amit szeretnél, sőt még többet is (ha ez nem baj). :)

Logolja a kiadott parancsokat és azok kimenetét egy elkülönített helyen lévő, csak root által olvasható speciális fájlban, ami tartalmazza a billentyűleütéseket és a kiadott parancsok kimenetét. Ezt később vissza lehet játszani (sudosh-replay), ami megmutatja, hogy mit művelt a user a gépen.

A fordítás/telepítés után annyi a teendőd, hogy a sudosh binárisát beállítod az auditálandó user shell-jeként. Tetszőleges shell-lel lehet használni (alapból sh-ra van konfigurálva).

A logokat egy elkülönített helyen, session-önként tárolja.

Bármelyik megoldást is választod, ne felejtsd tájékoztatni a usert a naplózásról még bejelentkezés előtt! Ennek legegyszerűbb módja a Banner paraméter használata az openssh konfigjában. A szöveg lehet valami ilyesmi:


************************************************************************
*                                                                      *
* FIGYELEM!!!                                                          *
*                                                                      *
* Biztonsagi okokbol minden kiadott parancs es annak kimenete          *
* naplozasra kerul a szerveren.                                        *
*                                                                      *
* Kerjuk, vedd figyelembe a ezt a szerver hasznalata elott.            *
*                                                                      *
* (A bejelentkezeskor megadott jelszot nem naplozza a szerver!)        *
*                                                                      *
************************************************************************

Most az auditd nézem, de ezt is kipróbálom.
Értesítésre nem lesz szükség, mert ezt a munkaköri leírás része ként lesz valami jogi katyvaszba beletéve, mely keretében minden tevékenység nyomon követéséhez hozzájárul mindenki, bla bla bla.
Ez van, lassan már pukizni sem ér log nélkül.