Как мне отслеживать неудачные попытки входа в систему по SSH?

Я хотел бы узнать, пытался ли кто-нибудь войти с помощью грубой силы на мой сервер Ubuntu 12.04 по SSH. Как я могу узнать, проводились ли такие мероприятия?

Все попытки входа в систему регистрируются в /var/log/auth.log.

1. Фильтр для интерактивных логинов SSH методом перебора

Откройте терминал и введите приведенный ниже текст; если он длиннее 1 страницы, вы сможете прокручивать его вверх и вниз; введите q чтобы выйти:

grep sshd.\*Failed /var/log/auth.log | less
  • Вот реальный пример из одного из моих VPN:

    Aug 18 11:00:57 izxvps sshd[5657]: Failed password for root from 95.58.255.62 port 38980 ssh2Aug 18 23:08:26 izxvps sshd[5768]: Failed password for root from 91.205.189.15 port 38156 ssh2Aug 18 23:08:30 izxvps sshd[5770]: Failed password for nobody from 91.205.189.15 port 38556 ssh2Aug 18 23:08:34 izxvps sshd[5772]: Failed password for invalid user asterisk from 91.205.189.15 port 38864 ssh2Aug 18 23:08:38 izxvps sshd[5774]: Failed password for invalid user sjobeck from 91.205.189.15 port 39157 ssh2Aug 18 23:08:42 izxvps sshd[5776]: Failed password for root from 91.205.189.15 port 39467 ssh2

2. Ищите неудачные связи (т.Е. попытка входа в систему не предпринималась, может быть сканер портов и т.д.):

Используйте эту команду:

grep sshd.*Did /var/log/auth.log | less
  • Пример:

    Aug  5 22:19:10 izxvps sshd[7748]: Did not receive identification string from 70.91.222.121Aug 10 19:39:49 izxvps sshd[1919]: Did not receive identification string from 50.57.168.154Aug 13 23:08:04 izxvps sshd[3562]: Did not receive identification string from 87.216.241.19Aug 17 15:49:07 izxvps sshd[5350]: Did not receive identification string from 211.22.67.238Aug 19 06:28:43 izxvps sshd[5838]: Did not receive identification string from 59.151.37.10

Как уменьшить количество неудачных / грубых попыток входа в систему

  • Попробуйте переключить свой SSH на нестандартный порт с 22 по умолчанию
  • Или установите скрипт автоматического запрета, такой как fail2banInstall fail2ban.

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

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

Я бы настоятельно рекомендовал fail2ban. Их вики говорит, что он делает лучше, чем я могу.

Fail2ban сканирует файлы журналов (например /var/log/apache/error_log) и запрещает IP-адреса, которые показывают вредоносные признаки - слишком много сбоев пароля, поиск эксплойтов и т.д. Обычно Fail2Ban затем используется для обновления правил брандмауэра, чтобы отклонять IP-адреса в течение определенного периода времени, хотя также можно настроить любое произвольное другое действие (например, отправку электронной почты или извлечение лотка для компакт-дисков). Из коробки Fail2Ban поставляется с фильтрами для различных сервисов (apache, curier, ssh и т.д.).

Получить защиту от него так же просто, как sudo apt-get install fail2ban.

По умолчанию, как только у кого-то есть три неудачные попытки, его IP-адрес получает пятиминутный бан. Такая задержка, по сути, останавливает попытку перебора SSH, но это не испортит вам день, если вы забудете свой пароль (но вы все равно должны использовать ключи!)

Короткий ответ: Чтобы отслеживать неудачные попытки, вы должны просто просмотреть файл журнала /var/log/auth.log без использования каких-либо команд сопоставления с образцом, поскольку эти шаблоны не являются исчерпывающими. Затем, чтобы смягчить это, вы могли бы использовать такие инструменты, как fail2ban.

Длинный ответ: Существует много способов, которыми могут произойти недопустимые логины. Например, злоумышленник может использовать некоторые имена пользователей и пароли по умолчанию, такие как имя пользователя по умолчанию "kali" и пароль "kali" в Kali Linux. (Это метод, который немецкие хакеры широко использовали в эпоху холодной войны. Прочитай Яйцо кукушки если вам интересно.)

Скажем, если вы удалите пользователя "kali", приведенные выше команды grep не будут перехватывать это:

Nov 25 07:11:32 Everything20170707 sshd[27216]: input_userauth_request: invalid user kali [preauth]