Hướng Dẫn Cài đặt Snort Trên Ubuntu 20.04 - 123HOST

Giới thiệu

Snort là hệ thống phát hiện xâm nhập mạng (NIDS) mã nguồn mở. Snort được sử dụng để giám sát dữ liệu gói được gửi hoặc nhận thông qua một interface cụ thể. Hệ thống phát hiện xâm nhập thể bắt được các mối đe dọa nhắm vào điểm yếu và lỗ hổng hệ thống bằng cách sử dụng các công nghệ phân tích giao thức và phát hiện dựa trên chữ ký.

Khi phần mềm NIDS được cài đặt và định cấu hình chính xác, có thể xác định các loại tấn công và nghi ngờ khác nhau như tấn công CGI, vi phạm chính sách mạng, SMB, nhiễm phần mềm độc hại, hệ thống bị xâm nhập,...

Trong hướng dẫn này, chúng ta học cách cài đặt Snort 3 trên Ubuntu 20.04 .

Một số tính năng mới của Snort 3:

  • Cho phép xử lý nhiều gói
  • Tự động tạo tài liệu tham khảo
  • Cho phép người dùng viết các plugin của riêng họ
  • Cho phép các quy tắc chạy nhanh hơn

Cài đặt Snort

Cập nhật hệ thống

Để đảm bảo rằng tất cả các phụ thuộc của Snort đều được cập nhật, hãy thực thi lệnh bên dưới:

bash (root)apt-get update && apt-get upgrade _

Trong quá trình cập nhật hệ thống chúng ta chờ từ 5 phút đến 15 phút.

Cài đặt thư viện cần thiết

Trước khi cài đặt Snort, chúng ta cần cài đặt các thư viện cần thiết trên hệ thống.

bash (root)apt install build-essential libpcap-dev libpcre3-dev libnet1-dev zlib1g-dev luajit hwloc libdnet-dev libdumbnet-dev bison flex liblzma-dev openssl libssl-dev pkg-config libhwloc-dev cmake cpputest libsqlite3-dev uuid-dev libcmocka-dev libnetfilter-queue-dev libmnl-dev autotools-dev libluajit-5.1-dev libunwind-dev -y _

Sau khi các gói phụ thuộc được cài đặt, chúng ta sẽ tiến hành tạo một thư mục nơi biên dịch và lưu giữ các file cho Snort bằng lệnh sau:

bash (root)mkdir snort-source-files _

Sau đó, tải và cài đặt phiên bản mới nhất của thư viện Snort (LibDAQ). Để cài đặt LibDAQ, chúng ta sẽ cần xây dựng và cài đặt bằng lệnh sau.

bash (root)git clone https://github.com/snort3/libdaq.git cd libdaq ./bootstrap ./configure make make install _

Phần phụ thuộc tiếp theo là Tcmalloc, sẽ tối ưu hóa việc phân bổ bộ nhớ và cung cấp khả năng sử dụng bộ nhớ tốt hơn.

Cài đặt Tcmalloc bằng lệnh sau.

bash (root)cd ../ wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.9.1/gperftools-2.9.1.tar.gz tar xzf gperftools-2.9.1.tar.gz cd gperftools-2.9.1 ./configure make make install _

Cài đặt Snort 3 trên Ubuntu 20.04

Sau khi các gói phụ thuộc được thiết lập, chúng ta sẽ tải xuống và cài đặt Snort 3 trên Ubuntu 20.04.

bash (root)cd ../ git clone https://github.com/snortadmin/snort3.git _

Kết quả như sau:

Kết quảCloning into 'snort3'... remote: Enumerating objects: 102065, done. remote: Counting objects: 100% (11155/11155), done. remote: Compressing objects: 100% (5712/5712), done. remote: Total 102065 (delta 8737), reused 7555 (delta 5441), pack-reused 90910 Receiving objects: 100% (102065/102065), 76.50 MiB | 3.86 MiB/s, done. Resolving deltas: 100% (88619/88619), done.

Di chuyển vào thư mục snort 3 và thực thi câu lệnh sau:

bash (root)cd snort3/ ./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc _

Tiếp theo di chuyển đến thư mục build để biên dịch và cài đặt Snort 3:

bash (root) cd build/ make make install _

Tiến hành cập nhật thư viện

bash (root)sudo ldconfig _

Sau đó tiến hành tạo symlink thư mực /usr/sbin/snort:

bash (root)ln -s /usr/local/bin/snort /usr/sbin/snort _

Sau khi cài đặt thành công chúng ta tiến hành kiểm tra version của snort:

bash (root)snort -V _ Kết quả ,,_ -*> Snort++ <*- o" )~ Version 3.1.27.0 '''' By Martin Roesch & The Snort Team http://snort.org/contact#team Copyright (C) 2014-2022 Cisco and/or its affiliates. All rights reserved. Copyright (C) 1998-2013 Sourcefire, Inc., et al. Using DAQ version 3.0.6 Using LuaJIT version 2.1.0-beta3 Using OpenSSL 1.1.1f 31 Mar 2020 Using libpcap version 1.9.1 (with TPACKET_V3) Using PCRE version 8.39 2016-06-14 Using ZLIB version 1.2.11 Using LZMA version 5.2.4

Cấu hình Network Interface

Tìm interface mà Snort đang lắng nghe lưu lượng mạng và bật chế độ promisc để có thể xem tất cả lưu lượng mạng được gửi đến.

bash (root)ip link set dev ens3 promisc on _

Trong ví dụ này chúng ta sẽ sử dụng interface ens3, chúng ta cần tiến hành thay tên interface phù hợp với máy chủ.

Kiểm tra bằng lệnh:

bash (root)ip add sh ens3 _

Kết quả như sau:

Kết quả2: ens3: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether fa:16:3e:03:8c:7e brd ff:ff:ff:ff:ff:ff inet 103.97.125.151/25 brd 103.97.125.255 scope global dynamic ens3 valid_lft 80350sec preferred_lft 80350sec inet6 fe80::f816:3eff:fe03:8c7e/64 scope link valid_lft forever preferred_lft forever

Tiếp theo, vô hiệu hóa Offloading để ngăn Snort 3 cắt bớt các gói lớn, tối đa là 1518 byte. Kiểm tra xem tính năng này có được bật hay không bằng lệnh sau.

bash (root)ethtool -k ens3 | grep receive-offload _ Kết quảgeneric-receive-offload: on large-receive-offload: on

Tắt nó bằng lệnh sau.

bash (root)ethtool -K ens3 gro off lro off _

Thực hiện kiểm tra lại:

bash (root)ethtool -k ens3 | grep receive-offload _

Kết quả như sau:

Kết quảgeneric-receive-offload: off large-receive-offload: off

Tiến hành điều chỉnh file cấu hình snort /etc/systemd/system/snort3-nic.service bằng cách thêm đoạn sau vào file:

bash (root)vi /etc/systemd/system/snort3-nic.service _

Thêm đoạn cấu hình sau:

/etc/systemd/system/snort3-nic.service[Unit] Description=Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot After=network.target [Service] Type=oneshot ExecStart=/usr/sbin/ip link set dev ens3 promisc on ExecStart=/usr/sbin/ethtool -K ens3 gro off lro off TimeoutStartSec=0 RemainAfterExit=yes [Install] WantedBy=default.target

Tải lại cấu hình của systemd bằng lệnh sau:

bash (root)systemctl daemon-reload _

Khởi động và kích hoạt dịch vụ khi khởi động với lệnh sau:

bash (root)systemctl enable --now snort3-nic.service _

Kết quả đầu ra như sau:

Kết quảCreated symlink /etc/systemd/system/default.target.wants/snort3-nic.service → /etc/systemd/system/snort3-nic.service.

Kiểm tra trạng thái của snort 3:

bash (root)systemctl status snort3-nic.service _

Kết quả đầu ra như sau:

Kết quả● snort3-nic.service - Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot Loaded: loaded (/etc/systemd/system/snort3-nic.service; enabled; vendor preset: enabled) Active: active (exited) since Wed 2022-04-20 11:40:22 +07; 41s ago Process: 123939 ExecStart=/usr/sbin/ip link set dev ens3 promisc on (code=exited, status=0/SUCCESS) Process: 123940 ExecStart=/usr/sbin/ethtool -K ens3 gro off lro off (code=exited, status=0/SUCCESS) Main PID: 123940 (code=exited, status=0/SUCCESS) Apr 20 11:40:22 ubuntu20 systemd[1]: Starting Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot... Apr 20 11:40:22 ubuntu20 systemd[1]: Finished Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot.

Cài đặt Community Rules cho snort 3

Trong Snort, Rulesets là lợi thế chính cho công cụ phát hiện xâm nhập. Có ba loại Quy tắc Snort: Community Rules, Registered Rules, Subscriber Rules.

Chúng ta sẽ cài đặt Community Rules .

Đầu tiên, tạo một thư mục cho Community Rules trong /usr/local/etc/

bash (root)mkdir /usr/local/etc/rules _

Tải Community Rules. Chúng ta có thể tìm thấy nó trên trang Snort3

bash (root)wget https://www.snort.org/downloads/community/snort3-community-rules.tar.gz _

Giải nén file download chúng ta vừa tải về và copy chúng vào thư mục /usr/local/etc/rules.

bash (root)tar xzf snort3-community-rules.tar.gz -C /usr/local/etc/rules/ _

Snort 3 bao gồm hai tệp cấu hình chính, snort_defaults.lua và snort.lua .

File snort.lua chứa cấu hình chính của Snort, cho phép triển khai và cấu hình xử lý Snort, bao gồm rules, ghi nhật ký, bộ lọc sự kiện, đầu ra,...

File snort_defaults.lua chứa các giá trị mặc định như đường dẫn đến rules, AppID,...

Chúng ta sẽ định cấu hình một trong các file cấu hình snort.lua. Mở file bằng trình chỉnh sửa yêu thích của và sẽ thấy một số cấu hình tương tự.

Thiết lập mạng mà chúng ta cần bảo vệ khỏi các cuộc tấn công làm giá trị cho biến HOME_NET và trỏ biến EXTERNAL_NET thành biến HOME_NET .

/usr/local/etc/snort/snort.lua... -- HOME_NET and EXTERNAL_NET must be set now -- setup the network addresses you are protecting #HOME_NET = 'any' HOME_NET = '103.97.125.151/25' -- set up the external network addresses. -- (leave as "any" in most situations) EXTERNAL_NET = 'any' EXTERNAL_NET = '!$HOME_NET' ...

Chúng ta cũng có thể chỉnh sửa cấu hình mặc định của Snort trong /usr/local/etc/snort/snort_defaults.lua và trong phần IPS, xác định vị trí cho các quy tắc.

bash (root)vi /usr/local/etc/snort/snort_defaults.lua _ /usr/local/etc/snort/snort_defaults.luaips = { -- use this to enable decoder and inspector alerts --enable_builtin_rules = true, -- use include for rules files; be sure to set your path -- note that rules files can include other rules files include = '/usr/local/etc/rules/snort3-community-rules/snort3-community.rules' }

Cấu hình snort chạy như dịch vụ

Nếu như chúng ta cần chạy Snort dưới dạng daemon, chúng ta có thể tạo một đơn vị dịch vụ systemd cho Snort.

Tạo một tài khoản người dùng không đăng nhập.

bash (root)useradd -r -s /usr/sbin/nologin -M -c SNORT_IDS snort _

Sau đó, tạo dịch vụ systemd để Snort được chạy với người dùng snort.

bash (root)vi /etc/systemd/system/snort3.service _

Thêm cấu hình sau vào file trên:

/etc/systemd/system/snort3.service[Unit] Description=Snort 3 NIDS Daemon After=syslog.target network.target [Service] Type=simple ExecStart=/usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none -l /var/log/snort -D -i ens3 -m 0x1b -u snort -g snort [Install] WantedBy=multi-user.target

Tải lại cấu hình systemd.

bash (root)systemctl daemon-reload _

Khởi động và cho phép Snort chạy khi khởi động hệ thống:

bash (root)systemctl enable --now snort3 _

Kiểm tra trạng thái dịch vụ.

bash (root)systemctl status snort3 _

Kết quả như sau:

Kết quả● snort3.service - Snort 3 NIDS Daemon Loaded: loaded (/etc/systemd/system/snort3.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2022-04-20 12:28:29 +07; 5s ago Main PID: 1361 (snort) Tasks: 2 (limit: 4612) Memory: 62.4M CGroup: /system.slice/snort3.service └─1361 /usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none -l /var/log/snort -D -i ens3 -m 0x1b -u snort -g snort Apr 20 12:28:29 ubuntu20 systemd[1]: Started Snort 3 NIDS Daemon.

Lời kết

Trong hướng dẫn này chúng ta đã tìm hiểu về cách cài đặt và cấu hình Snort là hệ thống phát hiện xâm nhập mạng trên Ubuntu 20.04. Hy vọng các bạn thành công trong việc cài đặt cũng như áp dụng được Snort vào trong thực tế, công việc.

Từ khóa » Cài đặt Snort