Cài đặt và thiết lập cấu hình để bảo mật SSH trên Linux Server

ssh-linux

Trong quá trình vận hành máy chủ Linux, việc phải sử dụng SSH là chuyện hàng ngày cần làm. Bài viết này sẽ hướng dẫn các Bạn cách cài đặt và thiết lập một số cấu hình cơ bản đẻ bảo mật ssh trên linux server.

1. Cài đặt SSH trên Linux Server

Đối với Ubuntu Server

apt-get install openssh-server openssh-client

CentOS Server

yum -y install openssh-server openssh-clients

Khi hệ thốn chạy lệnh xong, để sử dụng được lệnh SSH, bạn cần chỉnh sửa file cấu hình bằng cách mở file /etc/ssh/sshd_config.

Một số cấu hình cơ bản như sau:

#Cổng mặc định của SSH Server 
Port 22 
#Cho phép user root đăng nhập qua kết nối SSH 
PermitRootLogin no 
#Cho phép đăng nhập bằng password 
PasswordAuthentication yes

Sau cùng, Bạn chỉ cần khởi động lại dịch vụ để hệ thống ghi nhận lại các thay đổi.

sudo service ssh restart

Đến bước này, bạn đã kích hoạt xong dịch vụ SSH, Bạn có thể tiến hành SSH bằng các phần mềm trên windows như là Puty, SecureSSH,… hoặc sử dụng lệnh SSH trực tiếp trên command line của các hệ điều hành Linux hoặc MacOS.

2. Thiết lập một số bảo mật cho SSH trên Linux

Bởi mặc định SSH hoạt động trên port 22 và user Root là người dùng mặc định có quyền tối cao trong hệ thống nên để tăng cường bảo mật có một số phương án bạn có thể áp dụng:

2.1. Đổi port SSH sang port khác

Mặc định SSH hoạt động trên port 22, Để tăng thêm tính bảo mật cho Server, các bạn nên thay đổi port đăng nhập SSH sang một port khác.

Để thay đổi, bạn thực hiện theo các bước sau:

– Bước 1: Login bằng tài khoản root hoặc tài khoản có quền sudo

– Bước 2: Mở file cấu hình ssh để chỉnh sửa:

vim /etc/ssh/sshd_config

– Bước 3: Tìm kiếm dòng #Port 22, bỏ dấu # ở đầu và thay bằng port bạn muốn dùng.

– Bước 4: Khởi động lại dịch vụ SSH để hệ thống cập nhật thay đổi

systemctl restart sshd.service

2.2. Sử dụng một tài khoản khác không phải tài khoản root để login từ xa

Ngoài việc sử dụng tài khoản mặc định cấp cao là root, bạn nên định nghĩa tên một tài khoản quản trị cho riêng mình và cho phép tài khoản này được login từ xa qua SSH.

Mặc định, quyền truy xuất từ xa với tài khoản root đã bị cấm (denied), khi bạn truy xuất sẽ nhận được kết quả: “Permission denied”

$ ssh root@10.0.0.55 
root@10.0.0.55's password: 
Permission denied, please try again. 
root@10.0.0.55's password:

2.3. Không cho phép login bằng mật khẩu và thay bằng việc sử dụng private/public key

Ngoài cách login qua SSH sử dụng password theo cách thông thường, bạn có thể sử dụng cách bảo mật hơn bằng việc sử dụng cặp private/public key và chặn việc đăng nhập bằng password.

Để tạo cặp key dùng login qua SSH, bạn thực hiện như sau:

– Bước 1: tạo ra cặp key trên máy client (máy mà bạn muốn dùng login ssh vào server)

Sử dụng lệnh sau để tạo ssh key:

ssh-keygen

Mặc định thì hệ thống sẽ tạo SSH key loại RSA với số bit mã hóa là 2048. Bạn có thể thay đổi bằng một số tùy chọn như sau:

-t: khai báo loại key mà bạn muốn tạo, có thể là rsa, dsa, ecdsa và ed25519.
-b: đây là số bit mã hóa của khóa
RSA: tối thiểu là 1024 và tối đa là 16384 bits.
DSA: 1024 bits.
ECDSA: 256, 384 hoặc 521 bits.
Ed25519: 256 bits.
-C: comment cho khóa, về mục đích sử dụng của khóa, hoặc một nội dung gì đó.

Ví dụ, mình muốn tạo SSH key loại RSA 4096 bits, sử dụng lệnh sau:

ssh-keygen -t rsa -b 4096 -C "comment_here"

(Trong trường hợp bạn dùng máy windows, bạn có thể tạo key bằng cách sử dụng phần mềm Putty)

Sau khi chạy lệnh trên, mặc định SSH key sẽ được lưu trong thư mục .ssh của user tạo ra (ví dụ /home/tuanna/.ssh/). Bạn vào thư mục .ssh sẽ thấy có 2 file là id_rsa và id_rsa.pub lần lượt tương ứng với private key và public key.

Công việc tiếp theo bạn là add public key lên server.

– Bước 2: add public key tạo ra trên máy client lên máy server

Bạn cần login vào server và thực hiện theo các bước sau:

  • Tạo thư mục .ssh tại thư mục home của user (tài khoản bạn dùng ssh vào server):
mkdir ~/.ssh
  • Tạo file authorized_keys trong thư mục .ssh vừa tạo ở trên:
vim ~/.ssh/authorized_keys

=> copy toàn bộ nội dung trong file id_rsa.pub ở bước 1 và lưu vào file này.

  • Thiết lập quyền cho thư mục và file ở trên:
chmod -R 700 ~/.ssh

Vậy là bạn đã thiết lập xong trên máy chủ.

– Bước 3: khởi động lại dịch vụ SSH trên máy server để hệ thống cập nhật thay đổi

Khởi động lại dịch vụ SSH trên server:

systemctl restart sshd.service

Bây giờ, bạn có thể sử dụng lệnh SSH trên terminal để kiểm tra hệ thống đã login được bằng private/public key chưa. Nếu máy client của bạn không tự nhận diện private/public key thì bạn cần thực hiện lệnh SSH như sau:

ssh -p 22 -i ~/.ssh/id_rsa user@ip_server

Trong đó:

  • ssh: đây là lệnh sử dụng để kết nối SSH
  • -p: (port)sử dụng tùy chọn này nếu bạn muốn chỉ định một cổng SSH khác (nếu bạn đã thay đổi port).
  • -i: gán thêm tùy chọn này nếu như bạn muốn sử dụng SSH key. ~/.ssh/id_rsa: đây là đường dẫn của private key.
  • user@ip_server: đây là user và địa chỉ IP của server mà bạn muốn kết nối đến (bạn cũng có thể sử dụng domain)

Nếu kết nối thành công thì bạn đã thực hiện đúng. Sau cùng, để không cho phép người dùng login qua SSH sử dụng password, bạn cần mở file cấu hình sshd như mục số 1 trên đây, sau đó tìm dòng #PasswordAuthentication yes và sửa “yes” thành “no” là xong.

Chúc các bạn thành công.

Đánh giá bài viết

About The Author

Scroll to Top