Hướng dẫn từng bước dựng honeypot SSH bằng Cowrie trên Amazon Linux 2023 — tách riêng khỏi phần lỗi vặt, chỉ tập trung vào quy trình đúng. Toàn bộ lệnh dưới đây đã chạy thật trên server này.
Bước 1: Tạo user riêng cho Cowrie
Không chạy Cowrie bằng root hay ec2-user — tạo một user riêng, khoá luôn đăng nhập bằng mật khẩu vì user này không cần đăng nhập trực tiếp bao giờ.
sudo useradd -m -s /bin/bash cowrie
sudo passwd -l cowrie
Bước 2: Cài Python 3.11
Cowrie bản mới yêu cầu Python ≥3.10, trong khi Amazon Linux 2023 chỉ có sẵn 3.9.
sudo dnf install -y python3.11
Bước 3: Tải và cài Cowrie
sudo su - cowrie
git clone https://github.com/cowrie/cowrie
cd cowrie
python3.11 -m venv cowrie-env
source cowrie-env/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
pip install -e .
Bản Cowrie mới đăng ký lệnh cowrie qua pip thay vì dùng script bin/cowrie như trước — sau bước pip install -e . là gọi thẳng được cowrie start/cowrie stop.
Bước 4: Đổi port nội bộ, tránh đụng SSH thật
Port mặc định của Cowrie là 2222 — trùng với port SSH quản trị thật đã đổi trước đó. Sửa file cấu hình:
cp etc/cowrie.cfg.dist etc/cowrie.cfg
Tìm dòng listen_endpoints trong etc/cowrie.cfg, đổi thành:
listen_endpoints = tcp:2223:interface=0.0.0.0
Bước 5: Chuyển hướng port 22 công khai vào Cowrie
Cowrie chỉ lắng nghe ở port nội bộ 2223 — dùng iptables để mọi kết nối tới port 22 công khai (nơi kẻ quét mạng sẽ gõ cửa) tự động chuyển vào honeypot.
sudo dnf install -y iptables
sudo iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2223
Bước 6: Biến thành systemd service
Cả Cowrie lẫn rule iptables mặc định chỉ chạy tạm — restart server là mất hết. Tạo 2 service file để tự khởi động lại cùng hệ thống.
/etc/systemd/system/cowrie.service:
[Unit]
Description=Cowrie SSH/telnet Honeypot
After=network.target
[Service]
Type=forking
User=cowrie
Group=cowrie
WorkingDirectory=/home/cowrie/cowrie
Environment="PATH=/home/cowrie/cowrie/cowrie-env/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
ExecStart=/home/cowrie/cowrie/cowrie-env/bin/cowrie start
ExecStop=/home/cowrie/cowrie/cowrie-env/bin/cowrie stop
PIDFile=/home/cowrie/cowrie/var/run/cowrie.pid
Restart=on-failure
[Install]
WantedBy=multi-user.target
/etc/systemd/system/cowrie-redirect.service:
[Unit]
Description=Redirect port 22 into Cowrie honeypot
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/iptables -t nat -A PREROUTING -p tcp --dport 22 -j REDIRECT --to-port 2223
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Kích hoạt cả hai:
sudo systemctl daemon-reload
sudo systemctl enable --now cowrie
sudo systemctl enable --now cowrie-redirect
Bước 7: Kiểm tra honeypot hoạt động đúng
Từ một máy khác (không phải server), thử SSH vào IP công khai với mật khẩu bất kỳ:
ssh test@<IP-cong-khai-cua-server>
Cowrie sẽ chấp nhận gần như mọi mật khẩu, đưa vào một shell giả lập hệ thống Debian cũ (kernel 2.6.26) — đủ giống thật để giữ chân kẻ tấn công gõ lệnh, trong khi mọi thao tác đều bị ghi log lại đầy đủ ở /home/cowrie/cowrie/var/log/cowrie/cowrie.json.
Sau bước này, mọi kết nối vào port 22 công khai đều là honeypot — SSH quản trị thật đã nằm ở một port khác, chỉ mở cho đúng IP của chủ.