Estou depurando algo relacionado a logins LDAP,Login SSH Ldap não funciona - As mesmas configurações funcionaram em mais de 20 outros servidores - Ubuntue percebi que em alguns servidores os logs usam localhost e em outros possuem o hostname. Ter o nome do host parece fazer mais sentido, especialmente se centralizarmos os arquivos de log.
Como isso está configurado? Por que não é padrão usar o nome do host? Só meio que me deixou curioso...
Exemplos :
Oct 29 11:23:56 daily sshd[20625]: pam_unix(sshd:session): session opened for user LDAPUSERNAME by (uid=0)
Ou
Oct 29 10:56:36 localhost sshd[2560]: pam_unix(sshd:auth): check pass; user unknown
Atualizar:
user@qa-ops:~$ hostname
qa-ops
user@daily:~$ hostname
daily.domain.com
Talvez tenha a ver com o Daily ter um nome de domínio completo no nome do host? Sempre pensei que /etc/hostname deveria ser apenas a parte curta do nome do host, não o hostname.domain.com completo etc.
Responder1
https://wiki.archlinux.org/index.php/rsyslog#Configure_Hostname
Rsyslog usa a rotina glibc gethostname() ou gethostbyname() para determinar o nome do host da máquina local. A rotina gethostname() ou gethostbyname() verifica o conteúdo do
/etc/hosts
nome de domínio totalmente qualificado (FQDN) se você não estiver usando BIND ou NIS.
Mais especificamente, se a localhost
entrada do seu IP vier primeiro em /etc/hosts
, então ela terá precedência.
(Supondo que esse files
seja o primeiro valor na hosts:
linha /etc/nsswitch.conf
. Ou, alternativamente, que seu nome de host não possa ser resolvido usando DNS).
A página do Arch Wiki continua explicando:
Você pode verificar qual é o FQDN atualmente configurado da máquina local executando hostname --fqdn. A saída de hostname --short será usada pelo rsyslog ao escrever mensagens de log. Se você deseja ter nomes de host completos nos logs, você precisa adicionar $PreserveFQDN no início do arquivo (antes de usar qualquer diretiva que grave em arquivos). Isso ocorre porque o rsyslog lê o arquivo de configuração e o aplica em trânsito e, em seguida, lê as linhas posteriores.
O arquivo /etc/hosts contém várias linhas que mapeiam FQDNs para endereços IP e que mapeiam aliases para FQDNs. Veja o exemplo do arquivo /etc/hosts abaixo:
/etc/hosts
#<ip-address> <hostname.domain.org> <hostname> #<ip-address> <actual FQDN> <aliases> 127.0.0.1 localhost.localdomain somehost.localdomain localhost somehost ::1 localhost.localdomain somehost.localdomain localhost somehost
localhost.localdomain é o primeiro item após o endereço IP, então a função gethostbyname() retornará localhost.localdomain como o FQDN da máquina local. Então o arquivo /var/log/messages usará localhost como nome do host.
Para usar somehost como nome do host. Mova somehost.localdomain para o primeiro item:
/etc/hosts
#<ip-address> <hostname.domain.org> <hostname> #<ip-address> <actual FQDN> <aliases> 127.0.0.1 somehost.localdomain localhost.localdomain localhost somehost ::1 somehost.localdomain localhost.localdomain localhost somehost
Pode ser difícil dizer exatamente como as informações relevantes são selecionadas /etc/hosts
(ou no DNS) em diversas circunstâncias. Lendo o código-fonte novamente, acho que rsyslog
tenta resolver o nome do host do sistema (saída do hostname
comando) em um FQDN.
Eu acho que isso significa que onde diz "gethostname ou gethostbyname" acima, deveria realmente dizer "gethostnameegethostbyname". Portanto, essas instruções provavelmente poderiam ser melhoradas, mas pelo menos apontam para o lugar certo.
Há também uma pergunta muito semelhante feita nolista de discussão de usuários rsyslog.