Это переписывание моего предыдущего поста, поскольку было не совсем понятно, чего я пытался достичь. Надеюсь, в этом будет больше смысла :)
Вкратце, я ищу альтернативные методы обнаружения компрометации моей системы, помимо использования таких инструментов, как tripwire / OSSEC / samhain / rkhunter и простой проверки целостности файлов и мониторинга журналов. Я сознательно стараюсь не быть слишком конкретным в своем вопросе, так как мне нужны идеи в целом, чтобы я мог реализовать их на своей собственной машине. Это, вероятно, будет, но не ограничиваться сценарием, который запускается с заданными интервалами (cronjob) и уведомляет администратора, если что-то изменилось, и предлагает администратору продолжить расследование через (syslog / email?). Заметьте, я не обязательно обращаю внимание на сам код, просто на общий обзор того, что он делает. Не стесняйтесь быть максимально подробным.
Может помочь, если я перечислю несколько вещей, которые делаю в настоящее время, чтобы дать вам общее представление об идеях, которые мне нужны.
1) Сгенерируйте md5sum вывода моих запущенных iptables и сравните его с известным хорошим хешем. Если это изменится, можно с уверенностью предположить, что кто-то добавил / удалил запись iptables.
2) У меня есть определенные точки монтирования, которые доступны только для чтения (/ usr, / boot и т. Д.), Потому что они не должны меняться очень часто. Если раздел изменится с только для чтения на доступный для записи, я хочу получить уведомление.
3) Следите за выводом netstat только для сервисов прослушивания. Выполните сравнение файлов (diff) с файлом, содержащим известные хорошие значения. Если что-то было добавлено, возможно, кто-то добавил в систему новую услугу. Возможный бэкдор?
Обратите внимание, что приведенное выше приведет к ложным срабатываниям, если я буду проводить обслуживание системы. Однако, если они изменятся, а я нет, я сочту их подозрительными и проведу дальнейшее расследование. Обратите внимание, что это всего лишь примеры, и у них есть недостатки, как и во всем, но чем больше препятствий у вас есть, тем выше вероятность того, что кто-то споткнется.
Заранее спасибо.
Я рекомендую взглянуть на инструменты криминалистической экспертизы памяти, например, перечисленные в ForensicsWiki. Например, вы можете выполнить проверку целостности ядра и процесса с помощью Второй взгляд Продукт для криминалистической экспертизы памяти Linux. Средства проверки целостности файлов отлично подходят для проверки энергонезависимого состояния системы; Экспертиза памяти позволяет вам проверять изменчивое состояние, чтобы гарантировать, что весь код, выполняемый в системе в данный момент времени, является законным и неизменным.
Я использую комбинацию Integrit (проверка двоичной целостности), Tiger (системный IDS / аудитор), logcheck и серьезно жесткие правила IPtables (ОТКАЗАТЬ все, что я могу, включая ВЫХОД.), Все настройки по умолчанию в Debian работают довольно хорошо, выполняя задачи на регулярной основе. интервалы и отправка вывода по электронной почте root.
Я также рекомендую Руководство по обеспечению безопасности Debian для хорошего обзора того, что вы можете и должны делать.
Возможно, я неправильно понял ваш вопрос. Похоже, вам просто нужна информация об IDS / IPS хоста unix, например Самайн, фырканье, или OSSEC. Есть вики на нем тоже. Или вы искали что-то другое?
OSSEC может сделать это за вас с помощью своих возможностей системного аудита. Вы пробовали это? Посмотрите также на безагентный мониторинг команд вывода ...
Я запускаю nmap ежедневно и сохраняю результат в формате xml.
Что-то вроде: nmap 192.168.0.0/24 -oX /tmp/nmap.output
Перебирать все варианты для nmap - это долго,
но http://www.nmap.org имеет массу информации.
Затем вы можете использовать ndiff из пакетов nmap, чтобы различать вывод
с другого дня и получите список компьютеров, которые были
добавлены, удалены или открыты новые порты.
Все это настраивается в cron, и после запуска список отправляется по почте.
руткит проверяет с помощью rkhunter или chkrootkit
Вы могли бы попробовать Zabbix для служб, мониторинга журналов, проверки целостности файлов и многого другого. Его довольно легко установить и настроить. Возможно, вам придется настроить его для своих нужд, добавив стороннее программное обеспечение.
Я много работаю над проектом OSSEC и знаю, что он может решить ваши проблемы. Не из коробки, но с небольшой настройкой заработает.
Одна из новых функций в OSSEC сообщает о различиях в выводе команд, для этого просто добавьте следующее в файл etc / ossec.conf
<ossec_config>
<localfile>
<log_format>command</log_format>
<command>iptables -L -n</command>
</localfile>
</ossec_config>
Затем создайте локальное правило, подобное следующему
<rule id="98989" level="10">
<if_sid>530</if_sid>
<match>ossec: output: iptables -L -n</match>
<check_diff />
<description>Change made to iptables</description>
</rule>
Более подробную информацию можно найти http://www.ossec.net/doc/manual/monitoring/process-monitoring.html
В настоящее время rootcheck выполняет несколько простых проверок для этого, но добавить свою собственную несложно.
Сначала создайте файл политики rootcheck в etc/shared/
для этого примера я назову его unix_mount_policy.txt
со следующим содержанием.
# This will make sure that the OS this file is used for pilicy is running redhat
# and it should be changed for your environment
[Policy - Check OS] [any required] [http://intranet.example.com/location/of/policy]
f:/etc/redhat-release -> r:^Red Hat Enterprise Linux \S+ release 5;
f:/etc/redhat-release -> r:^CentOS && r:release 5.2;
# First real rule
# This will alert if /usr does not have ro on the same line
[Policy - Mounts read only] [any] [http://intranet.example.com/location/of/policy/readonly]
f:/etc/fstab -> !r:^# && r:/usr && !r:ro
rootcheck уже выполняет эту функцию, но если вы хотите увидеть, изменится ли что-нибудь, используя общий журнал вывода из моего ответа в разделе 1, настройка должна быть очень простой.