Как я могу определить, не проникли ли в мою коробку Linux?

Недавно я прочитал статью об анализе злонамеренных попыток входа по SSH. Это заставило меня задуматься, не являются ли необычными комбинации имени пользователя SSH и пароля на моем компьютере Debian? Был ли я целью атаки словаря грубой силы? Давайте посмотрим на /var/log/auth.log.0:

Sep 23 07:42:04 SLUG sshd[8303]: Invalid user tyjuan from 210.168.200.190
Sep 23 07:42:09 SLUG sshd[8305]: Invalid user tykeedra from 210.168.200.190
Sep 23 07:42:14 SLUG sshd[8307]: Invalid user tykeem from 210.168.200.190
Sep 23 07:42:19 SLUG sshd[8309]: Invalid user tykeshia from 210.168.200.190
Sep 23 07:42:25 SLUG sshd[8311]: Invalid user tyla from 210.168.200.190
Sep 23 07:42:30 SLUG sshd[8313]: Invalid user tylan from 210.168.200.190
Sep 23 07:42:35 SLUG sshd[8315]: Invalid user tylar from 210.168.200.190
Sep 23 07:42:40 SLUG sshd[8317]: Invalid user tyler from 210.168.200.190
Sep 23 07:42:45 SLUG sshd[8319]: Invalid user tylerfrank from 210.168.200.190
Sep 23 07:42:50 SLUG sshd[8321]: Invalid user tyliah from 210.168.200.190
Sep 23 07:42:55 SLUG sshd[8323]: Invalid user tylor from 210.168.200.190

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

  • ... определить, не проникли ли в мой ящик с Linux?
  • ... отменить ущерб, оставленный преступниками?
  • ... предотвратить это в будущем?

ОБНОВИТЬ

Любой совет отменить любой ущерб, оставленный преступниками?

20 ответов

Решение

Многие люди, похоже, предлагают DenyHosts, но я видел большой успех с Fail2Ban на моих системах. Он отслеживает (настраиваемое) количество сбоев, а затем выполняет действие - на моих серверах это действие заключается в использовании iptables для отбрасывания всего трафика с хоста. После 10 неудачных попыток входа в систему их забанят, и на этом все.

Я использую это в сочетании с Logcheck, чтобы всегда знать, что происходит на моих серверах.

Если у вас есть какие-либо доказательства того, что кто-то действительно проник в ваши системы (опубликованные вами журналы не свидетельствуют об этом), то ваше единственное решение - сделать резервную копию всех данных, которые вам нужно сохранить, стереть компьютер, переустановить и восстановить из резервных копий. В противном случае, нет никакого способа быть уверенным.

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

Я использую DenyHosts для мониторинга моих журналов на предмет подозрительного трафика SSH, и у меня настроен автоматический брандмауэр с хостов в определенный момент.

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

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

Вы также должны сделать всесторонний анализ журнала, ища неожиданные вещи в auth.log и других. Анализ файла журнала является конкурентным рынком, и проблема еще не решена, но есть бесплатные инструменты, такие как logwatch, которые можно настроить для ежедневной отправки вам сводок.

Безопасность через слои!

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

вы запускаете его, он создает базу данных всех файлов. Запустите его снова, и он скажет вам, какие файлы изменились.

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

"* ... determine if my Linux box has been infiltrated?"
  • искать признаки странных процессов. Я обычно использую инструменты, которые поставляются с chkrootkit ( http://www.chkrootkit.org/)
  • Выполните сканирование портов с помощью nmap с другого компьютера. Если ваш ящик был взломан, скорее всего, атакер установил бэкдор

"* ... отменить любой ущерб, оставленный преступниками?"

забудьте об этом, если произошла атака, лучший совет - переустановить ее с нуля (убедитесь, что вы закрыли все дыры в новой установке). Очень легко не заметить бэкдор или скрытый процесс, лучше переустановить его.

"* ... предотвратить это в будущем?"

  • обновления безопасности

  • жесткий брандмауэр

  • надежные пароли

  • отключить ненужные услуги

Хорошей практикой является использование пар открытых / закрытых ключей в качестве дополнительной аутентификации; Таким образом, пользователь не может войти через SSH без правильного ключа; который было бы довольно невозможно угадать для грубой силы. Хорошую статью об этом можно найти здесь.

Это одно с парольной фразой было бы довольно солидно для аутентификации SSH; Но есть и другие уязвимости! Следите за всеми приложениями, которые используют открытый порт; Если они содержат ошибку, эксплойты могут перегнать вашу систему. Хорошим примером является спам-бот, который установлен на нашем сервере из-за ошибки в программном обеспечении веб-статистики, которое мы в настоящее время используем.

Взгляните на такие инструменты, как logcheck, portsentry и tripwire. это очень распространено для случайных попыток словаря SSH, так что меня это не слишком беспокоит. Возможно, вы захотите изменить порт для случайного запутывания, но время от времени вы все равно будете видеть случайные попытки, это жизнь, когда в Интернете есть машина.

Одна вещь, которую я использую на своих серверах для предотвращения этих атак, - это DenyHosts. DenyHosts остановит злоумышленника от попытки входа в систему. После его установки в моих лог-файлах было гораздо меньше записей о попытках входа.

Fail2ban - это журнал доступа в реальном времени. Он может быть настроен на блокировку любого IP-адреса с несколькими неудачными попытками входа в систему. Это позволяет избежать атак по словарю без необходимости перемещения порта ssh. chkrootkit и rootkithunter - хорошие утилиты для проверки на проникновение. Если вторжение было успешным, лучше всего скопировать данные (и только данные, а не исполняемые файлы), стереть и переустановить, потому что действительно трудно быть на 100% уверенным, что система чиста.

В этой ветке есть несколько плохих советов, таких как:

  • использование нестандартного порта для ssh (неправильно!)
  • использование какого-либо стороннего инструмента безопасности (добавление ненужной зависимости / сложности)
  • настройка брандмауэра для блокировки или внесения в белый список (головная боль при обслуживании)

Просто настройте свой /etc/ssh/sshd_config вместо этого, чтобы улучшить безопасность:

  • PermitRootLogin no
  • Настройте AllowUsers только для пользователей в системе, которые имеют учетные записи ssh
  • Используйте только физические ключи с "PasswordAuthentication no"

Если вы коробка была проникла. Восстановите коробку.

Там нет ничего, чтобы предположить, что ваша коробка была взломана. Даже если ваши пароли довольно слабые, атака по словарю, при которой для каждого имени пользователя выполняется только одна попытка входа в систему, крайне маловероятна.

Но если вы знаете, что ваши пароли слабые, то укрепите их! Мне лично нравится pwgen (который упакован Debian). При каждом запуске он генерирует большое количество надежных, но относительно произносимых паролей-кандидатов, которые (по крайней мере для меня) довольно легко запомнить, например, yodieCh1, Tai2daci или Chohcah9.

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

Неисполняемые данные, вероятно, могут быть спасены, но все с исполняемым содержимым (это может включать в себя такие вещи, как документы MS Office и некоторые файлы конфигурации) может быть удалено, если вы не хотите и не можете вручную проверить их, чтобы убедиться, что они не ' Он оказался враждебным или согласился с тем, что он может быть враждебным и либо повредить вашу систему, либо предоставит возможность для повторного компромисса в будущем, если вы сохраните его.

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

Использование iptables:

$ iptables        -A INPUT      -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
$ iptables        -A INPUT      -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
$ iptables        -A INPUT      -p tcp --dport 22 -j DROP

Будет происходить все время с включенным ssh. Переместите его в высокий порт.

Существует программа под названием "Tripwire", которая отлично подходит для обнаружения вторжений, но довольно сложна в установке. Если ничего другого, вы должны прочитать их документы, чтобы вы понимали проблемы.

Вам необходимо установить систему обнаружения вторжений, прежде чем подключить машину к Интернету.

И это хорошая идея для IP-соединений SSH из белого списка, просто чтобы быть уверенным, что весь мир не может даже попробовать подобные вещи.

Как я могу определить, проникла ли моя коробка Linux?

Загрузитесь с носителя только для чтения (livecd) и сравните файлы с резервной копией или исходным носителем.

Просто посмотрите вокруг на странное поведение. Конечно, это проще всего, если вы потратите время до взлома, чтобы получить хорошее представление о том, что является "нормальным".

Размещенные вами ошибки не указывают на компромисс. Просто кто-то пытается.

Как я могу исправить ущерб, нанесенный преступникам?

Переустановите и восстановите из резервной копии, прежде чем система была взломана.

Увидеть:

Как я могу предотвратить это в будущем?

Увидеть:

Psad в сочетании с Shorewall - это хороший способ дополнить ваши правила iptables.

Я также использую Fail2ban, чтобы отслеживать мои логины SSH

Что-то совсем другое: попробуйте использовать Google на IP-адресе! Хакер, называющий себя STARTURK из Турции, возможно, попытался взломать ваш сайт.

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

Как уже отмечалось, Tripwire/AIDE - лучший способ поиска системных изменений. К сожалению, на этом корову нет, потому что она должна быть настроена на заведомо исправную систему.

По крайней мере, одна вещь, которая может помочь вам начать, - это использовать базу данных RPM для проверки md5-сумм ваших файлов. Основная суть заключается в следующем:

rpm -qa | xargs rpm -V

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

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

Вы можете посмотреть коробку, чтобы увидеть, что происходит, и искать что-нибудь подозрительное. Смотрите это сообщение: https://stackoverflow.com/questions/124745/sniffing-network-traffic-for-signs-of-virusesspyware

Используйте rkhunter или chkrootkit или оба; отсканируйте ваш ящик снаружи, чтобы увидеть, какие порты открыты

во всяком случае, если все, что у вас есть, является недопустимым пользователем, не нужно беспокоиться

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

http://www.ossec.net/

взято с сайта:

"OSSEC - это система обнаружения вторжений на основе хоста с открытым исходным кодом. Она выполняет анализ журналов, проверку целостности файлов, мониторинг политик, обнаружение руткитов, оповещение в режиме реального времени и активный ответ".

  • Анализ журналов. Он может проверять файл журналов на ваших серверах и оповещать вас по правилам (есть много предопределенных, и вы можете добавить свои)

  • Целостность файла - тривиальная / вспомогательная функция, аналогичная функциональности, поэтому вы увидите, был ли какой-либо файл изменен на вашем сервере

  • мониторинг политики: проверьте некоторые правила безопасности "Best Practices"

  • обнаружение руткитов: rkhunter, chkrootkit как функциональность

  • оповещения в режиме реального времени и активный ответ: вы можете настроить ossec так, чтобы он автоматически реагировал на оповещения (я не использую это, но вы можете использовать его для блокировки доступа по ssh к хостам, которые делают слишком много неудачных попыток соединения)

Действительно хороший продукт, и он очень активный

Чтобы укрепить свою коробку, вы также можете использовать Lynis или Bastille.

Другие вопросы по тегам