Есть несколько человек с root-доступом к конкретной виртуальной машине, за которую я отвечаю. Я хотел бы узнать, какой IP-адрес был использован для входа в систему с правами root.
Вы можете получить доступ к журналам, чтобы увидеть, какие команды были выполнены ранее: sudo less /root/.bash_historyя все еще пытаюсь исследовать это, кажется, действительно хороший вопрос :)
Это зависит от вашего дистрибутива или ОС. sshdбудет регистрировать каждый логин где-нибудь, и будет включать соответствующий IP-адрес в логин в таком формате:
Aug 20 15:56:53 machine sshd[2728]: Accepted publickey for root from 192.168.1.2 port 49297
Эта часть является последовательной, но то, как вы туда доберетесь, может отличаться. В системах на основе systemdиспользуйте journalctl:
journalctl /usr/bin/sshd
перечислить все сообщения журнала из sshdисполняемого файла. Вы можете отменить это для корневых учетных записей или других критериев, и ограничить его датой с помощью --sinceи --until(см. man journalctl).
Альтернативно и исторически сообщения будут регистрироваться (обычно) где-то в /var/log. Обычно sshdсообщения поступают /var/log/auth.log, но точный файл может существенно различаться. Какой бы он ни был:
grep sshd /var/log/auth.log
даст вам в целом эквивалентный вывод для journalctlверсии.
Хороший трюк, но IMO, вам лучше просто использоватьlast
Крик
7
Вы не должны позволять другим пользователям sshвходить в систему как root (используя пароль root или сертификат /root/.ssh/authorized_keys), если вы хотите проверять, кто вошел в систему как root. Вместо этого используйте одну учетную запись для каждого человека и дайте ему sudoвозможность получить права root. Таким образом, вы найдете в соответствующем журнале (положение файла журнала зависит от того, какой у вас дистрибутив, вы даже можете настроить демон журнала для отправки сообщений на другой компьютер) сообщение user john ran the command 'sudo rm -rf /'. Ну, может быть, вы не можете легко найти эту одну команду в журналах, хотя.
Во-первых, это не отвечает на вопрос. Во-вторых, у вас всегда должен быть способ спасти систему. Что происходит, когда вы используете аутентификацию LDAP, и ваш сервер LDAP умирает? Как вы собираетесь войти в ящик?
Патрик
4
@Patrick Во-первых, вопрос начинается с «есть несколько человек с корневым доступом к конкретной ВМ», поэтому имеет смысл предположить, что правильный подход - это не аудит IP, а аудит пользователей. Во-вторых, проблема, которую вы ставите, не имеет отношения: если человек должен получить доступ к машине в аварийной ситуации, когда LDAP не работает, у него должна быть собственная локальная учетная запись, а если он должен выполнять административную работу в такой аварийной ситуации, то у локальной учетной записи должна быть sudoмощность. Нет никакой реальной причины делить учетную запись между двумя людьми, но у человека может быть две учетные записи, если это необходимо.
pqnet
Вопрос не в том, как изменить их дизайн, а в том, как получить IP-адрес. Что касается вашего другого решения, теперь у вас есть локальная учетная запись (возможно, несколько), с паролем, который никогда не истекает. Я бы не стал считать это улучшением.
Патрик
@ Патрик, что угодно. Вы управляете своим собственным сервером, а я управляю своим. Вы высказали свое мнение, люди прочтут ваш комментарий и примут решение.
pqnet
1
@ Патрик улучшение по сравнению с чем? Наличие отдельных учетных записей для отдельных людей почти наверняка является улучшением по сравнению с тем, что несколько человек используют одну rootучетную запись.
jw013
0
Из приведенного вами краткого описания кажется, что было бы лучше, если бы вы настроили систему мониторинга журналов. Это поможет вам отслеживать входы в систему, создавать оповещения, сравнивать данные за несколько дней и, конечно, графики для всего этого.
Но если вам нужно временно его контролировать , вы можете использовать lastкоманду.
last | grep root | grep -v tty | awk '{print $3}'
Это даст вам список IPsили Hostnamesоткуда, пользователь root вошел в систему.
sudo less /root/.bash_history
я все еще пытаюсь исследовать это, кажется, действительно хороший вопрос :)Ответы:
Вы можете использовать
last
команду, чтобы получить эту информациюКак вы можете без сомнения увидеть, в 3-м столбце будет показан удаленный IP-адрес в случае входа по SSH.
last
использует/var/log/wtmp
файл, поэтому этот метод похож на ответ G-Man (чуть проще, так как вам не нужно указывать путь к файлу).источник
Это зависит от вашего дистрибутива или ОС.
sshd
будет регистрировать каждый логин где-нибудь, и будет включать соответствующий IP-адрес в логин в таком формате:Эта часть является последовательной, но то, как вы туда доберетесь, может отличаться. В системах на основе
systemd
используйтеjournalctl
:перечислить все сообщения журнала из
sshd
исполняемого файла. Вы можете отменить это для корневых учетных записей или других критериев, и ограничить его датой с помощью--since
и--until
(см.man journalctl
).Альтернативно и исторически сообщения будут регистрироваться (обычно) где-то в
/var/log
. Обычноsshd
сообщения поступают/var/log/auth.log
, но точный файл может существенно различаться. Какой бы он ни был:даст вам в целом эквивалентный вывод для
journalctl
версии.источник
Команда
должна показывать информацию вроде того
who
, что показывает, но возвращаясь во времени.источник
last
Вы не должны позволять другим пользователям
ssh
входить в систему как root (используя пароль root или сертификат/root/.ssh/authorized_keys
), если вы хотите проверять, кто вошел в систему как root. Вместо этого используйте одну учетную запись для каждого человека и дайте емуsudo
возможность получить права root. Таким образом, вы найдете в соответствующем журнале (положение файла журнала зависит от того, какой у вас дистрибутив, вы даже можете настроить демон журнала для отправки сообщений на другой компьютер) сообщениеuser john ran the command 'sudo rm -rf /'
. Ну, может быть, вы не можете легко найти эту одну команду в журналах, хотя.источник
sudo
мощность. Нет никакой реальной причины делить учетную запись между двумя людьми, но у человека может быть две учетные записи, если это необходимо.root
учетную запись.Из приведенного вами краткого описания кажется, что было бы лучше, если бы вы настроили систему мониторинга журналов. Это поможет вам отслеживать входы в систему, создавать оповещения, сравнивать данные за несколько дней и, конечно, графики для всего этого.
Но если вам нужно временно его контролировать , вы можете использовать
last
команду.Это даст вам список
IPs
илиHostnames
откуда, пользователь root вошел в систему.источник