Способ получения оповещений о попытках входа в систему, успешный или нет?

Я считаю, что моя Linux-машина достаточно защищена от внешнего входа в систему. Но так как я слегка параноик, я бы хотел получать оповещения, когда на сервер делается попытка входа в систему, независимо от того, успешна она или нет.

Просматривая сайт, я не могу найти единого способа сделать это. Насколько я могу судить, для неудачных попыток рекомендована logcheck, а для успешных - метод sshrc или (возможно, даже больше) pam_exec. Мне нравятся методы "два камня в одном броске", и мне интересно, знает ли кто-нибудь из вас, есть ли способ заставить один из этих методов сделать оба? PAM, в частности, кажется разумным местом для работы, поскольку, как я могу сказать, это центральная система аутентификации на моем компьютере с Ubuntu.

Любой совет?

1 ответ

Решение

Ну, вы могли бы использовать cron с глупым небольшим сценарием, чтобы проверить /var/log/auth.log каждые 10 минут Если вы настроили его правильно, cron мы будем отправлять по электронной почте куда угодно, поэтому нам просто нужен скрипт для запуска:

#!/bin/bash
cat /var/log/auth.log | perl -MDate::Parse -ne '
  print if /login|ssh/ && /^(\S+\s+\d+\s+\d+:\d+:\d+)\s/ && str2time($1) > time-600'

Это основано на этом ответе на SO Ф. Хаури.

Вот только ищу предметы с login или же ssh в. Вы можете добавить еще или просто исключить. Но в моей системе вот что она генерирует:

Aug 29 10:19:50 bert sudo:      oli : TTY=pts/10 ; PWD=/home/oli ; USER=root ; COMMAND=/bin/login
Aug 29 10:19:52 bert login[15544]: pam_unix(login:session): session opened for user oli by oli(uid=0)
Aug 29 10:19:54 bert login[15544]: pam_unix(login:session): session closed for user oli
Aug 29 10:20:11 bert sshd[15614]: Accepted publickey for oli from ::1 port 41663 ssh2: RSA XXXXXXXXXXXXXXXXXXXXXXXXXXXX
Aug 29 10:20:11 bert sshd[15614]: pam_unix(sshd:session): session opened for user oli by (uid=0)

Сохраните этот скрипт как что-то вроде /usr/local/sbin/checkauth (а также chmod u+x это), а затем вы можете добавить корневую строку crontab с sudo crontab -e:

*/10 * * * * /usr/local/sbin/checkauth

Придерживайтесь MAILTO="[email protected]" также в верхней части файла cron и (при условии, что установлен почтовый сервер - установите postfix если нет) вы получите электронные письма с результатами, если есть какие-либо результаты.

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