Làm cách nào để xác định địa chỉ IP của người đã đăng nhập vào Root?


15

Có một số người có quyền truy cập root vào một VM cụ thể mà tôi phụ trách. Tôi muốn tìm ra địa chỉ IP nào được sử dụng để đăng nhập vào root.


1
Bạn có thể truy cập nhật ký để xem những lệnh nào đã được thực hiện trước đó : sudo less /root/.bash_history, Tôi vẫn đang cố gắng nghiên cứu vấn đề này, có vẻ như là một câu hỏi thực sự hay :)
ryekayo


6
Nếu ai đó đăng nhập bằng root, họ có thể thực hiện bất kỳ việc gì họ muốn xóa bất kỳ nhật ký nào họ cần ...
Comitern

4
Là một lưu ý phụ, bạn không nên đăng nhập root trực tiếp. Đây là một vấn đề bảo mật lớn.
fedorqui

Câu trả lời:


15

Bạn có thể sử dụng lastlệnh để có được thông tin này

# 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

Như bạn không thể nghi ngờ, cột thứ 3 sẽ hiển thị địa chỉ IP từ xa trong trường hợp đăng nhập SSH.

lastsử dụng /var/log/wtmptệp, vì vậy phương pháp này tương tự như câu trả lời của G-Man (đơn giản hơn một chút vì bạn không phải chỉ định đường dẫn đến tệp).


14

Điều này phụ thuộc vào phân phối hoặc hệ điều hành của bạn. sshdsẽ đăng nhập từng thông tin đăng nhập ở đâu đó và sẽ bao gồm địa chỉ IP có liên quan trong thông tin đăng nhập theo định dạng như sau:

Aug 20 15:56:53 machine sshd[2728]: Accepted publickey for root from 192.168.1.2 port 49297

Phần đó là phù hợp, nhưng cách bạn đến đó có thể khác nhau. Trên các hệ thống dựa trên systemd, sử dụng journalctl:

journalctl /usr/bin/sshd

để liệt kê tất cả các thông điệp tường trình từ sshdtệp thực thi. Bạn có thể grep ra đó để đăng nhập root hoặc các tiêu chí khác, và giới hạn nó theo ngày với --since--until(xem man journalctl).

Ngoài ra và theo lịch sử, tin nhắn sẽ được đăng nhập (thường) ở đâu đó trong /var/log. Thông sshdđiệp thường đi vào /var/log/auth.log, nhưng tập tin chính xác có thể thay đổi đáng kể. Bất cứ ai đó là:

grep sshd /var/log/auth.log

sẽ cung cấp cho bạn đầu ra tương đương rộng rãi với journalctlphiên bản.


7

Lệnh

who /var/log/wtmp

nên hiển thị thông tin như những gì whohiển thị, nhưng quay ngược thời gian.


Thủ thuật hay nhưng IMO tốt hơn hết là bạn chỉ nên sử dụnglast
Lạch

7

Bạn không nên cho phép mọi người sử dụng sshbằng cách đăng nhập trực tiếp bằng root (sử dụng mật khẩu gốc hoặc chứng chỉ trong /root/.ssh/authorized_keys) nếu bạn muốn kiểm toán ai đã đăng nhập bằng root. Thay vào đó, sử dụng một tài khoản cho mỗi người và cho phép họ sử dụng sudođể có quyền root. Theo cách này, bạn sẽ tìm thấy trong nhật ký thích hợp (vị trí của tệp nhật ký tùy thuộc vào phân phối mà bạn có, thậm chí bạn có thể định cấu hình trình nền nhật ký để gửi tin nhắn đến máy khác) tin nhắn user john ran the command 'sudo rm -rf /'. Chà, có lẽ bạn sẽ không dễ dàng tìm thấy một lệnh trong nhật ký.


2
Đầu tiên, điều này không trả lời câu hỏi. Thứ hai, bạn nên luôn luôn có cách để giải cứu hệ thống. Điều gì xảy ra khi bạn đang sử dụng xác thực LDAP và máy chủ LDAP của bạn chết? Làm thế nào bạn sẽ đăng nhập vào hộp?
Patrick

4
@Patrick Trước tiên, câu hỏi bắt đầu với "có một số người có quyền truy cập root vào một VM cụ thể", do đó, nên đề xuất rằng cách tiếp cận đúng không phải là kiểm toán IP mà thay vào đó là kiểm tra người dùng. Thứ hai, vấn đề bạn đặt ra không liên quan: nếu một người được cho là truy cập vào máy trong trường hợp khẩn cấp LDAP không hoạt động, cô ấy nên có tài khoản địa phương của riêng mình và nếu cô ấy phải làm công việc quản trị trong trường hợp khẩn cấp như vậy thì tài khoản địa phương sẽ phải sudoquyền lực. Không bao giờ có lý do thực sự để chia sẻ tài khoản giữa hai người, nhưng một người có thể có hai tài khoản nếu cần.
pqnet

Câu hỏi không phải là hỏi làm thế nào để thay đổi thiết kế của họ, mà là hỏi làm thế nào để có được địa chỉ IP. Đối với giải pháp khác của bạn, bây giờ bạn có một tài khoản cục bộ (có thể là một số), với mật khẩu không bao giờ hết hạn. Tôi sẽ không coi đó là một sự cải tiến.
Patrick

@Patrick gì cũng được. Bạn quản lý máy chủ của riêng bạn, tôi quản lý của tôi. Bạn đã đưa ra quan điểm của mình, mọi người sẽ đọc bình luận của bạn và quyết định.
pqnet

1
@Patrick cải thiện hơn những gì? Có tài khoản người dùng riêng cho những người riêng biệt gần như chắc chắn là một cải tiến so với việc nhiều người chia sẻ một roottài khoản.
jw013

0

Từ mô tả ngắn gọn mà bạn đã cung cấp, có vẻ như sẽ tốt hơn nếu bạn thiết lập một hệ thống giám sát nhật ký. Nó sẽ giúp bạn theo dõi thông tin đăng nhập, tạo thông báo, so sánh dữ liệu của vài ngày và có Đồ thị khóa học cho tất cả điều đó.

Nhưng nếu bạn cần theo dõi nó tạm thời , bạn có thể sử dụng lastlệnh.

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

Điều này sẽ cung cấp cho bạn danh sách IPshoặc Hostnamestừ đâu, người dùng root đã đăng nhập.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.