Автор Тема: User monitoring  (Прочетена 2742 пъти)

mrowcp

  • Напреднали
  • *****
  • Публикации: 450
    • Профил
User monitoring
« -: Dec 13, 2006, 01:21 »
Здравейте,
Искам да попитам има ли програма с която мога да следя през конзолата юзърите които са се логнали на моита машина какви команди изпълняват,какво стартират и т.н.
Мерси
Активен

Some Things Just Are The Way They Are

astronom

  • Напреднали
  • *****
  • Публикации: 254
    • Профил
User monitoring
« Отговор #1 -: Dec 13, 2006, 09:58 »
Примерен код
ps aux


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

Г. Д. Сотиров

mrowcp

  • Напреднали
  • *****
  • Публикации: 450
    • Профил
User monitoring
« Отговор #2 -: Dec 13, 2006, 13:01 »
Цитат (astronom @ Дек. 13 2006,10:58)
Примерен код
ps aux


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

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

Some Things Just Are The Way They Are

dedmin

  • Напреднали
  • *****
  • Публикации: 456
    • Профил
User monitoring
« Отговор #3 -: Dec 13, 2006, 13:24 »
Я напиши в Гугъл "user monitoring in Linux" да видим какво ще излезе. Я, то било лесно бре!!!
Активен

astronom

  • Напреднали
  • *****
  • Публикации: 254
    • Профил
User monitoring
« Отговор #4 -: 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.


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

Г. Д. Сотиров

Vik

  • Напреднали
  • *****
  • Публикации: 74
    • Профил
User monitoring
« Отговор #5 -: Dec 13, 2006, 13:42 »
RSBAC
/RSBAC
Но това е сравнително сложно упражнение.
Активен

dedmin

  • Напреднали
  • *****
  • Публикации: 456
    • Профил
User monitoring
« Отговор #6 -: Dec 13, 2006, 14:25 »
Можеш да го постигнеш и с тор, но трябва да си поиграеш. Тор може да показва няколко прозореца в конзолата, да показва процесите на определен потребител, а също и да селектираш точно какви данни искаш. Ето една добра статия тор
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
User monitoring
« Отговор #7 -: 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-нал ми се вижда малко нездрава идея, както и досадна за човека, който трябва да наблюдава всичко това..
Активен

"Knowledge is power" - France is Bacon

mrowcp

  • Напреднали
  • *****
  • Публикации: 450
    • Профил
User monitoring
« Отговор #8 -: 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:'  маи си прав '<img'> Идеята ми е да пусна Free Shell Hosting за да си тестна малко сигурноста и да видя каде може да се издани.
Мерси за изчерпателния отговор '<img'>
Активен

Some Things Just Are The Way They Are

zeridon

  • Killmode enabled
  • Administrator
  • Напреднали
  • *****
  • Публикации: 1398
  • Distribution: Debian/Ubuntu
  • Window Manager: console/Gnome
  • BOfH
    • Профил
    • WWW
User monitoring
« Отговор #9 -: Dec 16, 2006, 12:06 »
за shell хостинг най удачно е да сложиш grsec2, rsbac или selinux

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

Внмимавай имам клещи за кабел
http://www.netsecad.com/
http://theregister.co.uk/odds/bofh/

michail

  • Участници
  • ***
  • Публикации: 9
    • Профил
User monitoring
« Отговор #10 -: Dec 16, 2006, 17:07 »
whowatch
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
hardware monitoring
Настройка на програми
demoniac 9 2515 Последна публикация May 11, 2004, 09:54
от
Network monitoring
Настройки на софтуер
anakinn 9 3154 Последна публикация Apr 26, 2007, 22:09
от ktodorov
Traffic monitoring
Настройка на програми
h7d8 14 3642 Последна публикация Feb 01, 2008, 01:07
от h7d8
Monitoring на процес
Настройка на програми
abadon 14 3979 Последна публикация Jul 02, 2008, 13:48
от VladSun
CCTV DVR с web monitoring/management, работещи под Линукс?
Идеи и мнения
bager 6 2634 Последна публикация Jun 03, 2011, 17:13
от savago