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

118

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

    
задан Ivan 20.08.2012 в 08:32
источник

2 ответа

132

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

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

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

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

    Aug 18 11:00:57 izxvps sshd[5657]: Failed password for root from 95.58.255.62 port 38980 ssh2
    Aug 18 23:08:26 izxvps sshd[5768]: Failed password for root from 91.205.189.15 port 38156 ssh2
    Aug 18 23:08:30 izxvps sshd[5770]: Failed password for nobody from 91.205.189.15 port 38556 ssh2
    Aug 18 23:08:34 izxvps sshd[5772]: Failed password for invalid user asterisk from 91.205.189.15 port 38864 ssh2
    Aug 18 23:08:38 izxvps sshd[5774]: Failed password for invalid user sjobeck from 91.205.189.15 port 39157 ssh2
    Aug 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.121
    Aug 10 19:39:49 izxvps sshd[1919]: Did not receive identification string from 50.57.168.154
    Aug 13 23:08:04 izxvps sshd[3562]: Did not receive identification string from 87.216.241.19
    Aug 17 15:49:07 izxvps sshd[5350]: Did not receive identification string from 211.22.67.238
    Aug 19 06:28:43 izxvps sshd[5838]: Did not receive identification string from 59.151.37.10
    

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

  • Попробуйте переключить SSH на нестандартный порт по умолчанию 22
  • Или установите сценарий автоматической блокировки, например fail2ban .
ответ дан izx 20.08.2012 в 08:48
источник
62

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

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

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

  

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

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

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

    
ответ дан Oli 23.08.2012 в 11:12