Назад | Перейти на главную страницу

Как я узнаю, что мой Linux-сервер был взломан?

Какие явные признаки взлома сервера Linux? Существуют ли какие-либо инструменты, которые могут генерировать и отправлять по электронной почте отчет об аудите по расписанию?

  1. Держать нетронутая копия критических системных файлов (таких как ls, ps, netstat, md5sum) где-нибудь, с суммой md5sum, и регулярно сравнивайте их с живыми версиями. Руткиты неизменно изменяют эти файлы. Используйте эти копии, если вы подозреваете, что оригиналы были скомпрометированы.
  2. помощник или растяжка сообщит вам обо всех файлах, которые были изменены - при условии, что их базы данных не были изменены.
  3. Настройте системный журнал для отправки файлов журнала в удаленный сервер журналов где они не могут быть нарушены злоумышленником. Следите за этими удаленными лог-файлами на предмет подозрительной активности
  4. читай свои журналы регулярно - используйте журнал или проверка журнала синтезировать важную информацию.
  5. Знай свои серверы. Знайте, какие виды деятельности и журналы являются нормальными.

Вы этого не сделаете.

Знаю, знаю - но на самом деле это параноидальная, печальная правда;) Намеков, конечно, много, но если система была специально нацелена - это может быть невозможно сказать. Приятно понимать, что ничто не бывает полностью безопасным. Но нам нужно работать над большей безопасностью, поэтому я вместо этого укажу на все другие ответы;)

Если ваша система была взломана, ни один из ваших системных инструментов не сможет раскрыть правду.

Некоторые вещи, которые подсказывали мне в прошлом:

  • Высокая нагрузка на систему, которая должна простаивать
  • Странные ошибки сегментации, например. из стандартных утилит типа ls (это может произойти со сломанными руткитами)
  • Скрытые каталоги в / или /var/ (большинство сценаристов слишком глупы или ленивы, чтобы замести следы)
  • netstat показывает открытые порты, которых там быть не должно
  • Демоны в списке процессов, которые вы обычно используете в различных вариантах (например, bind, но вы всегда используете djbdns)

Кроме того, я обнаружил, что есть один надежный признак того, что ящик скомпрометирован: если у вас плохое предчувствие по поводу усердия (с обновлениями и т. Д.) Администратора, от которого вы унаследовали систему, внимательно следите за этим!

Tripwire - широко используемый инструмент - он уведомляет вас об изменении системных файлов, хотя, очевидно, вам необходимо установить его заранее. В противном случае такие элементы, как новые учетные записи пользователей, о которых вы не знаете, странные процессы и файлы, которые вы не узнаете, или увеличенное использование полосы пропускания без видимой причины, являются обычными признаками.

Другие системы мониторинга, такие как Zabbix может быть настроен так, чтобы предупреждать вас об изменении таких файлов, как / etc / passwd.

Есть метод проверки взломанных серверов через kill -

По сути, когда вы запускаете kill -0 $ PID, вы отправляете сигнал nop для идентификатора процесса $ PID. Если процесс запущен, команда kill завершится нормально. (FWIW, поскольку вы передаете сигнал nop kill, с процессом ничего не произойдет). Если процесс не запущен, команда kill завершится ошибкой (статус выхода меньше нуля).

Когда ваш сервер взломан / установлен руткит, первое, что он делает, это говорит ядру скрыть затронутые процессы из таблиц процессов и т. Д. Однако он может делать всевозможные классные вещи в пространстве ядра, чтобы возиться с процессы. А это значит, что

a) Эта проверка не является обширной проверкой, поскольку хорошо запрограммированные / интеллектуальные руткиты гарантируют, что ядро ​​ответит "процесс не существует", что делает эту проверку избыточной. б) В любом случае, когда на взломанном сервере запущен «плохой» процесс, его PID обычно не отображается в / proc.

Так, если вы здесь до сих пор, метод заключается в том, чтобы убить -0 каждый доступный процесс в системе (что угодно от 1 -> / proc / sys / kernel / pid_max) и посмотреть, есть ли процессы, которые запущены, но не указаны в / proc.

Если какие-то процессы запускаются, но не отображаются в / proc, у вас, вероятно, есть проблема с любой точки зрения.

Вот сценарий bash, который реализует все это - https://gist.github.com/1032229 . Сохраните это в каком-нибудь файле и запустите его, если вы обнаружите, что процесс не зарегистрирован в процессе, у вас должно быть какое-то преимущество, чтобы начать копаться.

HTH.

Я дополню приведенные здесь ответы и добавлю свой собственный.

find /etc /var -mtime -2

Это позволит вам быстро определить, изменились ли какие-либо файлы вашего основного сервера за последние 2 дня.

Это из статьи об обнаружении взлома Как определить, взломан ли ваш сервер.

Из Как я могу обнаружить нежелательные вторжения на мои серверы?

  • Используйте IDS

    SNORT® - это система предотвращения и обнаружения сетевых вторжений с открытым исходным кодом, использующая язык, управляемый правилами, который сочетает в себе преимущества методов проверки на основе сигнатур, протоколов и аномалий. С миллионами загрузок на сегодняшний день Snort является наиболее широко применяемой технологией обнаружения и предотвращения вторжений во всем мире и фактически стал стандартом в отрасли.

    Snort считывает сетевой трафик и может искать такие вещи, как «тестирование пера», когда кто-то просто запускает полное сканирование метасплоитов ваших серверов. На мой взгляд, хорошо знать такие вещи.

  • Используйте журналы ...

    В зависимости от вашего использования вы можете настроить его так, чтобы вы знали, когда пользователь входит в систему или входит в систему с нечетного IP-адреса, или когда root входит в систему, или когда кто-то пытается войти в систему. У меня есть сервер, отправь мне электронное письмо каждый сообщение журнала выше, чем отладка. Да хоть заметку. Я, конечно, фильтрую некоторые из них, но каждое утро, когда я получаю 10 писем о чем-то, мне хочется исправить это, чтобы это перестало происходить.

  • Контролируйте свою конфигурацию - я на самом деле держу весь свой / и т. Д. В subversion, чтобы я мог отслеживать изменения.

  • Выполните сканирование. Такие инструменты, как Lynis и Руткит-охотник может предупреждать вас о возможных дырах в безопасности ваших приложений. Существуют программы, которые поддерживают хеш-дерево всех ваших бункеров и могут предупреждать вас об изменениях.

  • Следите за своим сервером - точно так же, как вы упомянули дисковое пространство - графики могут подсказать вам, если что-то необычно. я использую Кактусы следить за процессором, сетевым трафиком, дисковым пространством, температурой и т. д. выглядит странно это является странно, и вы должны выяснить, почему это странно.

Я просто хочу добавить к этому:

Проверьте свою историю bash: если она пуста, и вы не отключили ее и не очистили, велика вероятность, что кто-то взломал ваш сервер.

Проверяйте в последнюю очередь. Либо вы увидите неизвестные IP-адреса, либо он будет выглядеть очень пустым.

Затем, как указано в принятом ответе, системные файлы часто меняются, проверьте дату изменения. Однако они часто подделывают дату изменения.

Они часто устанавливают другую версию ssh, работающую на случайном порту. Это часто спрятано в действительно странных местах. Обратите внимание, что он обычно переименовывается не в ssh. Поэтому проверьте netstat (может не работать, поскольку они часто его заменяют) и используйте iptables для блокировки любых неизвестных портов.

В любом случае это ситуация, когда профилактика лучше лечения. Если вас скомпрометировали, лучше всего отформатировать и начать заново. Практически невозможно подтвердить, что вы успешно удалили взлом.

Обратите внимание на следующее, чтобы предотвратить взлом вашего сервера.

  1. Изменить порт ssh
  2. Запретить пользователю root войти в систему
  3. разрешить только определенным пользователям
  4. Запретить вход по паролю
  5. Используйте ssh-ключи, предпочтительно ключи, защищенные паролем
  6. По возможности занесите в черный список все IP-адреса и внесите в белый список требуемые IP-адреса.
  7. Установить и настроить fail2ban
  8. Используйте tripwire для обнаружения вторжений
  9. Следите за количеством пользователей, вошедших в систему с помощью Nagios или zabbix. Даже если вы будете получать уведомления каждый раз при входе в систему, по крайней мере, вы будете знать, когда кто-то еще играет.
  10. Если возможно, оставьте свой сервер на vpn и разрешите ssh только через vpn ip. Защитите свой vpn.

Стоит отметить, что как только они окажутся на одном сервере, они будут проверять вашу историю bash и искать другие серверы, к которым вы подключились через ssh с этого сервера. Затем они попытаются подключиться к этим серверам. Так что, если вы подвергнетесь грубому принуждению из-за плохого пароля, вполне возможно, что они смогут подключиться к другому серверу и взломать его.

Это ужасный мир, я повторяю, что профилактика лучше, чем лечение.

После небольшого поиска, он также делает то, что я перечислил выше, среди некоторых других вещей: http://www.chkrootkit.org/ и http://www.rootkit.nl/projects/rootkit_hunter.html

Вам следует проверить GuardRail. Он может сканировать ваш сервер ежедневно и в приятной визуальной форме сообщать вам, что изменилось. Он не требует агента и может подключаться через SSH, поэтому вам не нужно выгружать машину и ресурсы с помощью агента.

Лучше всего то, что это бесплатно для 5 серверов.

Посмотрите здесь:

https://www.scriptrock.com/