Hướng dẫn

30 Phút Đầu Tiên: Danh Sách Kiểm Tra Bảo Mật VPS

Một VPS mới bị quét SSH ngay trong vài phút sau khi có IP. Đây là trình tự chính xác tôi chạy trên mọi máy chủ mới — sẵn sàng copy-paste cho Debian 13, kèm bảng kiểm tra ở cuối.

Giả định: image Debian 13 mới từ bản triển khai VPSRento của bạn, bạn đang đăng nhập bằng root qua SSH, và IP ví dụ là 185.220.101.14 — thay bằng IP của bạn. Tổng thời gian: khoảng nửa giờ. Làm theo đúng thứ tự; bước 2 có thể khóa bạn ngoài nếu vội.

1. Tạo người dùng sudo của bạn

Làm việc với quyền root là cách mà lỗi đánh máy trở thành sự cố. Tạo một người dùng thật, cấp sudo, và làm mọi thứ từ đó:

# create the user (you'll set a password — still useful for sudo)
adduser ops

# grant sudo
usermod -aG sudo ops

Mọi thứ bên dưới điểm này chạy bằng ops trừ khi có ghi chú khác.

2. Chỉ SSH key — không mật khẩu, không đăng nhập root

Xác thực bằng mật khẩu là lỗ hổng lớn nhất trên một máy chủ kết nối internet. Bot quét cổng 22 với danh sách thông tin đăng nhập cả ngày lẫn đêm. Key khiến toàn bộ lớp tấn công này trở nên vô nghĩa. Trên máy cục bộ của bạn:

# generate a keypair if you don't have one (ed25519, no passphrase tradeoff is yours)
ssh-keygen -t ed25519 -C "ops@atlas"

# push the public key to the server
ssh-copy-id [email protected]

Xác minh bạn có thể đăng nhập bằng key trong một cửa sổ terminal — ssh [email protected] — trước khi đụng vào cấu hình. Giữ phiên root hiện tại mở làm cửa thoát hiểm. Sau đó chỉnh sửa /etc/ssh/sshd_config:

# /etc/ssh/sshd_config — the three lines that matter
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin prohibit-password
# validate the config, then reload (Debian 13 uses ssh.service)
sshd -t && systemctl reload ssh

prohibit-password thay vì một file phẳng no cho root có chủ đích: root vẫn có thể xác thực bằng key từ máy trạm của bạn, điều này thỉnh thoảng hữu ích cho việc khôi phục qua bảng điều khiển của nhà cung cấp — nhưng không mật khẩu nào sẽ hoạt động, cho bất kỳ ai, từ bất kỳ đâu. Xác nhận bằng sshd -T | grep -E 'passwordauthentication|permitrootlogin'.

3. Tường lửa: từ chối mặc định, chỉ cho phép những gì bạn chạy

ufw của Debian là một lớp mỏng, hợp lý trên nftables. Chính sách là bảo mật; các quy tắc chỉ là ngoại lệ cho chính sách đó:

apt update && apt install -y ufw

ufw default deny incoming
ufw default allow outgoing

# SSH stays open — add this BEFORE enabling
ufw allow 22/tcp comment 'SSH'

# whatever your box actually serves, e.g.:
ufw allow 80/tcp comment 'HTTP'
ufw allow 443/tcp comment 'HTTPS'

ufw enable
ufw status verbose

Mỗi cổng bạn mở phải có tên và lý do. Nếu bạn không thể nói cổng đó dùng để làm gì, nó không được có quy tắc.

4. fail2ban: làm chậm bot đến mức tối đa

Với xác thực mật khẩu bị vô hiệu hóa, tấn công brute force đã chết — nhưng fail2ban giữ nhật ký của bạn dễ đọc và chặn các trình quét dò vào mọi thứ khác:

apt install -y fail2ban
# /etc/fail2ban/jail.local
[sshd]
enabled  = true
port     = ssh
maxretry = 5
findtime = 10m
bantime  = 1h
systemctl enable --now fail2ban

# watch it work
fail2ban-client status sshd

5. Cập nhật bảo mật tự động

CVE chưa vá là rủi ro lớn hơn việc khởi động lại. unattended-upgrades của Debian tự cài các bản cập nhật bảo mật:

apt install -y unattended-upgrades

# answer Yes to auto-install updates
dpkg-reconfigure -plow unattended-upgrades

Cấu hình mặc định trong /etc/apt/apt.conf.d/50unattended-upgrades chỉ lấy từ kho bảo mật — đúng thứ bạn cần trên máy chủ: vá lỗi bảo mật tự động, mọi thứ khác khi bạn chọn.

6. Tắt những gì bạn không chạy

Mỗi dịch vụ đang chạy là bề mặt tấn công bạn phải vá. Xem những gì thực sự đang lắng nghe:

# who is listening, on what, as which process
ss -tulpn

# everything enabled at boot
systemctl list-unit-files --state=enabled

# example: you don't run a print server — nobody does
systemctl disable --now cups

Quy tắc: nếu bạn không thể nói một listener làm gì, hãy tìm hiểu trước khi để nó tồn tại. Trên image VPSRento tối giản, sẽ có rất ít thứ ngoài sshd và ứng dụng của chính bạn.

7. Tùy chọn nhưng nên dùng: một mặt phẳng quản lý WireGuard

Phiên bản bảo mật SSH mạnh nhất là SSH không tiếp xúc internet. Chạy WireGuard trên máy, chỉ cho phép SSH bên trong tunnel, và cổng 22 biến mất khỏi mọi scanner trên thế giới:

apt install -y wireguard

# /etc/wireguard/wg0.conf — minimal management tunnel
# [Interface] Address = 10.8.0.1/24, ListenPort = 51820

# open the tunnel, not the shell
ufw allow 51820/udp comment 'WireGuard'
ufw allow in on wg0 to any port 22 proto tcp comment 'SSH via WG'
ufw delete allow 22/tcp

systemctl enable --now wg-quick@wg0

Sau đó bạn ssh [email protected] qua tunnel, và IP công khai chỉ trả lời trên đúng một cổng UDP. Hướng dẫn đầy đủ về WireGuard — key, peer, cấu hình client, mã QR điện thoại — nằm trong hướng dẫn đi kèm.

Danh sách kiểm tra 10 điểm

Chạy qua bảng này sau mỗi lần triển khai mới, và lặp lại sau mỗi dịch vụ bạn thêm:

#MụcNơi lưu trữXác minh bằng
1Người dùng sudo không phải root/etc/passwdid ops
2Xác thực SSH chỉ bằng keysshd_configsshd -T | grep passwordauth
3Tắt đăng nhập root bằng mật khẩusshd_configsshd -T | grep permitrootlogin
4Tường lửa chặn mọi kết nối đến mặc địnhufwufw status verbose
5Chỉ mở các cổng được đặt tênufwufw status numbered
6fail2ban sshd jail hoạt độngjail.localfail2ban-client status sshd
7Cập nhật bảo mật tự độngaptsystemctl status unattended-upgrades
8Không có listener không rõ nguồn gốcss -tulpn
9Quản lý qua WireGuard (tùy chọn)wg0.confwg show
10Snapshot sau khi tăng cường bảo mậtTiện ích bổ sung trong khu vực client, $1.99/thángDịch vụ → VPS của bạn → snapshots

Mục 10 xứng đáng một câu: tăng cường bảo mật trước, snapshot sau, theo đúng thứ tự đó — snapshot của một máy sạch và đã được tăng cường là phương án khôi phục cho mọi sai lầm trong tương lai. Snapshot ngoài site hàng ngày là tiện ích bổ sung $1.99/tháng trong khu vực client. Ba mươi phút phòng ngừa, một cú nhấp chuột bảo hiểm.

Triển khai một máy sạch và tự tăng cường bảo mật.

Image Debian 13, toàn quyền root trong 55 giây, IP sạch được kiểm tra trên 40+ danh sách đen. Từ $5.99/tháng.

Tiếng Việt