13 cách cấu hình bảo mật SSH Server trên Linux

63

Dịch vụ SSH còn có tên gọi là OpenSSH trên Linux, là một cách thức giúp bạn đi vào hệ thống Linux VPS/Cloud Server/Server của bạn và thực hiện các thao tác quản lý hệ thống. Chính vì vậy việc bảo mật cho dịch vụ SSH, cũng giống như cách bạn đặt khoá, xây tường rào chắn kẻ xấu tấn công vào ngôi nhà của bạn. Trong bài viết này chúng ta sẽ đến với “13 cách cấu hình bảo mật SSH trên Linux“.

Một số file cấu hình của dịch vụ OpenSSH trên Linux mà bạn cần lưu ý khi quản lý VPS/Server/Cloud Server.

  • Cổng dịch vụ mặc định SSH : TCP – 22
  • /etc/ssh/sshd_config : file cấu hình dịch vụ OpenSSH Server.
  • /etc/ssh/ssh_config : file cấu hình OpenSSH client.
  • ~/.ssh/ : thư mục chứa nội dung cấu hình ssh của user client trên Linux.
  • ~/.ssh/authorized_keys : thư mục chứa thông tin các public key (RSA hoặc DSA) được user sử dụng để đăng nhập vào hệ thống Linux.
  • /etc/nologin : nếu file này tồn tại, thì dịch vụ SSH Server trên Linux sẽ từ chối kết nối đăng nhập từ các user khác trên hệ thống ngoại trừ user root. File này thường dùng trong trường hợp khẩn cấp cần cách ly sớm hệ thống.

Đọc thêm bài: Sự khác nhau giữa ‘sshd_config’ và ‘ssh_config’

Lưu ý:
– Có quyền user root để chỉnh sửa file cấu hình SSH Server nhằm thực hiện bảo mật SSH.
– Các nội dung ở phần A – “13 cấu hình bảo mật dịch vụ SSH trên Linux” phía dưới là những giá trị cấu hình được nêu ra để các bạn tìm kiếm trong file ‘/etc/ssh/sshd_config‘ và thay đổi nội dung cấu hình mong muốn.
– Bạn sẽ phải thao tác chỉnh sửa file cấu hình dịch vụ SSH ‘/etc/ssh/sshd_config‘ trên Linux cho những nội dung cấu hình bảo mật phía dưới.

A. 13 CẤU HÌNH BẢO MẬT SSH TRÊN LINUX

1. Chỉ sử dụng giao thức SSH phiên bản 2

– Giao thức SSH phiên bản 1 (SSH-1) cho tới bây giờ đã không còn an toàn do tồn tại những lổ hổng bảo mật như bị tấn công “man-in-the-middle“. Vì vậy hãy chỉ sử dụng giao thức SSH phiên bản 2. Hiện tại mặc định dịch vụ SSH đã kích hoạt phiên bản “2“, nhưng trên 1 số OS cũ thì vẫn còn hỗ trợ cả 1 và 2.

2. Không sử dụng mật khẩu rỗng

Bạn cần cấu hình không cho phép các đăng nhập SSH vào hệ thống được sử dụng mật khẩu rổng, điều này là cực kì nguy hiểm.

3. Thay đổi cổng (port) SSH và giới hạn IP lắng nghe dịch vụ SSH

Dịch vụ SSH mặc định chạy cổng 22 do đây là quy định tiêu chuẩn chung của thế giới. Vì là port phổ biến, nên rất dễ bị kẻ xấu thực hiện các hoạt động dò tìm mật khẩu tự động đăng nhập SSH vào hệ thống của bạn. Vì vậy bạn có thể thay đổi port kết nối SSH đến VPS/Cloud Server của bạn.

Nếu hệ thống Linux của bạn có nhiều hơn 1 địa chỉ IP thì tốt nhất nên chỉ định rõ địa chỉ IP nào sẽ lắng nghe port dịch vụ SSH lắng nghe kết nối tới. Điều này sẽ tốt hơn việc bạn để dịch vụ SSH mở trên toàn bộ địa chỉ IP đang hoạt động của hệ thống.

4. Không cho đăng nhập bằng user root

Chúng ta sẽ không cho phép đăng nhập bằng user root của hệ thống. Nhiều bạn nghĩ vậy làm sao để sử dụng user root trên Linux qua SSH ?! Đơn giản bạn chỉ cần tạo 1 user khác và cấu hình hoạt động “su” hoặc “sudo” để chuyển đổi từ user thường sang user root để sử dụng. Điều này sẽ giúp bảo mật hệ thống SSH Server hơn. Để cấu hình không cho user root đăng nhập SSH ta làm như sau :

5. Tắt chức năng đăng nhập của file ~/.rhosts

Đây là tính năng hỗ trợ đăng nhập “rlogin” qua port 22, hình thức đăng nhập này đã cũ và tồn tại nhiều rủi ro bảo mật. Nếu thông tin host và user được chỉ định cấu hình theo format cụ thể trong file ~/.rhosts thì các user trong file này sẽ được phép đăng nhập vào hệ thống Linux mà không cần phải cung cấp thông tin mật khẩu. Vậy nên hãy tắt chức năng hỗ trợ đăng nhập qua RSH.

6. Cấu hình thời gian ngắt kết nối SSH nếu user không hoạt động

Bạn có thể quy định thời gian timeout mà một kết nối SSH đến server Linux không nhận được bất kì hoạt động tương tác nào trên terminal SSH. Lúc này nếu quá thời gian quy định thì SSH Server sẽ tự ngắt kết nối SSH từ các user không tương tác SSH.

7. Sử dụng mật khẩu phức tạp và độ khó cao

Nếu bạn vẫn còn xài phương thức đăng nhập SSH vào Linux bằng mật khẩu, thì xin hãy tạo 1 chuỗi mật khẩu mạnh và dài trên 8 kí tự nhằm mục đích an toàn. Tránh các mật khẩu dễ tìm, dễ nhớ vì sẽ có khả năng nằm trong danh sách các cơ sở dữ liệu từ điển mật khẩu khi bị kẻ xấu tự động thử (brute force) mật khẩu. Tiêu chí của mật khẩu an toàn tối thiểu gồm :
– Độ dài kí tự trên 8 kí tự.
– Có ký tự Hoa, ký tự số, ký tự đặt biệt, và cách đặt password càng ngẫu nhiên càng tốt.

Ví dụ: “shbcC3yuq57S

8. Cấu hình thời gian timeout khi user không đăng nhập thành công

Khi mà 1 user đăng nhập SSH, nếu không chỉ định thông tin user từ đầu thì chúng ta sẽ gặp 1 prompt hiện ra yêu cầu nhập thông tin user. Sau đó là phần nhập mật khẩu nếu user đó xài phương thức đăng nhập mật khẩu. Thì ở phần này, chúng ta sẽ quy định thời gian mà 1 kết nối SSH đợi cho hoạt động đăng nhập user thành công (ví dụ 120 giây), nếu không thành công thì ngắt kết nối SSH tới server.

9. Tắt log đăng nhập lần gần cuối

Log đăng nhập SSH lần gần cuối xuất hiện khi bạn đã đăng nhập SSH thành công vào hệ thống Linux. Ví dụ :

Vậy nếu bạn muốn tắt dòng log đó, thì chỉ cần thay đổi nội dung cấu hình ở mục ‘PrintLastLog‘.

10. Sử dụng chứng thực SSH Key, tắt chứng thực mật khẩu

Phần cấu hình này rất là được khuyến cáo sử dụng trong việc kết nối bảo mật SSH đến hệ thống Linux VPS/Cloud Server. Mặc định mỗi VPS/Cloud Server bạn sẽ đăng nhập vào bằng username root hoặc user thường và mật khẩu root mà nhà cung cấp đã gửi cho bạn lúc thuê VPS, tuy nhiên việc sử dụng mật khẩu luôn có 2 nguy cơ lớn là:

  • Bạn sẽ mất hoàn toàn hệ thống VPS/Cloud Server nếu để lộ mật khẩu.
  • Các kẻ xấu có thể sử dụng phương thức tấn công Brute Force để dò tìm mật khẩu.

Do đó, khuyến khích các bạn làm quen với SSH Key để đăng nhập vào VPS/Cloud Server, cũng như sử dụng nó để xác thực các kết nối từ bên ngoài vào cho an toàn hơn. Vậy hãy tắt cấu hình chứng thực mật khẩu và đảm bảo bật chứng thực SSH Key.

Hiện tại website chưa có bài viết hướng dẫn sử dụng SSH Key để SSH vào server. Vậy nên phiền các bạn vui lòng search google cho phần hướng dẫn thực hiện đăng nhập SSH Key nhé.

11. Cho phép/từ chối kết nối SSH từ 1 user hoặc 1 group

Mặc định SSH Server cho phép tất cả các user có tồn tại trên hệ thống Linux đăng nhập SSH vào server. Nhưng đôi khi chúng ta cũng có nhu cầu chặn không cho đăng nhập SSH đối với 1 số user nhất định hoặc 1 nhóm user cụ thể trên Linux. Vậy để làm được điều này ta chỉ cần sử dụng 1 số cú pháp như phía dưới để cấu hình thêm mới vào file ‘/etc/ssh/sshd_config‘.

+ Cho phép user hoặc group user được phép đăng nhập SSH

+ Không cho phép user hoặc group user được phép đăng nhập SSH

12. Chế độ “StrictModes”

Với chế độ cấu hình “StrictModes” thì ta sẽ chỉ định dịch vụ SSH phải kiểm tra thông tin quyền (permission) của thư mục $HOME user, thư mục “.ssh” và file “authorized_keys” chứa key SSH nếu bạn sử dụng SSH Key. Nếu bạn không xử dụng chế độ này (option “no”) thì dịch vụ SSH sẽ không kiểm tra các cấu hình quyền khi bạn đăng nhập vào VPS/Cloud Server. Vì vậy bạn cần chú ý cấu hình đúng các phân quyền (permission) cho thư mục/key dùng để đăng nhập SSH.

13. Số lần tối đa đăng nhập sai

Như chúng ta thường biết hoạt động dò tìm mật khẩu hay còn gọi tấn công Brute Force vào 1 dịch vụ SSH khá là nguy hiểm nếu mật khẩu bạn quá đơn giản. Vậy thì ta nên giới hạn số lần mà 1 user có thể được nhập mật khẩu sai khi cố đăng nhập SSH vào hệ thống Linux. Hãy cấu hình phần dưới với giá trị bạn mong muốn. Nếu quá số lần quy định thì SSH Server sẽ ngắt kết nối của user.

B. KIỂM TRA DỊCH VỤ VÀ KHỞI ĐỘNG LẠI

Cuối cùng sau khi lựa chọn các cấu hình bảo mật dịch vụ SSH thì bạn cần kiểm tra lại cú pháp cấu hình SSH và khởi động lại dịch vụ SSH.

– Kiểm tra cú pháp cấu hình có sai không ? Nếu sai sẽ thông báo lỗi .

– Khởi động lại dịch vụ SSH.
+ CentOS 6, Debian 7, Ubuntu 14.04

hoặc

+ CentOS 7, Debian 8, Fedora, Ubuntu 15.10+

Như vậy sau khi đọc xong bài viết này, hy vọng các bạn có thể thực hành và thiết lập các tuỳ chỉnh như trên để bảo vệ dịch vụ SSH cũng như bảo vệ VPS/Cloud Server của bạn nhé.

Quách Chí Cường (Theo VINADATA – CLOUD SERVER/CDN )

Đánh giá sao từ người đọc :
[ Tổng : 0 - Trung bình: 0 ]

LEAVE A REPLY