Я недавно прочитал статья об анализе злонамеренных попыток входа в систему по 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
Так что это не выглядит хорошо. Теперь, когда я знаю, что я стал объектом атаки и что некоторые из моих комбинаций имени пользователя и пароля являются слабыми, я хотел бы знать, как я могу ...
ОБНОВИТЬ
Любые советы по отменить какой-либо ущерб, нанесенный преступниками?
Многие люди предлагают DenyHosts, но я добился большого успеха с Fail2Ban в моих системах. Он отслеживает (настраиваемое) количество сбоев, а затем выполняет действие - на моих серверах это действие заключается в использовании iptables для отбрасывания всего трафика с хоста. После 10 неудачных попыток входа их забанят, и на этом все.
Я использую это в сочетании с Logcheck, чтобы всегда знать, что происходит на моих серверах.
Если у вас есть какие-либо доказательства того, что кто-то действительно взломал ваши системы (журналы, которые вы опубликовали, не являются доказательством этого), то ваше единственное решение - создать резервную копию всех данных, которые вам нужно сохранить, стереть машину, переустановить и восстановить из резервных копий. В противном случае нет возможности быть уверенным.
Также регистрируются допустимые попытки входа в систему, поэтому, если вы видите попытку грубой силы, за которой следует успех, это хороший признак того, что произошло что-то плохое.
я использую DenyHosts для мониторинга моих журналов на предмет подозрительного трафика SSH, и я настроил его на автоматическое отключение брандмауэра хостов в определенный момент.
Обратите внимание, что существует множество других способов, которыми вы хотели бы контролировать свой компьютер, чтобы увидеть, не скомпрометирован ли он, включая шаблоны загрузки, активность входа в систему, периодическое отслеживание трафика, мониторинг запущенных процессов и открытых портов и обеспечение целостности файлов с помощью такого инструмента, как tripwire.
Если вы собираетесь сделать только один, мониторинг загрузки системы - очень эффективный способ обнаружения компрометации, потому что большинство компьютеров при взломе используются для таких вещей, как рассылка огромного количества спама или получение большого объема трафика иным образом. Возможно, это бесполезно, если вы - важная цель, и люди могут специально пытаться взломать вас по причинам, отличным от того, чтобы превратить вашего хозяина в зомби, но тем не менее ценно. Кроме того, для профилирования и выяснения, когда вам нужно инвестировать в дополнительное оборудование или лучшее программное обеспечение, требуется дополнительная нагрузка для мониторинга.
Вам также следует провести всесторонний анализ журнала, глядя на auth.log и другие на предмет неожиданных вещей. Анализ файлов журнала - это конкурентный рынок, и проблема еще не решена, но есть бесплатные инструменты, такие как logwatch, которые можно настроить для ежедневной отправки вам сводок.
Безопасность сквозь слои!
"* ... determine if my Linux box has been infiltrated?"
"* ... отменить любой ущерб, нанесенный преступниками?"
забудьте об этом, если была атака, лучший совет - переустановить его с нуля (убедитесь, что вы закрыли все дыры в новой установке). Не заметить бэкдор или скрытый процесс очень просто, лучше переустановить.
"* ... предотвратить это в будущем?"
обновления безопасности
плотный брандмауэр
надежные пароли
отключите ненужные услуги
Забудьте о Tripwire, это довольно дорого. Вместо этого используйте AIDE. Его бесплатно и легко настроить (хотя требуется некоторое время, чтобы решить, какие временные каталоги исключить или настроить в противном случае).
вы запускаете его, он создает базу данных всех файлов. Запустите его еще раз, и он скажет вам, какие файлы были изменены.
Еще одна вещь, которую нужно сделать, - это установить CSF, в котором есть блокировщик типа denyhost, поскольку люди постоянно не могут войти в систему, он добавит их в правила вашего брандмауэра. Вы также можете потребовать, чтобы у SSH-логинов был открытый ключ, скриптовые детишки могут попытаться выполнить столько логинов, сколько захотят.
Рекомендуется использовать пары открытого / закрытого ключей в качестве дополнительной аутентификации; Таким образом, пользователь не сможет войти через SSH без правильного ключа; что было бы практически невозможно угадать для брутфорсера. Хорошую статью об этом можно найти Вот.
Только это с парольной фразой было бы довольно надежным для аутентификации SSH; Но уязвимостей больше! Будьте осторожны со всеми приложениями, использующими открытый порт; Если они содержат ошибку, злоумышленники могут захватить вашу систему. Хорошим примером был спам-бот, установленный на нашем сервере из-за ошибки в программном обеспечении веб-статистики, которое мы в настоящее время использовали.
Одна вещь, которую я использую на своих серверах, чтобы предотвратить эти атаки, - это DenyHosts. DenyHosts остановит попытку злоумышленника войти в систему. С момента установки в моих файлах журнала было гораздо меньше попыток входа в систему.
взгляните на такие инструменты, как проверка журнала, портвейн, и растяжка. это очень распространено для случайных попыток SSH по словарю, поэтому я бы не слишком беспокоился по этому поводу. вы можете захотеть изменить порт для случайной обфускации, но вы все равно будете время от времени видеть случайные попытки, это жизнь, когда машина в Интернете.
В этой теме есть несколько плохих советов, например:
Просто настройте свой /etc/ssh/sshd_config
вместо этого для повышения безопасности:
PermitRootLogin no
Если вы в ящик проникли. Восстановите коробку.
Одна небольшая дополнительная защита, которую мне нравится, - это ограничение скорости входящих 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
Здесь нет ничего, что указывало бы на то, что ваш ящик был взломан. Даже если ваши пароли довольно слабые, атака по словарю, при которой выполняется только одна попытка входа в систему для каждого имени пользователя, крайне маловероятна.
Но, если вы знаете, что ваши пароли ненадежны, укрепите их! Лично мне нравится pwgen (который упакован Debian). При каждом запуске он генерирует большое количество надежных, но относительно произносимых паролей, которые (по крайней мере, для меня) довольно легко запомнить, например yodieCh1, Tai2daci или Chohcah9.
Однако, если есть другие доказательства того, что ваша система была взломана ... Взбейте ее с орбиты. Это единственный способ убедиться.
Неисполняемые данные, вероятно, можно спасти, но все, что имеет исполняемый контент (это потенциально включает такие вещи, как документы MS Office и некоторые файлы конфигурации), должно быть удалено, если вы не желаете и не можете либо вручную проверить его, чтобы убедиться, что он не работает. я стал враждебным, или принять возможность того, что он может быть враждебным и либо повредить вашу систему, либо предоставить возможность для будущего повторного компромисса, если вы сохраните его.
Fail2ban - это анализатор журнала доступа в реальном времени. Его можно настроить на блокировку любого IP-адреса с рядом неудачных попыток входа в систему. Это позволяет избежать атак по словарю без необходимости перемещать порт ssh. chkrootkit и rootkithunter - хорошие утилиты для проверки на вторжение. Если вторжение было успешным, лучше всего скопировать данные (и только данные, а не исполняемые файлы), стереть и переустановить, поскольку действительно сложно быть на 100% уверенным, что система чиста.
Как я могу определить, был ли заражен мой Linux-сервер?
Загрузитесь с носителя только для чтения (livecd) и сравните файлы с резервной копией или исходным носителем.
Просто посмотрите вокруг, нет ли странного поведения. Конечно, это проще всего, если вы потратите время перед взломом, чтобы получить хорошее представление о том, что «нормально».
Опубликованные вами ошибки не указывают на компромисс. Просто кто-то пытается.
Как я могу исправить любой ущерб, нанесенный преступниками?
Переустановите и восстановите из резервной копии до того, как система была взломана.
Видеть:
Как я могу предотвратить это в будущем?
Видеть:
Перед подключением компьютера к Интернету необходимо установить обнаружение вторжений.
И неплохо было бы занести SSH-соединения в белый список IP, чтобы быть уверенным, что весь мир даже не сможет попробовать такие вещи.
Будет происходить все время с включенным ssh. Переместите его в высокий порт.
Существует программа под названием «Tripwire», которая отлично подходит для обнаружения вторжений, но ее довольно сложно установить. По крайней мере, вы должны прочитать их документацию, чтобы понять проблемы.
Что-то совсем другое: попробуйте использовать Google по IP-адресу! Хакер, который называет себя СТАРТУРК из Турции мог попытаться взломать ваш сайт.
Хотя это выглядит как атака грубой силы на вашу систему, вполне возможно, что этот хакер только что сделал одну попытку и теперь ушел на какой-то другой сайт.
используйте rkhunter или chkrootkit или оба; просканируйте свой ящик снаружи, чтобы увидеть, какие порты открыты
в любом случае, если все, что у вас есть, недействительный пользователь, не о чем беспокоиться :)
Псад в сочетании с Shorewall это хороший способ дополнить ваши правила iptables.
Я также использую Fail2ban отслеживать мои входы по ssh
Вы можете посмотреть на коробку, чтобы увидеть, что входит и что выходит, и найти что-нибудь подозрительное. См. Этот пост: https://stackoverflow.com/questions/124745/sniffing-network-traffic-for-signs-of-virusesspyware
Как многие отметили, Tripwire / AIDE - лучший способ найти системные изменения. К сожалению, корова вышла из коровника на этом, так как он должен быть настроен на заведомо исправной системе.
Одна вещь, которая может помочь вам хотя бы начать работу, - это использовать вашу базу данных RPM для проверки md5-сумм ваших файлов. Основная суть такова:
rpm -qa | xargs rpm -V
Это не идеально по разным причинам. Во-первых, ваша локальная база данных RPM теоретически могла быть изменена. Во-вторых, большинство дистрибутивов используют предварительную ссылку, а RPM не поддерживает предварительную ссылку. Может показаться, что MD5 были изменены из этого процесса, что является допустимым.
Лучший совет заключается в следующем: если вы не уверены, что вас взломали, самое время для восстановления.
Чтобы предотвратить проблемы безопасности в будущем, вы можете взглянуть на OSSEC, Я использую его для проверки целостности файлов и мониторинга журналов на наших серверах, он очень полный и легко настраивается. Он может отправлять уведомления по электронной почте, вы можете проверять предупреждения через командную строку или веб-интерфейс ...
взято с сайта:
«OSSEC - это система обнаружения вторжений на основе хоста с открытым исходным кодом. Она выполняет анализ журналов, проверку целостности файлов, мониторинг политик, обнаружение руткитов, оповещение в реальном времени и активный ответ».
анализ журнала.Он может проверять файл журналов на ваших серверах и предупреждать вас с помощью правил (их много предопределено, и вы можете добавить свои собственные)
целостность файлов, как у Tripwire / помощника, так что вы увидите, был ли изменен какой-либо файл на вашем сервере
мониторинг политик: ознакомьтесь с некоторыми правилами безопасности "Передовой опыт"
обнаружение руткитов: функциональность rkhunter, chkrootkit
оповещение в реальном времени и активный ответ: вы можете настроить ossec для автоматического реагирования на оповещения (я не использую это, но вы можете использовать его для блокировки доступа ssh к хостам, которые делают слишком много неудачных попыток подключения)
Действительно хороший продукт, и он очень активен
Чтобы укрепить коробку, вы также можете использовать lynis или бастилия