Kiến thức Hữu ích 😍

Hướng Dẫn Tăng Cường Bảo Mật OpenSSH Trên Ubuntu 20.04 Hiệu Quả


OpenSSH là một công cụ không thể thiếu, đóng vai trò như cây cầu nối an toàn giúp bạn kết nối và quản trị máy chủ từ xa. Nó giống như một cánh cửa bí mật, cho phép bạn truy cập vào hệ thống của mình từ bất kỳ đâu trên thế giới. Tuy nhiên, nếu không được bảo vệ cẩn thận, cánh cửa này có thể trở thành điểm yếu chết người. Rất nhiều hệ thống Ubuntu 20.04 hiện nay vẫn còn giữ lại cấu hình OpenSSH mặc định, tạo ra một lỗ hổng an ninh nghiêm trọng. Điều này không khác gì việc để cửa nhà mở toang, mời gọi những kẻ có ý đồ xấu xâm nhập, đánh cắp dữ liệu nhạy cảm hoặc thậm chí phá hủy toàn bộ hệ thống. Bằng cách áp dụng các kỹ thuật cấu hình và phương pháp bảo mật chuyên sâu, chúng ta có thể gia cố cánh cửa này, biến nó thành một pháo đài bất khả xâm phạm. Bài viết này sẽ hướng dẫn bạn chi tiết từng bước, từ việc tinh chỉnh file cấu hình sshd_config, giới hạn quyền truy cập, sử dụng phương pháp xác thực an toàn cho đến việc duy trì một hệ thống bảo mật bền vững.

Cấu hình lại file sshd_config để tăng cường bảo mật

Trái tim của việc bảo mật OpenSSH nằm ở file cấu hình sshd_config. Đây là nơi bạn định nghĩa các quy tắc và chính sách cho mọi kết nối đến máy chủ. Việc hiểu và tùy chỉnh file này đúng cách là bước đầu tiên và quan trọng nhất để xây dựng một hàng rào phòng thủ vững chắc.

Hình minh họa

Tìm và chỉnh sửa file sshd_config trên Ubuntu 20.04

File cấu hình chính của dịch vụ SSH, tên là sshd_config, được đặt tại đường dẫn /etc/ssh/sshd_config. Để chỉnh sửa file này, bạn cần có quyền quản trị viên (root) vì nó là một file hệ thống quan trọng. Bạn có thể sử dụng các trình soạn thảo văn bản dòng lệnh phổ biến như nano hoặc vim để mở và thay đổi nội dung của nó.

Để mở file bằng nano, bạn chỉ cần gõ lệnh sau vào terminal: sudo nano /etc/ssh/sshd_config. Lệnh sudo sẽ cấp cho bạn quyền quản trị tạm thời để có thể lưu lại các thay đổi. Sau khi chỉnh sửa, hãy nhớ khởi động lại dịch vụ SSH để các thiết lập mới có hiệu lực bằng lệnh sudo systemctl restart ssh.

Các thiết lập quan trọng cần điều chỉnh

Trong file sshd_config có rất nhiều tùy chọn, nhưng có ba thiết lập cơ bản bạn cần thay đổi ngay lập tức để tăng cường bảo mật. Đầu tiên và quan trọng nhất là vô hiệu hóa quyền đăng nhập của người dùng root. Tài khoản root là mục tiêu số một của các cuộc tấn công tự động, vì vậy việc cấm đăng nhập trực tiếp bằng tài khoản này sẽ loại bỏ một phần lớn rủi ro. Bạn thực hiện điều này bằng cách tìm dòng PermitRootLogin và đổi giá trị thành no.

Tiếp theo, bạn nên giới hạn những ai có thể đăng nhập vào máy chủ. Thay vì cho phép bất kỳ tài khoản nào cũng có thể kết nối, hãy chỉ định rõ ràng những người dùng được phép. Sử dụng chỉ thị AllowUsers hoặc AllowGroups để liệt kê tên của các người dùng hoặc nhóm người dùng hợp lệ. Ví dụ: AllowUsers user1 user2.

Cuối cùng, hãy thay đổi cổng mặc định của SSH. Cổng 22 là cổng được biết đến rộng rãi và luôn bị các bot tự động quét liên tục. Việc chuyển sang một cổng khác, ít phổ biến hơn, sẽ giúp bạn “ẩn mình” khỏi những cuộc tấn công tự động này, giảm thiểu đáng kể các truy cập trái phép. Để hiểu rõ về phishing và các kỹ thuật tấn công phổ biến nhắm vào dịch vụ mạng, bạn cũng nên tìm hiểu thêm để tăng cường khả năng phòng vệ.

Giới hạn truy cập và thay đổi cổng mặc định

Thay đổi cổng mặc định và giới hạn truy cập là hai lớp bảo vệ cực kỳ hiệu quả. Chúng hoạt động như những người gác cổng thông minh, không chỉ kiểm tra danh tính mà còn đảm bảo khách truy cập đến từ đúng địa chỉ và đi vào đúng lối đi bí mật.

Hình minh họa

Thay đổi port SSH

Bạn có bao giờ tự hỏi tại sao cổng 22 lại là mục tiêu ưa thích của tin tặc chưa? Đơn giản vì đó là cài đặt mặc định. Hàng ngàn bot tấn công được lập trình để quét cổng 22 trên mọi địa chỉ IP trên internet. Bằng cách thay đổi cổng SSH sang một số khác, bạn đã tránh được phần lớn các cuộc tấn công tự động này.

Hãy chọn một cổng không phổ biến, thường là một số trong khoảng từ 1024 đến 65535, ví dụ như 2222 hoặc 49152. Để thay đổi, bạn mở file /etc/ssh/sshd_config, tìm dòng #Port 22, bỏ dấu # ở đầu và thay số 22 bằng số cổng bạn đã chọn. Ví dụ: Port 2222.

Sau khi lưu cấu hình, bạn cần cho phép cổng mới này đi qua tường lửa (firewall). Trên Ubuntu, bạn có thể dùng ufw (Uncomplicated Firewall) với lệnh: sudo ufw allow 2222/tcp. Đừng quên khởi động lại dịch vụ SSH để áp dụng thay đổi: sudo systemctl restart ssh.

Giới hạn IP truy cập và user

Ngoài việc đổi cổng, việc giới hạn ai và từ đâu có thể kết nối cũng rất quan trọng. Như đã đề cập, bạn có thể sử dụng AllowUsers hoặc AllowGroups trong file sshd_config để chỉ cho phép những người dùng cụ thể đăng nhập. Điều này đảm bảo rằng ngay cả khi ai đó có được mật khẩu của một tài khoản không được phép, họ cũng không thể kết nối qua SSH.

Để tăng cường hơn nữa, bạn có thể sử dụng tường lửa ufw để chỉ cho phép các kết nối SSH từ những địa chỉ IP đáng tin cậy. Ví dụ, nếu bạn chỉ muốn kết nối từ địa chỉ IP văn phòng của mình (giả sử là 123.123.123.123), bạn có thể thiết lập quy tắc sau: sudo ufw allow from 123.123.123.123 to any port 2222 proto tcp. Cấu hình này sẽ chặn tất cả các kết nối SSH đến từ bất kỳ địa chỉ IP nào khác, tạo ra một lớp bảo vệ vô cùng vững chắc.

Sử dụng các phương pháp xác thực an toàn hơn

Mật khẩu, dù phức tạp đến đâu, vẫn có thể bị bẻ khóa. Đó là lý do tại sao việc chuyển sang các phương pháp xác thực hiện đại và an toàn hơn như sử dụng khóa SSH là một bước tiến bắt buộc để bảo vệ máy chủ của bạn một cách toàn diện.

Hình minh họa

Xác thực bằng key thay vì mật khẩu

Xác thực bằng khóa SSH (SSH key-based authentication) an toàn hơn mật khẩu rất nhiều. Nó hoạt động dựa trên một cặp khóa: một khóa riêng tư (private key) được lưu giữ bí mật trên máy tính của bạn và một khóa công khai (public key) được đặt trên máy chủ. Khi bạn kết nối, máy chủ sẽ dùng khóa công khai để xác minh rằng bạn đang sở hữu khóa riêng tư tương ứng.

Lợi ích lớn nhất là khóa riêng tư không bao giờ được truyền qua mạng, loại bỏ hoàn toàn nguy cơ bị đánh cắp. Cặp khóa này cực kỳ phức tạp, gần như không thể bị bẻ khóa bằng các phương pháp tấn công brute-force. Để tạo một cặp khóa, bạn chỉ cần chạy lệnh ssh-keygen trên máy tính cá nhân. Sau đó, sao chép khóa công khai lên máy chủ bằng lệnh ssh-copy-id user@your_server_ip. Quá trình này rất đơn giản nhưng hiệu quả bảo mật lại tăng lên gấp nhiều lần.

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

Sau khi bạn đã thiết lập và kiểm tra thành công việc đăng nhập bằng khóa SSH, bước tiếp theo và cũng là bước quyết định là vô hiệu hóa hoàn toàn việc đăng nhập bằng mật khẩu. Điều này đảm bảo rằng cách duy nhất để truy cập vào máy chủ là thông qua khóa SSH an toàn mà bạn đã tạo.

Để làm điều này, hãy mở lại file /etc/ssh/sshd_config và tìm đến dòng PasswordAuthentication. Hãy chắc chắn rằng giá trị của nó được đặt thành no. Nếu dòng này đang được chú thích bằng dấu #, hãy bỏ dấu thăng và đổi giá trị.

Cấu hình PasswordAuthentication no sẽ đóng lại hoàn toàn cánh cửa cho các cuộc tấn công dò mật khẩu. Để tăng cường bảo mật lên mức cao nhất, bạn có thể xem xét việc kết hợp xác thực khóa với xác thực hai yếu tố (2FA là gì). Các công cụ như Google Authenticator có thể được tích hợp với SSH để yêu cầu một mã xác thực tạm thời mỗi khi đăng nhập, tạo ra một lớp bảo vệ gần như tuyệt đối.

Các phương pháp giảm thiểu nguy cơ tấn công

Ngay cả với cấu hình SSH vững chắc, việc chủ động giám sát và tự động ngăn chặn các hành vi tấn công vẫn là điều cần thiết. Các công cụ như Fail2Ban và việc theo dõi log hệ thống sẽ giúp bạn phát hiện sớm và phản ứng kịp thời trước các mối đe dọa.

Hình minh họa

Sử dụng Fail2Ban hoặc công cụ tương tự

Fail2Ban là một công cụ phòng chống xâm nhập cực kỳ hữu ích. Nó hoạt động bằng cách quét các file log của hệ thống (chẳng hạn như log xác thực SSH) để tìm kiếm các dấu hiệu của một cuộc tấn công, ví dụ như nhiều lần đăng nhập thất bại liên tiếp từ cùng một địa chỉ IP. Khi phát hiện hành vi đáng ngờ, Fail2Ban sẽ tự động cập nhật quy tắc tường lửa để chặn địa chỉ IP đó trong một khoảng thời gian nhất định.

Cài đặt Fail2Ban trên Ubuntu rất đơn giản: sudo apt update && sudo apt install fail2ban. Sau khi cài đặt, dịch vụ sẽ tự động chạy và bảo vệ SSH với cấu hình mặc định. Để tùy chỉnh, bạn nên tạo một file cấu hình cục bộ jail.local và điều chỉnh các thông số như thời gian cấm hoặc số lần thử sai tối đa. Fail2Ban là tuyến phòng thủ tự động giúp bạn giảm tải công việc giám sát và ngăn chặn hiệu quả các cuộc tấn công brute-force.

Giám sát và đăng nhập an toàn

Việc thường xuyên kiểm tra các file log là một thói quen tốt để duy trì an ninh hệ thống. Đối với SSH, tất cả các hoạt động xác thực, bao gồm cả đăng nhập thành công và thất bại, đều được ghi lại trong file /var/log/auth.log. Bạn có thể sử dụng các lệnh như tail, grep hoặc less để xem và phân tích file này.

Ví dụ, lệnh sudo tail -f /var/log/auth.log sẽ hiển thị các bản ghi log mới nhất trong thời gian thực, giúp bạn phát hiện ngay lập tức các hoạt động bất thường. Hãy chú ý đến các thông báo “Failed password for…” lặp đi lặp lại từ cùng một IP, đó là dấu hiệu rõ ràng của một cuộc tấn công. Ngoài ra, việc sử dụng các công cụ giám sát tập trung như hệ thống IDS là gì có thể giúp bạn tổng hợp và phân tích log từ nhiều máy chủ, cung cấp một cái nhìn toàn cảnh về tình trạng an ninh của hệ thống.

Kiểm tra và duy trì bảo mật sau khi cấu hình

Bảo mật không phải là công việc làm một lần rồi thôi. Sau khi đã áp dụng các cấu hình, bạn cần kiểm tra lại cẩn thận và thiết lập một lịch trình bảo trì định kỳ để đảm bảo hệ thống luôn được cập nhật và an toàn trước các mối đe dọa mới.

Hình minh họa

Kiểm tra kết nối và xác thực

Một nguyên tắc vàng khi thay đổi cấu hình SSH là: “Luôn giữ lại một phiên kết nối đang mở”. Trước khi bạn đóng cửa sổ terminal hiện tại, hãy mở một cửa sổ mới và thử kết nối lại với máy chủ bằng các cài đặt mới. Điều này sẽ giúp bạn tránh bị tự khóa khỏi hệ thống nếu có lỗi xảy ra trong quá trình cấu hình.

Hãy kiểm tra kỹ lưỡng mọi thay đổi. Nếu bạn đã đổi cổng, hãy thử kết nối bằng lệnh ssh user@your_server_ip -p new_port. Nếu bạn đã thiết lập xác thực bằng khóa, hãy đảm bảo bạn có thể đăng nhập mà không cần nhập mật khẩu. Nếu bạn đã vô hiệu hóa đăng nhập bằng mật khẩu, hãy thử kết nối và xác nhận rằng máy chủ từ chối yêu cầu nhập mật khẩu.

Cập nhật và bảo trì định kỳ

Thế giới an ninh mạng luôn biến đổi, các lỗ hổng bảo mật mới được phát hiện liên tục. Vì vậy, việc cập nhật hệ thống là vô cùng quan trọng. Hãy đảm bảo rằng bạn thường xuyên chạy các lệnh sudo apt updatesudo apt upgrade để cài đặt các bản vá bảo mật mới nhất cho Ubuntu và OpenSSH.

Bên cạnh đó, hãy tạo thói quen sao lưu file cấu hình /etc/ssh/sshd_config trước mỗi lần chỉnh sửa. Một bản sao lưu sẽ giúp bạn dễ dàng khôi phục lại trạng thái hoạt động trước đó nếu có sự cố. Cuối cùng, hãy định kỳ xem lại các cấu hình bảo mật, kiểm tra log và đánh giá lại các quy tắc tường lửa để đảm bảo chúng vẫn phù hợp với nhu cầu và bối cảnh an ninh hiện tại.

Các vấn đề phổ biến và cách khắc phục

Trong quá trình tăng cường bảo mật SSH, đôi khi bạn có thể gặp phải một số sự cố không mong muốn. Dưới đây là cách xử lý hai vấn đề phổ biến nhất mà người dùng thường gặp phải.

Hình minh họa

Không thể đăng nhập sau khi đổi port hoặc thay đổi cấu hình

Đây là tình huống dễ gặp nhất. Nếu bạn không thể kết nối sau khi thay đổi, hãy bình tĩnh và kiểm tra lại từng bước. Đầu tiên, hãy chắc chắn rằng dịch vụ SSH vẫn đang chạy trên máy chủ bằng lệnh sudo systemctl status ssh. Nếu dịch vụ không hoạt động, hãy thử khởi động lại nó.

Tiếp theo, hãy kiểm tra kỹ cấu hình tường lửa. Chạy lệnh sudo ufw status để xem danh sách các quy tắc. Hãy đảm bảo rằng bạn đã cho phép lưu lượng truy cập trên cổng SSH mới. Một lỗi phổ biến là thay đổi cổng trong sshd_config nhưng lại quên cập nhật quy tắc trong ufw. Nếu bạn vẫn giữ phiên kết nối ban đầu, bạn có thể dễ dàng sửa lỗi này.

Khóa user do cấu hình sai PermitRootLogin hoặc AllowUsers

Đây là một lỗi nghiêm trọng hơn, có thể khiến bạn mất quyền truy cập vào máy chủ. Nếu bạn đặt PermitRootLogin no mà chưa tạo và cấp quyền sudo cho một người dùng khác, bạn sẽ không thể thực hiện các tác vụ quản trị. Tương tự, nếu bạn gõ sai tên người dùng trong chỉ thị AllowUsers, bạn cũng sẽ bị khóa ngoài.

Trong trường hợp này, phương pháp khắc phục duy nhất thường là thông qua truy cập console hoặc chế độ cứu hộ (recovery mode) do nhà cung cấp dịch vụ VPS hoặc máy chủ đám mây cung cấp. Giao diện console cho phép bạn đăng nhập trực tiếp vào hệ thống mà không cần thông qua SSH, từ đó bạn có thể sửa lại file cấu hình bị lỗi. Đây là lý do tại sao việc kiểm tra cẩn thận trước khi ngắt kết nối là cực kỳ quan trọng.

Best Practices

Để tóm gọn lại, việc bảo mật OpenSSH trên Ubuntu 20.04 đòi hỏi một cách tiếp cận đa lớp. Dưới đây là những nguyên tắc cốt lõi bạn nên tuân thủ để đảm bảo hệ thống của mình luôn được bảo vệ ở mức cao nhất.

Hình minh họa

  • Luôn sử dụng xác thực bằng khóa SSH: Đây là tiêu chuẩn vàng trong bảo mật SSH. Hãy từ bỏ thói quen dùng mật khẩu và chuyển hoàn toàn sang xác thực SSH là gì.
  • Thường xuyên thay đổi port và giới hạn truy cập: Đừng sử dụng cổng 22 mặc định. Đồng thời, hãy sử dụng AllowUsers và quy tắc tường lửa firewall để giới hạn người dùng và địa chỉ IP được phép kết nối.
  • Cài đặt Fail2Ban để tự động phòng chống: Công cụ này là một người lính gác cổng cần mẫn, giúp bạn tự động chặn các cuộc tấn công brute-force mà không cần can thiệp thủ công.
  • Theo dõi log và cập nhật phần mềm đều đặn: Hãy biến việc kiểm tra log và cập nhật hệ thống thành một thói quen. Các bản vá bảo mật là tuyến phòng thủ quan trọng chống lại các lỗ hổng bảo mật mới.
  • Hạn chế sử dụng user root để đăng nhập trực tiếp: Luôn vô hiệu hóa PermitRootLogin. Thay vào đó, hãy đăng nhập bằng một tài khoản người dùng thông thường và sử dụng sudo khi cần thực hiện các tác vụ quản trị.

Hình minh họa

Kết luận

Qua bài viết này, chúng ta đã cùng nhau đi qua một hành trình chi tiết để tăng cường bảo mật cho OpenSSH trên hệ điều hành Ubuntu 20.04. Từ việc tinh chỉnh file sshd_config, thay đổi cổng mặc định, giới hạn truy cập, cho đến việc triển khai các phương pháp xác thực mạnh mẽ như khóa SSH và công cụ phòng chống tấn công tự động như Fail2Ban. Mỗi bước đi đều góp phần xây dựng nên một pháo đài vững chắc, bảo vệ máy chủ của bạn khỏi những con mắt tò mò và các ý đồ xấu.

Tầm quan trọng của việc bảo vệ dịch vụ SSH là không thể xem nhẹ. Nó là cửa ngõ chính dẫn vào hệ thống của bạn, và một khi cửa ngõ này bị xuyên thủng, toàn bộ dữ liệu và tài nguyên của bạn sẽ gặp nguy hiểm. Đừng chần chừ, hãy bắt tay vào việc áp dụng ngay những cấu hình bảo mật này cho máy chủ của mình. Việc duy trì giám sát và cập nhật thường xuyên sẽ đảm bảo rằng hệ thống của bạn luôn an toàn trong một thế giới kỹ thuật số đầy biến động. Hãy xem việc bảo mật là một quá trình liên tục, và bạn sẽ luôn ở thế chủ động trong việc bảo vệ tài sản số của mình.

Đánh giá