Ubuntu Server - Faça 'lastlog' mostrar o hostname em vez do endereço IP

1

Ao fazer o login no Ubuntu Server via SSH, a seguinte linha é mostrada: Last login: Mon Jul 18 20:00:00 2016 from 111.111.111.111

Em outros servidores, 111.111.111.111 é substituído pelo nome do host me.domain.com , pois meu rDNS está configurado corretamente.

Como eu configuro este servidor Ubuntu 16.04 LTS para fazer o mesmo?

    
por Hyu Urukami 18.07.2016 / 22:46

2 respostas

1

O PAM gera essa linha de texto devido à seguinte linha de configuração em /etc/pam.d/login

# Prints the last login info upon succesful login
# (Replaces the 'LASTLOG_ENAB' option from login.defs)
session    optional   pam_lastlog.so

Existem algumas opções de configuração que você pode passar para esse módulo pam, mas não vejo nada sobre a resolução de nomes de host. / var / log / lastlog é onde as informações que você está vendo são armazenadas e esse arquivo armazena endereços IP, não nomes de host. Isso faz sentido do ponto de vista de segurança, eu acho. Eu verifiquei alguns dos códigos-fonte também ... Eu não consegui encontrar nada óbvio sobre a resolução de endereços IP (pelo menos não em pam_lastlog.c). Talvez esteja escondido em outro lugar e eu perdi isso.

Este script perl usará lastlog para imprimir as últimas informações de login do usuário atual e resolverá endereços IPv4 em nomes de host

Você pode adicioná-lo ao seu /etc/profile ou /etc/bash.bashrc ou abaixo de /etc/update-motd.d/ , etc ... para obter o mesmo efeito. Não está perfeitamente formatado, então você pode precisar mexer com isso para fazer com que pareça do jeito que você quer.

#!/usr/bin/perl

use warnings;
use Socket;

open(my $lastLogOut,"lastlog -u $ENV{LOGNAME} |");

while(my $entry = ) {
        chomp($entry);
        my $ipAddress;
        my $hostname;

        if($entry =~ /(\d+\.\d+\.\d+\.\d+)/) {
                $ipAddress = $&;
                if($hostname = gethostbyaddr(inet_aton($ipAddress), AF_INET)) { 
                        $entry =~ s/$ipAddress/$hostname/g;
                }
        }

        print $entry."\n";

}

Exemplo de saída

$ perl lastlog.dns 
Username         Port     From             Latest
ryan         pts/5    localhost        Mon Jul 18 22:26:28 -0400 2016

Se você quiser usar o script acima durante o login , poderá impedir que o PAM imprima as últimas informações de login. Anexe silent à linha pam_lastlog em /etc/pam.d/login .

session    optional   pam_lastlog.so silent
    
por 19.07.2016 / 01:07
0

Abra seu arquivo sshd_config e garanta isso

UseDNS yes

Depois disso, reinicie seu servidor ssh. Eu tento isso no Centos 7 e o IP se torna hostname.

    
por 20.07.2016 / 13:13

Tags