Я видел это раньше, когда вы входите в систему Linux неправильно, когда вы успешно входите в систему, он уведомляет вас, что кто-то попытался войти в систему, как вы, и не удалось. Что мне нужно сделать, чтобы это произошло на моей коробке?
1 ответ
В частности, для SSH вам, вероятно, нужно убедиться, что ведение журнала включено в /etc/ssh/sshd_config
.
В противном случае это неопределенный вопрос, который зависит от того, как вы хотите получать оповещения, а также от деталей вашей системы и ее конфигурации, даже от того, как они входят в систему. Вы можете просто привязать файл журнала: tail -f /var/log/messages
часто встречается или journalctl -f
в некоторых системах Linux. Один поток решений для оповещений по электронной почте находится на ServerFault.
В большинстве современных систем GNU/Linux вы должны получить дайджест каждой неудачной попытки с использованием SSH или TTY за последний час:
journalctl --since="$(date -d -1hours +\%F\ \%H):00:00" --until="$(date +\%F\ \%H):00:00" | grep -iE "Failed (pass|log)"
На самом деле, это охватывает последний час до текущего часа. Вы можете настроить процесс, чтобы получать его каждый час и отправлять его вам по электронной почте.
Записи будут выглядеть так:
Mar 21 06:16:23 yourhostname sshd[29477]: Failed password for root from 103.41.125.20 port 35243 ssh2
Mar 21 06:16:33 yourhostname login[317]: FAILED LOGIN 1 FROM tty4 FOR bolwerk, Authentication failure
Mar 21 06:22:29 yourhostname sshd[29695]: Failed password for invalid user poo from ::1 port 60139 ssh2
Вот скрипт, который вы можете поместить в crontab, чтобы собрать это:
#!/bin/sh
# gather journal information in time frame
export CRUFT=$(journalctl --since="$(date -d -1hours +\%F\ \%H):00:00" --until="$(date +\%F\ \%H):00:00" | grep -iE "Failed (pass|log)")
#email settings
export EMAILFROM="From: Security Alert <yourmail@email.domain>"
export EMAILSUBJECT="Subject: Failed login Summaries from $(date -d -1hours +\%H):00 to $(date +\%H):00"
export EMAILALERTTO="your@email.domain"
if [ "x$CRUFT" != "x" ]; then
echo -e "$EMAILFROM\n$EMAILSUBJECT\n\nFailed logins:\n$CRUFT" | ssmtp "$EMAILALERTTO"
fi
Предполагается, что вы хотите отправлять неудачные попытки последнего часа каждый час. Также предполагается, что у вас есть journalctl, возможно, требуется пользовательская область GNU (это есть у большинства дистрибутивов).
Чтобы это работало, вам нужно правильно настроить SSMTP. Вот ссылка, которая говорит о том, как сделать это с Gmail. Читайте также о безопасности для SSMTP; неправильная настройка выставит ваш пароль, если у вас общая система. Вы можете включить эту строку в конфигурацию ssmtp.conf
:
FromLineOverride=yes
Он создаст дайджест неудачных событий входа в систему за последний час и отправит их вам по электронной почте. В общедоступной сети со стандартным портом люди / боты постоянно пытаются взломать небезопасные блоки. Это не представляет большой угрозы, если вы правильно установите свои пароли и т.д.
Если я могу сделать общее предложение, успешные входы могут быть более интересными. В общедоступной сети со стандартным портом люди / боты постоянно пытаются взломать небезопасные блоки. Это не представляет особой угрозы, если вы правильно установите свои пароли и т.д. Но размещение какого-либо сценария оповещения в / etc / profile для отслеживания любого успешного входа в систему, вероятно, будет нелегко.
Примечания: Вот документация CentOS для journalctl; должно быть похоже на многие другие ОС GNU/Linux. Другие примеры вычитания из даты команды, в зависимости от того, как вы хотите, чтобы время отчетов.