SSH (Secure Shell) là công cụ thiết yếu để quản trị hệ thống từ xa, nhưng cấu hình sai có thể dẫn đến lỗ hổng nghiêm trọng như sử dụng thuật toán mã hóa yếu, rủi ro tấn công trung gian (MitM), hoặc lộ thông tin phiên bản phần mềm. Công cụ SSH Audit giúp phát hiện và khắc phục các vấn đề này một cách hiệu quả.
Tổng quan về SSH Audit
SSH Audit là công cụ mã nguồn mở dùng để đánh giá cấu hình bảo mật của máy chủ và máy khách SSH. Nó hỗ trợ:
- Phân tích thuật toán trao đổi khóa, mã hóa, MAC và nén
- Xác định phiên bản phần mềm và thiết bị
- Cung cấp khuyến nghị bảo mật dựa trên tiêu chuẩn hiện hành
- Hỗ trợ kiểm tra theo chính sách (policy-based auditing)
Cài đặt
Có nhiều cách cài đặt SSH Audit tùy theo môi trường:
# Cài qua PyPI
pip3 install ssh-audit
# Chạy bằng Docker
docker run -it --rm positronsecurity/ssh-audit [host]
# Cài từ mã nguồn
git clone https://gitcode.com/gh_mirrors/ss/ssh-audit
cd ssh-audit
python3 -m pip install .
Yêu cầu: Python 3.9–3.13, chạy được trên Linux, Windows và macOS, không cần phụ thuộc bên ngoài.
Sử dụng cơ bản
Kiểm tra máy chủ SSH đơn lẻ:
ssh-audit localhost
ssh-audit example.com:2222
ssh-audit [2001:db8::1]:22
Kiểm tra hàng loạt:
echo -e "srv1\nsrv2:2222" > targets.txt
ssh-audit -T targets.txt --threads 8
Kiểm tra cấu hình máy khách SSH:
ssh-audit -c -p 4567 # Khởi động máy chủ kiểm thử
# Trên máy khách: ssh -p 4567 test@localhost
Tính năng nâng cao
Kiểm tra theo chính sách
Danh sách chính sách tích hợp sẵn:
ssh-audit -L
Áp dụng chính sách cụ thể:
ssh-audit -P "Hardened Ubuntu Server 22.04 LTS" target.host
Tạo chính sách tùy chỉnh từ một máy chủ mẫu:
ssh-audit -M policy.txt reference.host
ssh-audit -P policy.txt audit.target
Thử nghiệm bảo mật
Thử nghiệm DHEat (CVE-2002-20001):
ssh-audit --dheat=10:kex_algo:packet_size target.host
Thử nghiệm giới hạn tốc độ kết nối:
ssh-audit --conn-rate-test=10:100 target.host
Truy vấn thông tin thuật toán
ssh-audit --lookup aes256-gcm@openssh.com
Định dạng đầu ra và diễn giải kết quả
Hỗ trợ nhiều định dạng đầu ra:
- Mặc định: có màu, dễ đọc
-b: chế độ batch (không màu)-jhoặc-jj: JSON (có/thiếu thụt lề)
Mã màu trong kết quả:
| Màu | Ý nghĩa | Hành động |
|---|---|---|
| Đỏ | Lỗi nghiêm trọng | Sửa ngay |
| Vàng | Cảnh báo | Nên sửa |
| Xanh lá | An toàn | Không cần thay đổi |
| Xanh dương | Thông tin | Chỉ tham khảo |
Kết quả bao gồm: banner, thuật toán KEX, HostKey, Cipher, MAC, Compression và khả năng tương thích.
Ví dụ thực tế: Tăng cường bảo mật Ubuntu 22.04
# Lấy hướng dẫn cứng hóa
ssh-audit --get-hardening-guide "Ubuntu Server 22.04 LTS"
# Áp dụng chính sách kiểm tra
ssh-audit -P "Hardened Ubuntu Server 22.04 LTS" my-server
Cấu hình sshd_config đề xuất:
KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group16-sha512
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com
HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,rsa-sha2-512
Tích hợp tự động hóa
Trong CI/CD (GitLab CI):
ssh_audit:
image: positronsecurity/ssh-audit
script:
- ssh-audit -P "Hardened Ubuntu Server 22.04 LTS" $TARGET
Script giám sát Nagios:
#!/bin/bash
fails=$(ssh-audit -P "Hardened Ubuntu Server 22.04 LTS" "$1" 2>&1 | grep -c "FAIL")
[ $fails -gt 0 ] && { echo "CRITICAL: $fails issues"; exit 2; } || { echo "OK"; exit 0; }
Khuyến nghị vận hành
| Môi trường | Tần suất kiểm tra |
|---|---|
| Sản xuất | 1 lần/tháng |
| Hệ thống trọng yếu | 1 lần/tuần |
| Sau thay đổi cấu hình | Ngay lập tức |
Các lỗi phổ biến và cách xử lý:
- Thuật toán yếu → Thay bằng AES-GCM hoặc ChaCha20
- KEX cũ → Ưu tiên Curve25519
- DHEat → Giới hạn số kết nối đồng thời
- Lộ banner → Tùy chỉnh dòng chào SSH