−25%

cho Windows trả theo năm, đến 31/10. Xem các gói

EQVPS

Cách tạo người dùng sudo trên VPS và thôi dùng root

Tạo người dùng sudo không phải root trên Ubuntu hoặc Debian, cấp khóa SSH của bạn, kiểm tra, rồi tắt đăng nhập root — theo thứ tự không khiến bạn bị khóa ngoài.

Gần như VPS mới nào cũng bắt đầu giống nhau: bạn đăng nhập bằng root, cài vài thứ, và một tháng sau vẫn đang là root. Mọi chuyện ổn cho đến khi một script bạn dán vào xóa nhầm thư mục. Thiết lập một người dùng thường với sudo chỉ mất năm phút, và thứ tự quan trọng hơn cả các lệnh — làm sai thứ tự là bạn tự khóa mình ở ngoài.

Đây là trình tự an toàn cho Ubuntu 22.04/24.04 và Debian 12.

1. Tạo người dùng

Với quyền root:

adduser deploy
usermod -aG sudo deploy

adduser hỏi mật khẩu và vài thông tin tùy chọn (cứ nhấn Enter bỏ qua). Hãy chọn một mật khẩu thật: bạn sẽ gõ nó khi dùng sudo. Trên image Debian tối giản, chạy apt install -y sudo trước nếu thiếu lệnh này.

2. Cấp khóa SSH của bạn

Cách dễ nhất là sao chép các khóa được ủy quyền của root, giữ đúng quyền sở hữu:

rsync --archive --chown=deploy:deploy /root/.ssh /home/deploy

Nếu bạn thích làm thủ công:

mkdir -p /home/deploy/.ssh
cp /root/.ssh/authorized_keys /home/deploy/.ssh/
chown -R deploy:deploy /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
chmod 600 /home/deploy/.ssh/authorized_keys

Quyền truy cập sai là lý do kinh điển khiến đăng nhập bằng khóa thất bại mà không báo gì. SSH bỏ qua file authorized_keys mà người dùng khác có thể ghi vào.

3. Kiểm tra trước khi thay đổi bất cứ gì

Giữ phiên root mở. Trong một terminal mới:

ssh -p 22 deploy@203.0.113.10
sudo whoami

Dùng IP và cổng của bạn — với gói NAT, đó là cổng SSH cá nhân trong bảng điều khiển. Nếu sudo whoami in ra root, mọi thứ ổn. Nếu đăng nhập thất bại, bạn vẫn còn cửa sổ root để sửa.

4. Tắt đăng nhập root

Giờ thì đóng cửa lại. Tạo một file drop-in nhỏ thay vì sửa file cấu hình chính:

cat > /etc/ssh/sshd_config.d/10-hardening.conf <<'EOF'
PermitRootLogin no
PasswordAuthentication no
EOF
sshd -t && systemctl reload ssh

sshd -t kiểm tra cú pháp trước. Cấu hình hỏng cộng với reload chính là con đường dẫn người ta đến chỗ phải dùng console. PasswordAuthentication no chỉ có ý nghĩa khi đăng nhập bằng khóa đã chạy được với người dùng mới — điều bạn vừa kiểm tra.

Mở thêm một terminal nữa và xác nhận root bị từ chối còn deploy vẫn vào được. Sau đó đóng phiên root cũ.

5. Tùy chọn: sudo không mật khẩu cho tự động hóa

Nếu một script deploy cần sudo không hỏi mật khẩu, hãy cấp đúng như vậy và không hơn:

visudo -f /etc/sudoers.d/deploy
deploy ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart myapp

Thật lòng mà nói, NOPASSWD: ALL rất hấp dẫn, nhưng nó đồng nghĩa với việc một khóa bị đánh cắp bằng root. Hãy giới hạn ở các lệnh mà tự động hóa chạy.

Nếu có sự cố

Web console trong bảng điều khiển không phụ thuộc vào SSH hay tường lửa. Đăng nhập từ đó, sửa file trong /etc/ssh/sshd_config.d/, reload, xong. Toàn bộ quy trình khôi phục được chúng tôi viết trong cách vào lại VPS khi bị khóa ngoài.

Làm gì tiếp theo

Các lựa chọn truy cập của từng gói có trong tài liệu truy cập. Ngay cả một Nano giá $3 cũng xứng đáng có người dùng không phải root — đó là bản nâng cấp bảo mật rẻ nhất có thể.

FAQ

Sao không cứ dùng root cho tiện?

Mọi thứ bạn chạy bằng root đều có thể làm hỏng cả hệ thống, kể cả một lỗi gõ phím. Bot cũng luôn thử tên người dùng 'root' trước, nên tắt đăng nhập root sẽ loại bỏ mục tiêu bị đoán nhiều nhất. Một người dùng có tên riêng cùng sudo cho bạn một nhịp dừng trước mỗi lệnh đặc quyền và một bản ghi những gì đã chạy.

Nếu tôi tự khóa mình ở ngoài thì sao?

Dùng web console trong bảng điều khiển. Nó vẫn hoạt động khi SSH hỏng hoặc tường lửa chặn bạn, nên bạn có thể đăng nhập và sửa sshd_config. Đó cũng là lý do bạn kiểm tra người dùng mới trước khi đóng phiên root.

Có nên cho phép sudo không cần mật khẩu?

Với tài khoản cá nhân, hãy giữ lời nhắc mật khẩu — đó là tuyến phòng thủ cuối cùng nếu khóa SSH của bạn bị lộ. Sudo không mật khẩu hợp lý cho một người dùng deploy riêng mà tự động hóa sử dụng, giới hạn ở đúng các lệnh nó thực sự cần.

Máy chủ Debian của tôi không có lệnh sudo. Tại sao?

Image Debian tối giản không phải lúc nào cũng kèm theo. Cài bằng root với 'apt install -y sudo', rồi thêm người dùng của bạn vào nhóm sudo.

Tôi dùng cổng SSH nào?

Cổng hiển thị trong bảng điều khiển. Các gói IP riêng dùng cổng 22 trên IP của bạn; các gói NAT dùng cổng SSH cá nhân của bạn.

Bình luận

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

Để lại bình luận

Bình luận được kiểm duyệt trước khi hiển thị.