Bảo mật kết nối SSH

SSH Logo

Hầu hết các kết nối điều khiển từ xa đến máy chủ Linux/Unix đều sử dụng SSH (Secure Shell) – OpenSSH. Thông thường với SSH Bạn đã được bảo vệ bằng việc mã hóa dữ liệu:

SecureShell_ProtectPackage

Tuy nhiên, với các cấu hình SSH mặc định vẫn có thể sẽ bị tấn công đánh cấp thông tin và Chúng ta cần phải tinh chỉnh lại dịch vụ SSH trước khi sử dụng.

Trước hết bạn cần hiểu về các thiết lập mặc định của SSH, phương thức hoạt động cũng như môi trường và nhu cầu sử dụng để tìm hướng tốt nhất cho hệ thống SSH của mình.

Các mặc định của SSH-Deamon:

  • /etc/ssh/sshd_config – Tập tin cấu hình OpenSSH Server
  • /etc/ssh/ssh_config – Tập tin cấu hình OpenSSH Client.
  • ~/.ssh/ – Thư mục chứa thiết lập SSH của các User (“~” là ký tự ánh xạ đến Home Directory của User tương ứng đang login vào hệ thống). Đây là thư mục mặc định mà SSH Server/Client (Linux/Unix) load các tập tin chứng thực.
  • ~/.ssh/authorized_keys – Tên tập tin public key mặc định của SSH cho user
  • /etc/hosts.allow & /etc/hosts.deny – Tác tập tin thiết lập quản lý, kiểm soát truy cập.
  • Thiết lập mặc định: Default port 22, vẫn cho phép Root login vào hệ thống, sử dụng password khi login SSH,…

Với những thông tin mặc định trên nếu vẫn giữ nguyên để hoạt động, hacker đã nắm trong tay 50% thông tin và phương thức mặc định cho việc tấn công hệ thống. Ta cần giảm thiểu những thông tin mặc định xuống mức thấp nhất có thể.

các rất nhiều thiết lập hạn chế tối đa & quản lý tốt kết nối ssh. Trong bài viết này tôi sẽ trình các các thiết lập cơ bản như:

  • 1. Thay đổi port hoạt động mặc định của SSH – tránh sử dụng port mặc định.
  • 2. Thiết lập kết nối dùng SSH key & không cho phép đăng nhập bằng mật khẩu – mật khẩu là loại hình dễ bị đánh cấp.
  • 3. Không cho phép đăng nhập trực tiếp ở mức Root Level – giảm thiểu tổn hại đến hệ thống.

1. Thay đổi port cho SSH

Chỉnh sửa tập tin cấu hình SSH server

vi /etc/ssh/sshd_config

tìm đến dòng “Port 22” thành Port khác mà bạn muốn (tôi sử dụng port 7333)

PortDefaultSSH

Lưu ý, Thêm nữa bạn cũng cần chắc chắn phải có dòng “Protocol 2” như trong hình – khi đó sshd sẽ sử dụng version 2 để hoạt động thay vì version 1 rất nhiều lỗi dễ bị tấn công.

2. Thiết lập kết nối SSH phải dùng Key.

Tạo SSH key bằng lệnh ssh-keygen sẵn có

ssh-keygen -t rsa

  • -t” : chọn loại khóa sử dụng.
  • rsa“: sử dụng khóa với version 2. nếu bạn dùng “rsa1” nó sẽ sử dụng version 1 điều này sẽ không phù hợp với thiết lập sử dụng ssh servsion 2.

CreateSSHKey-SSH-Keygen

– Có thể không cần nhập mật khẩu trong phần passphrase (phần này dùng cho việc bảo vệ tập tin id_rsa) nếu có càng tốt vì sẽ giúp bảo vệ 2 lớp cho kết nối ssh.

– Lưu ý:

  • Tập tin “id_rsa.pub“: đây là public key dùng để đặt trên SSH Server.
  • Tập tin “id_rsa“: đây là private key sẽ giữ bí mật trên SSH client (nên xóa tập tin này trên SSH Server).

Tiếp theo, chỉnh sửa thêm trong tập tin cấu hình sshd_config. Bỏ các “#” tại 2 dòng theo hình bên dưới, đây là thiết lập cho phép SSH Server chứng thực bằng SSH Key.

UncommentPublickey

Quay lại với tập tin id_rsa.pub Ta cần đổi tên file này trùng với tên tập tin trong phần AuthorizedKeyFile như trong hình (hoặc có thể đổi thành tên khác nếu bạn muốn – lưu ý phải đổi cả trong tập tin cấu hình ssh & tên của public key được lưu trong folder: ~/.ssh/

Tạo SSH key sử dụng PuttyGen.exe (bạn có thể download phiên bản phù hợp tại đây) – khi sử dụng Putty để tạo kết nối SSH vào hệ thống

Chạy ứng dụng PuttyGen.exe:

CreateSSH Key - puttygen

Chọn thiết lập loại key “SSH-2 RSA” và số bits mã hóa nếu muốn > chọn General (1) để khởi tạo > di chuyển chuột xung quang khung xanh (2) để Random key.

Sau khi đã có SSH Key > Copy key trong khung xanh đặt trên SSH Server với tên public key theo quy định và chọn “Save private key” để lưu giữ nơi bí mật cẩn thận (nhập passphrase nếu muốn).

Puttygen02

Tắt tính nhận chứng thực SSH bằng mật khẩu: chuyển tham số mục “PasswordAuthentication” từ “yes” sang “no” để SSH Server chặn tất cả truy cập sử dụng Password.

DisablesPasswordAuthentication

3. Cấm đăng nhập SSH trực tiếp ở mức Root Level

Sau khi đã hoàn tất việc tạo SSH Key. Bước tiếp theo cần giới hạn quyền Root login vào hệ thống (chỉnh sử thêm trong tập tin sshd_conf như hình bên dưới).

LimitRootLogin

Đa phần với các User thông thường (User đã tồn tại trên hệ thống) ta cần tạo thêm thư mục “.ssh” vì mặc định Home Directory của User đó không có sẵn, sau đó copy public key vào thư mục này (đảm bảo user cho phép login ssh phải có thư mục ~/.ssh/).

SSHforUser

Lưu cấu hình (ấn phím ESC > nhập ký tự “:wq” > Enter) và khởi động lại dịch vụ ssh

RestartSSH

Sử dụng Putty cho kết nối SSH

Load Private Key (*.ppk)

LoadSSHKeyPrivateForPutty

Quay lại mục Session tạo profile với port chỉ định đã thay đổi > save profile và kết nối

RunPuttywithSSHKey

Đăng nhập với Root level sẽ bị chặn.

RootAccessDenied

Hủy bỏ kết nối và mở lại profile nhưng đăng nhập bằng user thường đã tạo (có chứa cấu hình SSH) và kết quả:

UserAccessAllow

Như vậy, kết nối SSH của bạn đã một phần nào bảo mật hơn.

Note:

– Nếu muốn sử dụng nhiều SSH Key nhằm mục đích cấp phép cho nhiều người dùng khác nhau truy cập vào hệ thống trên 1 user chỉ định, bạn chỉ cần copy đoạn mã public key đó thêm vào tập tin “~/.ssh/authorized_keys. Nhưng lưu ý các public key phải tách nhau thành từng dòng riêng như hình bên dưới.

MultiSSHKey

Chúc bạn thành công!

Comments

comments