SSH Audit: Hướng dẫn kiểm tra và tăng cường bảo mật SSH toàn diện

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)
  • -j hoặc -jj: JSON (có/thiếu thụt lề)

Mã màu trong kết quả:

MàuÝ nghĩaHành động
ĐỏLỗi nghiêm trọngSửa ngay
VàngCảnh báoNên sửa
Xanh láAn toànKhông cần thay đổi
Xanh dươngThông tinChỉ 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ườngTần suất kiểm tra
Sản xuất1 lần/tháng
Hệ thống trọng yếu1 lần/tuần
Sau thay đổi cấu hìnhNgay 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

Thẻ: ssh security-audit openssh penetration-testing DevSecOps

Đăng vào ngày 28 tháng 5 lúc 04:15