Linux Audit Daemon отлично подходит для мониторинга различных событий системы, в том числе:
доступа к файлам;
изменения прав на файлы;
выявления несанкционированных корректировок;
контроля системных вызовов и функций;
выявления аномалий, сбоев;
контроля набора команд.
Установка и настройка
Воспользуйтесь пакетным менеджером, например для Debian/Ubuntu:
apt-get install auditd audispd-plugins
На серверах CentOS демон auditd как правило предустановлен (пакеты audit and audit-libs).
Настройка реализуется двумя файлами: auditd.conf – для демона, audit.rules – для правил, управляемых auditctl.
Внимание: auditctl — клиентский инструмент для конфигурации auditd.
Файл auditd.conf предназначен для конфигурации демона аудита Linux (auditd) с упором на то, как и где он будет регистрировать текущие действия. Он определяет варианты работы с дисками, журналом повторов и количеством хранимых логов. Стандартная конфигурация, как правило, оптимальна для большинства систем.
Файл занят другим процессом или открыт в другой программе — разблокировка в File Locksmith
Для настройки конкретных типов событий для проверки в структуре аудита применяется файл правил с именем audit.rules.
Действующие правила просматриваются с помощью опции -l:
Сразу после установки этот набор правил будет пуст.
Удалить текущие правила позволяет опция -D:
Для проведения мониторинга файлов следует выявить его полное имя и разрешения для поиска:
auditctl -a exit,always -F path= -F perm=
auditctl -a exit,always -F path=/etc/passwd -F perm=wa
Опция-F настраивает фильтры. После определения переменной path можно задать каталог или файл для отслеживания. Переменная path предназначена для определения вида доступа, вызывающего событие. Есть 4 вида доступа, и они похожи на разрешения файлов, но учтите, что имеет место серьезная разница:
a = изменить атрибут
Опция -a указывает список и действие. Допустимые списки: task, exit, user, exclude. Допустимые действия: never, always.
Вы можете быстро контролировать поиск связанного события или доступ к файлу инструментом ausearch:
ausearch -f /etc/passwd
Вот пример вывода с подробным указанием: кто, когда и какими командами использовал файл:
time->Tue Jul 17 12:12:18 2019 type=PROCTITLE msg=audit(1531840928.084:4647): proctitle=7669002F6574632F706173737764
type=PATH msg=audit(1531840928.084:4647): item=3 name=»/etc/passwd~» inode=8470805 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:passwd_file_t:s0 obj
type=CREATE type=PATH msg=audit(1531840928.084:4647): item=2 name=»/etc/passwd» inode=8470805 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:passwd_file_t:s0 obj
type=DELETE type=PATH msg=audit(1531840928.084:4647): item=1 name=»/etc/» inode=8388737 dev=fd:00 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 obj
type=PARENT type=PATH msg=audit(1531840928.084:4647): item=0 name=»/etc/» inode=8388737 dev=fd:00 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 obj
Как найти путь к файлу или папке программы
type=PARENT type=CWD msg=audit(1531840928.084:4647): cwd=»/root»
type=SYSCALL msg=audit(1531840928.084:4647): arch=c000003e syscall=82 success=yes exit=0 a0=f9d720 a1=facda0 a2=fffffffffffffe90 a3=7ffd396260e0 items=4 ppid=9580 pid=9620 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=33 comm=»vi» exe=»/usr/bin/vi» subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null)
time — время события
name — имя объекта
cwd — актуальный рабочий путь, по которому осуществлялся доступ к файлу
syscall — связанный системный вызов
auid — идентификатор пользователя аудита
exe — двоичный файл, выполняющий действие над файлом
При этом auid определяет исходного пользователя, который вошел в систему. В других полях могут быть указаны другие пользователи – зависимо от того, какой конкретно пользователь был задействован,
Регистрация системных вызовов реализуется с помощью числового значения. Так для на разных архитектурах актуален разный набор системных вызовов, в первуб очередь следует определить ее:
С помощью команды ausyscall можно выявить, что представляет собой числовой вызов:
Так, вызов 82 на архитектуре x86_64:
ausyscall x86_64 82
Аудит пользователей
Вы можете применять Auditd для контроля системных вызовов, в том числе доступа к файлам. Узнать, к каким файлам обратился конкретный пользователь, можно при условии, что вы знаете его идентификатор.
auditctl -a exit,always -F arch= -S open -F auid=
auditctl -a exit,always -F arch=x86_64 -S open -F auid=80
-S open — обращение к системному вызову open
-F auid=80 — идентификатор пользователя
Эти данные незаменимы при выявлении вторжений, а также при проведении расследований киберинцедентов.
Аудит журнальных файлов
Аудит журнальных файлов производится при помощи утилиты aureport, позволяющей создавать сводные отчеты о событиях, записанных в файлах журнала Audit. Все файлы audit.log по умолчанию расположены в каталоге /var/log/audit/ и запрашиваются для создания отчета. Но вы можете указать другой файл для запуска отчета – используйте опцию -if:
Для создания отчета для зарегистрированных событий за конкретный период времени подойдет эта команда:
aureport —start 07/15/2018 00:00:00 —end 07/10/2018 00:00:00
Для создания отчета обо всех событиях контролируемых файлов используется такая команда:
Для генерации сводки событий следует применять ключ —summary:
aureport -x —summary
Для создания сводного отчета о неудачных событиях для всех пользователей существует такая команда:
aureport -u —failed —summary -i
Создание сводного отчета обо всех неудачных попытках входа в систему для каждого пользователя осуществляется этой командой:
aureport —login —summary -i
Не нашли ответа на Ваш вопрос? Напишите нам!
Источник: cloudlite.ru
Чем посмотреть куда обращается программа по сети












Опубликовано 11.01.2012 — 23:06
В общем возникла проблемка с одной банковской программой.
Топология:
1. компьютер
2. Cisco-вские свичи
3. ISA 2007
4. Cisco брандмауэр
5. Оптика
6. Провайдер
Программа запускается нормально.
При обращении программы в банк, для запроса выписок, по локальной сети ее не видно. То есть на ISA сервере запускаю запрос и не вижу ее обращений туда.
При подключении модема типа свисток нормально работает.
Маршруты, стеки протоколов, службы и прочая лубудень прочищены вплоть до переустановки машины и запуска данной программы на другом компьютере.
Вопрос: какой программой можно посмотреть куда программа обращается по сети
Магическое сочетание почти всех клавиш, способное свалить ось на ноуте, известно только моему коту. Не забывайте прикрывать ноут хотя бы наполовину каждый раз, как отворачиваетесь от него!
Я боюсь что однажды не смогу справится с бедой, а друг и не друг, а так.
#2
Оффлайн 0vZ












Опубликовано 11.01.2012 — 23:15
Все, что я тут пишу — это просто шутка и ничего более.
#3
Оффлайн Dimitry












Опубликовано 11.01.2012 — 23:18
бесполезно. скорее всего программа общается с банком по ВПНу.
Учебная литература, прописи, контурные карты, рабочие тетради для школы — обращайтесь в личку.
1С, Microsoft, антивирусы и другое лицензионное программное обеспечение. В личку или по телефону (863) 243-07-78
Домашняя ферма — пробуем себя на новом месте! )
#4
Оффлайн SGray












Опубликовано 11.01.2012 — 23:49
wireshark, в таком случае, тоже бесполезен?
хороший компьютер — тихий и быстрый.
Он выдержит очередь из КПВТ и подрыв гранаты под днищем. (с) грамотный
#5
Оффлайн faddist
Кавалер ордена флейма







Опубликовано 12.01.2012 — 08:34
На цисковских свичтах скорее всего можно (как не подскажу) создать порт — зеркало порта машины с прогой и посмотреть какие пакеты там летают. Смотреть можно чем угодо gjl unix cамое популярное tcpdump.
Не жалей о том, что радости было мало – этим ты приобретешь еще одну печаль.
#6
Оффлайн iouri
Кавалер ордена флейма







Опубликовано 12.01.2012 — 08:46
На цисковских свичтах скорее всего можно (как не подскажу) создать порт — зеркало порта машины с прогой и посмотреть какие пакеты там летают. Смотреть можно чем угодо gjl unix cамое популярное tcpdump.
Очень дельный совет.
На разных свичах может быть разный синтакисис, смотреть в сторону monitor session (зависит от модели коммутатора).
#7
Оффлайн markII












Опубликовано 12.01.2012 — 09:33
последние сведения
машина обращается к ip в виде ***.**.***.***.lfjsdlkfjdslfjsdljf.ru и не хочет преобразовывать в локальные. Клиента ISA сервера игнорирует по полной программе.
В общем руководством принято решение перейти на новую версию программы.
Магическое сочетание почти всех клавиш, способное свалить ось на ноуте, известно только моему коту. Не забывайте прикрывать ноут хотя бы наполовину каждый раз, как отворачиваетесь от него!
Я боюсь что однажды не смогу справится с бедой, а друг и не друг, а так.
#8
Оффлайн Sia-Ori












Опубликовано 12.01.2012 — 23:08
Комп то виндовозный?
Тогда Микрософт Нетворк Монитор.
Если обращается к непонятно какому адресу — можно начать с прописывания правильного IP к этому адресу в Winntsystem32driversetchosts.
По существу заданного мне вопроса ничего пояснить не могу.
#9
Оффлайн мирубир
Дважды герой флейма









Опубликовано 15.01.2012 — 00:08
есчо можно по протоколу netflow с циски снимать какие пакеты через нее прошли
а снимать скорее всево не на свичах если они не уровня L3 , а на том что в виде брендмауэра, тока непонятно шо там пикс стоит или роутер
Чем больше знаешь, тем больше учишься. (С)
#10
Оффлайн мирубир
Дважды герой флейма









Опубликовано 15.01.2012 — 00:27
либо на управляемых коммутаторах выделить порт на который будет вешаться нюхач и сыпаться трафик )
Чем больше знаешь, тем больше учишься. (С)
#11
Оффлайн Sia-Ori












Опубликовано 15.01.2012 — 10:51
свитчи, свитчи. Оно то может и правильно, но до ИСА2007 запросы не доходят, скорее всего остаются вообще в пределах 127.0.0.1. На самом компе мониторить запросы надо, там глюк какой-то, то ли имена не разрешает, то ли ещё как.
По существу заданного мне вопроса ничего пояснить не могу.
Источник: www.auto-rostov.ru
7 примеров команды lsof в Linux
Добавить в избранное
29 января 2019
В этой статье вы узнаете, как вывести список открытых файлов пользователем или процессом с помощью команды lsof в Linux.
М ы думаем, что в какой-то момент вы задавались вопросом, есть ли способ показать открытые файлы процесса или пользователя. Хорошо, что ответ на этот вопрос это команда lsof.
Вы, наверное, уже знаете, что команда ls — это сокращение от «list». lsof обозначает «Список открытых файлов». И это именно то, что он делает, перечисляет открытые файлы по процессам, пользователям и идентификаторам процессов.
Позвольте нам показать вам наиболее распространенное использование команды lsof.
Примеры команды l sof
Если вы используете команду lsof без каких-либо параметров и аргументов, она выведет список всех открытых файлов всеми процессами в системе.
Lsof
Вывод должен быть таким:
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root cwd DIR 252,1 4096 2 / systemd 1 root rtd DIR 252,1 4096 2 / systemd 1 root txt REG 252,1 1595792 17384 /lib/systemd/systemd systemd 1 root mem REG 252,1 1700792 2077 /lib/x86_64-linux-gnu/libm-2.27.so
Выводы в основном говорят сами за себя, но вы все еще можете задаться вопросом о столбцах FD и TYPE.
FD означает файловый дескриптор. Некоторые из общих значений для FD:
- cwd — Текущий рабочий каталог
- txt — текстовые файлы
- mem — файл с отображенной памятью
- mmap — Устройство с отображенной памятью
- NUMBER — фактический дескриптор файла. У этого также есть информация о том, в каком разрешении файла это открыто.
TYPE это не просто. Он определяет тип файла. Вот некоторые примеры:
- REG — обычный файл
- DIR — Справочник
- CHR — специальный файл символов
- FIFO — первый на первом
Доверьтесь нам. Вы не захотите запускать команду lsof без аргументов.
Почему мы это говорим? Потому что он начнет заполнять ваш экран тысячами результатов.
Если мы запускаем команду lsof на сервере Ubuntu и подсчитываем количество строк с помощью команды wc, вот результат.
lsof | wc -l 11432
Читать Bashtop — отличный монитор ресурсов Linux, написанный на Bash
Да! Вот так. В системе открыто более одиннадцати тысяч файлов, открытых различными процессами.
Не беспокойтесь, команда lsof очень полезна при отладке, потому что вы можете видеть, какие процессы открывают, какие файлы и какой файл открывается каким процессом.
Если вы не вошли в систему как root, вывод команды lsof будет очень ограничен. Рекомендуется использовать sudo, если вы вошли в систему как пользователь без полномочий root.
1. Перечислите все процессы, которые открыли файл
Это просто Вам просто нужно указать путь к файлу.
lsof
2. Список всех файлов, открытых пользователем
Это удобно в многопользовательской среде. Вы можете перечислить все файлы, открытые определенным пользователем, следующим образом:
lsof -u
Вы также можете указать более одного пользователя, как это:
lsof -u user1, user2
lsof -u user1 -u user2
3. Список всех открытых файлов в каталоге
Если вам интересно, какие из файлов были открыты в определенном каталоге, вы можете использовать команду lsof с опцией + D.
lsof +D
Поиск рекурсивный. Таким образом, он перечислит все открытые файлы в указанном каталоге и все его подкаталоги.
4. Перечислите все открытые файлы процессом
В этом случае вам нужно знать идентификатор процесса (pid). Если вы знаете идентификатор процесса, вы можете использовать опцию -p команды lsof, чтобы найти файлы, открытые им.
lsof -p
Вы также можете указать несколько идентификаторов процессов.
lsof -p pid1, pid2, pid3
5. Список всех файлов, открытых командой
Это особенно полезно при отладке. Предположим, вы хотите увидеть, какие файлы используются демоном http, вам просто нужно указать имя команды (httpd в нашем примере).
lsof -c
6. Найти открытый пользователем и командой или процессом
Вы можете комбинировать параметры, такие как пользователь и команда, и процесс, используя вариант -, Думайте об этом как об операторе AND. Это дает вам дополнительный фильтр при попытке сузить область поиска.
lsof -a -u user_name -c command_name
Читать Pyvoc — инструмент для создания словаря и словаря командной строки
7. Перечислите сетевые соединения и порты с помощью команды lsof
Вы также можете использовать команду lsof для поиска открытых портов или для поиска того, какой процесс использует порт.
Вы можете подать все виды открытых портов с опцией -i:
lsof -i
Вывод может выглядеть так:
lsof -i COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME sshd 920 root 3u IPv4 20507 0t0 TCP *:ssh (LISTEN) sshd 920 root 4u IPv6 20535 0t0 TCP *:ssh (LISTEN) docker-pr 1163 root 4u IPv6 21687 0t0 TCP *:https (LISTEN) docker-pr 1175 root 4u IPv6 21717 0t0 TCP *:http (LISTEN) sshd 7528 root 3u IPv4 39506588 0t0 TCP testing:ssh->212.91.91.19:58904 (ESTABLISHED) systemd-r 10993 systemd-resolve 12u IPv4 20901990 0t0 UDP localhost:domain systemd-r 10993 systemd-resolve 13u IPv4 20901991 0t0 TCP localhost:domain (LISTEN)
Вы также можете указать тип сетевого подключения. Например, чтобы вывести список всех открытых портов TCP, вы можете использовать:
lsof -i tcp
Чтобы узнать, какой процесс использует определенный порт, вы можете указать номер порта:
lsof -i :
Бонусный совет: использование оператора отрицания с lsof
Вы можете использовать оператор отрицания, чтобы исключить пользователя или процесс при использовании команды lsof.
Например, вы хотите перечислить все файлы, открытые пользователем, отличным от root, используйте его следующим образом:
lsof -u ^root
Команда lsof становится еще более полезной, когда вы используете ее с командой grep.