Назад | Перейти на главную страницу

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

В настоящее время я использую gentoo и у меня есть следующий метод узнать, когда кто-либо входит на мой сервер (на самом деле это только я, но если бы кто-то получил доступ, я бы хотел знать об этом)

1) Используйте сек для мониторинга файлов журнала

type=SingleWithScript
ptype=RegExp
pattern=Accepted keyboard-interactive/pam for ([a-z]+) from ([0-9|\.]+) port
script=/root/scripts/userLogin.pl $1 $2
desc=User Login
action=write /var/log/sec/sec.log User Login: $1 has logged in from $2
action2=write /var/log/sec/sec.log Script Failed: User Login: $1 has logged in from $2

2) Скрипт:

#!/usr/bin/perl -w
use Net::SMTP::TLS;

my $smtp;
if (not $smtp = Net::SMTP::TLS->new('smtp.gmail.com',
                            Port => 587,
                            User => '',
                            Password => '',
                            Debug => 1)) {
    die "Could not connect to server\n";
}

$smtp->mail('');
$smtp->to('');
$smtp->data();
$smtp->datasend('To: ' . "\n");
$smtp->datasend('From: ' . "\n");
$smtp->datasend("Subject: User Login: $ARGV[0]\n");
$smtp->datasend("\n");
$smtp->datasend("$ARGV[0] has logged in from $ARGV[1]\n");
$smtp->dataend();
$smtp->quit;

Но меня беспокоит, что мое регулярное выражение недостаточно широкое. «Accepted keyboard-interactive / pam» - могут ли логины генерировать журналы, не соответствующие этому формату?

Для этого может быть специальный модуль PAM, но я не смог его найти. Ты можешь использовать pam_exec для выполнения вашего скрипта при входе пользователя в систему. Видеть man 8 pam_exec. В основном вам просто нужно изменить свой скрипт, чтобы прочитать PAM_USER и PAM_TTY переменные среды вместо $ARGV а затем добавить

auth required pam_exec.so <your script>

Вы пробовали использовать OSSEC? В нем есть правила для анализа журналов и в реальном времени, а также для легкого составления отчетов об успешных входах, неудачных входах, первом входе с определенного IP-адреса или пользователя и т. Д.

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

Ссылка на сайт: http://www.ossec.net