Thursday, December 26, 2024
Google search engine
HomeGuest BlogsHow To Install Suricata on Debian 11/Debian 10

How To Install Suricata on Debian 11/Debian 10

.tdi_3.td-a-rec{text-align:center}.tdi_3 .td-element-style{z-index:-1}.tdi_3.td-a-rec-img{text-align:left}.tdi_3.td-a-rec-img img{margin:0 auto 0 0}@media(max-width:767px){.tdi_3.td-a-rec-img{text-align:center}}

One of the tasks of a system admin is maintaining the security of servers through network security monitoring and intrusion prevention. One of the tools that can perfectly be used to achieve this objective is Suricata.

What is Suricata IDS / IPS Tool

Suricata is one of the best open-source and independent threat and intrusion detection systems. It was developed by the Open Information Security Foundation (OISF) producing a beat version in 2009 and later a standard release in July 2010. Suricata quickly identifies and stops sophisticated attacks by combining network security monitoring (NSM), intrusion prevention (IPS), PCAP processing, and intrusion detection (IDS).

Suricata is able to prevent intrusion with both IDS and IPS in that, Intrusion Detection Systems (IDS) is able to analyze network traffic for signatures matching known attacks and Intrusion Prevention Systems (IPS) analyses the packets and it also has the ability to stop the packets from being delivered depending on the attack detected.

.tdi_2.td-a-rec{text-align:center}.tdi_2 .td-element-style{z-index:-1}.tdi_2.td-a-rec-img{text-align:left}.tdi_2.td-a-rec-img img{margin:0 auto 0 0}@media(max-width:767px){.tdi_2.td-a-rec-img{text-align:center}}

Features of Suricata IDS / IPS Tool are:

  • It supports hashing and file extraction
  • It offers multi threaded signature detection.
  • Suricata offers more support for application layer protocols.
  • Suricata can be easilty integrated with other tools such as Elasticsearch/Logstash, Kibana, Splunk e.t.c for logs processing due to its amazing ability to write logs in YAML and JSON formats.
  • Has IP reputation used to load large amounts of data ,live load support e.t.c
  • Supports TCP/IP engines
  • It supports the Lua Scripting language which can be used to modify the outputs and create complex and detailed signature logic
  • VXLAN support since 4.1.5

By the end of this guide, you should be able to install Suricata IDS / IPS Tool on Debian 11/10.

Step 1 – Install Suricata IDS / IPS Tool on Debian 11/10

There are multiple ways to get Suricata IDS / IPS Tool installed on your Debian 11/10 machine.

Option 1 – Install Suricata IDS / IPS Tool on Debian 11/10 from APT.

Suricata is available in the default Debian 11/10 repositories but the main problem with this installation is that the available versions are old.

Check the available repositories for Suricata on Debian 11/10 and the version available in the repositories

$ sudo apt-cache show suricata
Package: suricata
Version: 1:6.0.1-3
Installed-Size: 6466
Maintainer: Pierre Chifflier <[email protected]>
Architecture: amd64
Replaces: libhtp1 (<< 0.5.16), suricata-hyperscan (<< 3.2)
Depends: python3 (>= 3.2), python3-simplejson, python3:any, libbpf0 (>= 5.2.6), libc6 (>= 2.29), libcap-ng0 (>= 0.7.9), libevent-2.1-7 (>= 2.1.8-stable), libevent-pthreads-2.1-7 (>= 2.1.8-stable), libgcc-s1 (>= 4.2), libhiredis0.14 (>= 0.14.1), libhtp2 (>= 1:0.5.36-1~), libhyperscan5 (>= 5.4.0), libjansson4 (>= 2.2), libluajit-5.1-2 (>= 2.0.4+dfsg), liblz4-1 (>= 0.0~r127), libmagic1 (>= 5.12), libmaxminddb0 (>= 1.0.2), libnet1 (>= 1.1.5), libnetfilter-log1 (>= 0.0.13), libnetfilter-queue1 (>= 1.0.2), libnfnetlink0, libnspr4 (>= 2:4.9-2~), libnss3 (>= 2:3.13.4-2~), libpcap0.8 (>= 1.0.0), libpcre3, libyaml-0-2, zlib1g (>= 1:1.1.4), lsb-base (>= 3.0-6)
Pre-Depends: dpkg (>= 1.15.7.2), init-system-helpers (>= 1.54~)
Recommends: snort-rules-default, suricata-update
Suggests: libtcmalloc-minimal4
.........

If you choose this method, install Suricata IDS / IPS Tool on Debian 11/10 using the command below.

sudo apt install suricata

Dependency tree:

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libevent-core-2.1-7 libevent-pthreads-2.1-7 libhiredis0.14 libhtp2
  libhyperscan5 libluajit-5.1-2 libluajit-5.1-common libnet1 libnetfilter-log1
  libnetfilter-queue1 oinkmaster python3-simplejson python3-yaml
  snort-rules-default suricata-update
Suggested packages:
  snort | snort-pgsql | snort-mysql libtcmalloc-minimal4
The following NEW packages will be installed:
  libevent-core-2.1-7 libevent-pthreads-2.1-7 libhiredis0.14 libhtp2
  libhyperscan5 libluajit-5.1-2 libluajit-5.1-common libnet1 libnetfilter-log1
  libnetfilter-queue1 oinkmaster python3-simplejson python3-yaml
  snort-rules-default suricata suricata-update
0 upgraded, 16 newly installed, 0 to remove and 19 not upgraded.
Need to get 5,836 kB of archives.
After this operation, 28.1 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y

Option 2 – Install Suricata IDS / IPS Tool on Debian 11/10 from source

With this installation method, you are guaranteed the latest available version of the Suricata IDS / IPS Tool.

Update your APT package index.

sudo apt update

Then proceed and install the required packages to install Suricata IDS / IPS Tool from source.

sudo apt-get install libpcre3 libpcre3-dbg libpcre3-dev build-essential libpcap-dev   \
                libnet1-dev libyaml-0-2 libyaml-dev pkg-config zlib1g zlib1g-dev \
                libcap-ng-dev libcap-ng0 make libmagic-dev         \
                libnss3-dev libgeoip-dev liblua5.1-dev libhiredis-dev libevent-dev \
                python-yaml rustc cargo

For IPtables integration install the below packages.

sudo apt-get install libnetfilter-queue-dev libnetfilter-queue1  \
                libnetfilter-log-dev libnetfilter-log1      \
                libnfnetlink-dev libnfnetlink0

The next step is to install the Suricata-update tool used to update Suricata rules. This tool will be installed using PIP.

sudo apt-get install python3-pip

With PIP installed, proceed and install Suricata-update on Debian 11/10 with the command:

sudo pip3 install --upgrade suricata-update

Sample Output:

Collecting suricata-update
  Downloading https://files.pythonhosted.org/packages/81/eb/051dcb8184831723d6d7d5e4b5f2f2d9b987430a00019cd0a1a5785bd430/suricata-update-1.2.2.tar.gz (69kB)
    100% |████████████████████████████████| 71kB 388kB/s 
Collecting pyyaml (from suricata-update)
  Downloading https://files.pythonhosted.org/packages/eb/5f/6e6fe6904e1a9c67bc2ca5629a69e7a5a0b17f079da838bab98a1e548b25/PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (596kB)
    100% |████████████████████████████████| 604kB 993kB/s 
Building wheels for collected packages: suricata-update
  Running setup.py bdist_wheel for suricata-update ... done
  Stored in directory: /home/debian/.cache/pip/wheels/a1/d5/49/206350d2b2aeafb3e35a826f3baa8609bed844b3ef53d0e370
Successfully built suricata-update
Installing collected packages: pyyaml, suricata-update
Successfully installed pyyaml-6.0 suricata-update-1.2.2

Find where Suricata update is installed.

$ whereis suricata-update
suricata-update: /usr/local/bin/suricata-update

Create a symbolic link for the Suricata-update tool.

sudo ln -s /usr/local/bin/suricata-update /usr/bin/suricata-update

Now proceed to the Official Suricata downloads page and download the latest version of Suricata. Alternatively, pull the .tar file as below. As of this guide, the latest version was at 6.0.3.

wget https://www.openinfosecfoundation.org/download/suricata-6.0.3.tar.gz 

Now extract the file:

tar xzf suricata-6.0.3.tar.gz

Now compile and install Suricata as below.

cd suricata-6.0.3
sudo ./configure --sysconfdir=/etc --localstatedir=/var --prefix=/usr/ --enable-lua --enable-nfqueue --enable-suricata-update --enable-rules
sudo make
sudo make install-full

Step 2 – Working with Suricata Rules on Debian 11/10

By default, Suricata is built to use certain rules called signatures. These signatures are used to detect intrusion by matching threads. These rules are located in the /usr/share/suricata/rules directory.

ls /usr/share/suricata/rules

The available rules on my system:

app-layer-events.rules  http-events.rules      smb-events.rules
decoder-events.rules    ipsec-events.rules     smtp-events.rules
dhcp-events.rules       kerberos-events.rules  stream-events.rules
dnp3-events.rules       modbus-events.rules    tls-events.rules
dns-events.rules        nfs-events.rules
files.rules             ntp-events.rules

Emergency threat rules are stored at /var/lib/suricata/rules/suricata.rules and can be installed or updated using the command:

$ sudo suricata-update
16/10/2021 -- 04:03:25 - <Info> -- Using data-directory /var/lib/suricata.
16/10/2021 -- 04:03:25 - <Info> -- Using Suricata configuration /etc/suricata/suricata.yaml
16/10/2021 -- 04:03:25 - <Info> -- Using /usr/share/suricata/rules for Suricata provided rules.
16/10/2021 -- 04:03:25 - <Info> -- Found Suricata version 6.0.3 at /usr/bin/suricata.
16/10/2021 -- 04:03:25 - <Info> -- Loading /etc/suricata/suricata.yaml
16/10/2021 -- 04:03:25 - <Info> -- Disabling rules for protocol http2
16/10/2021 -- 04:03:25 - <Info> -- Disabling rules for protocol modbus
16/10/2021 -- 04:03:25 - <Info> -- Disabling rules for protocol dnp3
16/10/2021 -- 04:03:25 - <Info> -- Disabling rules for protocol enip
16/10/2021 -- 04:03:25 - <Info> -- No sources configured, will use Emerging Threats Open
16/10/2021 -- 04:03:25 - <Info> -- Last download less than 15 minutes ago. Not downloading https://rules.emergingthreats.net/open/suricata-6.0.3/emerging.rules.tar.gz.
16/10/2021 -- 04:03:25 - <Info> -- Loading distribution rule file /usr/share/suricata/rules/app-layer-events.rules
16/10/2021 -- 04:03:25 - <Info> -- Loading distribution rule file /usr/share/suricata/rules/decoder-events.rules
16/10/2021 -- 04:03:25 - <Info> -- Loading distribution rule file /usr/share/suricata/rules/dhcp-events.rules
16/10/2021 -- 04:03:25 - <Info> -- Loading distribution rule file /usr/share/suricata/rules/dnp3-events.rules
16/10/2021 -- 04:03:25 - <Info> -- Loading distribution rule file /usr/share/suricata/rules/dns-events.rules
16/10/2021 -- 04:03:25 - <Info> -- Loading distribution rule file /usr/share/suricata/rules/files.rules
16/10/2021 -- 04:03:25 - <Info> -- Loading distribution rule file /usr/share/suricata/rules/http-events.rules

Step 3 – Configure Suricata IDS / IPS Tool on Debian 11/10.

Now that Suricata is successfully installed on Debian Debian 11/10 let’s edit the YAML file at /etc/suricata/suricata.yaml to protect the internal network from attacks.

sudo vim /etc/suricata/suricata.yaml

In the file, we need to edit the HOME_NET which includes the IP address of the system on which Suricata is running.

Navigate to the vars section and edit as shown.

vars:
  # more specific is better for alert accuracy and performance
  address-groups:
    #HOME_NET: "[192.168.0.0/16,10.0.0.0/8,172.16.0.0/12]"
    HOME_NET: "[192.168.100.48]"
    #HOME_NET: "[192.168.0.0/16]"
    #HOME_NET: "[10.0.0.0/8]"
    #HOME_NET: "[172.16.0.0/12]"
    #HOME_NET: "any"

    EXTERNAL_NET: "!$HOME_NET"
    #EXTERNAL_NET: "any"
...
# Linux high speed capture support
af-packet:
  - interface: enp0s3
...........

Remember that you need to replace 192.168.100.124 with your internal network IP address and enp0s3 with your network interface.

Step 4 – Use Suricata IDS / IPS Tool On Debian 11/10.

We first need to find a way to manage our Suricata service if we installed it by building from source

Create Suricata Systemd Service.

Suricata has its main configuration file at /etc/suricata/suricata.yaml. To create a systemd Suricata service, you need to know your network interface.

$ ifconfig

My network interface is enp0s3, so I will create a file as below.

$ sudo vim /etc/systemd/system/suricata.service
[Unit]
Description=Suricata Intrusion Detection Service
After=syslog.target network-online.target

[Service]
ExecStartPre=/bin/rm -f /var/run/suricata.pid
ExecStart=/usr/bin/suricata -c /etc/suricata/suricata.yaml -i enp0s3 --pidfile /var/run/suricata.pid $OPTIONS
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

Reload daemons.

sudo systemctl daemon-reload

Start and enable Suricata service.

sudo systemctl start suricata

Check the status of the service.

$ systemctl status suricata
 suricata.service - Suricata Intrusion Detection Service
     Loaded: loaded (/etc/systemd/system/suricata.service; disabled; vendor preset: enabled)
     Active: active (running) since Wed 2021-10-27 21:09:49 EAT; 8s ago
    Process: 52997 ExecStartPre=/bin/rm -f /var/run/suricata.pid (code=exited, status=0/SUCCESS)
   Main PID: 52998 (Suricata-Main)
      Tasks: 1 (limit: 4663)
     Memory: 260.0M
        CPU: 8.599s
     CGroup: /system.slice/suricata.service
             └─52998 /usr/bin/suricata -c /etc/suricata/suricata.yaml -i enp0s3 --pidfile /var/run/suricata.pid

Oct 27 21:09:49 debian systemd[1]: Starting Suricata Intrusion Detection Service...
Oct 27 21:09:49 debian systemd[1]: Started Suricata Intrusion Detection Service.
Oct 27 21:09:49 debian suricata[52998]: 27/10/2021 -- 21:09:49 - <Info> - Configuration node 'HOME_NET' redefined.
Oct 27 21:09:49 debian suricata[52998]: 27/10/2021 -- 21:09:49 - <Notice> - This is Suricata version 6.0.3 RELEASE running in SYSTEM mode

Suricata can also be run by specifying the interface as below.

suricata -D -c /etc/suricata/suricata.yaml -i enp0s3

You can check the stats log on Suricata using:

sudo tail -f /var/log/suricata/stats.log

Check the write logs in the EVE.jso output using:

sudo tail -f /var/log/suricata/eve.json

Check alert logs in Suricata with:

sudo tail -f /var/log/suricata/fast.log

Step 5 – Test Suricata IDS / IPS Tool on Debian 11/10.

In this guide, we will try and perform a DDoS attack on our Debian 11/10 system. In case you have created custom rules, you can check the syntax using:

sudo suricata -c /etc/suricata/suricata.yaml -T -v

Sample Output:

How To Install Suricata IDS IPS Tool on Debian 1110

Then on another system, perform a DDoS attack but ensure the hping3 package is installed.

##On CentOS 8/RHEL 8/Rocky Linux 8
sudo dnf install hping3

###On Debian/Ubuntu
sudo apt install hping3

Then perform the attack on your Debian 11/10 system

sudo hping3 -S -p 22 --flood --rand-source 192.168.100.124

With this running check alerts on your Debian 11/10 system with Suricata installed.

sudo tail -f /var/log/suricata/fast.log

Sample Output:

How To Install Suricata IDS IPS Tool on Debian 1110 1

From the output, Suricata IDS / IPS is running well using the default emergency threat rules.

That is it! We have concluded this guide on how to install Suricata IDS / IPS Tool on Debian 11/10. I hope it was of great significance to you.

See more:

.tdi_4.td-a-rec{text-align:center}.tdi_4 .td-element-style{z-index:-1}.tdi_4.td-a-rec-img{text-align:left}.tdi_4.td-a-rec-img img{margin:0 auto 0 0}@media(max-width:767px){.tdi_4.td-a-rec-img{text-align:center}}

RELATED ARTICLES

Most Popular

Recent Comments