Trong bối cảnh các mối đe dọa an ninh mạng ngày càng tinh vi, việc bảo vệ hệ thống trở thành ưu tiên hàng đầu. Một hệ thống phát hiện và phòng chống xâm nhập (IDS/IPS) mạnh mẽ là lá chắn không thể thiếu. Suricata, một công cụ mã nguồn mở hiệu suất cao, chính là giải pháp lý tưởng cho các máy chủ Ubuntu. Hướng dẫn này sẽ cung cấp cho bạn quy trình chi tiết để cài đặt Suricata trên Ubuntu 20.04, từ các bước chuẩn bị ban đầu đến cấu hình và vận hành. Hãy cùng AZWEB khám phá cách biến máy chủ của bạn thành một pháo đài an ninh vững chắc, sẵn sàng đối phó với mọi cuộc tấn công tiềm tàng.
Giới thiệu về Suricata và vai trò trong an ninh mạng
An ninh mạng là một cuộc chiến không hồi kết. Mỗi ngày, hàng ngàn hệ thống trên toàn thế giới phải đối mặt với các cuộc tấn công tinh vi, từ quét lỗ hổng, khai thác phần mềm độc hại đến các cuộc tấn công từ chối dịch vụ (DDoS). Để bảo vệ dữ liệu và duy trì hoạt động ổn định, việc triển khai một hệ thống phát hiện và phòng chống xâm nhập (IDS/IPS) là cực kỳ quan trọng. Chúng hoạt động như những người lính gác thầm lặng, liên tục giám sát lưu lượng mạng để phát hiện và ngăn chặn các hành vi đáng ngờ trước khi chúng gây ra thiệt hại.
Vậy Suricata là gì? Suricata là một công cụ IDS/IPS mã nguồn mở, miễn phí và hiệu suất cao. Điểm nổi bật của Suricata là khả năng xử lý đa luồng (multi-threading), cho phép nó tận dụng tối đa sức mạnh của các bộ xử lý đa lõi hiện đại. Điều này giúp Suricata phân tích lưu lượng mạng tốc độ cao mà không làm giảm hiệu suất hệ thống. Ngoài ra, nó còn hỗ trợ các bộ quy tắc (rule sets) phổ biến như Emerging Threats và Snmp là gì, cung cấp một cơ sở dữ liệu khổng lồ về các mối đe dọa đã biết.

Trên môi trường Ubuntu, một hệ điều hành phổ biến cho máy chủ, Suricata đóng vai trò như một lớp bảo vệ chủ động. Nó không chỉ ghi lại các sự kiện đáng ngờ (chế độ IDS) mà còn có thể chủ động chặn các kết nối độc hại (chế độ IPS). Đối với các doanh nghiệp lưu trữ website, ứng dụng hoặc dữ liệu khách hàng, việc cài đặt Suricata giúp giảm thiểu rủi ro bị tấn công, bảo vệ uy tín và tránh các tổn thất tài chính. Ngay cả đối với người dùng cá nhân sử dụng máy chủ cho các dự án riêng, Suricata cũng là một công cụ hữu ích để tăng cường an ninh cho không gian số của mình. Nhu cầu này ngày càng trở nên cấp thiết khi các cuộc tấn công tự động ngày càng gia tăng.
Yêu cầu hệ thống và chuẩn bị môi trường Ubuntu 20.04
Trước khi đi vào cài đặt, việc chuẩn bị một môi trường phù hợp là bước đầu tiên và quan trọng nhất để đảm bảo Suricata hoạt động ổn định và hiệu quả. Bạn cần đảm bảo cả phần cứng và phần mềm của máy chủ đáp ứng các yêu cầu tối thiểu.
Yêu cầu phần cứng và phần mềm tối thiểu
Để Suricata có thể phân tích lưu lượng mạng một cách mượt mà, cấu hình máy chủ của bạn cần đủ mạnh. Dưới đây là các yêu cầu tối thiểu được khuyến nghị:
- CPU: Tối thiểu 2 lõi. Tuy nhiên, để tận dụng khả năng đa luồng của Suricata, khuyến nghị sử dụng CPU có 4 lõi trở lên.
- RAM: Tối thiểu 4 GB. Nếu hệ thống của bạn xử lý lượng truy cập lớn hoặc sử dụng nhiều bộ quy tắc, 8 GB RAM hoặc hơn sẽ là lựa chọn tối ưu.
- Dung lượng lưu trữ: Ít nhất 20 GB dung lượng trống để chứa hệ điều hành, Suricata và các tệp nhật ký (logs). Dung lượng lưu trữ nhật ký có thể tăng lên nhanh chóng, vì vậy hãy cân nhắc một ổ cứng lớn hơn nếu bạn cần lưu trữ log trong thời gian dài.
- Hệ điều hành: Bài viết này tập trung vào Ubuntu 20.04 LTS (Focal Fossa). Đảm bảo bạn đang sử dụng đúng phiên bản này để các lệnh và gói phụ trợ tương thích.
Ngoài ra, bạn cũng cần một card mạng (Network Interface Card – NIC) có khả năng hoạt động ở chế độ promiscuous để Suricata có thể “nghe lén” toàn bộ lưu lượng truy cập đi qua nó, chứ không chỉ các gói tin dành riêng cho máy chủ.
Cài đặt môi trường và các công cụ hỗ trợ
Khi đã đảm bảo về phần cứng, bước tiếp theo là chuẩn bị môi trường phần mềm trên Ubuntu. Quá trình này bao gồm việc cập nhật hệ thống và cài đặt các gói phụ thuộc cần thiết.
Đầu tiên, hãy mở terminal và cập nhật danh sách các gói phần mềm của hệ thống để đảm bảo bạn đang sử dụng các phiên bản mới nhất.
sudo apt update && sudo apt upgrade -y

Lệnh này sẽ tải về danh sách các gói mới nhất từ repository và sau đó nâng cấp tất cả các gói đã cài đặt trên hệ thống của bạn. Quá trình này có thể mất vài phút tùy thuộc vào số lượng bản cập nhật.
Tiếp theo, bạn cần cài đặt các công cụ và thư viện mà Suricata yêu cầu để biên dịch và hoạt động. Các gói này bao gồm trình biên dịch, thư viện bắt gói tin và các tiện ích khác.
sudo apt install build-essential libpcap-dev libpcre3-dev libyaml-dev zlib1g-dev libmagic-dev libnetfilter-queue-dev libnet1-dev libjansson-dev -y
Cuối cùng, hãy chắc chắn rằng bạn đang sử dụng một tài khoản có quyền sudo. Hầu hết các lệnh cài đặt và cấu hình hệ thống đều yêu cầu quyền quản trị viên. Nếu bạn chưa có, bạn cần liên hệ với quản trị viên hệ thống để được cấp quyền cần thiết. Việc chuẩn bị kỹ lưỡng sẽ giúp quá trình cài đặt diễn ra suôn sẻ hơn.
Các bước cài đặt Suricata trên Ubuntu 20.04
Sau khi đã chuẩn bị xong môi trường, chúng ta sẽ tiến hành cài đặt Suricata. Phương pháp đơn giản và được khuyến nghị nhất là sử dụng repository chính thức từ Open Information Security Foundation (OISF), tổ chức đứng sau dự án Suricata. Điều này đảm bảo bạn luôn nhận được phiên bản ổn định và các bản cập nhật bảo mật mới nhất.
Cài đặt Suricata từ repository chính thức
Để thêm repository của OISF vào hệ thống Ubuntu của bạn, hãy thực hiện lệnh sau trong terminal. Repository này chứa các gói Suricata đã được xây dựng sẵn và tối ưu hóa cho Ubuntu.
sudo add-apt-repository ppa:oisf/suricata-stable
Hệ thống sẽ yêu cầu bạn xác nhận việc thêm PPA (Personal Package Archive). Nhấn Enter để tiếp tục.

Sau khi thêm repository thành công, bạn cần cập nhật lại danh sách các gói của mình để hệ thống nhận biết được các gói mới từ PPA vừa thêm.
sudo apt update
Bây giờ, bạn đã sẵn sàng để cài đặt Suricata. Sử dụng lệnh apt install để thực hiện việc này. Gói suricata-oinkmaster cũng thường được cài đặt kèm để hỗ trợ việc quản lý các bộ quy tắc.
sudo apt install suricata suricata-oinkmaster -y
Trình quản lý gói apt sẽ tự động tải xuống và cài đặt Suricata cùng với tất cả các phụ thuộc cần thiết. Quá trình này thường diễn ra nhanh chóng.
Xác nhận và kiểm tra phiên bản đã cài đặt
Khi quá trình cài đặt hoàn tất, điều quan trọng là phải xác minh rằng Suricata đã được cài đặt đúng cách và dịch vụ đang hoạt động.
Đầu tiên, hãy kiểm tra phiên bản Suricata vừa cài đặt bằng lệnh:
suricata -V
Lệnh này sẽ hiển thị thông tin phiên bản chi tiết, ví dụ: “This is Suricata version 6.0.8 RELEASE”. Điều này xác nhận rằng tệp thực thi của Suricata đã có trong hệ thống của bạn.

Tiếp theo, hãy kiểm tra trạng thái của dịch vụ Suricata. Dịch vụ này thường được cấu hình để tự động khởi động sau khi cài đặt.
sudo systemctl status suricata
Nếu dịch vụ đang chạy bình thường, bạn sẽ thấy trạng thái active (running) màu xanh lá. Nếu dịch vụ không hoạt động, bạn có thể khởi động nó bằng lệnh sudo systemctl start suricata và kích hoạt để nó tự khởi động cùng hệ thống bằng lệnh sudo systemctl enable suricata. Việc kiểm tra này đảm bảo rằng nền tảng cho hệ thống giám sát của bạn đã được thiết lập thành công.
Cấu hình cơ bản và nâng cao cho Suricata
Cài đặt thành công chỉ là bước khởi đầu. Để Suricata thực sự hữu ích, bạn cần cấu hình nó cho phù hợp với môi trường mạng của mình. Tệp cấu hình chính của Suricata là suricata.yaml, nằm trong thư mục /etc/suricata/.
Cấu hình tệp suricata.yaml cơ bản
Tệp suricata.yaml chứa rất nhiều tùy chọn, nhưng ban đầu bạn chỉ cần quan tâm đến một vài tham số quan trọng. Hãy mở tệp này bằng một trình soạn thảo văn bản như nano hoặc vim với quyền sudo.
sudo nano /etc/suricata/suricata.yaml
- Thiết lập HOME_NET: Đây là tham số quan trọng nhất. Nó định nghĩa dải địa chỉ IP của mạng nội bộ mà bạn muốn bảo vệ. Suricata sử dụng biến này để phân biệt giữa lưu lượng truy cập nội bộ và bên ngoài. Tìm đến dòng
HOME_NET:và thay đổi giá trị mặc định thành dải IP của bạn. Ví dụ:
HOME_NET: "[192.168.1.0/24]"
Nếu máy chủ của bạn có nhiều dải IP, bạn có thể liệt kê chúng, cách nhau bởi dấu phẩy.

- Chọn giao diện mạng (Network Interface): Bạn cần chỉ định giao diện mạng mà Suricata sẽ lắng nghe. Tìm đến phần
af-packetvà tìm dònginterface:. Thay đổieth0thành tên giao diện mạng chính của bạn (bạn có thể tìm tên giao diện bằng lệnhip a). Ví dụ:
af-packet:
- interface: ens18
- Thiết lập logging: Suricata hỗ trợ nhiều định dạng log. Mặc định, nó sẽ ghi log vào thư mục
/var/log/suricata/. Bạn có thể kiểm tra các tệp nhưfast.log(cảnh báo ngắn gọn) vàeve.json(log chi tiết dưới dạng JSON). Trong giai đoạn đầu, cấu hình mặc định là đủ dùng.
Sau khi thực hiện các thay đổi, hãy lưu và đóng tệp.
Tinh chỉnh nâng cao và tích hợp rule sets
Sức mạnh thực sự của Suricata nằm ở các bộ quy tắc (rule sets). Mặc định, Suricata có một số quy tắc cơ bản, nhưng để hiệu quả, bạn cần cập nhật và bổ sung chúng từ các nguồn cộng đồng.
- Cập nhật Rule Sets: Ubuntu đi kèm với một công cụ tiện lợi là
suricata-updateđể quản lý các bộ quy tắc. Chạy lệnh sau để tải về bộ quy tắc miễn phí Emerging Threats (ET Open):
sudo suricata-update
Lệnh này sẽ tải xuống, xử lý và cài đặt các quy tắc mới nhất vào thư mục /var/lib/suricata/rules/. Bạn nên chạy lệnh này định kỳ (ví dụ, hàng ngày bằng cron job) để luôn được bảo vệ khỏi các mối đe dọa mới.

- Thiết lập chế độ IDS hoặc IPS:
- IDS (Intrusion Detection System): Chế độ mặc định. Suricata chỉ phát hiện và ghi lại các mối đe dọa mà không can thiệp. Đây là chế độ an toàn để bắt đầu, giúp bạn quan sát và tránh các cảnh báo sai (false positives).
- IPS (Intrusion Prevention System): Chế độ phòng chống. Suricata sẽ chủ động chặn (block/drop) các gói tin hoặc kết nối bị coi là độc hại. Để kích hoạt chế độ IPS, bạn cần cấu hình Suricata để hoạt động với Netfilter thông qua NFQUEUE. Điều này đòi hỏi cấu hình iptables để chuyển hướng lưu lượng truy cập qua Suricata. Ví dụ:
sudo iptables -I FORWARD -j NFQUEUE
Bạn cũng cần thay đổi các quy tắc từ alert thành drop trong các tệp quy tắc hoặc tạo quy tắc tùy chỉnh. Đây là một bước nâng cao và cần được thực hiện cẩn thận để tránh chặn nhầm lưu lượng hợp lệ.
Sau mỗi lần thay đổi cấu hình hoặc cập nhật quy tắc, đừng quên khởi động lại dịch vụ Suricata để áp dụng các thay đổi:
sudo systemctl restart suricata
Kiểm tra hoạt động và xử lý sự cố sau cài đặt
Sau khi cài đặt và cấu hình Suricata, bạn cần đảm bảo rằng nó đang hoạt động đúng như mong đợi. Việc kiểm tra và biết cách xử lý các sự cố phổ biến là kỹ năng quan trọng để duy trì một hệ thống an ninh mạng ổn định.
Cách kiểm tra Suricata hoạt động đúng cách
Có nhiều cách để xác minh rằng Suricata đang phân tích lưu lượng mạng và phát hiện các mối đe dọa.
- Kiểm tra cấu hình: Trước khi khởi động lại dịch vụ, hãy luôn kiểm tra xem tệp cấu hình
suricata.yamlcó lỗi cú pháp hay không. Sử dụng lệnh sau:
sudo suricata -T -c /etc/suricata/suricata.yaml -v
Nếu cấu hình hợp lệ, lệnh sẽ kết thúc mà không báo lỗi. Nếu có lỗi, nó sẽ chỉ ra dòng và vấn đề cụ thể để bạn sửa chữa.
- Theo dõi tệp log: Tệp log là nơi bạn có thể thấy các cảnh báo của Suricata. Tệp
fast.logcung cấp thông tin cảnh báo nhanh chóng và dễ đọc. Mở một terminal và theo dõi tệp này theo thời gian thực:
sudo tail -f /var/log/suricata/fast.log

- Tạo traffic thử nghiệm: Để kích hoạt một cảnh báo, bạn có thể tạo ra một lưu lượng mạng khớp với một trong các quy tắc của Suricata. Một cách đơn giản là sử dụng một quy tắc kiểm tra của Emerging Threats. Ví dụ, bạn có thể dùng lệnh
curlđể cố gắng truy cập một tên miền kiểm tra:
curl http://testmyids.com
Ngay sau khi chạy lệnh này, bạn sẽ thấy một cảnh báo mới xuất hiện trong tệp fast.log, tương tự như: [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**]. Điều này chứng tỏ Suricata đang giám sát và phát hiện thành công các hoạt động đáng ngờ.
Xử lý sự cố phổ biến
Trong quá trình vận hành, bạn có thể gặp phải một số vấn đề. Dưới đây là cách xử lý một vài sự cố thường gặp:
- Suricata không khởi động hoặc bị crash:
- Nguyên nhân: Thường là do lỗi cú pháp trong tệp
suricata.yaml, thiếu tài nguyên (RAM/CPU), hoặc vấn đề về quyền truy cập vào các tệp hoặc giao diện mạng. - Giải pháp:
- Kiểm tra log hệ thống để tìm thông báo lỗi chi tiết:
sudo journalctl -u suricata.service. - Sử dụng lệnh
suricata -Tđể kiểm tra lại tệp cấu hình. - Đảm bảo máy chủ có đủ tài nguyên. Sử dụng các công cụ như
htophoặctopđể kiểm tra. - Vấn đề với rule sets hoặc cảnh báo sai lệch (False Positives):
- Nguyên nhân: Một số quy tắc có thể quá nhạy cảm với môi trường mạng của bạn, tạo ra cảnh báo cho các lưu lượng hợp lệ. Hoặc
suricata-updatecó thể thất bại khi tải quy tắc. - Giải pháp:
- Cảnh báo sai: Xác định quy tắc gây ra cảnh báo sai (dựa vào SID trong log). Bạn có thể vô hiệu hóa quy tắc đó bằng cách thêm nó vào tệp
disable.confvà chạy lạisuricata-update. - Cập nhật quy tắc lỗi: Kiểm tra kết nối mạng của máy chủ. Chạy
suricata-update --debugđể xem chi tiết quá trình và tìm ra lỗi.

Việc chủ động kiểm tra và xử lý sự cố sẽ giúp bạn duy trì một hệ thống IDS/IPS mạnh mẽ và đáng tin cậy.
Lời khuyên và điều nên làm trong vận hành Suricata
Việc cài đặt và cấu hình Suricata chỉ là bước khởi đầu. Để hệ thống bảo mật của bạn luôn hiệu quả và ổn định trong dài hạn, việc vận hành và bảo trì đúng cách là vô cùng quan trọng. Dưới đây là những lời khuyên từ AZWEB mà bạn nên tuân thủ.
- Thường xuyên cập nhật rules và phần mềm: Các mối đe dọa mạng phát triển không ngừng. Hãy thiết lập một cron job để tự động chạy
suricata-updatehàng ngày, đảm bảo hệ thống của bạn luôn được trang bị những “chữ ký” nhận dạng mới nhất. Đồng thời, hãy theo dõi và cập nhật phiên bản Suricata khi có bản phát hành mới để tận dụng các cải tiến về hiệu suất và tính năng. - Theo dõi log và cảnh báo định kỳ: Đừng chỉ cài đặt rồi quên. Hãy dành thời gian hàng ngày hoặc hàng tuần để xem lại các tệp log như
fast.logvàeve.json. Việc này giúp bạn phát hiện sớm các hoạt động bất thường, nhận diện các cuộc tấn công tiềm tàng và tinh chỉnh lại các quy tắc để giảm thiểu cảnh báo sai. - Thực hiện sao lưu cấu hình và log quan trọng: Tệp cấu hình
suricata.yamlvà các tệp tùy chỉnh quy tắc (local.rules,disable.conf) là tài sản quý giá. Hãy sao lưu chúng thường xuyên. Các tệp log cũng rất quan trọng cho việc điều tra sự cố sau này, vì vậy hãy cân nhắc việc lưu trữ chúng ở một nơi an toàn hoặc chuyển tiếp đến một hệ thống quản lý log tập trung (SIEM). - Không tắt Suricata nếu không có lý do chính đáng: Suricata là người lính gác của bạn. Việc tắt nó đi, dù chỉ trong thời gian ngắn, cũng có thể tạo ra một “điểm mù” an ninh, cho phép kẻ tấn công lợi dụng cơ hội. Chỉ tắt dịch vụ khi thực sự cần thiết, chẳng hạn như trong quá trình bảo trì hệ thống có kế hoạch.
- Tối ưu tài nguyên để đảm bảo hệ thống hoạt động ổn định: Suricata có thể tiêu tốn khá nhiều CPU và RAM, đặc biệt với lưu lượng truy cập lớn. Hãy theo dõi hiệu suất hệ thống bằng các công cụ như
htop. Nếu cần, bạn có thể tinh chỉnh cấu hình Suricata, ví dụ như giảm số lượng luồng xử lý hoặc vô hiệu hóa các bộ quy tắc không cần thiết để giảm tải cho máy chủ.

Bằng cách tuân thủ những nguyên tắc vận hành này, bạn không chỉ đảm bảo Suricata hoạt động hiệu quả mà còn xây dựng một tư thế an ninh chủ động và bền vững cho toàn bộ hệ thống của mình.
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ừ việc chuẩn bị môi trường, cài đặt, cấu hình cho đến vận hành Suricata trên Ubuntu 20.04. Việc triển khai thành công một hệ thống IDS/IPS như Suricata không chỉ là một bài tập kỹ thuật, mà là một bước đi chiến lược trong việc củng cố hàng rào an ninh cho máy chủ của bạn. Suricata với hiệu suất cao và khả năng tùy biến mạnh mẽ, cung cấp một lớp bảo vệ chủ động, giúp bạn phát hiện và ngăn chặn sớm các mối đe dọa trước khi chúng kịp gây hại.
Bằng cách đầu tư thời gian để thiết lập và duy trì Suricata, bạn đang trang bị cho hệ thống của mình một công cụ giám sát mạnh mẽ, nâng cao khả năng phục hồi và bảo vệ dữ liệu quan trọng. AZWEB khuyến khích bạn không ngần ngại bắt tay vào triển khai giải pháp này. An ninh mạng là một quá trình liên tục, và việc chủ động hành động ngay hôm nay chính là cách tốt nhất để đảm bảo an toàn cho ngày mai.
Để tiếp tục nâng cao kiến thức và kỹ năng vận hành Suricata, bạn có thể tham khảo thêm tài liệu chính thức từ trang chủ Suricata và tham gia các diễn đàn cộng đồng an ninh mạng.