Комментарии 14
Не надо это делать в таких конфигах. Лучше, посмотрите на pam_exec. Позволяет запустить свой скрипт на этапе логина пользователя любым методом (точнее, всеми, которым этот pam_exec подключен). Невозможно отключить без рута, точно отработает при логине.
Вопрос: api.telegram.org из России не доступен, но в вашем скрипте подключается к серверу telegram напрямую. Как обходите или сервера не в России ?
Можно заиметь socks-сервер.
Curl имеет опцию -socks5-hostname ip:port
Curl имеет опцию -socks5-hostname ip:port
Гудбайдипиай не помогает в этом?
Можно через socks5 прокси пустить (curl умеет). Можно через какой-либо внешний сервис, я, например, через ifttt сделал через webhook. Да, это как-бы тоже «прокси» по сути получается. И, да, это дополнительная точка отказа.
Все решается более просто
Как писал amarao используя pam_exec
скрипт /usr/bin/login-notify:
в /etc/pam.d/login добавляем:
Как писал amarao используя pam_exec
скрипт /usr/bin/login-notify:
#!/bin/bash
PATH=/bin:/usr/bin
token='токен бота телеграм'
chat=ваш id
subj="$PAM_TYPE on ${HOSTNAME} from ${PAM_USER}"
message="Service: $PAM_SERVICE. Login {$PAM_USER} from ${PAM_RHOST} - `date`"
/usr/bin/curl --header 'Content-Type: 'Content-Type: application/json' --request 'POST' --data "{\"chat_id\":\"${chat}\",\"text\":\"${subj}\n${message}\"}" "https://api.telegram.org/bot${token}/sendMessage"
в /etc/pam.d/login добавляем:
session optional pam_exec.so /usr/bin/login-notify
Чтоб фиксировать начало и конец сессии через ssh, нужно строку добавить в /etc/pam.d/sshd а не /etc/pam.d/login.
Во всяком случае в ubuntu 18.04 /etc/pam.d/login действует только для локальных авторизаций.
Во всяком случае в ubuntu 18.04 /etc/pam.d/login действует только для локальных авторизаций.
Лучше в /etc/pam.d/common-session строку с «pam_exec.so» добавить — так оно на все случаи применится.
Или даже в /usr/share/pam-configs/ создать конфиг по образу и подобию того что там уже есть и выполнить pam-auth-update
Или даже в /usr/share/pam-configs/ создать конфиг по образу и подобию того что там уже есть и выполнить pam-auth-update
$ cat /usr/share/pam-configs/login-notify
Name: Notification about all login events
Default: yes
Priority: 0
Session-Type: Additional
Session:
optional pam_exec.so /usr/bin/login-notify
Нужно выдать права на выполнение скриптов
chmod +x /sbin/onlogged
chmod +x /sbin/telegram
Чего только не придумают, лишь бы не использовать, к примеру, ossec.
И зачем нужны сообщения в телеграм о каждом событии? Их кто-то читает 24/7 365 дней в году?
И зачем нужны сообщения в телеграм о каждом событии? Их кто-то читает 24/7 365 дней в году?
Не обязательно постоянно следить за этим. В случае необходимости можно будет просто пролистать до нужного дня
Для ossec нужен еще отдельный ossec-server = +1 сущность.
И на нем потом все так же настраивать транспорт в телеграм (если считать, что автору нужно именно логгирование в телеграм, а не на имейл, который в ossec из коробки)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Уведомления о входах на сервер (SSH/TERMINAL) дешево и сердито