루트에 로그인 한 사람의 IP 주소를 확인하는 방법은 무엇입니까?


15

내가 담당하는 특정 VM에 대한 루트 액세스 권한이있는 사람이 여러 명 있습니다. 루트에 로그인하는 데 사용 된 IP 주소를 찾고 싶습니다.


1
당신은 이전에 수행 된 것을 명령 볼 로그에 액세스 할 수 있습니다 sudo less /root/.bash_history, 난 아직이 정보 조회 노력하고, :) 정말 좋은 질문처럼 보인다
ryekayo


6
누군가 루트로 로그인하면 필요한 로그를 제거하기 위해 원하는 모든 작업을 수행 할 수 있습니다.
Comintern

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

의심 할 여지없이, 세 번째 열에는 SSH 로그인시 원격 IP 주소가 표시됩니다.

last/var/log/wtmp파일을 사용 하므로이 방법은 G-Man의 답변과 비슷합니다 (파일 경로를 지정할 필요가 없으므로 조금 더 간단합니다).


14

배포판 또는 OS에 따라 다릅니다. 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

명령

who /var/log/wtmp

보여지는 것과 같은 정보를 보여 주어야 who하지만 시간이 지나면 다시 돌아갑니다.


멋진 트릭이지만 IMO를 사용하는 것이 더 좋습니다last
Creek

7

누가 루트로 로그인했는지 감사 하려면 사람들이 ssh루트로 직접 로그인하여 (루트 암호 또는 인증서 를 사용 하여) 사람들이 사용할 수 없도록해야 /root/.ssh/authorized_keys합니다. 대신 각 사람에 대해 하나의 계정을 사용 sudo하여 루트 권한을 얻는 데 사용하십시오. 이 방법으로 적절한 로그에서 로그 파일의 위치는 배포에 따라 다르며 다른 컴퓨터로 메시지를 보내도록 로그 데몬을 구성 할 수도 있습니다 user john ran the command 'sudo rm -rf /'. 글쎄, 아마도 당신은 로그에서 그 하나의 명령을 쉽게 찾을 수 없을 것입니다.


2
첫째, 이것은 질문에 대답하지 않습니다. 둘째, 항상 시스템을 구출 할 방법이 있어야합니다. LDAP 인증을 사용하고 LDAP 서버가 죽으면 어떻게됩니까? 박스에 어떻게 로그인 하시겠습니까?
패트릭

4
@Patrick 먼저, 질문은 "특정 VM에 대한 루트 액세스 권한을 가진 여러 사람이 있습니다"로 시작하므로 올바른 접근 방식은 IP를 감사하는 것이 아니라 사용자를 감사하는 것입니다. 둘째, 귀하가 제기하는 문제는 관련이 없습니다. LDAP가 작동하지 않는 긴급 상황에서 사람이 기계에 액세스해야하는 경우 자신의 로컬 계정이 있어야하며, 그러한 긴급 상황에서 관리 작업을 수행해야하는 경우 로컬 계정은 sudo힘. 두 사람이 계정을 공유해야하는 실질적인 이유는 없지만 필요한 경우 두 계정을 가질 수 있습니다.
pqnet

문제는 설계 변경 방법을 묻는 것이 아니라 IP 주소를 얻는 방법을 묻는 것입니다. 다른 솔루션의 경우 이제 만료되지 않는 암호를 가진 로컬 계정 (아마도 여러 개)이 있습니다. 나는 그 개선을 고려하지 않을 것입니다.
패트릭

@ 패트릭 무엇이든. 당신은 당신의 자신의 서버를 관리, 나는 내를 관리합니다. 당신은 당신의 요점을, 사람들은 당신의 의견을 읽고 결정합니다.
pqnet

1
무엇보다 패트릭 개선? 별도의 사람들에 대해 별도의 사용자 계정을 갖는 것은 여러 사람이 단일 root계정을 공유하는 것보다 거의 확실히 개선 된 것 입니다.
jw013

0

간단한 설명을 통해 로그 모니터링 시스템을 설정하면 더 좋을 것 같습니다. 로그인을 모니터링하고, 경고를 생성하고, 며칠 간의 데이터를 비교하고, 물론 모든 것에 대한 물론 그래프를 만드는 데 도움이됩니다.

그러나 일시적으로 모니터링해야하는 경우 last명령 을 사용할 수 있습니다 .

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

이것은 당신의 목록을 줄 것이다 IPs또는 Hostnames루트 사용자가 로그인 한 한 곳에서합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.