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

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

3 ответа

Решение

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

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

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

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

    18 августа, 11:00:57 izxvps sshd[5657]: сбой пароля для пользователя root из порта 95.58.255.62 38980 ssh2
    18 августа, 23:08:26 izxvps sshd[5768]: сбой пароля для пользователя root из порта 91.205.189.15 38156 ssh2
    18 августа, 23:08:30 izxvps sshd[5770]: сбой пароля ни для кого из порта 91.205.189.15 38556 ssh2
    18 августа, 23:08:34 izxvps sshd[5772]: сбой пароля для неверной звездочки пользователя из порта 91.205.189.15 порт 38864 ssh2
    18 августа, 23:08:38 izxvps sshd[5774]: сбой пароля для недопустимого пользователя sjobeck с порта 91.205.189.15 39157 ssh2
    18 августа, 23:08:42 izxvps sshd[5776]: сбой пароля для пользователя root из порта 91.205.189.15 39467 ssh2

2. Проверьте наличие неудачных подключений (т. Е. Не было попытки входа в систему, может быть сканер портов и т. Д.):

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

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

    5 августа 22:19:10 izxvps sshd[7748]: не получено идентификационной строки от 70.91.222.121 10 августа 19:39:49 izxvps sshd[1919]: не получено идентификационной строки от 50.57.168.154 13 августа 23:08:04 izxvps sshd[3562]: не получил идентификационную строку от 87.216.241.19 августа 17 15:49:07 izxvps sshd[5350]: не получил идентификационную строку от 211.22.67.238 19 августа 06:28:43 izxvps sshd[5838]: Не получил идентификационную строку от 59.151.37.10

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

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

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

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

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

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

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

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

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

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

Скажем, если вы удалите пользователя «kali», приведенные выше команды grep не поймают это:

      Nov 25 07:11:32 Everything20170707 sshd[27216]: input_userauth_request: invalid user kali [preauth]
Другие вопросы по тегам