Hướng Dẫn Bảo Mật SSH Trên AlmaLinux Toàn Diện Nhất 2024

Chào bạn đọc của Mekong WIKI! Trong thế giới công nghệ ngày nay, bảo mật luôn là ưu tiên hàng đầu. SSH (Secure Shell) là một giao thức mạng thiết yếu cho phép bạn truy cập và quản lý máy chủ từ xa một cách an toàn. Tuy nhiên, nếu không được cấu hình đúng cách, SSH có thể trở thành một lỗ hổng bảo mật nghiêm trọng. Bài viết này sẽ cung cấp hướng dẫn chi tiết Bảo Mật Ssh Trên Almalinux, giúp bạn bảo vệ hệ thống của mình khỏi các cuộc tấn công tiềm ẩn.

SSH (Secure Shell) là một giao thức mạng mã hóa cho phép bạn truy cập và quản lý máy chủ từ xa một cách an toàn. Mặc dù SSH cung cấp một lớp bảo mật cơ bản, nhưng nó không phải là hoàn toàn bất khả xâm phạm. Nếu không được cấu hình đúng cách, SSH có thể trở thành một điểm yếu trong hệ thống của bạn, cho phép kẻ tấn công truy cập trái phép. Bài viết này sẽ cung cấp một hướng dẫn toàn diện về cách bảo mật SSH trên AlmaLinux, bao gồm các biện pháp bảo mật quan trọng nhất và cách thực hiện chúng một cách chi tiết.

Tại sao cần bảo mật SSH trên AlmaLinux?

AlmaLinux là một дистрибутив Linux mã nguồn mở, mạnh mẽ và được sử dụng rộng rãi, đặc biệt là trong môi trường máy chủ. Việc bảo mật SSH trên AlmaLinux là vô cùng quan trọng vì những lý do sau:

  • Ngăn chặn truy cập trái phép: SSH là một trong những con đường chính mà kẻ tấn công sử dụng để xâm nhập vào hệ thống của bạn. Bằng cách bảo mật SSH, bạn có thể ngăn chặn các cuộc tấn công brute-force (dò mật khẩu) và các hình thức tấn công khác.
  • Bảo vệ dữ liệu: Nếu kẻ tấn công xâm nhập vào hệ thống của bạn thông qua SSH, chúng có thể truy cập, sửa đổi hoặc đánh cắp dữ liệu quan trọng. Việc bảo mật SSH giúp bảo vệ dữ liệu của bạn khỏi bị xâm phạm.
  • Duy trì tính ổn định của hệ thống: Các cuộc tấn công SSH có thể gây ra tình trạng quá tải hệ thống, dẫn đến gián đoạn dịch vụ hoặc thậm chí là sập hệ thống. Việc bảo mật SSH giúp duy trì tính ổn định và khả năng hoạt động liên tục của hệ thống.
  • Tuân thủ các quy định: Nhiều tiêu chuẩn và quy định bảo mật yêu cầu bạn phải bảo mật SSH. Việc tuân thủ các quy định này không chỉ giúp bảo vệ hệ thống của bạn mà còn giúp bạn tránh bị phạt hoặc các hậu quả pháp lý khác.

Cau hinh SSH tren AlmaLinux de bao mat he thongCau hinh SSH tren AlmaLinux de bao mat he thong

Prompt: An administrator is configuring SSH settings on AlmaLinux using a terminal. The screen displays a configuration file with parameters related to SSH security, such as disabling password authentication and changing the default port. The administrator is focused on strengthening the system’s security posture.

Các biện pháp bảo mật SSH quan trọng trên AlmaLinux

Để bảo mật SSH trên AlmaLinux một cách hiệu quả, bạn cần thực hiện một loạt các biện pháp bảo mật, bao gồm:

1. Thay đổi cổng SSH mặc định

Cổng SSH mặc định là 22. Kẻ tấn công thường nhắm mục tiêu vào cổng này để thực hiện các cuộc tấn công brute-force. Thay đổi cổng SSH mặc định sang một cổng khác ít phổ biến hơn sẽ giúp giảm thiểu nguy cơ bị tấn công.

Để thay đổi cổng SSH, bạn cần chỉnh sửa file cấu hình SSH /etc/ssh/sshd_config. Sử dụng trình soạn thảo văn bản yêu thích của bạn (ví dụ: nano, vim) để mở file này:

sudo nano /etc/ssh/sshd_config

Tìm dòng #Port 22 và bỏ dấu # ở đầu dòng, sau đó thay đổi số 22 thành một số cổng khác (ví dụ: 2222). Chọn một số cổng trong khoảng 1024-65535 và đảm bảo rằng nó không được sử dụng bởi bất kỳ dịch vụ nào khác.

Port 2222

Lưu file và khởi động lại dịch vụ SSH để áp dụng thay đổi:

sudo systemctl restart sshd

Sau khi thay đổi cổng SSH, bạn cần cập nhật cấu hình tường lửa để cho phép lưu lượng truy cập đến cổng mới. Ví dụ, nếu bạn sử dụng firewalld, bạn có thể sử dụng các lệnh sau:

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload

Lưu ý quan trọng: Sau khi thay đổi cổng SSH, bạn cần chỉ định cổng mới khi kết nối đến máy chủ. Ví dụ:

ssh user@host -p 2222

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

Đăng nhập bằng mật khẩu là một trong những cách dễ bị tấn công nhất. Kẻ tấn công có thể sử dụng các cuộc tấn công brute-force để đoán mật khẩu của bạn. Thay vào đó, bạn nên sử dụng xác thực khóa công khai (public key authentication), một phương pháp an toàn hơn nhiều.

Để vô hiệu hóa đăng nhập bằng mật khẩu, hãy chỉnh sửa file /etc/ssh/sshd_config và tìm dòng PasswordAuthentication yes. Thay đổi giá trị yes thành no:

PasswordAuthentication no

Tiếp theo, tìm dòng ChallengeResponseAuthentication yes và thay đổi giá trị yes thành no để vô hiệu hóa xác thực tương tác (interactive authentication):

ChallengeResponseAuthentication no

Lưu file và khởi động lại dịch vụ SSH:

sudo systemctl restart sshd

3. Sử dụng xác thực khóa công khai (Public Key Authentication)

Xác thực khóa công khai là một phương pháp an toàn hơn nhiều so với đăng nhập bằng mật khẩu. Với xác thực khóa công khai, bạn tạo ra một cặp khóa: một khóa công khai (public key) và một khóa riêng tư (private key). Bạn đặt khóa công khai trên máy chủ và giữ khóa riêng tư an toàn trên máy tính của bạn. Khi bạn kết nối đến máy chủ, SSH sử dụng các khóa này để xác thực bạn mà không cần mật khẩu.

Cách tạo cặp khóa:

Sử dụng lệnh ssh-keygen trên máy tính của bạn để tạo cặp khóa:

ssh-keygen -t rsa -b 4096

Lệnh này sẽ tạo ra một cặp khóa RSA với độ dài 4096 bit. Bạn sẽ được nhắc nhập tên file để lưu khóa và một passphrase (mật khẩu bảo vệ khóa riêng tư). Nên sử dụng một passphrase mạnh để bảo vệ khóa riêng tư của bạn.

Cách sao chép khóa công khai lên máy chủ:

Có nhiều cách để sao chép khóa công khai lên máy chủ. Một cách đơn giản là sử dụng lệnh ssh-copy-id:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@host

Lệnh này sẽ yêu cầu bạn nhập mật khẩu của người dùng trên máy chủ và sau đó sao chép khóa công khai của bạn vào file ~/.ssh/authorized_keys trên máy chủ.

Một cách khác là sao chép nội dung của file ~/.ssh/id_rsa.pub vào file ~/.ssh/authorized_keys trên máy chủ bằng tay.

Lưu ý: Đảm bảo rằng thư mục ~/.ssh và file ~/.ssh/authorized_keys trên máy chủ có quyền thích hợp (700 cho thư mục và 600 cho file).

4. Giới hạn người dùng được phép đăng nhập qua SSH

Bạn có thể giới hạn người dùng nào được phép đăng nhập qua SSH bằng cách sử dụng tùy chọn AllowUsers hoặc DenyUsers trong file /etc/ssh/sshd_config.

Ví dụ, để chỉ cho phép người dùng johnjane đăng nhập qua SSH, bạn có thể thêm dòng sau vào file /etc/ssh/sshd_config:

AllowUsers john jane

Để cấm người dùng baduser đăng nhập qua SSH, bạn có thể thêm dòng sau vào file /etc/ssh/sshd_config:

DenyUsers baduser

Lưu file và khởi động lại dịch vụ SSH để áp dụng thay đổi.

5. Sử dụng tường lửa (Firewall)

Tường lửa là một thành phần quan trọng trong bất kỳ hệ thống bảo mật nào. Bạn nên sử dụng tường lửa để giới hạn lưu lượng truy cập đến máy chủ của bạn, chỉ cho phép lưu lượng cần thiết.

AlmaLinux đi kèm với firewalld được cài đặt và kích hoạt theo mặc định. Bạn có thể sử dụng firewalld để chỉ cho phép lưu lượng truy cập đến cổng SSH (đã thay đổi ở bước 1) và chặn tất cả lưu lượng truy cập khác.

Ví dụ, để cho phép lưu lượng truy cập đến cổng 2222 (cổng SSH đã thay đổi) và chặn tất cả lưu lượng truy cập khác, bạn có thể sử dụng các lệnh sau:

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload

Lệnh này sẽ mở cổng 2222 cho lưu lượng TCP và chặn tất cả lưu lượng truy cập SSH đến cổng mặc định (22).

Cau hinh Firewall tren AlmaLinux de bao ve truy cap SSHCau hinh Firewall tren AlmaLinux de bao ve truy cap SSH

Prompt: The terminal displays commands being executed to configure the firewall on AlmaLinux, specifically to allow SSH traffic through a non-standard port and block other unauthorized connections. This configuration strengthens the security posture of the server by controlling network access.

6. Sử dụng Fail2ban

Fail2ban là một công cụ tuyệt vời để bảo vệ máy chủ của bạn khỏi các cuộc tấn công brute-force. Fail2ban theo dõi các bản ghi (log) của hệ thống để tìm các dấu hiệu của các cuộc tấn công brute-force và tự động chặn các địa chỉ IP độc hại.

Để cài đặt Fail2ban trên AlmaLinux, bạn có thể sử dụng lệnh sau:

sudo dnf install fail2ban

Sau khi cài đặt, bạn cần cấu hình Fail2ban để bảo vệ dịch vụ SSH. Tạo một file cấu hình cục bộ cho jail SSH:

sudo nano /etc/fail2ban/jail.d/sshd.conf

Thêm nội dung sau vào file:

[sshd]
enabled = true
port = 2222  # Thay đổi thành cổng SSH của bạn
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 3600
findtime = 600
  • enabled = true: Kích hoạt jail SSH.
  • port = 2222: Cổng SSH mà Fail2ban sẽ bảo vệ.
  • filter = sshd: Sử dụng bộ lọc sshd để phân tích các bản ghi SSH.
  • logpath = /var/log/secure: Đường dẫn đến file bản ghi SSH.
  • maxretry = 3: Số lần thử đăng nhập thất bại trước khi địa chỉ IP bị chặn.
  • bantime = 3600: Thời gian địa chỉ IP bị chặn (tính bằng giây).
  • findtime = 600: Thời gian Fail2ban sẽ tìm kiếm các lần thử đăng nhập thất bại (tính bằng giây).

Lưu file và khởi động lại dịch vụ Fail2ban:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

7. Tắt X11 Forwarding

X11 Forwarding cho phép bạn chạy các ứng dụng đồ họa trên máy chủ và hiển thị chúng trên máy tính của bạn. Tuy nhiên, X11 Forwarding có thể là một lỗ hổng bảo mật, đặc biệt nếu bạn không sử dụng nó.

Để tắt X11 Forwarding, hãy chỉnh sửa file /etc/ssh/sshd_config và tìm dòng X11Forwarding yes. Thay đổi giá trị yes thành no:

X11Forwarding no

Lưu file và khởi động lại dịch vụ SSH.

8. Cập nhật SSH thường xuyên

Các lỗ hổng bảo mật mới được phát hiện trong SSH theo thời gian. Để bảo vệ hệ thống của bạn, hãy đảm bảo rằng bạn luôn cập nhật SSH lên phiên bản mới nhất.

Để cập nhật SSH trên AlmaLinux, bạn có thể sử dụng lệnh sau:

sudo dnf update openssh-server

9. Theo dõi các bản ghi (log) SSH

Việc theo dõi các bản ghi SSH có thể giúp bạn phát hiện các hoạt động đáng ngờ và phản ứng kịp thời. Bạn có thể sử dụng các công cụ như logwatch hoặc auditd để theo dõi các bản ghi SSH.

10. Sử dụng mật khẩu mạnh cho khóa riêng tư (Private Key Passphrase)

Ngay cả khi bạn sử dụng xác thực khóa công khai, khóa riêng tư của bạn vẫn có thể bị đánh cắp. Để bảo vệ khóa riêng tư của bạn, hãy sử dụng một mật khẩu mạnh (passphrase) để mã hóa nó. Khi bạn tạo cặp khóa bằng lệnh ssh-keygen, hãy nhớ nhập một passphrase mạnh khi được nhắc.

“Việc bảo mật SSH là một quá trình liên tục. Hãy luôn cập nhật kiến thức và áp dụng các biện pháp bảo mật mới nhất để bảo vệ hệ thống của bạn,” ông Nguyễn Văn An, chuyên gia bảo mật mạng tại Mekong Security, nhấn mạnh.

11. Tắt GSSAPIAuthentication

GSSAPIAuthentication (Generic Security Services Application Programming Interface) là một cơ chế xác thực khác có thể được sử dụng với SSH. Tuy nhiên, nó có thể gây ra các vấn đề về bảo mật trong một số trường hợp.

Để tắt GSSAPIAuthentication, hãy chỉnh sửa file /etc/ssh/sshd_config và tìm dòng GSSAPIAuthentication yes. Thay đổi giá trị yes thành no:

GSSAPIAuthentication no

Lưu file và khởi động lại dịch vụ SSH.

12. Cấu hình Idle Timeout

Idle Timeout là thời gian mà SSH sẽ tự động ngắt kết nối nếu không có hoạt động nào. Điều này giúp giảm thiểu nguy cơ bị tấn công nếu một phiên SSH bị bỏ quên.

Để cấu hình Idle Timeout, hãy chỉnh sửa file /etc/ssh/sshd_config và thêm các dòng sau:

ClientAliveInterval 60
ClientAliveCountMax 3
  • ClientAliveInterval 60: Gửi một tin nhắn “alive” đến client mỗi 60 giây.
  • ClientAliveCountMax 3: Nếu client không phản hồi sau 3 tin nhắn “alive”, ngắt kết nối.

Lưu file và khởi động lại dịch vụ SSH.

13. Sử dụng VPN (Virtual Private Network)

Nếu bạn thường xuyên truy cập máy chủ của mình từ các mạng không an toàn (ví dụ: Wi-Fi công cộng), bạn nên sử dụng VPN để mã hóa lưu lượng truy cập của bạn. VPN sẽ tạo ra một đường hầm an toàn giữa máy tính của bạn và máy chủ, ngăn chặn kẻ tấn công chặn hoặc sửa đổi dữ liệu của bạn.

14. Kiểm tra cấu hình SSH bằng Lynis

Lynis là một công cụ kiểm tra bảo mật hệ thống mạnh mẽ có thể giúp bạn xác định các lỗ hổng bảo mật trong cấu hình SSH của bạn.

Để cài đặt Lynis trên AlmaLinux, bạn có thể sử dụng lệnh sau:

sudo dnf install lynis

Sau khi cài đặt, chạy Lynis để kiểm tra hệ thống của bạn:

sudo lynis audit system

Lynis sẽ cung cấp một báo cáo chi tiết về các vấn đề bảo mật được phát hiện, bao gồm cả các vấn đề liên quan đến SSH.

Prompt: The screenshot displays the output of Lynis scanning an AlmaLinux system, highlighting security recommendations for SSH configuration, such as disabling certain features and hardening access controls. The tool provides actionable insights to improve the overall security posture of the SSH service.

“Bảo mật không phải là đích đến, mà là một hành trình. Hãy liên tục đánh giá và cải thiện các biện pháp bảo mật của bạn để đối phó với các mối đe dọa mới,” bà Trần Thị Mai, chuyên gia tư vấn bảo mật độc lập, chia sẻ.

15. Định kỳ đánh giá và kiểm tra bảo mật

Việc bảo mật SSH trên AlmaLinux không phải là một nhiệm vụ một lần. Bạn cần định kỳ đánh giá và kiểm tra bảo mật hệ thống của mình để đảm bảo rằng các biện pháp bảo mật của bạn vẫn hiệu quả và phù hợp với các mối đe dọa mới. Bạn có thể sử dụng các công cụ như Lynis hoặc Nessus để thực hiện kiểm tra bảo mật hệ thống.

16. Sử dụng SSH Bastion Host

SSH Bastion Host (hay còn gọi là Jump Server) là một máy chủ trung gian được đặt giữa mạng bên ngoài và các máy chủ bên trong của bạn. Tất cả các kết nối SSH đến các máy chủ bên trong đều phải đi qua SSH Bastion Host. Điều này giúp bảo vệ các máy chủ bên trong của bạn khỏi các cuộc tấn công trực tiếp từ bên ngoài.

Để sử dụng SSH Bastion Host, bạn cần cấu hình SSH trên máy tính của bạn để tự động kết nối đến SSH Bastion Host trước khi kết nối đến máy chủ bên trong. Bạn có thể sử dụng tùy chọn -J (Jump) trong lệnh ssh để làm điều này.

Ví dụ:

ssh -J user@bastionhost user@internalhost

Lệnh này sẽ kết nối đến bastionhost trước, sau đó sử dụng bastionhost làm trung gian để kết nối đến internalhost.

17. Giới hạn thời gian sống (TTL) cho các kết nối SSH

Giới hạn TTL (Time To Live) cho các kết nối SSH có thể giúp giảm thiểu thiệt hại trong trường hợp khóa SSH của bạn bị đánh cắp. Bằng cách giới hạn TTL, bạn có thể đảm bảo rằng khóa SSH của bạn chỉ có hiệu lực trong một khoảng thời gian ngắn.

Để giới hạn TTL cho các kết nối SSH, bạn có thể sử dụng tùy chọn PermitOpen trong file ~/.ssh/config trên máy tính của bạn.

Ví dụ:

Host internalhost
  PermitOpen 192.168.1.10:22
  PermitOpen 127.0.0.1:22

Điều này sẽ chỉ cho phép kết nối đến cổng 22 trên các địa chỉ IP 192.168.1.10 và 127.0.0.1.

“An toàn là trên hết! Đầu tư vào bảo mật SSH không chỉ là bảo vệ hệ thống, mà còn là bảo vệ uy tín và sự tin tưởng của khách hàng,” ông Lê Hoàng Nam, Giám đốc kỹ thuật tại VNTech Solutions, nhấn mạnh.

18. Tắt TCP Forwarding

TCP Forwarding cho phép bạn chuyển tiếp các cổng TCP qua kết nối SSH. Mặc dù tính năng này có thể hữu ích trong một số trường hợp, nhưng nó cũng có thể là một lỗ hổng bảo mật.

Để tắt TCP Forwarding, hãy chỉnh sửa file /etc/ssh/sshd_config và tìm dòng AllowTcpForwarding yes. Thay đổi giá trị yes thành no:

AllowTcpForwarding no

Lưu file và khởi động lại dịch vụ SSH.

Kết luận

Bảo mật SSH trên AlmaLinux là một nhiệm vụ quan trọng để bảo vệ hệ thống của bạn khỏi các cuộc tấn công. Bằng cách thực hiện các biện pháp bảo mật được trình bày trong bài viết này, bạn có thể tăng cường đáng kể khả năng bảo mật của SSH và bảo vệ dữ liệu của bạn. Hãy nhớ rằng, bảo mật là một quá trình liên tục, vì vậy hãy luôn cập nhật kiến thức và áp dụng các biện pháp bảo mật mới nhất. Hy vọng bài viết này hữu ích cho bạn! Hãy chia sẻ nó với những người cần nhé.

Câu hỏi thường gặp (FAQ)

  1. Tại sao tôi nên thay đổi cổng SSH mặc định?

    Thay đổi cổng SSH mặc định giúp giảm thiểu nguy cơ bị tấn công brute-force, vì kẻ tấn công thường nhắm mục tiêu vào cổng 22 để dò mật khẩu.

  2. Xác thực khóa công khai (Public Key Authentication) là gì và tại sao nó an toàn hơn đăng nhập bằng mật khẩu?

    Xác thực khóa công khai sử dụng một cặp khóa (công khai và riêng tư) để xác thực bạn mà không cần mật khẩu. Nó an toàn hơn vì kẻ tấn công cần có khóa riêng tư của bạn để đăng nhập, thay vì chỉ cần đoán mật khẩu.

  3. Fail2ban là gì và nó hoạt động như thế nào?

    Fail2ban là một công cụ theo dõi các bản ghi hệ thống để tìm các dấu hiệu của các cuộc tấn công brute-force và tự động chặn các địa chỉ IP độc hại. Nó giúp ngăn chặn các cuộc tấn công dò mật khẩu.

  4. Tôi nên làm gì nếu quên passphrase của khóa riêng tư?

    Nếu bạn quên passphrase của khóa riêng tư, bạn sẽ không thể sử dụng khóa đó để đăng nhập. Bạn cần tạo một cặp khóa mới và sao chép khóa công khai mới lên máy chủ.

  5. Tường lửa (Firewall) có vai trò gì trong việc bảo mật SSH?

    Tường lửa giúp giới hạn lưu lượng truy cập đến máy chủ của bạn, chỉ cho phép lưu lượng cần thiết (ví dụ: lưu lượng SSH đến cổng đã thay đổi) và chặn tất cả lưu lượng truy cập khác.

  6. Làm thế nào để biết máy chủ của tôi có đang bị tấn công SSH hay không?

    Bạn có thể theo dõi các bản ghi SSH (/var/log/secure) để tìm các dấu hiệu của các cuộc tấn công, chẳng hạn như các lần thử đăng nhập thất bại liên tục từ các địa chỉ IP khác nhau.

  7. Idle Timeout là gì và tại sao tôi nên cấu hình nó?

    Idle Timeout là thời gian mà SSH sẽ tự động ngắt kết nối nếu không có hoạt động nào. Điều này giúp giảm thiểu nguy cơ bị tấn công nếu một phiên SSH bị bỏ quên.