Come posso modificare il messaggio SSH "ultimo accesso"?


16

Vorrei modificare le Last login:informazioni stampate insieme al messaggio del giorno, ma non riesco a trovare lo script che genera ed echeggia.

Dove viene definito, in uno script di shell facile da modificare o chiuso in un binario?


Nota, questo è diverso da ServerFault: come posso modificare il messaggio di benvenuto all'avvio di ssh? . Le informazioni "ultimo accesso" non vengono stampate dall'interno /etc/update-motd.d/, ma vengono invece definite impostando il PrintLastLogflag e non possono quindi essere modificate come le altre parti del messaggio del giorno.


Queste informazioni vengono salvate in utmpe wtmpfile (a seconda della distribuzione, check in /var/run/utmpo /var/log/utmpo cerca nella /vardirectory). Questi file non vengono salvati come testo, ma come binari, quindi avrai bisogno di strumenti speciali per modificarli. Il file utmp tiene traccia dello stato di accesso corrente di ciascun utente. Il file wtmp registra tutti gli accessi e la cronologia degli accessi. Avrai bisogno di strumenti speciali per modificarli, ma non sono riuscito a trovare nulla.
phoops,

Risposte:


14

Sembra che il formato della linea stampata sia compilato in 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

Non riesco a vedere alcuna opzione di configurazione per cambiarla, quindi dovrai modificare l'origine e ricompilare.

Modifica : Nel caso limitante, puoi trovare la fonte su http://www.openssh.org . Ma non ci dici che stai usando OpenSSH o qualcosa della tua piattaforma, quindi è difficile essere più specifici. Se si tratta di un sistema Linux, faresti molto meglio per ottenere la fonte appropriata per la tua distribuzione nel solito modo e ricompilare attraverso i tuoi meccanismi specifici per la distribuzione.

Ma davvero, non dovresti farlo affatto a meno che tu non abbia un motivo commerciale estremamente convincente per farlo: stai creando un incubo di manutenzione per te stesso, andando a una versione compilata a mano di un pacchetto sensibile alla sicurezza.


Dove si trova il codice sorgente dietro sshd?
IQAndreas,

1
In realtà, stavo pianificando qualcos'altro con la fonte. Volevo vedere come analizzano i dati wtmp, impostano il PrintLastLogflag su noe ricreano l'avviso "ultimo accesso" con il mio script inserito update-motd.d. Molto più facile da manutenere. :)
IQAndreas,

1
Vedo spesso che l' motdoutput non è completamente aggiornato. Quindi sto pensando che update-motdpotrebbe non essere eseguito su ogni accesso.
Kasperd,

@kasperd Si aggiorna ogni 10 minuti come cron job. Questo è di aiuto nel caso in cui tenti di fare qualcosa di "lento" come recuperare una stringa da Internet, quindi non rallenta il server ogni volta che qualcuno accede.
IQAndreas

3
Il messaggio "ultimo accesso" è specifico dell'utente, mentre il motd è a livello di sistema. Non sono sicuro di come si desidera ricreare il messaggio. Inoltre, ci sono persone che leggono effettivamente questo messaggio e vogliono che sia il più preciso possibile.
Simon Richter,

5

Le ultime informazioni di accesso sono archiviate /var/log/wtmpo /var/log/utmpsono file binari. Senza guardare il codice sorgente per sshd non posso essere del tutto sicuro, ma mi aspetto che stia recuperando le informazioni da quei file usando chiamate di sistema adeguate

Sembra improbabile che troverai un modo per cambiare facilmente queste informazioni, dopo tutto parte della sicurezza degli utenti.


Se vuoi davvero i dettagli gory, allora devi guardare il codice sorgente per la funzione login_get_lastlogche si trova inloginrec.c


@lain +1 a causa del suggerimento del codice sorgente - anche se non penso che fosse una soluzione cruenta, tutto ciò di cui ha bisogno è un mirror git locale. Imho usando la fonte non proviene dal diavolo nemmeno per i sistemi.
Peter - Ripristina Monica

2

Un'altra soluzione sarebbe quella di cancellare lo schermo all'inizio del file motd in questo modo:

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

Nota: sostituire ^[con il simbolo di escape (che è possibile creare nell'editor nano premendo i seguenti tasti: esc+ v+ esc)


-2

Forse qualche soluzione, nel caso in cui desideri solo modificare l'ultimo IP di accesso?

Ad esempio, puoi cambiare l'indirizzo IP mostrato in "localhost" accedendo di nuovo a ssh dalla macchina telecomandata!

Accesso remoto tramite ssh >> nome utente ssh @ localhost

Ora l'ultimo IP registrato sarà localhost

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.