Hướng dẫn cài đặt và sử dụng OpenVAS (Greenbone) để quét lỗ hổng bảo mật cho server Linux

Security tutorial - IT technology blog
Security tutorial - IT technology blog

Bảo vệ server khỏi các cuộc tấn công mạng luôn là ưu tiên hàng đầu. Dù bạn đã cài đặt tường lửa, sử dụng VPN hay mã hóa dữ liệu, liệu bạn có thực sự biết server của mình còn tồn tại lỗ hổng nào mà kẻ xấu có thể lợi dụng không?

Giống như việc khám sức khỏe định kỳ giúp phát hiện sớm bệnh tật, server Linux của bạn cũng cần được ‘kiểm tra sức khỏe’ thường xuyên. Đây là lúc các công cụ quét lỗ hổng bảo mật trở nên cần thiết. Trong bài viết này, mình sẽ hướng dẫn bạn cài đặt và sử dụng OpenVAS – một công cụ mã nguồn mở mạnh mẽ, giờ đây được biết đến chính thức là Greenbone Vulnerability Management (GVM).

Quick Start: Cài đặt và chạy OpenVAS (GVM) trong 5 phút (trên Ubuntu 22.04/20.04)

Chắc hẳn bạn đang nóng lòng muốn bắt tay vào thực hành. Dưới đây là các bước cơ bản giúp bạn cài đặt GVM và truy cập giao diện web chỉ trong vài phút. Mặc dù quá trình cập nhật cơ sở dữ liệu lỗ hổng (Feed) có thể mất khá nhiều thời gian, bạn vẫn có thể bắt đầu cấu hình ngay sau khi cài đặt xong.

Đầu tiên, hãy đảm bảo server Ubuntu của bạn đã được cập nhật:

sudo apt update
sudo apt upgrade -y

Tiếp theo, cài đặt gói GVM (Greenbone Vulnerability Management):

sudo apt install gvm -y

Cài đặt hoàn tất, bạn cần chạy lệnh thiết lập ban đầu. Lệnh này có nhiệm vụ tải xuống các feed cần thiết, tạo tài khoản quản trị và cấu hình các thành phần khác của GVM. Quá trình này có thể kéo dài vài phút đến vài chục phút, tùy thuộc vào tốc độ mạng của bạn.

sudo gvm-setup

Trong quá trình này, hệ thống sẽ tự động tạo một tài khoản quản trị viên (admin) mặc định và hiển thị mật khẩu của nó. Hãy ghi lại mật khẩu này thật cẩn thận! Đây là thông tin đăng nhập quan trọng để bạn truy cập giao diện web của GVM.

Để tăng cường bảo mật, khi tạo mật khẩu cho các tài khoản quan trọng, mình thường sử dụng password generator tại toolcraft.app/vi/tools/security/password-generator. Công cụ này giúp tạo mật khẩu mạnh mẽ và an toàn, đồng thời chạy 100% trên trình duyệt nên mình không lo lộ mật khẩu qua mạng.

Sau khi gvm-setup hoàn tất, bạn có thể khởi động dịch vụ GVM:

sudo gvm-start

Bây giờ, bạn có thể truy cập giao diện web Greenbone Security Assistant (GSA) qua trình duyệt tại địa chỉ:

https://<IP_SERVER_CUA_BAN>:9392

Nếu cài đặt trên máy ảo hoặc server có giao diện đồ họa (GUI) và truy cập trực tiếp, bạn có thể sử dụng https://127.0.0.1:9392. Trình duyệt sẽ hiển thị cảnh báo về chứng chỉ SSL. Đây là chứng chỉ tự ký do GVM tạo ra và hoàn toàn bình thường trong trường hợp này. Bạn chỉ cần chọn Advanced hoặc Proceed anyway (tùy thuộc vào trình duyệt bạn sử dụng) để tiếp tục. Sau đó, dùng tài khoản admin và mật khẩu đã được tạo trong bước gvm-setup để đăng nhập. Chúc mừng, bạn đã cài đặt GVM thành công!

Giải thích chi tiết: OpenVAS (Greenbone) là gì và tại sao cần nó?

OpenVAS là gì? (Giờ là Greenbone Vulnerability Management – GVM)

Ban đầu, OpenVAS (Open Vulnerability Assessment System) là một nhánh (fork) mã nguồn mở của Nessus, ra đời sau khi Nessus chuyển sang mô hình thương mại. Theo thời gian, dự án này được Greenbone Networks phát triển và quản lý, và hiện nay được biết đến chính thức là Greenbone Vulnerability Management (GVM). Mặc dù vậy, nhiều người dùng vẫn quen gọi nó là OpenVAS.

GVM không chỉ là một công cụ quét đơn lẻ mà là một framework toàn diện bao gồm nhiều thành phần:

  • Greenbone Security Assistant (GSA): Giao diện người dùng web để quản lý và cấu hình các tác vụ quét, xem báo cáo.
  • OpenVAS Scanner: Thành phần thực hiện việc quét thực tế, sử dụng các plugin (NVT) để phát hiện lỗ hổng.
  • Greenbone Vulnerability Manager (GVMd): Trình quản lý trung tâm, điều phối các tác vụ quét và lưu trữ dữ liệu.
  • Greenbone Security Feed: Cơ sở dữ liệu chứa các thông tin về lỗ hổng bảo mật (NVT, SCAP, CERT) được cập nhật liên tục.

Tại sao server Linux cần quét lỗ hổng?

Có thể bạn nghĩ rằng, mình đã cấu hình server rất kỹ lưỡng và luôn sử dụng phần mềm mới nhất, vậy thì làm sao có lỗ hổng? Tuy nhiên, thực tế lại không đơn giản như vậy. Lỗ hổng bảo mật có thể xuất hiện vì nhiều lý do khác nhau:

  • Lỗi phần mềm: Không có phần mềm nào hoàn hảo. Các nhà phát triển liên tục phát hiện và vá lỗi, nhưng hacker cũng liên tục tìm kiếm chúng.
  • Cấu hình sai: Đôi khi, lỗ hổng không nằm ở phần mềm mà ở cách chúng ta cấu hình nó (ví dụ: mở port không cần thiết, dùng mật khẩu yếu, quyền truy cập quá rộng).
  • Phần mềm cũ: Quên cập nhật một gói phần mềm nào đó có thể mở ra cánh cửa cho các lỗ hổng đã được biết và công bố.
  • Zero-day exploits: Những lỗ hổng chưa được biết đến công khai, nhưng hacker có thể đã khai thác. Dù GVM không phát hiện được zero-day ngay lập tức, nhưng việc quét thường xuyên giúp bạn cập nhật các lỗ hổng mới nhất đã được công bố.

Việc quét lỗ hổng định kỳ giúp bạn chủ động phát hiện và khắc phục các điểm yếu **trước khi** kẻ tấn công kịp thời lợi dụng chúng. Đây là hành động tương tự như việc bạn thường xuyên kiểm tra khóa cửa, cửa sổ nhà mình để đảm bảo an toàn.

Sự khác biệt giữa OpenVAS và các công cụ khác (Lynis, Suricata)

Thực tế, nhiều bạn thường nhầm lẫn chức năng giữa các công cụ bảo mật khác nhau. GVM có vai trò riêng biệt so với các công cụ mà mình đã giới thiệu trước đây:

  • Lynis: Là công cụ audit hệ thống. Nó kiểm tra cấu hình hệ thống, cài đặt phần mềm, kernel, file permission để tìm các điểm yếu cấu hình. Lynis tập trung vào việc hệ thống được cấu hình đúng chuẩn bảo mật hay không.
  • Suricata: Là hệ thống phát hiện và ngăn chặn xâm nhập (IDS/IPS). Nó giám sát lưu lượng mạng thời gian thực để phát hiện các hoạt động đáng ngờ hoặc các cuộc tấn công đang diễn ra. Suricata tập trung vào việc phát hiện và phản ứng với các mối đe dọa ngay lập tức.
  • OpenVAS (GVM): Là công cụ quét lỗ hổng. Nó chủ động gửi các yêu cầu đến server mục tiêu, phân tích phản hồi để tìm kiếm các lỗ hổng đã được biết đến trong phần mềm, dịch vụ đang chạy. GVM tập trung vào việc tìm kiếm các điểm yếu đã tồn tại trước khi chúng bị khai thác.

Tóm lại, chúng là các công cụ bổ trợ cho nhau, mỗi công cụ giải quyết một khía cạnh khác nhau của bảo mật server.

Cài đặt chi tiết và cấu hình ban đầu (Ubuntu 22.04/20.04)

Yêu cầu hệ thống

GVM là một công cụ tiêu tốn khá nhiều tài nguyên hệ thống, đặc biệt là RAM và dung lượng đĩa, do kích thước lớn của các Feed. Mình khuyến nghị cấu hình như sau:

  • RAM: Tối thiểu 4GB, tốt nhất là 8GB trở lên.
  • CPU: 2 core trở lên.
  • Dung lượng đĩa: Tối thiểu 50GB, tốt nhất là 100GB trở lên (cho các Feed và kết quả quét).

Bạn nên cài đặt GVM trên một server riêng, không phải server đang chạy các dịch vụ quan trọng khác, để tránh ảnh hưởng hiệu suất.

Bước 1: Cập nhật hệ thống và cài đặt GVM

Các bước này mình đã đề cập ở phần Quick Start. Quan trọng là bạn hiểu gvm-setup làm gì:

  • Tải xuống và cập nhật các Greenbone Feed (NVT, SCAP, CERT). Đây là bước tốn thời gian nhất lần đầu.
  • Khởi tạo cơ sở dữ liệu.
  • Tạo tài khoản quản trị viên mặc định và hiển thị mật khẩu.
  • Cấu hình các thành phần GVM để chúng có thể giao tiếp với nhau.

Bước 2: Cập nhật các Feed (NVT, SCAP, CERT)

Greenbone Feed chính là trái tim của GVM. Chúng chứa các Network Vulnerability Tests (NVT), thông tin về cấu hình bảo mật chuẩn (SCAP) và các cảnh báo bảo mật (CERT). Để GVM luôn có thể phát hiện các lỗ hổng mới nhất, việc cập nhật feed thường xuyên là điều bắt buộc.

Bạn có thể kiểm tra trạng thái cập nhật của các Feed thông qua giao diện GSA (Administration -> Feed Status). Nếu cần cập nhật thủ công, bạn có thể chạy:

sudo gvm-feed-update

Lệnh này sẽ tải xuống các bản cập nhật mới nhất cho tất cả các Feed. Quá trình này cũng mất thời gian và yêu cầu kết nối internet ổn định.

Bước 3: Truy cập giao diện web GSA

Sau khi GVM đã chạy (bằng sudo gvm-start), bạn mở trình duyệt và truy cập https://<IP_SERVER_CUA_BAN>:9392.

Trình duyệt sẽ hiển thị cảnh báo về chứng chỉ SSL. Đây là chứng chỉ tự ký do GVM tạo ra và hoàn toàn bình thường trong trường hợp này. Bạn chỉ cần chọn Advanced hoặc Proceed anyway (tùy thuộc vào trình duyệt bạn sử dụng) để tiếp tục.

Đăng nhập bằng tài khoản admin và mật khẩu đã được tạo ở bước gvm-setup. Sau khi đăng nhập, bạn sẽ thấy Dashboard của GSA, nơi hiển thị tổng quan về các lỗ hổng và tác vụ quét.

Sử dụng OpenVAS (Greenbone) để quét lỗ hổng

Bây giờ chúng ta sẽ đi vào phần chính: tạo và chạy một tác vụ quét.

Tổng quan giao diện GSA

Giao diện GSA được tổ chức khá trực quan:

  • Dashboard: Tổng quan các kết quả, trạng thái.
  • Scans: Quản lý các tác vụ quét (Tasks), kết quả quét (Reports), lịch trình (Schedules).
  • Assets: Quản lý các mục tiêu quét (Hosts), Credentials (thông tin đăng nhập).
  • Configuration: Cấu hình Scanner, Profile quét (Scan Configs), Port lists, v.v.
  • Administration: Quản lý người dùng, Feed Status, Log.

Bước 1: Thêm Target (Mục tiêu quét)

Trước khi quét, bạn cần cho GVM biết bạn muốn quét server nào.

  1. Đi đến Assets -> Hosts.
  2. Chọn biểu tượng hình ngôi sao (New Host) hoặc New Target (tùy phiên bản).
  3. Điền các thông tin sau:
    • Name: Tên gọi dễ nhớ cho mục tiêu này (ví dụ: My_Web_Server).
    • Hosts: Địa chỉ IP của server Linux bạn muốn quét (ví dụ: 192.168.1.100). Bạn có thể thêm nhiều IP, dải IP (192.168.1.100-192.168.1.150) hoặc CIDR (192.168.1.0/24).
    • Các tùy chọn khác như Port list, SSH Credential (nếu bạn muốn quét sâu hơn, mình sẽ nói ở phần nâng cao).
  4. Nhấn Save.

Bước 2: Tạo Scan Task (Nhiệm vụ quét)

Sau khi có mục tiêu, chúng ta sẽ tạo một nhiệm vụ quét.

  1. Đi đến Scans -> Tasks.
  2. Chọn biểu tượng hình ngôi sao (New Task).
  3. Điền các thông tin quan trọng:
    • Name: Tên nhiệm vụ quét (ví dụ: Scan_My_Web_Server_Weekly).
    • Scan Target: Chọn mục tiêu bạn đã tạo ở bước trước.
    • Scanner: Mặc định là OpenVAS Scanner.
    • Scan Config: Đây là profile quét. Đối với lần đầu, bạn có thể chọn:
      • Full and fast ultimate: Quét toàn diện nhưng tối ưu tốc độ.
      • Full and deep ultimate: Quét sâu hơn nhưng tốn nhiều thời gian.
    • Bạn cũng có thể cấu hình lịch trình (Schedule) để quét tự động (ví dụ: hàng tuần, hàng tháng).
  4. Nhấn Save.

Bước 3: Chạy Scan và xem kết quả

Bây giờ, bạn đã sẵn sàng để quét:

  1. Trong danh sách Scans -> Tasks, tìm nhiệm vụ bạn vừa tạo.
  2. Nhấn vào biểu tượng Start (mũi tên xanh).
  3. Trạng thái của nhiệm vụ sẽ chuyển từ New sang Requested, rồi Running.
  4. Quá trình quét có thể mất từ vài phút đến vài giờ tùy thuộc vào số lượng IP, cấu hình quét và hiệu suất server GVM của bạn.
  5. Khi quét xong, trạng thái sẽ là Done. Bạn có thể nhấn vào tên nhiệm vụ hoặc biểu tượng Report (hình tờ giấy) để xem kết quả.

Trong báo cáo, bạn sẽ thấy danh sách các lỗ hổng được phân loại theo mức độ nghiêm trọng (Critical, High, Medium, Low). Hãy ưu tiên xử lý các lỗ hổng Critical và High trước.

Mỗi lỗ hổng sẽ có thông tin chi tiết:

  • Vulnerability: Tên lỗ hổng.
  • CVE ID: Mã định danh chung cho lỗ hổng (quan trọng để tìm kiếm thông tin).
  • Summary: Mô tả ngắn gọn về lỗ hổng.
  • Solution: Hướng dẫn khắc phục (thường là cập nhật phần mềm, thay đổi cấu hình).

Nâng cao và Tips thực tế

Quét với Credential (Thông tin đăng nhập)

Để GVM có thể quét sâu hơn vào bên trong server Linux, bạn nên cung cấp thông tin đăng nhập SSH. Việc này cho phép GVM kiểm tra các gói phần mềm đã cài đặt, phiên bản, và cấu hình nội bộ hệ thống, từ đó phát hiện những lỗ hổng mà quét từ bên ngoài không thể nhìn thấy được.

  1. Đi đến Configuration -> Credentials và tạo một SSH credential mới.
  2. Khi tạo Target, chọn credential này.

Lưu ý: Luôn tạo một tài khoản SSH chỉ có quyền đọc (read-only) hoặc quyền hạn chế tối đa cho mục đích quét để đảm bảo an toàn.

Tạo Scan Configuration tùy chỉnh

Nếu bạn muốn kiểm soát chặt chẽ hơn quá trình quét, bạn có thể tạo một Scan Configuration riêng:

  1. Đi đến Configuration -> Scan Configs.
  2. Chọn New Scan Config.
  3. Bạn có thể chọn các NVT cụ thể để quét, loại bỏ các NVT không cần thiết, hoặc chỉ quét một số port nhất định. Điều này giúp giảm thời gian quét và tài nguyên tiêu thụ.

Lập lịch quét tự động

Việc quét thủ công dễ bị quên. Hãy tận dụng tính năng lập lịch của GVM:

  1. Khi tạo hoặc chỉnh sửa một Scan Task, bạn có thể chọn mục Schedule.
  2. Thiết lập tần suất quét (hàng ngày, hàng tuần, hàng tháng) và thời gian cụ thể.

Điều này đảm bảo server của bạn luôn được kiểm tra định kỳ mà không cần sự can thiệp thủ công.

Xử lý kết quả quét

Việc quét chỉ là bước đầu, quan trọng nhất là bạn phải hành động dựa trên kết quả:

  • Ưu tiên: Tập trung vào các lỗ hổng có mức độ nghiêm trọng CriticalHigh trước.
  • Nghiên cứu: Dùng CVE ID để tìm kiếm thêm thông tin chi tiết về lỗ hổng và các bước khắc phục từ nhà cung cấp phần mềm hoặc các cơ sở dữ liệu bảo mật công cộng.
  • Khắc phục: Cập nhật phần mềm, vá lỗi, thay đổi cấu hình, đóng các port không cần thiết.
  • Kiểm tra lại: Sau khi khắc phục, hãy chạy lại một tác vụ quét trên cùng mục tiêu để xác nhận rằng lỗ hổng đã được vá thành công.

Tối ưu hiệu suất

GVM có thể tiêu tốn nhiều tài nguyên. Để tối ưu:

  • Server riêng: Cài đặt GVM trên một server riêng biệt, không phải server bạn đang quét.
  • Giới hạn quét đồng thời: Nếu bạn quét nhiều server, hãy giới hạn số lượng tác vụ quét chạy song song để tránh quá tải.
  • Tăng tài nguyên: Nếu có thể, hãy cấp thêm RAM và CPU cho server GVM.

Cập nhật GVM và Feeds định kỳ

Thế giới bảo mật luôn biến động không ngừng, với các lỗ hổng mới được phát hiện mỗi ngày. Do đó, việc đảm bảo GVM của bạn luôn được cập nhật là điều cực kỳ quan trọng:

  • Cập nhật hệ thống: sudo apt update && sudo apt upgrade -y để cập nhật các gói GVM.
  • Cập nhật Feed: sudo gvm-feed-update để có các NVT mới nhất. Bạn cũng có thể thiết lập cron job để tự động chạy lệnh này hàng ngày hoặc hàng tuần.

Kết luận

OpenVAS (Greenbone Vulnerability Management) là một công cụ cực kỳ hữu ích, giúp bạn chủ động bảo vệ server Linux của mình. Bằng cách thường xuyên quét lỗ hổng, bạn có thể kịp thời phát hiện và khắc phục các điểm yếu, ngăn chặn chúng bị những kẻ tấn công khai thác.

Bảo mật không phải là một công việc làm một lần là xong, mà là một quá trình liên tục. Hãy biến việc quét lỗ hổng trở thành một yếu tố thiết yếu trong quy trình quản lý server của bạn. Bắt đầu ngay hôm nay để hệ thống của bạn được bảo vệ tốt hơn!

Share: