Cách cài đặt và thiết lập Snort IDS trên Linux để bảo mật mạng của bạn

Nếu bạn nghiêm túc về bảo mật mạng, thì việc cài đặt giải pháp IPS hoặc IDS là điều bắt buộc để củng cố vành đai mạng và làm chệch hướng lưu lượng mạng không mong muốn tiềm ẩn.


Snort là một trong những giải pháp IPS/IDS nguồn mở, miễn phí và nổi tiếng như vậy. Hãy tìm hiểu cách cài đặt và thiết lập Snort trên Linux để bảo vệ mạng của bạn khỏi các cuộc tấn công mạng.


Khịt mũi là gì?

đầu ra lệnh snort -v

Snort là phần mềm Hệ thống ngăn chặn và phát hiện xâm nhập mạng (NIDS/IPS) mã nguồn mở, như gợi ý tên, giúp bảo vệ vành đai mạng của bạn bằng cách thực thi các quy tắc và bộ lọc phát hiện và loại bỏ các gói độc hại tiềm ẩn được đưa vào mạng của bạn.

Với Snort, bạn sẽ có thể thực hiện ghi nhật ký lưu lượng mạng nâng cao, dò tìm và phân tích gói, đồng thời thiết lập Hệ thống ngăn chặn xâm nhập mạnh mẽ để bảo vệ mạng của bạn khỏi lưu lượng truy cập không mong muốn và có khả năng gây hại.

Điều kiện tiên quyết để cài đặt Snort

Trước khi cài đặt Snort, bạn cần thực hiện một số thiết lập sơ bộ. Điều này chủ yếu bao gồm việc cập nhật và nâng cấp hệ thống của bạn cũng như cài đặt các phần phụ thuộc mà Snort yêu cầu để hoạt động bình thường.

Bắt đầu bằng cách cập nhật và nâng cấp hệ thống của bạn.

Trên các bản phân phối Linux dựa trên Ubuntu và Debian:

 sudo apt update && apt upgrade -y 

Trên Arch Linux và các dẫn xuất của nó:

 sudo pacman -Syu 

Trên RHEL và Fedora:

 sudo dnf upgrade 

Khi hệ thống của bạn đã được nâng cấp, hãy tiếp tục cài đặt các phần phụ thuộc mà Snort yêu cầu. Đây là các lệnh bạn cần để chạy:

Trên Ubuntu và Debian, hãy chạy:

 sudo apt install -y build-essential autotools-dev libdumbnet-dev libluajit-5.1-dev libpcap-dev zlib1g-dev pkg-config libhwloc-dev cmake liblzma-dev openssl libssl-dev cpputest libsqlite3-dev libtool uuid-dev git autoconf bison flex libcmocka-dev libnetfilter-queue-dev libunwind-dev libmnl-dev ethtool libjemalloc-dev libpcre++-dev 

Trên Arch Linux, hãy chạy:

 sudo pacman -S gperftools hwloc hyperscan ibdaqlibdnet libmnl libpcap libunwind luajit lz4 openssl pcre pulledporkxz zlib cmake pkgconf 

Đối với RHEL và Fedora, hãy đưa ra lệnh sau:

 sudo dnf install gcc gcc-c++ libnetfilter_queue-devel git flex bison zlib zlib-devel pcre pcredevel libdnet tcpdump libnghttp2 wget xz-devel -y 

Ngoài ra, bạn cũng cần cài đặt thủ công Thư viện thu thập dữ liệu, LibDAQ để Snort hoạt động bình thường và cả gperftools để tạo tệp bản dựng.

Đầu tiên, tải xuống các tệp nguồn LibDAQ từ trang web chính thức bằng cách sử dụng lệnh wget. Sau đó, giải nén kho lưu trữ và di chuyển vào thư mục bằng cd. Bên trong thư mục, chạy khởi độngcấu hình tập lệnh sau đó tiến hành chuẩn bị tệp với make và cài đặt nó với thực hiện cài đặt yêu cầu.

 wget https://www.snort.org/downloads/snortplus/libdaq-3.0.11.tar.gz
tar -xzvf lib*
cd lib*
./bootstrap
./configure
make
sudo make install

Khi đã cài đặt LibDAQ, bạn cần cài đặt một phần phụ thuộc cuối cùng: gperftools. Bắt đầu bằng cách lấy các tệp nguồn từ repo GitHub. Giải nén các tệp, di chuyển vào thư mục và chạy tập lệnh cấu hình. Cuối cùng, cài đặt gói bằng lệnh make và make install.

 wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.10/gperftools-2.10.tar.gz
tar -xvzf gper* && cd gper
./configure
make
sudo make install

Khi các phụ thuộc này đã được cài đặt, bạn có thể chuyển sang các bước tiếp theo để cài đặt Snort.

Cài đặt Snort từ nguồn trên Linux

Xây dựng Snort từ nguồn

Với quá trình thiết lập sơ bộ, giờ đây bạn có thể tập trung vào việc cài đặt phần mềm thực tế. Bạn sẽ xây dựng nó từ nguồn, vì vậy trước tiên hãy lấy các tệp bản dựng cần thiết.

Sử dụng lệnh wget hoặc tải xuống các tệp theo cách thủ công từ trang tải xuống chính thức:

wget https://www.snort.org/downloads/snortplus/snort3-3.1.58.0.tar.gz

Tải xuống: khịt mũi

Khi kho lưu trữ chứa các tệp bản dựng đã tải xuống xong, hãy giải nén nó bằng lệnh tar:

 tar -xzvf snort* 

Di chuyển vào thư mục đã giải nén, chạy tập lệnh cấu hình, sử dụng lệnh tạo để chuẩn bị các tệp và cuối cùng cài đặt chúng với thực hiện cài đặt:

 cd snort*
./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc
cd build
make
sudo make install

Bây giờ Snort sẽ được cài đặt thành công trong hệ thống của bạn. Tuy nhiên, bạn chỉ cần hoàn thành một bước nữa. Khi phần mềm mới được cài đặt thủ công, thư mục cài đặt và các thư viện cần thiết có thể không được tự động đưa vào đường dẫn mặc định của hệ thống. Vì vậy, bạn có thể gặp lỗi khi khởi động ứng dụng.

Để tránh sự cố này, bạn cần chạy lệnh ldconfig. Nó sẽ đồng bộ bộ đệm thư viện dùng chung của hệ thống với các thư viện và tệp nhị phân mới được cài đặt. Chạy lệnh ldconfig từ trình bao gốc hoặc sử dụng tiền tố sudo:

 sudo ldconfig 

Bây giờ bạn đã hoàn thành tất cả các bước quan trọng cần thiết để cài đặt Snort. Để xác minh cài đặt chạy lệnh Snort với -V và bạn sẽ thấy đầu ra trả về tên phiên bản và dữ liệu khác.

 snort -V 

Khi bạn đã xác minh cài đặt Snort, hãy chuyển sang các bước tiếp theo để thiết lập nó dưới dạng IDS/IPS toàn diện.

Cấu hình ban đầu của Snort trên Linux

cấu hình giao diện mạng cho snort

Hiệu quả của Snort gần như hoàn toàn phụ thuộc vào chất lượng của các bộ quy tắc mà nó được cung cấp.

Tuy nhiên, trước khi thiết lập các quy tắc, bạn cần cấu hình các card mạng để hoạt động với Snort và bạn cũng cần kiểm tra xem cấu hình mặc định đang được Snort xử lý như thế nào. Bắt đầu bằng cách cấu hình các card mạng.

Đặt giao diện mạng ở chế độ hỗn tạp:

 sudo ip link set dev interface_name promisc on 

Sử dụng ethtool, tắt Giảm tải nhận chung (GRO) và Giảm tải nhận lớn (LRO) để ngăn các gói mạng lớn hơn bị cắt bớt:

 sudo ethtool -K interface_name gro off lro off 
Kiểm tra snort với cấu hình mặc định

Kiểm tra xem Snort hoạt động như thế nào với cấu hình mặc định:

 snort -c /usr/local/etc/snort/snort.lua 

Điều này sẽ trả về tín hiệu đầu ra thành công rằng bạn đã cài đặt và thiết lập Snort chính xác trong hệ thống của mình. Giờ đây, bạn có thể mày mò các tính năng của nó và thử nghiệm với các cấu hình khác nhau để tìm ra bộ quy tắc tốt nhất nhằm bảo mật mạng của mình.

Thiết lập các quy tắc và thực thi chúng với Snort

Với các cài đặt cơ bản đã có, Snort hiện đã sẵn sàng để bảo vệ chu vi của bạn. Như bạn đã biết, Snort cần các bộ quy tắc để xác định tính hợp lệ của lưu lượng truy cập, hãy thiết lập một vài bộ quy tắc miễn phí do cộng đồng tạo cho Snort.

Snort đọc các bộ quy tắc và cấu hình từ các thư mục cụ thể. Vì vậy, trước tiên, sử dụng các lệnh mkdir và touch, tạo một vài thư mục quan trọng để lưu trữ các quy tắc và dữ liệu liên quan khác cho Snort:

 sudo mkdir -p /usr/local/etc/{lists,so_rules,rules} 
sudo touch /usr/local/etc/rules/local.rules
sudo touch /usr/local/etc/lists/default.blocklist

Với các thư mục này được tạo, bạn có thể tải xuống bộ quy tắc cộng đồng từ trang web chính thức bằng cách sử dụng lệnh wget:

 wget https://www.snort.org/downloads/community/snort3-community-rules.tar.gz 

Khi bộ quy tắc hoàn tất tải xuống, hãy giải nén và sao chép nó vào thư mục /usr/local/etc/rules/ danh mục.

 tar -xvzf snort3-com*
cd snort3-com*
cp * /usr/local/etc/rules/
snort phát hiện các yêu cầu icmp được gửi từ ip bên ngoài

Để chạy Snort với bộ quy tắc, hãy thực hiện lệnh này:

 sudo snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/snort3-community.rules -i interface_name -s 65535 -k none 

Sự cố của lệnh:

  • -c đặt đường dẫn đến tệp cấu hình mặc định
  • -R đặt đường dẫn đến bộ quy tắc để thực thi
  • -Tôi đặt giao diện
  • -S loại bỏ giới hạn snaplen
  • -k bỏ qua tổng kiểm tra

Điều này sẽ xác thực cấu hình và thực thi tất cả các bộ quy tắc trên Snort. Ngay khi phát hiện bất kỳ sự xáo trộn mạng nào, nó sẽ cảnh báo bạn bằng một thông báo trên bảng điều khiển.

Nếu muốn tạo và thực thi bộ quy tắc của riêng mình, bạn có thể tìm hiểu thêm về bộ quy tắc này từ các trang tài liệu chính thức.

Thiết lập ghi nhật ký với Snort

đăng nhập với khịt mũi

Theo mặc định, Snort không xuất bất kỳ nhật ký nào. Bạn cần chỉ định với -L để khởi động Snort ở chế độ ghi nhật ký, xác định loại tệp nhật ký và -l để đặt thư mục ghi nhật ký cho Snort để kết xuất nhật ký.

Đây là lệnh để bắt đầu Snort khi bật ghi nhật ký:

 sudo snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/snort3-community.rules -i interface_name -s 65535 -k none -L file_type -l /var/log/snort 

Sự cố của lệnh:

  • -c đặt đường dẫn đến tệp cấu hình mặc định
  • -R đặt đường dẫn đến bộ quy tắc để thực thi
  • -Tôi đặt giao diện
  • -S loại bỏ giới hạn snaplen
  • -k bỏ qua tổng kiểm tra
  • -L bật chế độ ghi nhật ký và xác định loại tệp nhật ký
  • -l xác định đường dẫn để lưu trữ nhật ký

Lưu ý rằng trong lệnh ví dụ, thư mục ghi nhật ký được đặt thành /var/log/khịt mũi. Mặc dù đây là phương pháp được khuyến nghị, nhưng bạn có thể tự do lưu trữ nhật ký của mình ở nơi khác.

Bạn có thể đọc các tệp nhật ký từ Snort từ thư mục bạn đã xác định hoặc chuyển chúng vào phần mềm SIEM như Splunk để phân tích thêm.

Thêm Snort làm Daemon khởi động hệ thống

daemon khịt mũi và chạy

Mặc dù bạn đã cài đặt và thiết lập Snort, nhưng bạn cần đảm bảo rằng nó bắt đầu thực thi khi khởi động và chạy như một daemon nền. Việc thêm nó làm dịch vụ hệ thống tự khởi động sẽ đảm bảo Snort luôn hoạt động và bảo vệ hệ thống của bạn mọi lúc nó trực tuyến.

Sau đây là cách thêm trình nền khởi động Snort trên Linux:

  1. Bắt đầu bằng cách tạo một tệp dịch vụ systemd mới:
     touch /lib/systemd/system/snort.service 
  2. Mở tệp trong trình soạn thảo văn bản bạn chọn và điền dữ liệu sau vào tệp. Bạn có thể sửa đổi các cờ để phù hợp với nhu cầu của mình:
     [Unit]
    Description=Snort Daemon
    After=syslog.target network.target
    [Service]
    Type=simple
    ExecStart=/usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/snort3-community.rules -s 65535 -k none -l /var/log/snort -D -L pcap -i ens33
    [Install]
    WantedBy=multi-user.target
  3. Lưu và thoát tệp. Sau đó, sử dụng các lệnh service và systemctl, kích hoạt và bắt đầu tập lệnh:
     sudo systemctl enable snort.service
    sudo snort start

Daemon nền Snort bây giờ sẽ được thiết lập và chạy. Bạn có thể xác minh trạng thái của tập lệnh bằng cách sử dụng trạng thái systemctl khịt mũi yêu cầu. Nó sẽ trả về một đầu ra tích cực.

Bây giờ bạn đã biết cách bảo vệ mạng của mình bằng Snort IDS

Mặc dù triển khai IDS là một phương pháp hay, nhưng đây là biện pháp thụ động hơn là biện pháp chủ động. Cách tốt nhất để cải thiện và đảm bảo tính bảo mật cho mạng của bạn là liên tục kiểm tra mạng và tìm kiếm các lỗi để khắc phục.

Kiểm tra thâm nhập là một cách tuyệt vời để tìm các lỗ hổng có thể khai thác và vá chúng.

Previous Post
Next Post

post written by: