Làm thế nào (và tại sao) để vô hiệu hóa đăng nhập root qua SSH trên Linux

Tác giả sysadmin, T.Mười 28, 2023, 02:16:24 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 1 Khách đang xem chủ đề.

Làm thế nào (và tại sao) để vô hiệu hóa đăng nhập root qua SSH trên Linux


Xin lỗi, root bạn sẽ không được phép vào.

  • Đăng nhập với tư cách người dùng root Linux rất rủi ro vì nó cấp các đặc quyền toàn năng. Đăng nhập bằng root qua SSH thậm chí còn tệ hơn vì nó cho phép những kẻ tấn công từ xa có khả năng truy cập vào hệ thống của bạn.
  • Nhiều bản phân phối Linux khuyến nghị không nên đăng nhập bằng root và thay vào đó đề xuất sử dụng lệnh sudo để tạm thời nâng cao đặc quyền khi cần, giảm nguy cơ mắc lỗi hoặc hành động độc hại.
  • Nếu bạn cần cho phép quyền truy cập root qua SSH, sẽ an toàn hơn khi sử dụng khóa SSH thay vì mật khẩu. Điều này giúp loại bỏ nguy cơ bị tấn công vũ phu và truy cập trái phép.

Đăng nhập với tư cách người dùng root Linux là một hành vi không tốt. Đăng nhập bằng root qua kết nối SSH thậm chí còn tệ hơn. Chúng tôi cho bạn biết lý do và chỉ cho bạn cách ngăn chặn điều đó.

Bài viết về Tuần nhận thức về An ninh mạng này được mang đến cho bạn cùng với Incogni.

1. Root trên Linux là gì?

Bạn cần ai đó có quyền sở hữu và quản lý những phần hệ điều hành quá quan trọng hoặc quá nhạy cảm mà người dùng thông thường không thể xử lý. Đó là lúc root xuất hiện. root là siêu người dùng toàn năng của hệ điều hành Unix và Linux.

Tài khoản người dùng root, giống như tất cả các tài khoản, được bảo vệ bằng mật khẩu. Nếu không có mật khẩu của người dùng root thì không ai khác có thể truy cập vào tài khoản đó. Điều đó có nghĩa là bất kỳ ai khác cũng không thể sử dụng các đặc quyền và quyền hạn của root. Mặt trái của nó là cách bảo vệ duy nhất giữa người dùng độc hại và quyền hạn của root chính là mật khẩu đó. Tất nhiên, mật khẩu có thể được đoán, suy ra, phát hiện được viết ra ở đâu đó hoặc bị ép buộc.

Nếu kẻ tấn công độc hại phát hiện ra mật khẩu của root, chúng có thể đăng nhập và làm bất cứ điều gì chúng muốn với toàn bộ hệ thống. Với các đặc quyền nâng cao của root, không có hạn chế nào về những gì họ có thể làm. Nó sẽ giống như việc người dùng root đã rời khỏi thiết bị đầu cuối mà không đăng xuất, cho phép truy cập cơ hội vào tài khoản của họ.

Vì những rủi ro này, nhiều bản phân phối Linux hiện đại không cho phép root đăng nhập cục bộ vào máy tính, đừng bận tâm đến SSH. Người dùng root tồn tại nhưng họ không đặt mật khẩu cho họ. Chưa hết, phải có ai đó có khả năng quản lý hệ thống. Giải pháp cho câu hỏi hóc búa đó là sudo mệnh lệnh.

sudocho phép người dùng được chỉ định tạm thời sử dụng các đặc quyền cấp root từ trong tài khoản người dùng của chính họ. Bạn cần xác thực để sử dụng sudo, bạn thực hiện bằng cách nhập mật khẩu của riêng mình. Điều này cho phép bạn truy cập tạm thời vào các khả năng của root.

Quyền hạn root của bạn sẽ hết khi bạn đóng cửa sổ đầu cuối mà chúng được sử dụng. Nếu bạn để cửa sổ đầu cuối mở, chúng sẽ hết thời gian chờ, tự động đưa bạn trở lại trạng thái người dùng thông thường. Điều này cung cấp một loại bảo vệ khác. Nó bảo vệ bạn khỏi chính bạn.

Nếu bạn thường xuyên đăng nhập bằng root thay vì tài khoản thông thường, bất kỳ lỗi nào bạn mắc phải trên dòng lệnh đều có thể trở thành thảm họa. Việc phải sử dụng sudođể thực hiện quản trị đồng nghĩa với việc bạn sẽ phải tập trung và cẩn thận hơn với những gì mình gõ.

Việc cho phép đăng nhập root qua SSH làm tăng rủi ro vì những kẻ tấn công không nhất thiết phải ở địa phương; họ có thể cố gắng ép buộc hệ thống của bạn từ xa.

2. Người dùng root và quyền truy cập SSH

Bạn có nhiều khả năng gặp phải vấn đề này khi quản trị hệ thống cho người khác. Ai đó có thể đã quyết định đặt mật khẩu root để họ có thể đăng nhập. Các cài đặt khác cần được thay đổi để cho phép root đăng nhập qua SSH.

Chuyện này sẽ không xảy ra một cách tình cờ đâu. Nhưng nó có thể được thực hiện bởi những người không hiểu những rủi ro liên quan. Nếu bạn tiếp quản quyền quản lý một máy tính ở trạng thái đó, bạn sẽ cần tư vấn cho chủ sở hữu lý do tại sao đó là một ý tưởng tồi và sau đó hoàn nguyên hệ thống về trạng thái hoạt động an toàn. Nếu đó là thứ được quản trị viên hệ thống trước đó cấu hình thì chủ sở hữu có thể không biết về nó.

Đây là người dùng trên máy tính chạy Fedora, tạo kết nối SSH với máy tính Ubuntu với tư cách là người dùng root của máy tính Ubuntu.

Mã nguồn [Chọn]
ssh [email protected]

Máy tính Ubuntu cho phép người dùng root đăng nhập qua SSH. Trên máy tính Ubuntu, chúng ta có thể thấy rằng một kết nối trực tiếp đang được thực hiện từ người dùng root.

Mã nguồn [Chọn]
who

Những gì chúng ta không thể thấy là ai đang sử dụng phiên đó. Chúng tôi không biết liệu người ở đầu bên kia của kết nối SSH là người dùng root hay ai đó đã lấy được mật khẩu của root.

3. Vô hiệu hóa quyền truy cập SSH cho root

Để vô hiệu hóa quyền truy cập SSH cho người dùng root, chúng ta cần thực hiện các thay đổi đối với tệp cấu hình SSH. Cái này nằm ở "/etc/ssh/sshd_config." Chúng ta sẽ cần sử dụng sudođể viết các thay đổi cho nó.

Mã nguồn [Chọn]
sudo gedit /etc/ssh/sshd_config
Cuộn qua tệp hoặc tìm kiếm chuỗi "PermitRootLogin."


Đặt giá trị này thành "no" hoặc nhận xét dòng này bằng cách đặt hàm băm "#" làm ký tự đầu tiên trên dòng. Lưu các thay đổi của bạn.


Chúng tôi cần khởi động lại daemon SSH để những thay đổi của chúng tôi có hiệu lực.

Mã nguồn [Chọn]
sudo systemctl restart ssh
Nếu bạn cũng muốn ngăn đăng nhập cục bộ, hãy tắt mật khẩu của root. Chúng tôi đang áp dụng phương pháp thắt lưng và niềng răng và sử dụng cả tùy chọn -l(khóa) và -d(xóa mật khẩu).

Mã nguồn [Chọn]
sudo passwd root -ld
Việc này sẽ khóa tài khoản và xóa mật khẩu tài khoản vào mặc cả. Ngay cả khi người dùng root đang ngồi trước máy tính của bạn, họ sẽ không thể đăng nhập.

4. Một cách an toàn hơn để cho phép truy cập SSH root

Đôi khi bạn sẽ gặp phải sự phản đối của người quản lý trong việc xóa quyền truy cập root qua SSH. Nếu họ thực sự không lắng nghe, bạn có thể rơi vào tình thế phải khôi phục lại điều đó. Nếu đúng như vậy, bạn phải có khả năng thỏa hiệp theo cách giảm thiểu rủi ro mà vẫn cho phép người dùng root đăng nhập từ xa.

Sử dụng khóa SSH để tạo kết nối qua SSH an toàn hơn nhiều so với sử dụng mật khẩu. Vì không liên quan đến mật khẩu nên chúng không thể bị ép buộc, đoán hoặc phát hiện theo cách khác.

Trước khi khóa tài khoản root cục bộ, hãy thiết lập khóa SSH trên máy tính từ xa để người dùng root có thể kết nối với máy tính cục bộ của bạn. Sau đó hãy tiếp tục xóa mật khẩu và khóa tài khoản cục bộ của họ.

Chúng tôi cũng cần chỉnh sửa tệp "sshd_config" một lần nữa.

Mã nguồn [Chọn]
sudo gedit /etc/ssh/sshd_config
Thay đổi dòng "PermitRootLogin" để nó sử dụng tùy chọn "prohibit-password".


Lưu các thay đổi của bạn và khởi động lại daemon SSH.

Mã nguồn [Chọn]
sudo systemctl restart ssh
Bây giờ, ngay cả khi ai đó khôi phục mật khẩu của người dùng root, họ sẽ không thể đăng nhập qua SSH bằng mật khẩu.

Khi người dùng root từ xa tạo kết nối SSH tới máy tính cục bộ của bạn, các khóa sẽ được trao đổi và kiểm tra. Nếu họ vượt qua xác thực, người dùng root sẽ được kết nối với máy tính cục bộ của bạn mà không cần mật khẩu.

Mã nguồn [Chọn]
ssh [email protected]

5. Cấm vào

Từ chối kết nối từ xa từ người dùng root là lựa chọn tốt nhất. Cho phép root kết nối bằng khóa SSH là tốt thứ hai, nhưng vẫn tốt hơn rất nhiều so với sử dụng mật khẩu.