Tất cả các máy chủ dựa trên Linux đều được cài sẵn một tài khoản root mặc định với tất cả các quyền hạn trên máy; theo mặc định, bạn luôn hành động với tư cách là root (siêu người dùng). Theo các thực hành bảo mật tốt, bạn nên disable root login qua SSH để ngăn chặn truy cập trái phép đến máy Linux của bạn bởi bất kỳ người dùng nào khác. Việc vô hiệu hóa đăng nhập root ngăn không cho ai có quyền hạn vô hạn trên máy của bạn.
Theo khuyến nghị bảo mật, bạn nên tạo thêm một người dùng khác có hầu hết các quyền siêu người dùng để truy cập vào hệ thống.
Trong bài hướng dẫn này, bạn sẽ học cách vô hiệu hóa đăng nhập root trên Ubuntu, từ đó ngăn chặn truy cập root trái phép qua SSH và cải thiện bảo mật cho hệ thống Linux của bạn.
Yêu cầu tiên quyết
Để hoàn thành bài hướng dẫn này, bạn cần:
- ● Một máy chủ Ubuntu 20.04 với một người dùng không phải root có quyền sudo, tường lửa được kích hoạt và ít nhất 1GB RAM. Bạn có thể thiết lập theo bài hướng dẫn Thiết Lập Máy Chủ Ban Đầu với Ubuntu 20.04.
Bước 1 – Đăng nhập và Kiểm tra auth.log
Trong bước này, bạn sẽ đăng nhập vào máy chủ với tài khoản không phải root có quyền sudo để kiểm tra các lần đăng nhập qua SSH được ghi trong file log auth.log. Bằng cách xem qua file log này, bạn có thể nhận thấy cả các yêu cầu đăng nhập hợp lệ lẫn không hợp lệ.
Trong phần yêu cầu tiên quyết, bạn đã tạo một người dùng mới và thêm người dùng đó vào nhóm sudo để cấp quyền quản trị. Bạn sẽ sử dụng người dùng này để truy cập máy chủ vì sau khi vô hiệu hóa đăng nhập root, bạn sẽ không thể SSH vào tài khoản root nữa.
Tùy vào phương thức đăng nhập mà bạn chọn, hãy đăng nhập vào máy chủ qua SSH. Nếu bạn đã đăng nhập vào tài khoản root bằng SSH key trong quá trình thiết lập ban đầu, bạn cần dùng phương thức đăng nhập dựa trên key (vì xác thực mật khẩu bị vô hiệu hóa khi dùng key). Ngược lại, hãy sử dụng đăng nhập bằng mật khẩu với tài khoản có quyền sudo.
Ví dụ:
Để đăng nhập bằng mật khẩu với người dùng có quyền sudo (ví dụ: sammy), chạy lệnh:
ssh sammy@your_server_ip
Nếu bạn sử dụng phương thức đăng nhập dựa trên key, hãy đăng nhập với lệnh:
ssh -i your_private_key sammy@your_server_ip
Tiếp theo, di chuyển đến thư mục chứa file log auth.log:
cd /var/log/
Hiển thị nội dung của file auth.log bằng lệnh:
sudo cat
Nhập mật khẩu nếu được nhắc.
Bạn sẽ nhận được đầu ra tương tự như sau:
Output
May 29 18:46:32 ubuntu sshd[3886]: Disconnected from invalid user cally 43.155.90.144 port 47454 [preauth] May 29 18:51:56 ubuntu sshd[3890]: Received disconnect from 195.38.129.16 port 10017:11: Bye Bye [preauth] May 29 18:51:56 ubuntu sshd[3890]: Disconnected from authenticating user root 195.38.129.16 port 10017 [preauth] May 29 18:52:24 ubuntu sshd[3892]: Received disconnect from 178.128.234.248 port 58660:11: Bye Bye [preauth] May 29 18:52:24 ubuntu sshd[3892]: Disconnected from authenticating user root 178.128.234.248 port 58660 [preauth] May 29 18:52:34 ubuntu sshd[3894]: Received disconnect from 43.134.106.128 port 33854:11: Bye Bye [preauth] May 29 18:52:34 ubuntu sshd[3894]: Disconnected from authenticating user root 43.134.106.128 port 33854 [preauth] May 29 18:53:07 ubuntu sshd[3896]: Invalid user projects from 176.183.60.72 port 42070 May 29 18:53:07 ubuntu sshd[3896]: Received disconnect from 176.183.60.72 port 42070:11: Bye Bye [preauth] May 29 18:53:07 ubuntu sshd[3896]: Disconnected from invalid user projects 176.183.60.72 port 42070 [preauth] May 29 18:57:27 ubuntu sshd[3900]: Received disconnect from 92.255.85.135 port 20436:11: Bye Bye [preauth] May 29 18:57:27 ubuntu sshd[3900]: Disconnected from authenticating user root 92.255.85.135 port 20436 [preauth] May 29 19:06:40 ubuntu sshd[3903]: Invalid user default from 27.71.207.190 port 57513 May 29 19:06:41 ubuntu sshd[3903]: Connection closed by invalid user default 27.71.207.190 port 57513 [preauth] ...
File auth.log ghi lại tất cả các lần xác thực truy cập vào máy chủ. Bạn có thể thấy rất nhiều yêu cầu đăng nhập không hợp lệ hoặc trái phép. Vì lý do này, bạn có thể muốn vô hiệu hóa đăng nhập root và thường xuyên thay đổi các khóa cũng như mật khẩu của mình.
Sau khi xem qua log, bạn đã nhận ra rằng máy chủ nhận được nhiều yêu cầu đăng nhập không chỉ của bạn. Tiếp theo, bạn sẽ cập nhật cấu hình SSH trên máy chủ để vô hiệu hóa hoàn toàn quyền truy cập root.
Bước 2 – Vô hiệu hóa Đăng nhập Root
Trong bước này, bạn sẽ chỉnh sửa file sshd_config để vô hiệu hóa đăng nhập root, sau đó khởi động lại daemon sshd để nạp lại cấu hình mới.
File sshd_config chứa cấu hình cho daemon SSH (sshd), nơi lưu trữ các tham số được sử dụng bởi sshd để xử lý kết nối SSH. Bạn cần khởi động lại daemon sshd để áp dụng các thay đổi cấu hình. Thay đổi này sẽ chỉ thị cho sshd không cho phép đăng nhập root qua SSH.
Mở file sshd_config nằm trong thư mục /etc/ssh bằng nano (hoặc trình soạn thảo bạn ưa thích):
sudo nano /etc/ssh/sshd_config
Kiểm tra file, tìm dòng có từ khóa PermitRootLogin:
Output
... #LoginGraceTime 2m PermitRootLogin yes #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 ...
Thay đổi giá trị của PermitRootLogin từ yes thành no:
Output
... #LoginGraceTime 2m PermitRootLogin no #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 ...
Lưu và đóng file.
Tiếp theo, khởi động lại daemon sshd để nạp cấu hình mới:
sudo systemctl res
Lệnh này sẽ khởi động lại dịch vụ sshd thông qua systemctl.
Ở bước này, bạn đã thay đổi file cấu hình để từ chối các yêu cầu đăng nhập root và khởi động lại sshd để nạp cấu hình mới nhất. Tiếp theo, bạn sẽ kiểm tra xem đăng nhập root đã bị vô hiệu hóa hay chưa bằng cách thử đăng nhập với tài khoản root.
Bước 3 – Kiểm tra Đăng nhập Root
Sau khi vô hiệu hóa đăng nhập root, hãy thử mở một phiên terminal mới và đăng nhập qua SSH với tài khoản root. Dùng các lệnh dưới đây tùy theo phương thức đăng nhập bạn ưa thích.
Nếu dùng đăng nhập bằng mật khẩu:
ssh root@your_server_ip
Nếu dùng đăng nhập bằng key
ssh -i your_private_key root@your_server_ip
Nỗ lực đăng nhập với tài khoản root sẽ thất bại với thông báo lỗi như sau:
Output
root@your_server_ip: Permission denied (publickey).
Để truy cập lại máy chủ, hãy đăng nhập bằng tài khoản không phải root có quyền sudo (ví dụ: sammy) để xác nhận rằng bạn vẫn có thể truy cập vào máy chủ.
Nếu dùng đăng nhập bằng mật khẩu:
ssh sammy@your_server_ip
Nếu dùng đăng nhập bằng key:
ssh -i your_private_key sammy@your_server_ip
Giờ đây, bạn có thể tiếp tục sử dụng máy chủ theo nhu cầu.
Kết Luận
Trong bài viết này, bạn đã cấu hình file sshd_config để vô hiệu hóa đăng nhập root trên Ubuntu. Nhờ đó, bạn biết cách ngăn chặn đăng nhập root trên các máy Linux, qua đó thêm một lớp bảo mật bổ sung cho hệ thống của mình.
Để tiếp tục cấu hình máy chủ, hãy đọc thêm bài Cách Duy Trì Cập Nhật Máy Chủ Ubuntu 20.04

