Я пытаюсь регистрировать все ssh-соединения с помощью регистратора и уведомления по почте. Я следил за этим: # 179889
#!/bin/sh
sender="xxx"
recepient="xxx"
if [ "$PAM_TYPE" != "close_session" ]; then
host="`hostname`"
subject="SSH Login: $PAM_USER@$host from $PAM_RUSER@$PAM_RHOST"
# Message to send, e.g. the current environment variables.
message="`env`"
echo "$message" | mail -r "$sender" -s "$subject" "$recepient"
# Logger
logger -t ssh-wrapper $PAM_RHOST@$host from $PAM_RUSER@$PAM_RHOST
fi
Проблема в том, что $ PAM_рUSER пуст.
Как мне установить эту переменную env?
Откуда у вас PAM_RUSER?
PAM_RHOST - это удаленный хост (т.е. источник соединения). Это довольно просто: вам нужен (L) HOST (локальный) и RHOST (удаленный) для подключения (да, оба могут быть 127.0.0.1 или :: 1 или что-то еще, но вам это нужно дважды, потому что соединение здесь точка-точка).
Но PAM_RUSER - это другая концепция: если RHOST вообще предоставляет USER, это местный пользователь (т.е. тот, что находится на вашем LHOST) RHOST хочет пройти аутентификацию как.
Такие инструменты, как rlogin / rsh / rcp и co, действительно имеют концепцию RUSER, поскольку r * -tools полагаются на доверенные хосты.
Что-то вроде SSH не доверяет, потому что он не доверяет удаленному хосту, а может аутентифицироваться для данной учетной записи. Другими словами: с SSH в основном нет RUSER, потому что SSH заботится только о предоставлении RHOST возможности входить как LUSER в LHOST.
Другими словами: с точки зрения клиента, если вы не укажете иное, ssh HOST
будет использовать ваше локальное имя пользователя в качестве имени пользователя для входа в систему - поэтому RUSER == LUSER. Если вы решите указать другое имя, как в ssh USER@HOST
, SSH-сервер знает только о том, какой USER ему предоставлен, и никто не говорит, какие другие значения может иметь USER.
Это общий случай - используя, например, Kerberos может изменить это, потому что тогда существует понятие надежно аутентифицированного пользователя (принципала), способного доказать, что он тот, за кого себя выдает.
tl; dr: вы заботитесь о USER / PAM_USER, потому что это учетная запись, которая будет скомпрометирована, если доступ будет предоставлен неправильно.
Изменить: чтобы учесть обновленную информацию.
Глядя на ваш вариант использования, может быть лучший способ получить такую информацию / атрибут - использовать аутентификацию с открытым ключом. Это позволяет вам иметь такие журналы:
Mar 01 09:35:47 HOSTN sshd[60412]: Accepted publickey for USER from RHOST port 42088 ssh2: RSA xx:d6:09:xx:76:84:xx:7e:22:xx:af:a2:xx:b3:8b:xx
Я не совсем уверен, как вы получите электронное письмо, но вы можете рассмотреть один из следующих вариантов:
Я признаю, что это не совсем то же самое, что и ваше исходное решение (и требует, чтобы у вас было какое-то отображение человека-> клавиш, но это, как правило, хорошо иметь в любом случае).