Đêm trắng với auth.log: Khi phòng thủ thụ động là chưa đủ
Nếu bạn đang chạy một VPS Linux, thử gõ lệnh grep 'Failed password' /var/log/auth.log | wc -l. Con số trả về có thể khiến bạn giật mình. 2 giờ sáng, mình ngồi nhìn hàng nghìn lượt login thất bại từ đủ mọi dải IP toàn cầu đổ về. Cảm giác vừa bực vì server tốn tài nguyên gánh brute-force, vừa tò mò: Nếu chúng vào được, chúng sẽ làm gì tiếp theo? Cài script đào coin, dựng botnet, hay cố gắng leo thang đặc quyền?
Chỉ cài Fail2Ban hay đổi cổng SSH thì mới dừng ở mức “đóng cửa bảo nhau”. Là dân kỹ thuật, mình muốn chủ động hơn. Mình muốn mổ xẻ tận mắt bộ công cụ của chúng và xem cách chúng thao tác trong shell. Đó là lý do mình quyết định dựng một cái bẫy mang tên Honeypot.
So sánh các phương án đối phó brute-force thực tế
Trước khi dựng bẫy, mình đã cân nhắc vài cách tiếp cận quen thuộc trên môi trường production:
- Dùng Fail2Ban/IPTable: An toàn và cực kỳ phổ biến. Tuy nhiên, nó chỉ như việc đuổi trộm đi mà không biết chúng định lấy gì. Lần sau, chúng lại quay lại với một IP khác.
- Đổi cổng SSH (Security by Obscurity): Chuyển port 22 sang 2222 hay 9999. Cách này lọc được 95% các script scan tự động rẻ tiền. Nhưng với dân chuyên, chúng chỉ mất 2 giây chạy Nmap là tìm ra ngay port mới.
- Dựng Honeypot với Cowrie: Đây là cú phản đòn. Bạn cứ để cổng 22 hớ hênh. Hacker tưởng vớ bở, hí hửng đăng nhập thành công nhưng thực chất đang lạc vào một mê cung giả lập. Tại đây, mọi phím bấm và lệnh
wgetđều bị ghi lại sạch sành sanh.
Tại sao Cowrie là lựa chọn hàng đầu?
Cowrie thuộc loại Medium Interaction Honeypot. Nó không cung cấp một hệ điều hành thật để tránh rủi ro hacker chiếm quyền rồi đi tấn công người khác. Thay vào đó, nó giả lập shell cực kỳ tinh vi.
Hacker sẽ thấy một hệ thống Debian hoặc Ubuntu với đầy đủ file system giả. Chúng có thể thoải mái cd, ls, hay cat /etc/passwd. Thú vị nhất là tính năng ghi lại phiên làm việc (session replay). Bạn có thể xem lại từng bước chúng loay hoay gõ lệnh như đang xem một đoạn video thực tế.
Từng bước dựng bẫy Cowrie trên Ubuntu/Debian
Để triển khai an toàn, bạn nên dùng một VPS riêng biệt. Cấu hình chỉ cần 1 vCPU và 1GB RAM là quá đủ để bắt đầu.
Bước 1: Đẩy SSH thật sang cổng khác
Chúng ta sẽ nhường cổng 22 cho Honeypot. Vì vậy, việc đầu tiên là chuyển dịch vụ SSH thật của server sang một cổng lạ để tránh tự sập bẫy của chính mình.
sudo nano /etc/ssh/sshd_config
Hãy tìm dòng Port 22 và đổi thành Port 2222. Để tạo mật khẩu cực mạnh cho cổng này, mình thường ghé toolcraft.app/vi/tools/security/password-generator. Công cụ này chạy 100% trên trình duyệt nên không lo lộ pass qua network.
Khởi động lại dịch vụ SSH để áp dụng thay đổi:
sudo systemctl restart ssh
Mẹo nhỏ: Nhớ mở port 2222 trên Firewall trước khi thoát ra, nếu không bạn sẽ bị khóa khỏi server vĩnh viễn.
Bước 2: Thiết lập User chuyên dụng
Tuyệt đối không chạy Honeypot bằng quyền root. Đây là quy tắc bảo mật cơ bản nhất.
# Cài đặt các thư viện bổ trợ
sudo apt-get update
sudo apt-get install git python3-virtualenv libssl-dev libffi-dev build-essential libpython3-dev python3-minimal authbind virtualenv -y
# Tạo user riêng cho bẫy
sudo adduser --disabled-password cowrie
Chuyển sang làm việc với user vừa tạo:
sudo su - cowrie
Bước 3: Cài đặt Cowrie
Tải mã nguồn từ GitHub và thiết lập môi trường ảo (virtualenv) để tránh gây rối cho thư viện hệ thống:
git clone http://github.com/cowrie/cowrie
cd cowrie
virtualenv --python=python3 cowrie-env
source cowrie-env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
Bước 4: Cấu hình và mở cửa đón khách
Mặc định Cowrie chạy trên cổng 22222. Bạn cần tạo file cấu hình riêng từ bản mẫu:
cp etc/cowrie.cfg.dist etc/cowrie.cfg
nano etc/cowrie.cfg
Bạn có thể đổi hostname thành một cái tên hấp dẫn như db-prod-cluster để dụ hacker. Sau đó, kích hoạt Cowrie:
bin/cowrie start
Cuối cùng, dùng iptables để điều hướng toàn bộ traffic từ cổng 22 tiêu chuẩn về cổng của Cowrie:
sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 22222
Đọc vị kẻ tấn công: Thu hoạch malware và xem replay
Chỉ sau khoảng 30 phút mở bẫy, bạn sẽ thấy khách tham quan bắt đầu nườm nượp kéo đến. Để theo dõi log thời gian thực, hãy kiểm tra file JSON:
tail -f ~/cowrie/var/log/cowrie/cowrie.json
Khi có ai đó tải file qua lệnh wget hoặc curl, Cowrie tự động bắt lấy file đó và lưu vào thư mục downloads/. Mình từng tóm được những script Mirai botnet dài hàng trăm dòng. Chúng tinh vi đến mức tự kiểm tra xem server có phải Honeypot không trước khi thực thi.
Để xem lại toàn bộ quá trình hacker “quậy phá”, hãy dùng lệnh:
bin/playlog var/lib/cowrie/tty/<logfile_id>
Cảm giác ngồi xem hacker loay hoay gõ lệnh để cài rootkit lên một cái máy ảo không có thật thực sự rất thú vị. Nó mang lại nhiều bài học về tư duy tấn công mà sách vở khó lòng mô tả hết.
Nghịch Honeypot không chỉ để giải trí. Nó giúp mình nhận ra các đợt tấn công hiện nay đa phần đã tự động hóa cực cao. Nếu bạn dùng mật khẩu yếu, chỉ mất chưa đầy 5 giây để một con bot chiếm quyền điều khiển. Hy vọng trải nghiệm này giúp bạn có cái nhìn chủ động hơn trong việc bảo vệ hệ thống Linux của mình.

