it-swarm-ru.tech

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

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

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

Вы не.

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

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

12
Oskar Duveborn

Некоторые вещи, которые предупредили меня в прошлом:

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

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

11
user1686

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

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

11
Whisk

Есть метод проверки взломанных серверов через 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 . Сохраните это в каком-то файле и выполните его, если вы обнаружите, что процесс не сообщается в proc, у вас должно быть некоторое руководство, чтобы начать копаться.

НТН.

10
Shai

Я подкреплю ответы, приведенные здесь, и добавлю один из моих.

find /etc /var -mtime -2

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

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

7
Ian Purton

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

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

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

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

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

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

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

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

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

5
Tom Ritter

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

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

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

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

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

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

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

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

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

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

2
Rob

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

1
Shai

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

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

Проверьте это здесь:

https://www.scriptrock.com/

0
Cheyne