Есть несколько человек с 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я все еще пытаюсь исследовать это, кажется, действительно хороший вопрос :)