Chặn Hack Ubuntu Server: Giám Sát Đăng Nhập Lạ Với auditd Logwatch

14/05/2026 · P T P · Chung

Giám sát đăng nhập bất thường để secure Ubuntu server bằng auditd và logwatch

Một Ubuntu server thường không bị “hack” bằng kỹ thuật quá phức tạp. Nhiều sự cố bắt đầu từ SSH mở public, mật khẩu yếu, key lộ, user cũ chưa xoá, bot brute-force, đăng nhập ngoài giờ, IP lạ, hoặc leo quyền qua sudo. Vấn đề: nếu không giám sát, bạn chỉ biết khi đã muộn.

auditdlogwatch là 2 công cụ nhẹ nhưng rất hữu ích:

auditd → ghi nhận sự kiện bảo mật cấp hệ thống.
logwatch → tổng hợp log hằng ngày, gửi báo cáo dễ đọc.
– Kết hợp → phát hiện đăng nhập bất thường, hành vi đáng nghi, sai lệch auth.

Mục tiêu bài này: cấu hình Ubuntu server để theo dõi login, SSH, sudo, thay đổi file nhạy cảm; nhận báo cáo định kỳ; có checklist xử lý khi thấy dấu hiệu lạ.


1. Tư duy giám sát đăng nhập bất thường

Đăng nhập bất thường không chỉ là “login failed”. Cần nhìn rộng hơn:

Nhiều lần SSH failed từ 1 IP → brute-force.
Đăng nhập thành công từ IP lạ → credential/key có thể lộ.
Login ngoài khung giờ thường lệ → rủi ro.
User không dùng lâu bỗng login → nghi vấn.
sudo bất thường → leo quyền.
Sửa /etc/passwd, /etc/shadow, /etc/sudoers → cực nhạy cảm.
Thêm SSH key vào authorized_keys → persistence.
Đăng nhập root trực tiếp → cấu hình nguy hiểm.

Log quan trọng trên Ubuntu:

/var/log/auth.log
/var/log/syslog
/var/log/audit/audit.log

Trong đó:

auth.log → SSH, PAM, sudo, su.
audit.log → auditd events.
– logwatch → đọc nhiều log → báo cáo.


2. Cài auditd và logwatch

Cập nhật hệ thống:

sudo apt update
sudo apt install auditd audispd-plugins logwatch mailutils -y

Bật auditd:

sudo systemctl enable auditd
sudo systemctl start auditd
sudo systemctl status auditd

Kiểm tra audit subsystem:

sudo auditctl -s

Kết quả nên có:

enabled 1

Nếu enabled 0 → audit chưa bật đúng.


3. Cấu hình auditd theo dõi đăng nhập, sudo, file nhạy cảm

Rule auditd nên đặt tại:

/etc/audit/rules.d/

Tạo file riêng:

sudo nano /etc/audit/rules.d/login-monitor.rules

Thêm rules:

-w /var/log/auth.log -p wa -k authlog

-w /etc/passwd -p wa -k identity -w /etc/group -p wa -k identity -w /etc/shadow -p wa -k identity -w /etc/gshadow -p wa -k identity

-w /etc/sudoers -p wa -k sudoers -w /etc/sudoers.d/ -p wa -k sudoers

-w /home/ -p wa -k home_changes -w /root/.ssh/authorized_keys -p wa -k root_ssh_key

-w /etc/ssh/sshd_config -p wa -k ssh_config

-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands -a always,exit -F arch=b32 -S execve -F euid=0 -k root_commands

Ý nghĩa:

authlog → thay đổi auth log.
identity → sửa user/group/password DB.
sudoers → thay đổi quyền sudo.
root_ssh_key → thêm/sửa SSH key root.
ssh_config → sửa cấu hình SSH.
root_commands → lệnh chạy với quyền root.

Nạp lại rules:

sudo augenrules --load
sudo systemctl restart auditd

Kiểm tra:

sudo auditctl -l

4. Truy vấn auditd: phát hiện dấu hiệu bất thường

Tìm thay đổi user/group:

sudo ausearch -k identity

Tìm sửa sudoers:

sudo ausearch -k sudoers

Tìm sửa SSH config:

sudo ausearch -k ssh_config

Tìm lệnh root:

sudo ausearch -k root_commands

Báo cáo tóm tắt:

sudo aureport

Báo cáo auth:

sudo aureport -au

Báo cáo lệnh thực thi:

sudo aureport -x

Xem theo thời gian:

sudo ausearch -k root_commands --start today

Hoặc:

sudo ausearch -k identity --start recent

Điểm cần chú ý:

– Lệnh root chạy ngoài giờ.
– User lạ gọi sudo.
– Thay đổi /etc/shadow.
authorized_keys bị sửa.
sshd_config bị đổi, ví dụ bật PermitRootLogin yes.


5. Theo dõi SSH login bằng auth.log

Xem login SSH thành công:

grep "Accepted" /var/log/auth.log

Xem failed login:

grep "Failed password" /var/log/auth.log

Top IP brute-force:

grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head

Login thành công theo IP:

grep "Accepted" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr

Theo dõi realtime:

sudo tail -f /var/log/auth.log

Dấu hiệu nguy hiểm:

Accepted password for root
Accepted publickey for root
Failed password for invalid user
sudo: pam_unix(sudo:auth): authentication failure
session opened for user root

Nếu thấy Accepted từ IP lạ → ưu tiên xử lý ngay.


6. Cấu hình logwatch gửi báo cáo hằng ngày

File config chính:

/usr/share/logwatch/default.conf/logwatch.conf

Không sửa trực tiếp. Copy sang /etc:

sudo cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf
sudo nano /etc/logwatch/conf/logwatch.conf

Cấu hình mẫu:

Output = mail
Format = text
MailTo = [email protected]
MailFrom = logwatch@your-server
Range = yesterday
Detail = High
Service = All

Test report:

sudo logwatch --detail High --range today --service sshd --print

Gửi mail test:

echo "test mail" | mail -s "Logwatch test" [email protected]

Nếu server không gửi được mail, dùng SMTP relay như Postfix + Gmail/SES/Mailgun. Tối thiểu, có thể chạy logwatch thủ công:

sudo logwatch --detail High --range yesterday --print

Cron mặc định thường có sẵn:

/etc/cron.daily/00logwatch

Kiểm tra:

ls -l /etc/cron.daily/00logwatch

7. Những mục cần đọc trong báo cáo logwatch

Trong email logwatch, tập trung các phần:

SSHD

Cần xem:

– Failed logins.
– Invalid users.
– Successful logins.
– Root login attempts.
– IP lặp lại nhiều lần.

Ví dụ đáng nghi:

Illegal users from:
  203.0.113.10: 120 times

Users logging in through sshd: deploy: 198.51.100.8 root: 203.0.113.77

root login từ IP lạ → incident.

Sudo

Cần xem:

– Ai chạy sudo.
– Chạy lệnh gì.
– Thời điểm nào.
– Có failed sudo không.

Ví dụ:

user1 : TTY=pts/0 ; PWD=/tmp ; USER=root ; COMMAND=/bin/bash

sudo bash từ /tmp → cần kiểm tra.

PAM / Authentication

Cần xem:

– Auth failure tăng đột biến.
– User không tồn tại.
– Session mở/đóng bất thường.


8. Quy trình phản ứng khi phát hiện login bất thường

Khi thấy IP lạ login thành công, đừng chỉ xoá log hay reboot. Làm theo thứ tự:

1. Giữ bằng chứng

sudo cp /var/log/auth.log /root/auth.log.snapshot
sudo cp /var/log/audit/audit.log /root/audit.log.snapshot

2. Xem user đang online

who
w
last
lastlog

3. Khoá user nghi vấn

sudo passwd -l username

4. Thu hồi SSH key nghi vấn

sudo nano /home/username/.ssh/authorized_keys

5. Kiểm tra sudoers

sudo visudo -c
sudo grep -R "" /etc/sudoers /etc/sudoers.d/

6. Chặn IP tạm thời

sudo ufw deny from 203.0.113.10

7. Xem lệnh root gần đây

sudo ausearch -k root_commands --start today

8. Rotate credential

– Đổi password.
– Thay SSH key.
– Thu hồi token.
– Kiểm tra CI/CD secret.

Nếu nghi server đã bị chiếm quyền root → ưu tiên dựng server sạch từ image tin cậy, restore data đã kiểm tra. Root compromise → không nên “vá tại chỗ”.


9. Hardening bổ sung cho SSH

Giám sát tốt, nhưng phòng thủ vẫn cần chặt.

Sửa SSH config:

sudo nano /etc/ssh/sshd_config

Khuyến nghị:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
AllowUsers deploy admin

Kiểm tra config:

sudo sshd -t

Reload:

sudo systemctl reload ssh

Bật UFW:

sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status

Cài fail2ban:

sudo apt install fail2ban -y

Tạo jail SSH:

sudo nano /etc/fail2ban/jail.local

Mẫu:

[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 5
bantime = 1h
findtime = 10m

Restart:

sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

10. Checklist vận hành hằng ngày

Mỗi ngày:

– Đọc email logwatch.
– Kiểm tra SSH successful login.
– Kiểm tra failed login tăng đột biến.
– So IP login với danh sách IP hợp lệ.
– Xem sudo commands bất thường.
– Xem audit key: identity, sudoers, ssh_config.

Mỗi tuần:

– Review user còn cần quyền SSH không.
– Kiểm tra authorized_keys.
– Kiểm tra sudoers.d.
– Update OS:

sudo apt update && sudo apt upgrade

Mỗi tháng:

– Diễn tập incident response.
– Kiểm tra backup restore.
– Rotate key quan trọng.
– Rà lại firewall rules.


Kết luận thực tế

Secure Ubuntu server không chỉ là cài firewall rồi quên. Đăng nhập bất thường là tín hiệu sớm của brute-force, credential leak, insider risk, hoặc compromise. auditd giúp ghi nhận sự kiện sâu ở cấp hệ thống. logwatch giúp biến log dài khó đọc thành báo cáo hằng ngày dễ hành động.

Cấu hình tối thiểu nên có:

– auditd theo dõi auth.log, sudoers, passwd, shadow, sshd_config, authorized_keys.
– logwatch gửi mail mỗi ngày.
– SSH tắt root login, tắt password auth nếu có thể.
– fail2ban giảm brute-force.
– checklist phản ứng rõ ràng.

Nguyên tắc cuối: log không ngăn tấn công, nhưng giúp bạn biết chuyện gì xảy ra, khi nào, từ đâu, bởi ai. Biết sớm → xử lý nhanh → giảm thiệt hại.

#chan #giam #hack #server #ubuntu
Chia sẻ:
← Trước
Secure Ubuntu bằng AppArmor: Chặn vượt quyền thực chiến

Bài viết tương tự

Bình luận

Chưa có bình luận. Hãy là người đầu tiên!