0
0
Lập trình
Admin Team
Admin Teamtechmely

Hướng Dẫn Cấu Hình OpenSSH Server Để Ngăn Chặn Đăng Nhập Bằng Password Trên Linux

Đăng vào 3 ngày trước

• 2 phút đọc

Chủ đề:

SSHTechMely

Hướng Dẫn Cấu Hình OpenSSH Server Để Ngăn Chặn Đăng Nhập Bằng Password Trên Linux

Chào các bạn,

Trong bài viết này, mình xin chia sẻ một mẹo nhỏ nhưng hữu ích về cách cấu hình OpenSSH Server (sshd) trên Linux để chỉ cho phép đăng nhập qua identity key, nhằm nâng cao tính bảo mật cho VPS của bạn.

Giới Thiệu Vấn Đề

Mới đây, mình đã thuê một VPS trên dịch vụ cloud và phải tạo mật khẩu cho người dùng, mặc dù mình đã thêm key pair. Điều này đồng nghĩa với việc mình có thể SSH vào server bằng mật khẩu hoặc key. Tuy nhiên, để tăng cường bảo mật, mình không muốn cho phép đăng nhập bằng mật khẩu mà chỉ muốn sử dụng key.

Các Bước Thực Hiện

Bước đầu tiên mà mình thực hiện là mở file cấu hình sshd tại /etc/ssh/sshd_config và comment dòng thiết lập PasswordAuthentication như sau:

Copy
#PasswordAuthentication yes

Sau khi thực hiện xong, mình đã restart lại dịch vụ sshd với command sau:

Copy
sudo systemctl restart sshd

Thế nhưng, điều bất ngờ xảy ra: mình vẫn có thể đăng nhập bằng mật khẩu. Để tìm hiểu nguyên nhân, mình đã kiểm tra giá trị hiện tại của thuộc tính PasswordAuthentication với command:

Copy
sudo sshd -T | grep -i PasswordAuthentication

Và kết quả là:

Copy
passwordauthentication yes

Tìm Hiểu Nguyên Nhân

Nguyên nhân cho tình huống này xuất phát từ dòng cấu hình:

Copy
Include /etc/ssh/sshd_config.d/*.conf

Điều này có nghĩa là cấu hình không chỉ được load từ file /etc/ssh/sshd_config mà còn được load từ tất cả các file có đuôi .conf trong thư mục /etc/ssh/sshd_config.d.

Mình đã kiểm tra thư mục này và phát hiện có một số file khác, cụ thể là:

Copy
ls /etc/ssh/sshd_config.d/
100-allowsshrsa.conf  50-cloud-init.conf

Và chính file 50-cloud-init.conf là nguyên nhân khiến mình vẫn có thể login bằng password với nội dung:

Copy
PasswordAuthentication yes

Lưu ý: Nội dung file cấu hình và số lượng file có thể khác nhau tùy theo hệ điều hành hoặc bản phân phối Linux.

Giải Pháp

Thay vì sửa file 50-cloud-init.conf (để tránh xung đột), mình quyết định tạo một file cấu hình mới để thiết lập PasswordAuthentication thành no. Mục tiêu là để override cấu hình trong file 50-cloud-init.conf.

Để làm điều này, mình tạo một file mới có tên là 1000-customize.conf với nội dung sau:

Copy
PasswordAuthentication no

Theo quy tắc chú thích tên file, file bắt đầu bằng số lớn hơn 50 sẽ có ưu tiên cao hơn (vd : 1000 > 50).

Kiểm Tra Kết Quả

Sau khi tạo file mới, mình thực hiện kiểm tra lại:

Copy
sudo sshd -T | grep -i PasswordAuthentication

Kết quả sẽ là:

Copy
passwordauthentication no

Giờ thì đã đến lúc restart service sshd một lần nữa:

Copy
sudo systemctl restart sshd

Kết Luận

Để kết thúc bài viết này, mình muốn nhấn mạnh một số điểm quan trọng:

  1. Cấu hình không chỉ được đặt trong file /etc/ssh/sshd_config mà còn có thể được thêm hoặc sửa đổi thông qua các file trong thư mục /etc/ssh/sshd_config.d.
  2. Các cài đặt có thể được override. Cài đặt mới sẽ ghi đè lên cài đặt cũ.
  3. Điều này không chỉ áp dụng cho OpenSSH mà còn cho nhiều dịch vụ khác như Nginx, PostgreSQL.

Hy vọng rằng những thông tin trên sẽ giúp ích cho bạn trong việc cấu hình OpenSSH Server an toàn và hiệu quả hơn!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào