» » Bảo mật SSH nâng cao cho CentOS và Ubuntu

Bảo mật SSH nâng cao cho CentOS và Ubuntu

SSH là một giao thức phục vụ cho việc truy cập từ xa và tính bảo mật của nó khá cao. Bạn cũng có thể cài đặt một số tính năng nâng cao để bảo mật cho SSH.

Thông thường thì một máy chủ Linux như là Ubuntu, CentOS được tạo ra và được quản lý bằng một tài khoản root và mật khẩu. Mặc dù một số nhà cung cấp VPS như DigitalOceanVultr có cung cấp tùy chọn để sử dụng SSH Keys nhưng đó chưa phải là hoàn hảo.bảo mật SSH nâng cao

Bài viết này sẽ hướng dẫn bạn bảo mật SSH nâng cao hơn với một số bước sau:

  1. Tạo user
  2. Sử dụng SSH Keys
  3. Vô hiệu hóa đăng nhập Root
  4. Giới hạn user đăng nhập
  5. Vô hiệu hóa đăng nhập bằng mật khẩu
  6. Đổi port SSH

Tạo user

Đăng nhập vào tài khoản root trong Linux là kém an toàn và có thể gây ra rủi ro cho hệ thống. Khi sử dụng root, bất cứ một thay đổi hệ thống nào đó có thể xãy ra mà không cần một đặc quyền. Một chương trình gián điệp hoặc một kẻ trộm có thể kiểm soát và thay đổi hệ thống của bạn mà không cần mật khẩu.

Mục đích chính của việc tạo user ở đây là để vô hiệu hóa đăng nhập SSH của tài khoản root. Điều này gây ra khó khăn cho những kẻ muốn thử đăng nhập vào hệ thống của bạn và họ sẽ thất bại trong khi cố gắng để nhập một người dùng đúng. Vì vậy, hãy sử dụng một tên người dùng đặc biệt, không nên sử dụng một số tên người dùng thông dụng như admin, adm, ftp, test, support, ubnt…

Nếu bạn không muốn tạo user, hãy bỏ qua bước này.

  1. Để tạo user trong Linux (CentOS/RHEL, Ubuntu/Debian), sử dụng lệnh sau:
    sudo useradd -m usercuatui

    Thay thế usercuatui thành user mà bạn muốn tạo.

  2. Thiết lập mật khẩu cho user mới:
    sudo passwd usercuatui

    Bạn cần phải nhập mật khẩu 2 lần. Kết quả như sau:

    tunguyen@tunguyenpc:~$ sudo passwd usercuatui
    Enter new UNIX password: --> nhập mật khẩu
    Retype new UNIX password: --> nhập lại mật khẩu
    passwd: password updated successfully
  3. Người dùng đã được tạo ra nhưng chưa được phép sử dụng lệnh sudo, bạn cần phải cấp quyền sudo cho user này. Bạn có thể thêm user vào group mà group đó được phép sử dụng lệnh sudo hoặc trực tiếp chỉnh sửa file /etc/sudoers. Bạn cần phải thực hiện bước này nếu muốn sử dụng lệnh sudo, nếu không bạn sẽ gặp lỗi sau:

    usercuatui is not in the sudoers file.  This incident will be reported.

    Ở đây mình sẽ chỉnh sửa file /etc/sudoers như sau:

    sudo nano /etc/sudoers

    Sau khi đã mở file /etc/sudoers, thêm đoạn  này vào dưới cùng:

    usercuatui ALL=(ALL) ALL

    Thay thế usercuatui thành user của bạn. Lưu file và thoát.

Như vậy là bạn đã tạo user thành công. Sau khi bạn đăng nhập vào user này và muốn đăng nhập vào root, hãy sử dụng lệnh sudo su sau đó nhập mật khẩu của bạn, hoặc su sau đó nhập mật khẩu của root.

Sử dụng SSH Keys

SSH Keys là gì? SSH Keys là một cách để xác thực với một máy chủ SSH mà không cần mật khẩu. Đây là một phương pháp hoàn hảo để thay thế cho mật khẩu. Để sử dụng SSH Keys, bạn cần phải tạo SSH key bằng PuTTYgen và OpenSSH hoặc bất cứ một phần mềm có hỗ trợ.

Một cặp khóa SSH sẽ bao gồm một khóa công khai và khóa riêng tư. Bạn cần phải thêm khóa công khai (public key) cho người dùng trên máy chủ mà bạn muốn xác thực và bạn cần phải sử dụng khóa riêng tư (private key) để xác thực việc đăng nhập.

  1. Đăng nhập vào user mà bạn muốn thêm SSH Keys. Có thể là root hoặc bất cứ một user nào khác.
    su usercuatui

    Thay thế usercuatui thành user của bạn.

  2. Tạo thư mục .ssh, thư mục này sẽ chứa file authorized_keys (khóa công khai) và known_hosts nếu có.
    sudo mkdir ~/.ssh
  3. Tạo file authorized_keys trong thư mục .ssh:
    sudo nano ~/.ssh/authorized_keys

    Bây giờ bạn cần phải copy nội dung của khóa công khai (public key) và dán vào file trên. File ở trên chỉ được chứa nội dung của khóa công khai và không chứa bất cứ gì khác. Bạn cũng có thể copy tập tin khóa công khai của bạn vào thư mục .ssh và đổi tên thành authorized_keys.

  4. Thiết lập quyền cho thư mục .ssh và file authorized_keys:
    sudo chmod 700 ~/.ssh
    sudo chmod 600 ~/.ssh/authorized_keys

Như vậy là bạn đã thêm khóa công khai vào máy chủ của bạn. Bây giờ bạn có thể đăng nhập vào user ở trên bằng cách sử dụng khóa riêng tư (private key) đã tạo trước đó.

Vô hiệu hóa đăng nhập Root

Đăng nhập vào root là kém an toàn, bạn có thể hoàn toàn vô hiệu hóa đăng nhập root nếu bạn đang sử dụng một người dùng bình thường. Bạn cũng có thể đăng nhập root từ một người dùng bình thường bằng cách sử dụng lệnh su.

Để vô hiệu hóa đăng nhập root qua SSH, mở file /etc/ssh/sshd_config:

sudo nano /etc/ssh/sshd_config

Tìm và chỉnh sửa dòng sau, xóa dấu # nếu có:

PermitRootLogin no

Khởi động lại SSH.

Đối với CentOS:

sudo service sshd restart

Đối với Ubuntu:

sudo service ssh restart

Giới hạn user đăng nhập

Nếu máy chủ của bạn chỉ có một hoặc một vài user cần đăng nhập qua SSH, bạn có thể chỉ định chỉ những user này mới có thể đăng nhập qua SSH.

Mở file /etc/ssh/sshd_config và chỉnh sửa hoặc thêm dòng sau:

AllowUsers usercuatui usercuaban

Mỗi user cách nhau bởi khoảng trắng.

Ngược lại, nếu tất cả user trên máy chủ của bạn sử dụng SSH ngoại trừ một số user, bạn có thể cấm những user này bằng cách chỉnh sửa hoặc thêm dòng sau:

DenyUsers usercuatui usercuaban

Khởi động lại dịch vụ SSH để áp dụng thay đổi.

Vô hiệu hóa đăng nhập bằng mật khẩu

Sử dụng mật khẩu là kém an toàn hơn so với sử dụng SSH keys. Nếu như bạn đã sử dụng SSH keys để xác thực đăng nhập cho SSH, bạn nên vô hiệu hóa phương thức xác thực đăng nhập bằng mật khẩu.

Mở file /etc/ssh/sshd_config và chỉnh sửa như sau:

PasswordAuthentication no

Xóa dấu # nếu có. Khởi động lại dịch vụ SSH để áp dụng thay đổi.

Đổi port SSH

Mặc định thì SSH được kết nối qua port 22, những kẻ tấn công có thể dễ dàng kết nối đến máy chủ SSH của bạn. Để an toàn hơn, bạn nên thay đổi port SSH thành một port khác mà chỉ có bạn mới biết.

Để thay đổi port SSH trên Linux (CentOS, Ubuntu), mở file /etc/ssh/sshd_config và chỉnh sửa như sau:

Port 22

Thay đổi port 22 thành bất cứ port nào mà bạn muốn từ 0 đến 65535 và không trùng với các port đã được sử dụng trên hệ thống. Xóa dấu # nếu có. Khởi động lại dịch vụ SSH để áp dụng thay đổi.

Nếu bạn đang bật firewall, vì port đã thay đổi nên bạn cũng cần phải mở port mới và đóng port cũ trên firewall.

Đối với IPTables, sử dụng lệnh sau:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT ## Thay đổi port 22 thành bất cứ port nào bạn muốn
/sbin/service iptables save ## Lưu lại IPTables

Đối với những chương trình firewall khác, bạn có thể tham khảo thêm trên trang web chính thức của chúng.

Kết luận

Việc thiết lập một số bước để bảo mật SSH nâng cao ở trên sẽ giúp máy chủ của bạn an toàn hơn. Đó không phải là tất cả, nếu bạn muốn nâng cao bảo mật hơn nữa, bạn có thể tìm hiểu thêm về cách bảo mật máy chủ tại trang web của CentOS, Ubuntu và các nguồn khác.

Thích hoặc chia sẽ bài này