Secure Ubuntu Server Cho Người Mới: Khóa Chặt SSH Ngay Hôm Nay

30/04/2026 · P T P · Chung

Vì sao SSH là “cửa chính” mà kẻ tấn công luôn thử trước?

Bạn vừa dựng xong một Ubuntu server: VPS mới mua, máy chủ thử nghiệm cho app, hay một instance nội bộ để học DevOps. Mọi thứ có vẻ đơn giản cho đến khi bạn nhận ra một sự thật: chỉ cần mở SSH ra Internet, server của bạn gần như chắc chắn sẽ bị bot quét trong vài phút đầu tiên.

Với người mới, “secure server” thường nghe rất to tát, như thể cần firewall phức tạp, IDS/IPS, hay hàng tá công cụ enterprise. Nhưng thực tế, bước bảo vệ hiệu quả nhất thường bắt đầu từ SSH — dịch vụ đăng nhập từ xa quan trọng nhất trên server Linux. Nếu SSH cấu hình hớ hênh, kẻ xấu có thể brute-force mật khẩu, thử user phổ biến như root, admin, ubuntu, hoặc tận dụng thói quen dùng password yếu để chiếm quyền truy cập.

Tin tốt là: bạn không cần trở thành chuyên gia bảo mật để làm chắc phần này. Chỉ với vài thay đổi đúng chỗ, bạn có thể giảm mạnh nguy cơ truy cập trái phép. Bài viết này sẽ hướng dẫn cách cấu hình SSH an toàn trên Ubuntu theo cách thực tế, dễ áp dụng cho người mới.

Hiểu đúng mục tiêu: không phải “ẩn mình”, mà là giảm bề mặt tấn công

Nhiều người mới nghĩ rằng đổi port SSH từ 22 sang port khác là đủ. Đây là một bước có ích, nhưng không phải “áo giáp thần kỳ”. Bot hiện nay quét rất rộng, không chỉ port mặc định. Mục tiêu đúng hơn là:

Chặn đăng nhập bằng mật khẩu yếu
Ngăn đăng nhập trực tiếp bằng root
Chỉ cho phép user cần thiết truy cập
Giảm số lần thử đăng nhập thất bại
Có cơ chế phát hiện và chặn bot brute-force

Nói cách khác, bạn không cần làm server “vô hình”, mà cần làm cho việc tấn công trở nên khó, tốn công, và dễ bị chặn.

Bước 1: Tạo user riêng và tránh dùng root để đăng nhập SSH

Một sai lầm phổ biến là đăng nhập trực tiếp bằng root. Đây là tài khoản quyền lực nhất hệ thống, nên cũng là mục tiêu đầu tiên của bot. Nếu root bị lộ hoặc bị brute-force thành công, kẻ tấn công có toàn quyền trên máy.

Cách an toàn hơn là:

– Tạo một user thường
– Cấp quyền sudo cho user đó
– Dùng user này để SSH vào server
– Tắt đăng nhập SSH trực tiếp bằng root

Ví dụ tạo user:

sudo adduser tenuser
sudo usermod -aG sudo tenuser

Sau đó, hãy chắc chắn rằng bạn có thể đăng nhập bằng user mới trước khi vô hiệu hóa root. Đây là nguyên tắc sống còn: không khóa cửa trước khi thử chìa khóa mới.

Bước 2: Dùng SSH key thay vì mật khẩu

Đây là thay đổi quan trọng nhất.

Đăng nhập bằng mật khẩu luôn có rủi ro: người dùng đặt password yếu, dùng lại password cũ, hoặc bị brute-force. Trong khi đó, SSH key sử dụng cặp khóa bất đối xứng, an toàn hơn rất nhiều nếu được quản lý đúng.

Trên máy cá nhân của bạn, tạo key bằng:

ssh-keygen -t ed25519 -C "[email protected]"

Loại ed25519 hiện là lựa chọn tốt cho hầu hết trường hợp: nhanh, gọn, an toàn, dễ dùng.

Sau đó copy public key lên server:

ssh-copy-id tenuser@ip-server

Hoặc nếu chưa có ssh-copy-id, bạn có thể tự thêm nội dung file public key vào:

~/.ssh/authorized_keys

trong home của user trên server.

Khi hoàn tất, thử đăng nhập:

ssh tenuser@ip-server

Nếu vào được mà không cần gõ password server, bạn đã đi đúng hướng.

Lưu ý quan trọng về private key

Private key phải được giữ kín. Đừng gửi qua chat, đừng lưu lung tung trên máy lạ. Nếu có thể, hãy:

– Đặt passphrase cho key
– Sao lưu cẩn thận
– Không dùng chung một key cho quá nhiều người
– Thu hồi key cũ khi không còn sử dụng

Bước 3: Chỉnh file cấu hình SSH để khóa các lối vào nguy hiểm

File cấu hình chính của SSH server trên Ubuntu là:

/etc/ssh/sshd_config

Trước khi sửa, nên backup:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Mở file bằng editor bạn quen dùng, ví dụ nano:

sudo nano /etc/ssh/sshd_config

Các thiết lập đáng chú ý:

Tắt đăng nhập root

PermitRootLogin no

Thiết lập này buộc bạn phải đăng nhập bằng user thường rồi dùng sudo khi cần quyền admin.

Tắt xác thực bằng mật khẩu

Sau khi xác nhận SSH key hoạt động ổn định, hãy tắt password login:

PasswordAuthentication no
ChallengeResponseAuthentication no

Điều này gần như loại bỏ hẳn kiểu tấn công brute-force mật khẩu.

Chỉ cho phép user cần thiết

Nếu server chỉ có 1-2 người quản trị, bạn nên giới hạn rõ:

AllowUsers tenuser

Nếu có nhiều user:

AllowUsers tenuser adminops deploy

Nhờ đó, các tài khoản lạ hoặc user hệ thống sẽ không thể dùng SSH để đăng nhập.

Đổi port SSH nếu muốn giảm nhiễu log

Bạn có thể đổi từ port mặc định 22 sang port khác, ví dụ:

Port 2222

Việc này không thay thế bảo mật thực sự, nhưng giúp giảm đáng kể lượng bot tấn công ngẫu nhiên vào port mặc định, đồng thời làm log bớt ồn hơn.

Giới hạn số lần thử đăng nhập

MaxAuthTries 3
LoginGraceTime 30

Thiết lập này khiến việc thử liên tục trở nên khó hơn.

Bước 4: Kiểm tra cấu hình trước khi restart SSH

Đây là bước người mới rất hay bỏ qua. Nếu cấu hình sai rồi restart SSH, bạn có thể tự khóa mình khỏi server.

Hãy kiểm tra syntax trước:

sudo sshd -t

Nếu không có lỗi, mới restart dịch vụ:

sudo systemctl restart ssh

Hoặc trên một số hệ thống:

sudo systemctl restart sshd

Mẹo an toàn

Đừng đóng phiên SSH hiện tại ngay. Hãy mở một terminal mới và thử đăng nhập lại bằng cấu hình mới. Nếu thành công, lúc đó mới yên tâm thoát phiên cũ.

Bước 5: Bật firewall để chỉ mở đúng cổng cần dùng

SSH an toàn hơn khi đi cùng firewall. Trên Ubuntu, công cụ dễ dùng nhất là UFW.

Nếu bạn vẫn dùng port 22:

sudo ufw allow 22/tcp
sudo ufw enable

Nếu đổi sang 2222:

sudo ufw allow 2222/tcp
sudo ufw enable

Sau đó kiểm tra:

sudo ufw status

Nếu server chỉ phục vụ web, bạn thường chỉ cần mở:

– SSH port của bạn
80/tcp
443/tcp

Nguyên tắc rất đơn giản: không cần thì không mở.

Bước 6: Cài Fail2ban để chặn brute-force tự động

Ngay cả khi đã đổi port và dùng SSH key, việc cài thêm fail2ban vẫn rất đáng làm. Công cụ này theo dõi log và tự động chặn IP có quá nhiều lần đăng nhập thất bại.

Cài đặt:

sudo apt update
sudo apt install fail2ban -y

Tạo file cấu hình riêng:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Sau đó chỉnh các thông số cơ bản cho SSH trong jail.local, ví dụ:

[sshd]
enabled = true
port = 2222
maxretry = 5
findtime = 10m
bantime = 1h

Nếu bạn vẫn dùng port 22, hãy đổi port tương ứng.

Khởi động lại dịch vụ:

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

Kiểm tra trạng thái:

sudo fail2ban-client status sshd

Fail2ban không thay thế SSH key, nhưng là lớp phòng thủ tốt trước các bot quét diện rộng.

Những sai lầm người mới hay gặp

Tắt password quá sớm

Nếu chưa cấu hình SSH key xong mà đã đặt PasswordAuthentication no, bạn có thể bị khóa ngoài server. Luôn test trước bằng một phiên đăng nhập mới.

Đổi port nhưng quên mở firewall

Bạn đổi SSH sang 2222, nhưng UFW chỉ cho phép 22. Kết quả là mất kết nối ngay sau restart.

Chỉ dựa vào đổi port

Đổi port chỉ giúp giảm “tiếng ồn”, không ngăn được kẻ tấn công có chủ đích. Nếu vẫn cho phép đăng nhập bằng mật khẩu yếu, rủi ro vẫn cao.

Dùng chung một tài khoản admin cho nhiều người

Việc này làm khó truy vết và tăng rủi ro rò rỉ. Tốt hơn là mỗi người một user, một SSH key riêng.

Một cấu hình tối thiểu, hợp lý cho người mới

Nếu bạn muốn một checklist đơn giản và thực tế, hãy bắt đầu với bộ sau:

Tạo user riêng có quyền sudo
Tắt đăng nhập SSH bằng root
Bật đăng nhập bằng SSH key
Tắt xác thực bằng mật khẩu
Giới hạn user được phép SSH
Mở đúng port bằng UFW
Cài Fail2ban để chặn brute-force

Đây không phải mức hardening tối đa, nhưng đã đủ tốt cho phần lớn VPS cá nhân, server web nhỏ, máy thử nghiệm, và môi trường học tập.

Kết luận: bảo mật tốt là bảo mật làm được và duy trì được

Với người mới, sai lầm lớn nhất không phải là “chưa biết hết mọi kỹ thuật”, mà là hoặc bỏ mặc hoàn toàn, hoặc cấu hình quá tay rồi tự khóa mình khỏi server. Bảo mật hiệu quả nên bắt đầu từ những thay đổi rõ ràng, dễ kiểm soát, và có thể kiểm tra được.

SSH là nơi bạn nên ưu tiên đầu tiên. Khi bạn bỏ đăng nhập root, dùng SSH key, tắt password login, giới hạn user, bật firewall và thêm Fail2ban, bạn đã chặn được phần lớn các nỗ lực truy cập trái phép phổ biến trên Internet.

Hãy nhớ: secure server không phải là thiết lập một lần rồi quên. Sau khi cấu hình xong, bạn nên định kỳ kiểm tra log đăng nhập, cập nhật hệ thống, thu hồi key cũ, và rà soát lại những ai còn quyền truy cập. Chỉ vài thói quen nhỏ như vậy cũng tạo ra khác biệt rất lớn về an toàn lâu dài.

Nếu bạn mới bắt đầu, đừng cố làm mọi thứ cùng lúc. Chỉ cần làm chắc SSH trước — đó đã là một bước bảo vệ đáng giá hơn rất nhiều so với vẻ ngoài “server đang chạy ổn”.

#khoa #nguoi #secure #server #ubuntu
Chia sẻ:
← Trước
Checklist hardening Ubuntu server: 20 bước bảo mật phải biết

Bài viết tương tự

Bình luận

Chưa có bình luận. Hãy là người đầu tiên!