Сервер Ubuntu - Сделайте так, чтобы в `lastlog` отображалось имя хоста, а не IP-адрес

При входе на сервер Ubuntu через SSH следующая строка выглядит так: показано: Последний вход: Пн 18 июл 20:00:00 2016 от 111.111.111.111

На других серверах 111.111.111.111 заменяется именем хоста me.domain.com , поскольку мой rDNS настроен правильно.

Как мне настроить этот Ubuntu 16.04 LTS Server, чтобы сделать то же самое?

1
задан 18 July 2016 в 23:46
3 ответа

PAM генерирует эту строку текста из-за следующей строки конфигурации в /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

. Есть некоторые параметры конфигурации, которые вы можете передать этому модулю pam, но я ничего не вижу о разрешении имен хостов. / var / log / lastlog - это место, где хранится информация, которую вы видите, и в этом файле хранятся IP-адреса, а не имена хостов. Я думаю, это имеет смысл с точки зрения безопасности. Я также проверил часть исходного кода ... Я не нашел ничего очевидного в разрешении IP-адресов (по крайней мере, не в pam_lastlog.c). Возможно, он спрятан где-то еще, и я его пропустил.

Этот сценарий perl будет использовать lastlog для печати последней информации для входа в систему для текущего пользователя и будет преобразовывать адреса IPv4 в имена хостов

Вы можете добавить его ваш / etc / profile или /etc/bash.bashrc или под /etc/update-motd.d/ и т. д., чтобы получить то же самое эффект. Он не идеально отформатирован, поэтому вам может потребоваться поиграть с ним, чтобы он выглядел так, как вы хотите.

#!/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";

}

Пример вывода

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

Если вы хотите использовать приведенный выше сценарий во время входа в систему , вы можете захотеть остановить PAM от распечатки информации о последнем входе в систему. Добавьте silent в строку pam_lastlog в /etc/pam.d/login .

session    optional   pam_lastlog.so silent
1
ответ дан 3 December 2019 в 20:36

Откройте файл sshd_config и убедитесь, что это

UseDNS yes

После этого перезапустите сервер ssh. Я пробую это в Centos 7, и IP становится именем хоста.

1
ответ дан 3 December 2019 в 20:36

Более подробная версия ответа @akhfa:

Откройте файл /etc/ssh/sshd_config в текстовом редакторе, например nano. ] или vim

sudo nano /etc/ssh/sshd_config

В нижней части файла вы должны найти это (это нормально, если вы его не видите)

#UseDNS no

Если вы найдете это, просто раскомментируйте строку, удалив # с самого начала:

UseDNS yes

Если вы не можете найти UseDNS в файле, просто добавьте новую строку в конец файла, содержащую . ]UseDNS yes (как указано выше).

Сохраните и закройте файл.

Перезапустите службу OpenSSH. В Ubuntu вы можете использовать systemctl:

sudo systemctl restart ssh
# On some systems, it may be under openssh-server
sudo systemctl restart openssh-server

Теперь, чтобы гарантировать, что вы потенциально не были заблокированы из SSH, откройте новое отдельное соединение SSH и подключитесь к рассматриваемая система. (если вы не можете подключиться, вы сломали свою конфигурацию SSH, запустите systemctl status ssh - исправьте свою конфигурацию / найдите, как это исправить, пока у вас все еще открыто рабочее соединение SSH)

Вы должны теперь см.:

Last login: Mon Jan 1 20:00:00 2020 from 111.111.111.111

Если вы повторно подключаетесь или открываете еще одно SSH-соединение, вы должны увидеть свое имя хоста из предыдущего подключения (при условии, что IP-адрес, с которого вы подключаетесь, имеет Reverse DNS)

Last login: Mon Jan 1 20:00:00 2020 from some.host.example.com

Этот ответ был протестирован как на Ubuntu Server 18.04 (Bionic Beaver), так и на Debian 9 (Stretch) 21 января / 2020 г. — этот ответ может работать или не работать в зависимости от вашего дистрибутива Linux / версии OpenSSH

0
ответ дан 21 January 2020 в 16:57

Теги

Похожие вопросы