Есть несколько человек с root-доступом к конкретной виртуальной машине, за которую я отвечаю. Я хотел бы узнать, какой IP-адрес был использован для входа в систему с правами root.
Есть несколько человек с root-доступом к конкретной виртуальной машине, за которую я отвечаю. Я хотел бы узнать, какой IP-адрес был использован для входа в систему с правами root.
Ответы:
Вы можете использовать last
команду, чтобы получить эту информацию
# last|head
phemmer ssh 192.168.0.24 Wed Aug 20 21:08 - 21:08 (00:00)
phemmer pts/13 192.168.0.2 Wed Aug 20 14:00 - 18:43 (04:43)
phemmer ssh 192.168.0.2 Wed Aug 20 14:00 - 18:43 (04:43)
phemmer ssh ::1 Wed Aug 13 23:08 - 23:08 (00:00)
phemmer ssh ::1 Wed Aug 13 23:08 - 23:08 (00:00)
phemmer ssh ::1 Wed Aug 13 23:07 - 23:07 (00:00)
phemmer pts/15 192.168.0.20 Thu Aug 7 19:00 - 19:00 (00:00)
phemmer ssh 192.168.0.20 Thu Aug 7 19:00 - 19:00 (00:00)
phemmer :0 Wed Jul 30 20:06 still logged in
reboot system boot 3.13.2-gentoo Wed Jul 30 20:05 still running
Как вы можете без сомнения увидеть, в 3-м столбце будет показан удаленный IP-адрес в случае входа по SSH.
last
использует /var/log/wtmp
файл, поэтому этот метод похож на ответ G-Man (чуть проще, так как вам не нужно указывать путь к файлу).
Это зависит от вашего дистрибутива или ОС. 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
версии.
Команда
who /var/log/wtmp
должна показывать информацию вроде того who
, что показывает, но возвращаясь во времени.
last
Вы не должны позволять другим пользователям ssh
входить в систему как root (используя пароль root или сертификат /root/.ssh/authorized_keys
), если вы хотите проверять, кто вошел в систему как root. Вместо этого используйте одну учетную запись для каждого человека и дайте ему sudo
возможность получить права root. Таким образом, вы найдете в соответствующем журнале (положение файла журнала зависит от того, какой у вас дистрибутив, вы даже можете настроить демон журнала для отправки сообщений на другой компьютер) сообщение user john ran the command 'sudo rm -rf /'
. Ну, может быть, вы не можете легко найти эту одну команду в журналах, хотя.
sudo
мощность. Нет никакой реальной причины делить учетную запись между двумя людьми, но у человека может быть две учетные записи, если это необходимо.
root
учетную запись.
Из приведенного вами краткого описания кажется, что было бы лучше, если бы вы настроили систему мониторинга журналов. Это поможет вам отслеживать входы в систему, создавать оповещения, сравнивать данные за несколько дней и, конечно, графики для всего этого.
Но если вам нужно временно его контролировать , вы можете использовать last
команду.
last | grep root | grep -v tty | awk '{print $3}'
Это даст вам список IPs
или Hostnames
откуда, пользователь root вошел в систему.
sudo less /root/.bash_history
я все еще пытаюсь исследовать это, кажется, действительно хороший вопрос :)