Як визначити IP-адресу того, хто ввійшов у Root?


15

Є кілька людей з кореневим доступом до конкретного ВМ, яким я керую. Я хотів би дізнатися, яка IP-адреса використовувалася для входу в root.


1
Ви можете отримати доступ до журналів, щоб побачити, які команди були виконані раніше: sudo less /root/.bash_historyя все ще намагаюся дослідити це, здається, справді хорошим питанням :)
ryekayo


6
Якщо хтось увійде в систему як корінь, він може зробити майже все, що захоче, щоб видалити всі потрібні журнали ...
Комінтерн

4
Як бічна примітка, вам слід заборонити кореневий прямий вхід. Це велика проблема безпеки.
fedorqui

Відповіді:


15

Ви можете скористатися 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 (лише трохи простіше, оскільки вам не потрібно вказувати шлях до файлу).


14

Це залежить від вашого розповсюдження чи ОС. 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версії.



7

Ви не повинні дозволити людям використовувати, використовуючи sshбезпосередньо логін у корі (використовуючи пароль корінця або сертифікат /root/.ssh/authorized_keys), якщо ви хочете перевірити, хто ввійшов як root. Натомість використовуйте один обліковий запис для кожної людини та дозвольте їм використовувати sudoдля отримання кореневих прав. Таким чином ви знайдете у відповідному журналі (положення файлу журналу залежить від того, який розподіл у вас є, ви навіть можете налаштувати демона журналу для надсилання повідомлень на іншу машину) повідомлення user john ran the command 'sudo rm -rf /'. Ну, можливо, ви не знайдете легко одну команду в журналах.


2
По-перше, це не відповідає на питання. По-друге, у вас завжди повинен бути спосіб порятунку системи. Що відбувається, коли ви використовуєте автентифікацію LDAP, і ваш LDAP-сервер гине? Як ти збираєшся увійти до поля?
Патрік

4
@Patrick По-перше, питання починається з "є кілька людей з кореневим доступом до певної VM", тому має сенс припустити, що правильний підхід - це не аудит IP, а замість аудиту користувачів. По-друге, питання, яке ви ставите, не пов'язане: якщо людина повинна отримати доступ до машини в надзвичайних ситуаціях, LDAP не працює, вона повинна мати власний локальний рахунок, і якщо вона повинна робити адміністративні роботи в такій надзвичайній ситуації, місцевий обліковий запис повинен мати sudoпотужність. Ніколи не існує реальної причини ділитися рахунком між двома людьми, але людина може мати два акаунти, якщо потрібно.
pqnet

Питання не в тому, як змінити їх дизайн, це в тому, як отримати IP-адресу. Що стосується іншого вашого рішення, тепер у вас є локальний обліковий запис (можливо, декілька) з паролем, який ніколи не закінчується. Я б не вважав це поліпшенням.
Патрік

@Patrick що завгодно. Ви керуєте своїм власним сервером, я керую своїм. Ви зробили свою думку, люди прочитають ваш коментар та вирішать.
pqnet

1
@Patrick покращення над чим? Наявність окремих облікових записів користувачів для окремих людей майже напевно покращення в порівнянні з тим, що декілька людей діляться одним rootобліковим записом.
jw013

0

З короткого опису, який ви надали, здається, було б краще, якщо ви налаштували систему моніторингу журналу. Це допоможе вам відстежувати входи, створювати сповіщення, порівнювати дані за кілька днів і так, звичайно, графіки для всього цього.

Але якщо вам потрібно контролювати це тимчасово , ви можете скористатися lastкомандою.

last | grep root | grep -v tty | awk '{print $3}'

Це дасть вам список IPsабо Hostnamesзвідки, корінний користувач увійшов у систему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.