Как заставить Linux Уведомлять меня о неудачных попытках входа в систему?

Я видел это раньше, когда вы входите в поле Linux неправильно, когда вы успешно войти в систему, он уведомляет вас, что кто-то пытался войти в систему, как вы и не удалось. Что мне нужно сделать, чтобы это произошло на моей коробке?

22
задан fixer1234
02.12.2022 22:44 Количество просмотров материала 2831
Распечатать страницу

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)"

На самом деле, это охватывает последний час до текущего часа. Вы можете crontab процесс, чтобы получить, что каждый час и отправить его к вам.

записи будут выглядеть так:

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 (большинство distrobs есть что).

чтобы заставить его работать, вам нужно будет правильно настроить SSMTP. здесь это ссылка, которая говорит о том, что делать это с gmail. читайте по безопасности для SSMTP тоже; настройка неправильно выставить пароль, если у вас есть общая система. Вы можете включить эту строку в ssmtp.conf конфигурация:

FromLineOverride=yes

это сделает дайджест неудачных событий входа в систему за последний час и по электронной почте их тебе. В публичной сети со стандартным портом люди / боты постоянно пытаются перебрать небезопасные ящики. Это не большая угроза, если вы установите ваши пароли правильно, и т. д...

если бы я мог сделать общее предложение, успешные логины могли бы быть более интересными. В публичной сети со стандартным портом люди / боты постоянно пытаются перебрать небезопасные ящики. Это не большая угроза, если вы установите ваши пароли правильно, и т. д... Но положить сценарий оповещения о какой-то вид в/etc / profile, чтобы поймать любой успешный вход, вероятно, будет подпругой.

Примечания: здесь это в CentOS документации на journalctl; должен быть похож на многие другие GNU/Линукс ОС. другое примеры вычитания из даты команды, в зависимости от того, как вы хотите, чтобы время отчетов.

3
отвечен Bolwerk 2022-12-04 06:32

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх