Skip to content
VDS · Bảo mật

Ai đã đăng nhập vào máy: nhật ký đăng nhập

Xem đăng nhập thành công và thất bại ở đâu, cách đọc last, lastb và journalctl, cách theo dõi hành động qua sudo và cấu hình lưu nhật ký.

Cập nhật 23 tháng 8, 2026

Mỗi lần đăng nhập vào một máy đều để lại dấu vết. Khả năng đọc những dấu vết đó trong năm phút là điều phân biệt một buổi rà soát sự cố bình tĩnh với việc đoán mò.

Tổng quan nhanh

last -a -n 20
lastb -a -n 20
lastlog
who
w

last hiển thị các lần đăng nhập thành công kèm địa chỉ, lastb — các lần thử thất bại, lastlog — thời điểm mỗi người dùng đăng nhập lần cuối. who và w hiển thị ai đang ở trên máy ngay lúc này.

Nếu lastlog hiển thị ngày đăng nhập cho một người dùng hệ thống như www-data, đó là lý do nghiêm trọng để điều tra.

systemd journal

journalctl -u ssh -n 100
journalctl -u ssh --since "2026-08-20" --until "2026-08-21"
journalctl _COMM=sshd | grep "Accepted"
journalctl _COMM=sshd | grep "Failed password" | tail -50

Các dòng quan trọng:

DòngÝ nghĩa
Accepted publickey for artemĐăng nhập thành công bằng khóa
Accepted password for rootĐăng nhập thành công bằng mật khẩu — một nguyên nhân đáng lo ngại
Failed password for invalid user adminDò tìm brute-force các tên không tồn tại, tiếng ồn nền
Disconnected from authenticating userLần thử bị hủy bỏ

Trên Debian và Ubuntu, các sự kiện tương tự được ghi trùng trong /var/log/auth.log; trên AlmaLinux, trong /var/log/secure.

grep "Accepted" /var/log/auth.log
grep -c "Failed password" /var/log/auth.log

Hàng trăm lần thử thất bại mỗi ngày trên một địa chỉ công khai là bình thường. Điều bất thường lại là chuyện khác: một lần đăng nhập thành công từ một địa chỉ bạn không nhận ra. fail2ban giúp chống lại tiếng ồn.

Những gì đã được làm sau khi đăng nhập

journalctl -t sudo -n 100
grep sudo /var/log/auth.log
cat /home/artem/.bash_history

Lịch sử lệnh không đáng tin: rất dễ xóa, và nó không được ghi lại trong các phiên không tương tác. Nhật ký sudo trung thực hơn nhiều — nó do hệ thống duy trì, không phải shell. Một lý lẽ nữa ủng hộ phương án "người dùng thường cộng với sudo" được mô tả trong bài viết người dùng và sudo.

Kiểm toán đầy đủ ở cấp nhân:

apt install -y auditd
auditctl -w /etc/passwd -p wa -k passwd_changes
ausearch -k passwd_changes

Lưu trữ

Theo mặc định, systemd journal có thể nằm trong bộ nhớ và bị mất khi khởi động lại. Điều đó không tốt cho việc rà soát sự cố. Tệp /etc/systemd/journald.conf:

[Journal]
Storage=persistent
SystemMaxUse=500M
MaxRetentionSec=1month
systemctl restart systemd-journald
journalctl --disk-usage

Giới hạn dung lượng là bắt buộc: một journal đã ăn hết đĩa sẽ làm các dịch vụ dừng lại.

Những sai lầm thường gặp

Sai lầmHậu quảGiải pháp
Journal không được lưu giữa các lần khởi động lạiDấu vết bị mấtStorage=persistent
Chỉ dựa vào .bash_historyDữ liệu dễ bị làm giảKiểm tra nhật ký sudo và auditd
Không giới hạn dung lượng journalĐĩa bị đầySystemMaxUse
Coi tiếng ồn brute-force là một vụ hackBáo động giảNhìn vào Accepted, không phải Failed

Nếu bạn phát hiện một lần đăng nhập thành công từ địa chỉ của người khác, nhật ký trên chính máy đó không còn được coi là đáng tin nữa: kẻ đã đăng nhập có thể đã sửa chúng. Hãy làm theo bài viết dấu hiệu bị xâm nhập và giả định rằng máy sẽ phải được cài đặt lại.