Linux за българи: Форуми

Нетехнически теми => Идеи и мнения => Темата е започната от: mrowcp в Dec 13, 2006, 01:21



Титла: User monitoring
Публикувано от: mrowcp в Dec 13, 2006, 01:21
Здравейте,
Искам да попитам има ли програма с която мога да следя през конзолата юзърите които са се логнали на моита машина какви команди изпълняват,какво стартират и т.н.
Мерси


Титла: User monitoring
Публикувано от: astronom в Dec 13, 2006, 09:58
Примерен код
ps aux


Това е за моментното състояние обаче. Може би и top ще ти върши работа.


Титла: User monitoring
Публикувано от: mrowcp в Dec 13, 2006, 13:01
Цитат (astronom @ Дек. 13 2006,10:58)
Примерен код
ps aux


Това е за моментното състояние обаче. Може би и top ще ти върши работа.

Ставаше дума за програма а не за команди ;) И идеята е не през 5сек да пиша top и ps aux ,а просто когато някой юзър изпълни "нещо" то да се вижда в моита конзола.Нещо като debuging ;)


Титла: User monitoring
Публикувано от: dedmin в Dec 13, 2006, 13:24
Я напиши в Гугъл "user monitoring in Linux" да видим какво ще излезе. Я, то било лесно бре!!!


Титла: User monitoring
Публикувано от: astronom в Dec 13, 2006, 13:33
Ами аз това казах, че не е точно решението което ти трябва. Ак искаш да си прецизен може би трябва да използваш някакъв род process accounting:

Цитат
What is process accounting?

Process accounting is the method of recording and summarizing commands executed on Linux. The modern Linux kernel is capable of keeping process accounting records for the commands being run, the user who executed the command, the CPU time, and much more.

Process accounting enables you to keep detailed accounting information for the system resources used, their allocation among users, and system monitoring.


Но мога само да те насоча към него - нищо повече.


Титла: User monitoring
Публикувано от: Vik в Dec 13, 2006, 13:42
RSBAC
/RSBAC
Но това е сравнително сложно упражнение.


Титла: User monitoring
Публикувано от: dedmin в Dec 13, 2006, 14:25
Можеш да го постигнеш и с тор, но трябва да си поиграеш. Тор може да показва няколко прозореца в конзолата, да показва процесите на определен потребител, а също и да селектираш точно какви данни искаш. Ето една добра статия тор


Титла: User monitoring
Публикувано от: gat3way в Dec 13, 2006, 15:16
Това което имат предвид под "process accounting" е експорт-ването от страна на ядрото на информацията за всеки един процес под формата на procfs entries. Примерно вижте какво става като напишеш ls -l `pidof bash` и т.н. Вътре се пазят доста забавни неща от сорта на working directory, отворени файлови дескриптори, използвана памет, вкл. заделена за данни, за кода, такава влезнала в суоп-а, похабена за използвани shared libs срещу което е линкнато. Има много друга полезна информация, например в какво състояние е процеса и ако "спи", в коя функция "спи" и т.н и т.н.

Не знам да има написано нещо което да върши точно работата която ти трябва (честно казано ми се вижда странна прищявка).

Точно оттам вземат нужните си данни програми като top, ps и т.н.

Предполагам няма да е много сложно да се напише нещо ако щеш на perl/php, което в един цикъл да чете /proc/<PID>/cmdline (където се държи името на изпълненото байнъри), да види собственика на директорията /proc/<PID> (той е еквивалентен на потребителя извикал байнърито), да си пази един масив за да знае дали това вече е проверявано или не е  и ако не е да го счете за нова извикана от потребител команда. Резултатът от всичко това да се извежда в някакъв прегледен вид, по възможност и с дата и час.

Вероятно някой се е сетил да реализира нещо такова. На цената на леко (а може би не чак толкова леко) деградиране на производителността на системата като цяло. И все пак не мисля че дори по този начин това може да бъде надежден начин за логване на всеки извикан процес. Ако изпълнението на един процес отнема много малко време (по-малко от времето необходимо за изчитане на /proc нещата) е напълно възможно да не успее да го лог-не примерно.

Въпросът е какво толкова важно има кой какво кога бил извикал. Просто нямам идея. Дали някой ще го гледа това 24/7? Дали някой ще има нервите да гледа един дъълъг лог с извикани команди от всеки потребител и да се опита да го разчете?

Значи един такъв шит за да бъде максимално прецизен трябва максимално бързо да изчита нужните неща от procfs. Нещо подобно става ако пуснеш top с параметър -d 0.  На 2-процесорна машина като го пусна по този начин, половината CPU ресурси отиват за top, другата за konsole (не е лесно постоянно да преначертаваш прозореца все пак). На практика една такава програмка през повечето време ще е в running state. И все пак, ако си с еднопроцесорна машинка, при пускането на всяко по-CPU-intensive приложение вероятно ще го усетиш лошо.

И така...не виждам особен смисъл де. Значи според мен има си логове, има си .bash_history, има доволно много начини да разбереш ако някой потребител прави лоши неща. Но да следиш всеки потребител в реално време какво exec-нал ми се вижда малко нездрава идея, както и досадна за човека, който трябва да наблюдава всичко това..


Титла: User monitoring
Публикувано от: mrowcp в Dec 13, 2006, 19:52
Цитат (gat3way @ Дек. 13 2006,16:16)
Това което имат предвид под "process accounting" е експорт-ването от страна на ядрото на информацията за всеки един процес под формата на procfs entries. Примерно вижте какво става като напишеш ls -l `pidof bash` и т.н. Вътре се пазят доста забавни неща от сорта на working directory, отворени файлови дескриптори, използвана памет, вкл. заделена за данни, за кода, такава влезнала в суоп-а, похабена за използвани shared libs срещу което е линкнато. Има много друга полезна информация, например в какво състояние е процеса и ако "спи", в коя функция "спи" и т.н и т.н.

Не знам да има написано нещо което да върши точно работата която ти трябва (честно казано ми се вижда странна прищявка).

Точно оттам вземат нужните си данни програми като top, ps и т.н.

Предполагам няма да е много сложно да се напише нещо ако щеш на perl/php, което в един цикъл да чете /proc/<PID>/cmdline (където се държи името на изпълненото байнъри), да види собственика на директорията /proc/<PID> (той е еквивалентен на потребителя извикал байнърито), да си пази един масив за да знае дали това вече е проверявано или не е  и ако не е да го счете за нова извикана от потребител команда. Резултатът от всичко това да се извежда в някакъв прегледен вид, по възможност и с дата и час.

Вероятно някой се е сетил да реализира нещо такова. На цената на леко (а може би не чак толкова леко) деградиране на производителността на системата като цяло. И все пак не мисля че дори по този начин това може да бъде надежден начин за логване на всеки извикан процес. Ако изпълнението на един процес отнема много малко време (по-малко от времето необходимо за изчитане на /proc нещата) е напълно възможно да не успее да го лог-не примерно.

Въпросът е какво толкова важно има кой какво кога бил извикал. Просто нямам идея. Дали някой ще го гледа това 24/7? Дали някой ще има нервите да гледа един дъълъг лог с извикани команди от всеки потребител и да се опита да го разчете?

Значи един такъв шит за да бъде максимално прецизен трябва максимално бързо да изчита нужните неща от procfs. Нещо подобно става ако пуснеш top с параметър -d 0.  На 2-процесорна машина като го пусна по този начин, половината CPU ресурси отиват за top, другата за konsole (не е лесно постоянно да преначертаваш прозореца все пак). На практика една такава програмка през повечето време ще е в running state. И все пак, ако си с еднопроцесорна машинка, при пускането на всяко по-CPU-intensive приложение вероятно ще го усетиш лошо.

И така...не виждам особен смисъл де. Значи според мен има си логове, има си .bash_history, има доволно много начини да разбереш ако някой потребител прави лоши неща. Но да следиш всеки потребител в реално време какво exec-нал ми се вижда малко нездрава идея, както и досадна за човека, който трябва да наблюдава всичко това..

Ами като прочетох поста ти излиза че... :huh:  маи си прав :) Идеята ми е да пусна Free Shell Hosting за да си тестна малко сигурноста и да видя каде може да се издани.
Мерси за изчерпателния отговор :)


Титла: User monitoring
Публикувано от: zeridon в Dec 16, 2006, 12:06
за shell хостинг най удачно е да сложиш grsec2, rsbac или selinux

задължителни квоти, по възможност достъп само с ключ а не с парола, евентуално и някакви ограничения с ulimit


Титла: User monitoring
Публикувано от: michail в Dec 16, 2006, 17:07
whowatch