1. File lastlog
Mục đích
- File
lastlog
được hệ thống sử dụng để ghi nhận lần đăng nhập gần nhất của từng người dùng trên hệ thống. - Mỗi người dùng trên hệ thống có một bản ghi riêng trong file này, dựa theo UID.
Nội dung
- Đây là một file nhị phân (binary), không phải văn bản thông thường, với cấu trúc cố định để lưu thông tin sau:
- UID: Mã định danh người dùng.
- TTY: Tên thiết bị đầu cuối (ví dụ:
pts/0
) mà người dùng sử dụng để đăng nhập. - Thời gian đăng nhập cuối cùng: Ghi nhận thời gian cụ thể của lần đăng nhập gần nhất.
- Địa chỉ IP (trong một số hệ thống): Địa chỉ IP của máy thực hiện kết nối.
Cách đọc
Dùng lệnh lastlog
để chuyển nội dung nhị phân thành dạng văn bản dễ hiểu:
lastlog
Ví dụ đầu ra:
Username Port From Latest
root pts/0 192.168.1.100 Mon Dec 4 10:15:00 +0000 2024
user1 pts/1 192.168.1.101 Sun Dec 3 09:45:00 +0000 2024
Để đọc file lastlog
ở một đường dẫn khác với lệnh lastlog
, thường sử dụng khi bạn backup file này sang một thư mục khác thì bạn không thể chỉ định trực tiếp đường dẫn file khác do lệnh này mặc định chỉ đọc từ /var/log/lastlog
. Tuy nhiên bạn có thể sử dụng script Python sử dụng struct để giải mã như ví dụ sau:
import struct
import pwd
import os
def read_lastlog(file_path):
if not os.path.exists(file_path):
print(f"File not found: {file_path}")
return
record_size = 292
with open(file_path, "rb") as f:
uid = 0
while chunk := f.read(record_size):
if len(chunk) < record_size:
break
# Giải mã bản ghi
data = struct.unpack("=I32s256s", chunk)
tty = data[1].decode('utf-8').strip('\x00')
timestamp = data[2].decode('utf-8').strip('\x00')
try:
username = pwd.getpwuid(uid).pw_name
except KeyError:
username = "Unknown"
print(f"UID: {uid}, Username: {username}, TTY: {tty}, Last Login: {timestamp}")
uid += 1
read_lastlog("/path/to/your/lastlog")
Thay thế "/path/to/your/lastlog"
bằng đường dẫn thực tế. Script này hỗ trợ đọc file nhị phân lastlog
ở bất kỳ đường dẫn nào.
Đặc điểm
- Chỉ lưu một lần đăng nhập gần nhất của mỗi người dùng.
- Tự động cập nhật mỗi khi có người dùng đăng nhập thành công.
- Không ghi lại chi tiết các lần đăng nhập trước, cũng không lưu thông tin các lần đăng nhập thất bại.
2. File auth.log
Mục đích
- File
auth.log
lưu trữ toàn bộ các sự kiện liên quan đến xác thực trên hệ thống, bao gồm:- Các lần đăng nhập thành công.
- Các lần đăng nhập thất bại (do sai mật khẩu, sai tên người dùng, hoặc bị chặn).
- Hoạt động liên quan đến quyền truy cập (sudo, ssh, v.v.).
- Sự kiện liên quan đến các dịch vụ xác thực như PAM hoặc
sshd
.
Nội dung
- Đây là một file văn bản (plaintext), lưu trữ theo thời gian thực với các thông tin chi tiết cho từng sự kiện:
- Thời gian xảy ra sự kiện.
- Tên người dùng (nếu có).
- Địa chỉ IP hoặc máy chủ thực hiện kết nối.
- Loại sự kiện (thành công, thất bại, lỗi xác thực, v.v.).
Cách đọc
- Dùng các lệnh như
cat
,less
, hoặcgrep
để tìm kiếm trong file:
grep "sshd" /var/log/auth.log
Ví dụ nội dung.
Dec 4 10:15:00 hostname sshd[12345]: Accepted password for root from 192.168.1.100 port 22 ssh2
Dec 4 10:17:00 hostname sshd[12346]: Failed password for invalid user admin from 192.168.1.101 port 22 ssh2
Dec 4 10:20:00 hostname sudo: pam_unix(sudo:session): session opened for user root by user1(uid=1000)
Đặc điểm
- Ghi lại toàn bộ lịch sử các sự kiện liên quan đến xác thực.
- Hữu ích để kiểm tra các hành vi đáng ngờ hoặc sự cố bảo mật.
- Lưu cả các sự kiện thất bại và thành công.
So sánh lastlog
và auth.log
.
Đặc điểm | lastlog | auth.log |
---|---|---|
Loại file | File nhị phân (binary). | File văn bản (plaintext). |
Mục đích | Lưu lần đăng nhập cuối cùng của mỗi người dùng. | Lưu toàn bộ sự kiện liên quan đến xác thực. |
Nội dung lưu trữ | – UID. – TTY. – Thời gian đăng nhập gần nhất. | – Thời gian. – Loại sự kiện. – Địa chỉ IP. |
Chi tiết sự kiện | Chỉ lưu một bản ghi cho mỗi người dùng. | Ghi lại tất cả các lần đăng nhập và sự kiện. |
Lưu sự kiện thất bại | Không. | Có. |
Công cụ đọc | Lệnh lastlog hoặc script xử lý nhị phân. | cat , less , grep , hoặc các công cụ xử lý log. |
Cập nhật | Tự động ghi đè mỗi lần đăng nhập thành công. | Không tự động ghi đè, lưu tất cả lịch sử. |
Khi nào dùng file nào?
- Dùng
lastlog
:- Kiểm tra nhanh người dùng nào đã đăng nhập lần cuối và vào lúc nào.
- Thích hợp để theo dõi các hoạt động hiện tại, không quan tâm lịch sử chi tiết.
- Dùng
auth.log
:- Kiểm tra lịch sử đăng nhập, đặc biệt khi điều tra lỗi hoặc hoạt động bất thường.
- Lưu ý các lần đăng nhập thất bại để phát hiện tấn công brute force hoặc lạm dụng tài khoản.