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.
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.
Câu trả lời:
Bạn có thể sử dụng last
lệ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.
last
sử dụng /var/log/wtmp
tệ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).
Điều này phụ thuộc vào phân phối hoặc hệ điều hành của bạn. sshd
sẽ đă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ừ sshd
tệ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
và --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 journalctl
phiên bản.
Lệnh
who /var/log/wtmp
nên hiển thị thông tin như những gì who
hiển thị, nhưng quay ngược thời gian.
last
Bạn không nên cho phép mọi người sử dụng ssh
bằ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ý.
sudo
quyề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.
root
tài khoản.
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 last
lệnh.
last | grep root | grep -v tty | awk '{print $3}'
Điều này sẽ cung cấp cho bạn danh sách IPs
hoặc Hostnames
từ đâu, người dùng root đã đăng nhập.
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 :)