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

Как установить PAM_RUSER при входе на сервер ssh?

Я пытаюсь регистрировать все 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

Я не совсем уверен, как вы получите электронное письмо, но вы можете рассмотреть один из следующих вариантов:

  • используйте syslog, чтобы переместить этот (и, возможно, другие журналы) на что-то центральное
  • используйте какой-то анализатор журнала (например, logstash / beats) для отслеживания такого рода событий и отправьте уведомление этим инструментом. Не для поддержки logstash, но, помимо электронной почты, он позволит получать различные другие виды уведомлений, такие как slack / webhooks и т. Д.

Я признаю, что это не совсем то же самое, что и ваше исходное решение (и требует, чтобы у вас было какое-то отображение человека-> клавиш, но это, как правило, хорошо иметь в любом случае).