Como eu configuro o PAM_RUSER quando faço login no servidor ssh?

1

Estou tentando registrar todas as conexões ssh com logger e notificação por email. Eu tenho seguido isto: # 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

O problema é que o USUÁRIO $ PAM_ R está vazio.

Como eu defino essa variável env?

    
por SpiderWan 28.02.2017 / 13:53

1 resposta

1

De onde você tirou o PAM_RUSER?

PAM_RHOST é o host remoto (ou seja, fonte da conexão). Isso é bastante simples: você precisa de um (L) HOST (local) e um RHOST (remoto) para uma conexão (sim, ambos podem ser 127.0.0.1 ou :: 1, ou qualquer outra coisa, mas você precisa disso duas vezes, porque conexão aqui é ponto a ponto).

Mas o PAM_RUSER é um conceito diferente: se o RHOST fornecer um USUÁRIO, é o usuário local (ou seja, aquele em seu LHOST) que o RHOST quer autenticar como.

Ferramentas como rlogin / rsh / rcp e co possuem um conceito de RUSER, já que as ferramentas r * dependem de hosts confiáveis.

Algo como o SSH não, porque não confia no host remoto, mas na capacidade de autenticar uma determinada conta. Em outras palavras: com o SSH, basicamente não há RUSER, porque o SSH só se preocupa em conceder ao RHOST a capacidade de efetuar login como LUSER no LHOST.

Para colocar de forma diferente: do ponto de vista do cliente, a menos que você diga para fazer o contrário, ssh HOST usará seu nome de usuário local como nome de usuário para logar como - então RUSER == LUSER. Se você optar por fornecer um nome diferente, como em ssh USER@HOST , o servidor SSH saberá apenas sobre qualquer USUÁRIO que seja fornecido a ele e ninguém falará quais outros valores USER poderia ter.

Este é o caso geral - usando, por exemplo, O Kerberos pode mudar isso, porque há, então, uma noção de um usuário autenticado com confiabilidade (um principal) capaz de provar que eles são quem eles afirmam ser.

tl: dr: seu cuidado com USER / PAM_USER, porque essa é a conta que seria comprometida se o acesso fosse concedido incorretamente.

Editar: para obter informações atualizadas.

Olhando para o seu caso de uso, pode haver uma maneira melhor de obter esse tipo de informação / atributo - usando a autenticação de chave pública. Isso permite que você tenha registros como este:

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

Não sei ao certo como você receberia um e-mail enviado, mas você pode considerar uma das seguintes opções:

  • use o syslog para empurrar isso (e talvez outros logs) para algo central
  • use algum tipo de analisador de log (por exemplo, logstash / beats) para monitorar esse tipo de evento e faça com que essa ferramenta envie uma notificação. Não para cheerlead logstash, mas além do e-mail, seria possível obter vários outros tipos de notificações, como slack / webhooks / etc.

Não é, admito, o mesmo que a sua solução original (e requer que você tenha algum tipo de mapeamento de chave humano-> - mas isso geralmente é bom ter de qualquer maneira).

    
por 28.02.2017 / 15:45

Tags