Tạo User Sudo An Toàn Và Mật Khẩu Mạnh Trên Ubuntu Server

15/05/2026 · P T P · Chung

Tạo user sudo an toàn và chính sách mật khẩu mạnh cho Ubuntu server

Một Ubuntu server mới cài thường có một điểm yếu rất phổ biến: quản trị viên dùng trực tiếp tài khoản root, mật khẩu yếu, không giới hạn đăng nhập, không kiểm soát quyền sudo. Hệ quả → brute-force SSH, leo thang đặc quyền, mất server.

Cách đúng: không dùng root hằng ngày, tạo user riêng có quyền sudo, khóa bớt bề mặt tấn công, áp dụng chính sách mật khẩu mạnh, kiểm soát phiên đăng nhập. Bài này hướng dẫn thực tế, an toàn, phù hợp VPS, cloud server, máy chủ nội bộ chạy Ubuntu.


Vì sao không nên dùng root trực tiếp?

root có toàn quyền. Sai một lệnh → xóa hệ thống. Lộ mật khẩu → mất toàn bộ server. Không có lớp kiểm soát trung gian.

Dùng user sudo giúp:

Truy vết tốt hơn: log biết user nào chạy lệnh.
Giảm rủi ro thao tác nhầm: lệnh nguy hiểm cần sudo.
Dễ thu hồi quyền: bỏ user khỏi group sudo.
Tăng bảo mật SSH: có thể tắt login root.
Phù hợp nguyên tắc least privilege: chỉ cấp quyền cần thiết.

Mục tiêu: user thường để đăng nhập, sudo khi cần quản trị.


Tạo user mới trên Ubuntu

Đăng nhập server bằng user hiện có quyền root/sudo. Tạo user:

sudo adduser admin01

Hệ thống hỏi mật khẩu, tên, thông tin phụ. Thông tin phụ có thể bỏ qua bằng Enter.

Tên user nên:

– Không dùng admin, test, user, ubuntu nếu không cần.
– Dễ nhận diện người dùng thật, ví dụ namops, linhdev, admin01.
– Không chứa thông tin nhạy cảm.

Ví dụ kiểm tra user:

id admin01

Kết quả kỳ vọng có UID/GID riêng.


Cấp quyền sudo đúng cách

Ubuntu dùng group sudo để cấp quyền quản trị. Thêm user vào group:

sudo usermod -aG sudo admin01

Kiểm tra:

groups admin01

Nên thấy:

admin01 : admin01 sudo

Đăng nhập bằng user mới:

su - admin01

Test sudo:

sudo whoami

Nếu trả về:

root

→ user sudo hoạt động.

Lưu ý: không sửa trực tiếp /etc/sudoers bằng editor thường. Dùng:

sudo visudo

visudo kiểm tra cú pháp trước khi lưu → tránh khóa sudo toàn server.


Cấu hình sudo an toàn hơn

Mặc định Ubuntu yêu cầu mật khẩu khi chạy sudo. Đây là lựa chọn tốt. Không nên bật NOPASSWD trừ automation được kiểm soát kỹ.

Mở sudoers:

sudo visudo

Có thể đặt timeout sudo ngắn hơn. Ví dụ yêu cầu nhập lại mật khẩu sau 5 phút:

Defaults timestamp_timeout=5

Muốn sudo luôn hỏi mật khẩu:

Defaults timestamp_timeout=0

Muốn giới hạn số lần nhập sai:

Defaults passwd_tries=3

Không khuyến nghị:

admin01 ALL=(ALL) NOPASSWD:ALL

Dòng này tiện nhưng nguy hiểm. Nếu SSH key/máy người dùng bị lộ → attacker có root ngay.


Tắt đăng nhập root qua SSH

Sau khi chắc chắn user sudo mới hoạt động, hãy khóa SSH root.

Mở config:

sudo nano /etc/ssh/sshd_config

Tìm/sửa:

PermitRootLogin no

Khuyến nghị thêm:

PasswordAuthentication no
PubkeyAuthentication yes

Chỉ bật PasswordAuthentication no sau khi SSH key đã hoạt động chắc chắn.

Kiểm tra cú pháp:

sudo sshd -t

Reload SSH:

sudo systemctl reload ssh

Quan trọng: giữ phiên SSH hiện tại mở, mở terminal khác để test login user mới. Nếu lỗi config → vẫn còn đường sửa.


Thiết lập SSH key cho user sudo

Trên máy cá nhân tạo key:

ssh-keygen -t ed25519 -C "admin01-server"

Copy key lên server:

ssh-copy-id admin01@SERVER_IP

Hoặc thủ công:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

SSH key mạnh hơn mật khẩu vì:

– Khó brute-force hơn.
– Có thể bảo vệ bằng passphrase.
– Dễ thu hồi từng key.
– Phù hợp automation an toàn.

Nên dùng ed25519, tránh key cũ như DSA.


Chính sách mật khẩu mạnh: nền tảng cần có

Mật khẩu mạnh không chỉ là “có chữ hoa, số, ký tự đặc biệt”. Quan trọng hơn: độ dài, khó đoán, không tái sử dụng, không nằm trong danh sách rò rỉ.

Khuyến nghị:

– Tối thiểu 14–16 ký tự.
– Ưu tiên passphrase: MayXanh!SongDai#2026.
– Không dùng tên công ty, domain, username.
– Không dùng mẫu phổ biến: Admin@123, Password1!, Qwerty@2024.
– Mỗi server/user → mật khẩu riêng.
– Dùng password manager: Bitwarden, 1Password, KeePassXC.

Mật khẩu tốt:

LuaMua-DenBien!73-CaPhe

Mật khẩu kém:

P@ssw0rd123

Dù có ký tự đặc biệt, mẫu này vẫn rất dễ đoán.


Cài module kiểm tra mật khẩu mạnh

Ubuntu có thể dùng libpam-pwquality.

Cài đặt:

sudo apt update
sudo apt install libpam-pwquality

Mở config:

sudo nano /etc/security/pwquality.conf

Ví dụ chính sách:

minlen = 14
dcredit = -1
ucredit = -1
lcredit = -1
ocredit = -1
maxrepeat = 3
difok = 5
retry = 3
enforce_for_root

Ý nghĩa:

minlen = 14: tối thiểu 14 ký tự.
dcredit = -1: cần ít nhất 1 chữ số.
ucredit = -1: cần ít nhất 1 chữ hoa.
lcredit = -1: cần ít nhất 1 chữ thường.
ocredit = -1: cần ít nhất 1 ký tự đặc biệt.
maxrepeat = 3: chặn lặp ký tự quá nhiều.
difok = 5: mật khẩu mới phải khác mật khẩu cũ.
retry = 3: nhập sai yêu cầu 3 lần → hủy.
enforce_for_root: root cũng bị áp chính sách.

Kiểm tra file PAM:

sudo nano /etc/pam.d/common-password

Nên có dòng tương tự:

password requisite pam_pwquality.so retry=3

Không chỉnh bừa PAM. Sai cú pháp → lỗi đổi mật khẩu/login.


Cấu hình tuổi thọ mật khẩu

Dùng /etc/login.defs để đặt mặc định cho user mới:

sudo nano /etc/login.defs

Gợi ý:

PASS_MAX_DAYS   90
PASS_MIN_DAYS   1
PASS_WARN_AGE   14

Ý nghĩa:

PASS_MAX_DAYS 90: mật khẩu hết hạn sau 90 ngày.
PASS_MIN_DAYS 1: không đổi liên tục trong cùng ngày.
PASS_WARN_AGE 14: cảnh báo trước 14 ngày.

Áp cho user hiện có:

sudo chage -M 90 -m 1 -W 14 admin01

Xem trạng thái:

sudo chage -l admin01

Với môi trường dùng SSH key + MFA/password manager, không nên ép đổi quá thường xuyên nếu gây mật khẩu yếu hơn. 90–180 ngày thường hợp lý; tài khoản đặc quyền nên kiểm soát chặt hơn.


Khóa tài khoản sau đăng nhập sai

Brute-force mật khẩu SSH rất phổ biến. Nếu vẫn cho phép password login, cần giới hạn thử sai. Dùng pam_faillock.

Kiểm tra/cài:

sudo apt install libpam-modules

Trên Ubuntu mới, cấu hình qua:

sudo nano /etc/security/faillock.conf

Ví dụ:

deny = 5
unlock_time = 900
fail_interval = 900

Ý nghĩa:

– Sai 5 lần → khóa.
– Khóa 900 giây.
– Đếm lỗi trong 900 giây.

Xem trạng thái:

sudo faillock

Reset user:

sudo faillock --user admin01 --reset

Nếu server public Internet, nên thêm Fail2ban.


Dùng Fail2ban bảo vệ SSH

Cài:

sudo apt install fail2ban

Tạo config local:

sudo nano /etc/fail2ban/jail.local

Ví dụ:

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

Restart:

sudo systemctl restart fail2ban

Kiểm tra:

sudo fail2ban-client status sshd

Fail2ban → chặn IP brute-force trước khi PAM xử lý quá nhiều.


Thu hồi quyền sudo và khóa user khi cần

Bỏ quyền sudo:

sudo deluser admin01 sudo

Khóa tài khoản:

sudo usermod -L admin01

Mở khóa:

sudo usermod -U admin01

Vô hiệu hóa shell đăng nhập:

sudo usermod -s /usr/sbin/nologin admin01

Xóa user nhưng giữ home:

sudo deluser admin01

Xóa cả home:

sudo deluser --remove-home admin01

Cảnh báo: xóa home có thể mất dữ liệu. Backup trước.


Checklist cấu hình khuyến nghị

– Tạo user riêng: admin01.
– Thêm vào group sudo.
– Test sudo whoami.
– Cài SSH key.
– Tắt PermitRootLogin.
– Tắt password SSH nếu key ổn.
– Cấu hình pwquality.
– Đặt tuổi thọ mật khẩu bằng chage.
– Bật giới hạn đăng nhập sai.
– Cài Fail2ban.
– Không dùng NOPASSWD tùy tiện.
– Kiểm tra log định kỳ:

sudo journalctl -u ssh
sudo grep sudo /var/log/auth.log

Kết luận thực tế

Bảo mật Ubuntu server không bắt đầu từ công cụ phức tạp. Nó bắt đầu từ việc rất cơ bản: user đúng, sudo đúng, mật khẩu mạnh, SSH an toàn, log rõ ràng.

Cấu hình tốt nhất cho đa số server: đăng nhập bằng user thường qua SSH key, dùng sudo có mật khẩu, tắt root login, áp chính sách mật khẩu mạnh, bật Fail2ban. Làm vậy → giảm mạnh nguy cơ brute-force, lộ root, thao tác nhầm, khó truy vết.

Một giờ cấu hình chuẩn hôm nay có thể tránh nhiều ngày khôi phục server sau này.

#khau #manh #sudo #toan #user
Chia sẻ:
← Trước
Chặn Ransomware Trên Ubuntu: Phân Quyền, Snapshot, Backup Immutability

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!