Como edito a mensagem "último login" do SSH?


16

Gostaria de editar as Last login:informações impressas junto com a mensagem do dia, mas não consigo encontrar o script que gera e ecoa.

Onde é definido, em um script shell fácil de editar, ou fechado em um binário?


Observe que isso é diferente do ServerFault: como posso editar a mensagem de boas-vindas quando o ssh inicia? . As informações do "último login" não são impressas de dentro para fora /etc/update-motd.d/, mas definidas pela configuração do PrintLastLogsinalizador e, portanto, não podem ser editadas como as outras partes da mensagem do dia.


Esta informação é guardada em utmpe wtmparquivos (dependendo da distribuição, do check-in /var/run/utmpou /var/log/utmpou olhar na /varagenda). Esses arquivos não são salvos como texto, mas como binários, portanto, você precisará de ferramentas especiais para editá-los. O arquivo utmp controla o estado atual de login de cada usuário. O arquivo wtmp registra todo o histórico de logins e logoff. Você precisará de ferramentas especiais para editá-las, mas não consegui encontrar nada realmente.
phoops

Respostas:


14

Parece que o formato da linha impressa é compilado em sshd:

[me@risby ~]$ ssh lory
Last login: Fri May 23 10:59:01 2014 from 2a01:2c0:e:300:7271:bcff:feac:445a
[me@lory ~]$ strings /usr/sbin/sshd | grep -i "last login"
Last login: %s
Last login: %s from %s

Também não vejo nenhuma opção de configuração para alterar isso; portanto, você precisará editar a fonte e recompilar.

Edit : No caso limitativo, você pode encontrar a fonte em http://www.openssh.org . Mas você não nos diz que está usando o OpenSSH, ou qualquer coisa sobre sua plataforma, por isso é difícil ser mais específico. Se for um sistema Linux, você faria muito melhor para obter a fonte apropriada para sua distribuição da maneira usual e recompilar através de seus mecanismos específicos de distribuição.

Mas, na verdade, você não deve fazer isso a menos que tenha uma razão comercial extremamente atraente para fazê-lo: você está criando um pesadelo de manutenção para si mesmo, acessando uma versão compilada manualmente de um pacote sensível à segurança.


Onde o código-fonte por trás pode sshdser encontrado?
IQAndreas 23/05

11
Na verdade, eu estava planejando outra coisa com a fonte. Eu queria ver como eles analisam os dados wtmp, definem o PrintLastLogsinalizador noe recriam o aviso de "último login" com meu próprio script inserido update-motd.d. Muito mais fácil de manutenção. :)
IQAndreas

11
Frequentemente, vejo que a motdsaída não está completamente atualizada. Então, eu estou pensando que update-motdpode não ser executado em todos os logins.
Kasperd

@kasperd Atualiza a cada 10 minutos como um trabalho cron. Esta é a ajuda em caso ele tenta fazer algo "lento" como recuperar uma string a partir da Internet, por isso não faz o servidor abrandar cada vez que alguém iniciar sessão.
IQAndreas

3
A mensagem "último login" é específica do usuário, enquanto o motd é de todo o sistema. Não sei como você deseja recriar a mensagem. Além disso, existem pessoas que realmente leem esta mensagem e desejam que ela seja a mais precisa possível.
Simon Richter

5

As últimas informações de login são armazenadas /var/log/wtmpou /var/log/utmpsão arquivos binários. Sem olhar o código-fonte do sshd, não tenho certeza, mas espero que ele recupere as informações desses arquivos usando chamadas de sistema adequadas

Parece improvável que você encontre uma maneira de alterar facilmente essas informações, pois elas fazem parte da segurança dos usuários.


Se você realmente deseja os detalhes sangrentos, precisa procurar o código fonte da função login_get_lastlogque pode ser encontrada emloginrec.c


@ lain +1 por causa da sugestão de código fonte - embora eu não ache que seja uma solução sangrenta, tudo o que ele precisa é de um espelho git local. Imho usando a fonte não é do diabo, mesmo para os sysadms.
peterh - Restabelece Monica

2

Outra solução seria limpar a tela no início do arquivo motd da seguinte forma:

^[[H^[[2J
whatever was originally in the motd file here

Nota: substitua ^[pelo símbolo de escape (que você pode criar no editor nano pressionando as seguintes teclas: esc+ v+ esc)


-2

Talvez algumas soluções sejam possíveis, caso você queira alterar o último IP de login?

Por exemplo, você pode alterar o endereço IP mostrado para "localhost" entrando no ssh novamente na máquina controlada remotamente!

Login remoto via ssh >> ssh username @ localhost

Agora o último IP registrado será localhost

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.