Контролируйте все попытки входа в систему

Это не может быть, покончили ls (по крайней мере, насколько я знаю), но можно найти пустое использование каталогов find:

find . -type d -empty

Если глубина имеет значение для Вас с GNU find:

find . -maxdepth 1 -type d -empty 
6
11.07.2014, 03:32
5 ответов
[

] Не изобретайте колесо, пусть [] rsyslog [] сделает все за вас. У него есть возможность отправлять письма, когда шаблоны совпадают в сообщениях syslog до того, как они попадут в файл. [

] [

]Установите ваш адрес электронной почты и SMTP сервер и поместите его в ваш []/etc/rsyslog.conf[] или опустите его в []/etc/rsyslog.d/[] и []перезапустите rsyslog[][

] [
$ModLoad ommail
$ActionMailSMTPServer localhost
$ActionMailFrom rsyslog@whatever.com
$ActionMailTo you@youremail.com
$template mailSubject,"Login Alert on %hostname%"
$template mailBody,"\n\n%msg%"
$ActionMailSubject mailSubject
$ActionExecOnlyOnceEveryInterval 1
# the if ... then ... mailBody mus be on one line!
if $msg contains 'session opened for user' then :ommail:;mailBody
] [

]Это запустит электронную почту, когда []rsyslog[] совпадет со строкой []сеанса, открытого для пользователя [] в сообщение. [

] [

] Вы можете посмотреть в []/var/log/auth.log[] сообщения из []sshd[], чтобы увидеть, что еще можно использовать в качестве шаблонов. [

] [

] Источник: []rsyslog ommail[][

]
12
27.01.2020, 20:22
/var/log/auth.log

Отслеживайте попытки подключения к вашей системе

cat /var/log/auth.log grep sshd.\*Failed 

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

tail -f /var/log/auth.log 

вы сможете постоянно отслеживать входные данные, а затем выполнить некоторый регэкспресс.

0
27.01.2020, 20:22

Во-первых, вы не должны полагаться на .профиль пользователя, так как он может его изменить. Если это действительно ваш сервер, вы можете:

  • протестировать на наличие записей в auth.log, utmp или около того периодически (или по инотификации)
  • написать обертку для /bin/login, которая сделает ваши вещи, а затем выполнит реальный /bin/login. (Я не совсем уверен, что, например, ssh выполнит /bin/login, но я ожидаю этого). Но я не могу это рекомендовать - это слишком опасно.
2
27.01.2020, 20:22

Я знаю, что это устарело, но я написал кое-что для отслеживания успешных и неудачных ssh-соединений / попытки. А также запрещенные IP-адреса, если вы используете sshguard. Я написал это на Python и на Ruby. Он отправит вам электронное письмо, когда кто-то успешно подключится через ssh, когда кто-то получит неправильный пароль ssh или когда кто-то будет заблокирован из-за множества неудачных попыток. Надеюсь, это поможет кому-то в будущем, кто будет искать эту проблему и найдет мой код!

Реализация Python:

https://github.com/amboxer21/SSHMonitorPy

Реализация Ruby:

https://github.com/amboxer21/SSHMonitor

Для сценария python я написал сценарий bash для отслеживания процесса. Он проверяет, работает ли он каждую минуту с помощью задачи root cron. Если он не запущен, запускает другой процесс.



Сценарий Bash:

/home/anthony/.ssh/is_sshm_running.sh

#!/bin/bash

if [[ `ps aux | egrep --color -i "root.*[0-9]*:[0-9]* sudo /usr/bin/python /usr/bin/SSHMonitor.py" | wc -l` < 1 ]]; then
  sudo /usr/bin/python /usr/bin/SSHMonitor.py -e "example@gmail.com" -p "password" &
fi

if [[ `ps aux | egrep --color -i "root.*[0-9]*:[0-9]* sudo /usr/bin/python /usr/bin/SSHMonitor.py" | wc -l` > 1 ]]; then
  sudo kill -9 `ps aux | egrep --color -i "root.*[0-9]*:[0-9]* sudo /usr/bin/python /usr/bin/SSHMonitor.py" | awk '{print $2}'`;
fi

, который вызывается этой root задачей cron каждую минуту:

[anthony@ghost ImageCapturePy]$ sudo crontab -l
[sudo] password for anthony: 
* * * * * /bin/bash /home/anthony/.ssh/is_sshm_running.sh
0
27.01.2020, 20:22

После ответа @Creek; С rsyslog для сопоставления нескольких пользователей (не лучшая реализация, и, вероятно, его можно заменить регулярным выражением, но это работает)

$ModLoad ommail
$ActionMailSMTPServer localhost
$ActionMailFrom source@mail.com
$ActionMailTo target@mail.com
$template mailSubject,"Login alert on %hostname%"
# mailBody must be on one line!
$template mailBody,"\n\n%msg%"
$ActionMailSubject mailSubject
$ActionExecOnlyOnceEveryInterval 1

if $msg contains 'session opened for' then {
        if $msg contains 'USER1' then :ommail:;mailBody

        # Repetition required (did not investigate why)
        $ActionMailSMTPServer localhost
        $ActionMailFrom source@mail.com
        $ActionMailTo target@mail.com
        $template mailSubject,"Login alert on %hostname%"
        $template mailBody,"\n\n%msg%"
        $ActionMailSubject mailSubject
        $ActionExecOnlyOnceEveryInterval 1

        if $msg contains 'USER2' then :ommail:;mailBody
}
2
20.07.2020, 04:27

Теги

Похожие вопросы