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

Как я могу настроить свой сервер так, чтобы он уведомлял меня, когда к нему удаленно доступ через ssh?

Мне нужно получать уведомление по электронной почте, когда мой сервер Ubuntu доступен через SSH.

Если возможно, как я могу это сделать?

Вы должны иметь возможность сделать это с помощью правила в /etc/hosts.allow. Попробуйте что-нибудь вроде:

sshd: ALL: (/usr/bin/echo "SSH connection from %h (%H)" | /usr/bin/mailx -s "SSH Alert" you@example.com) 

Вы можете получить более подробную информацию из сценария, запущенного из /etc/profile.d, или включен в /etc/profile. Однако это будет работать только в том случае, если пользователь войдет в интерактивный сеанс.

Если вам не нужно немедленное уведомление, logcheck программа может уведомлять вас ежечасно о любых доступах за последний час. Вам нужно будет добавить соответствующие правила в конфигурацию.

РЕДАКТИРОВАТЬ: Ubuntu использует несовместимое hosts_options формат для выполнения команд оболочки. Я реализовал следующее правило:

SSHD: ALL: spawn (/bin/echo "SSH connection to %H from %h[%a]" | \
     /usr/bin/mailx -s "SSH Alert" me@example.com)

Примечания: Обозначение обратной косой черты может использоваться для переноса строк, как указано выше. Символы замены задокументированы в hosts.allow справочная страница.

pam_script будет запускать любую программу, которую вы хотите, когда пользователь входит в систему.

Лучше всего настроить сценарий для просмотра файла журнала.

Я сейчас на телефоне, но проверьте /var/log/access.log

Журнал находится в auth.log, вы можете сделать

cat /var/log/auth.log | grep ssh

Чтобы действительно отправить почту, вы можете установить SSMTP, отредактируйте его конфигурацию следующим образом:

/etc/ssmtp/ssmtp.conf

root=yourusername@gmail.com mailhub = smtp.gmail.com: 465 rewriteDomain = gmail.com AuthUser = yourusername AuthPass = yourpassword FromLineOverride = YES UseTLS = YES

Создайте текстовый файл с телом сообщения следующим образом:

Кому: recipient@gmail.com От: yourusername@gmail.com Тема: Предупреждение SSH или что-то еще

СОДЕРЖАНИЕ ПОЧТЫ

Чтобы добавить контент, вы можете:

tail /var/log/auth.log | grep ssh >> /tmp/mailcontents.txt

а затем запустить

ssmtp recipient_name@gmail.com < /tmp/mailcontents.txt

РЕДАКТИРОВАТЬ:

Другой OP сказал, что вам может потребоваться уведомление каждый раз, когда это происходит, вы можете сделать что-то вроде этого:

создать сценарий с

!/bin/sh

tail /var/log/auth.log | grep ssh >> /tmp/alert&

while true; do
   change=$(inotifywait -e close_write,moved_to,create .)
   change=${change#./ * }
   if [ "$change" = "/tmp/alert" ]; then 
       tail -n 1 /tmp/alert >> /tmp/mailcontents.txt
       ssmtp recipient_name@gmail.com < mailcontents.txt; 
   fi
done

Содержимое почты должно включать адреса, как указано ранее, код сценария не был проверен на соответствие действительности, считайте его псевдокодом.