Instaloni dhe konfiguroni sistemin e zbulimit të ndërhyrjeve Snort 3 në Ubuntu 22.04


Snort është një sistem parandalimi dhe zbulimi i ndërhyrjeve me burim të hapur (IDS) për t'u mbrojtur nga sulmet DDoS. Ai përdor rregulla të integruara që ndihmojnë në përcaktimin e aktivitetit të keq të rrjetit dhe përdor ato rregulla për të gjetur paketa që përputhen me to dhe gjeneron sinjalizime për përdoruesit. Snort mund të identifikojë sulmet më të fundit, infeksionet e malware, sistemet e komprometuara dhe shkeljet e politikave të rrjetit.

Veçoritë

  • Monitorimi i trafikut në kohë reale.
  • Regjistrimi i paketave. Analiza e protokollit.
  • Përputhja e përmbajtjes. Gjurmët e gishtërinjve të OS.
  • Mund të instalohet në çdo mjedis rrjeti.
  • Krijon regjistra.

Në këtë tutorial, ne do t'ju tregojmë se si të instaloni Snort në Ubuntu 22.04.

Parakushtet

  • Një server që ekzekuton Ubuntu 22.04.
  • Një fjalëkalim rrënjësor është konfiguruar në server.

Instaloni varësitë e nevojshme

Para se të filloni, do t'ju duhet të instaloni disa varësi në serverin tuaj. Ju mund t'i instaloni të gjitha ato duke ekzekutuar komandën e mëposhtme:

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 libfl-dev -y

Pasi të jenë instaluar të gjitha varësitë, mund të vazhdoni në hapin tjetër.

Instaloni Snort DAQ

Më pas, do t'ju duhet të instaloni bibliotekën e Përvetësimit të të Dhënave në sistemin tuaj. Si parazgjedhje, ai nuk është i disponueshëm në depon e paracaktuar të Ubuntu. Pra, do t'ju duhet ta përpiloni atë nga burimi.

Së pari, shkarkoni Snort DAQ nga Git me komandën e mëposhtme:

git clone https://github.com/snort3/libdaq.git

Pasi të përfundojë shkarkimi, lundroni në drejtorinë e shkarkuar dhe konfiguroni atë me komandën e mëposhtme:

cd libdaq
./bootstrap
./configure

Ju duhet të shihni daljen e mëposhtme:

    cc:             gcc
    cppflags:       
    am_cppflags:     -fvisibility=hidden -Wall -Wmissing-declarations -Wpointer-arith -Wcast-align -Wcast-qual -Wformat -Wformat-nonliteral -Wformat-security -Wundef -Wwrite-strings -Wextra -Wsign-compare -Wno-unused-parameter -fno-strict-aliasing -fdiagnostics-show-option
    cflags:         -g -O2
    am_cflags:       -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wnested-externs
    ldflags:        
    am_ldflags:     
    libs:           

    code_coverage_enabled:  no
    code_coverage_cppflags: 
    code_coverage_cflags:   
    code_coverage_ldflags:  

    Build AFPacket DAQ module.. : yes
    Build BPF DAQ module....... : yes
    Build Divert DAQ module.... : no
    Build Dump DAQ module...... : yes
    Build FST DAQ module....... : yes
    Build netmap DAQ module.... : no
    Build NFQ DAQ module....... : yes
    Build PCAP DAQ module...... : yes
    Build Savefile DAQ module.. : yes
    Build Trace DAQ module..... : yes
    Build GWLB DAQ module...... : yes

Më pas, instaloni atë me komandën e mëposhtme:

make
make install

Instaloni Gperftools

Së pari, shkarkoni versionin më të fundit të Gperftools me komandën e mëposhtme:

cd
wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.9.1/gperftools-2.9.1.tar.gz

Pasi të përfundojë shkarkimi, nxirrni skedarin e shkarkuar me komandën e mëposhtme:

tar xzf gperftools-2.9.1.tar.gz

Më pas, lundroni në drejtorinë e shkarkuar dhe përpiloni atë me komandën e mëposhtme:

cd gperftools-2.9.1/
./configure

Më pas, instaloni atë me komandën e mëposhtme:

make
make install

Instaloni Snort

Tjetra, shkarkoni versionin më të fundit të Snort me komandën e mëposhtme:

cd
wget https://github.com/snort3/snort3/archive/refs/tags/3.1.43.0.tar.gz

Më pas, nxirrni skedarin e shkarkuar me komandën e mëposhtme:

tar -xvzf 3.1.43.0.tar.gz

Më pas, lundroni në drejtorinë e nxjerrë dhe konfiguroni atë me komandën e mëposhtme:

cd snort3-3.1.43.0
./configure_cmake.sh --prefix=/usr/local --enable-tcmalloc

Do të merrni daljen e mëposhtme:

snort version 3.1.43.0

Install options:
    prefix:     /usr/local
    includes:   /usr/local/include/snort
    plugins:    /usr/local/lib/snort

Compiler options:
    CC:             /usr/bin/cc
    CXX:            /usr/bin/c++
    CFLAGS:            -fvisibility=hidden   -DNDEBUG -g -ggdb  -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free  -O2 -g -DNDEBUG
    CXXFLAGS:          -fvisibility=hidden   -DNDEBUG -g -ggdb  -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free  -O2 -g -DNDEBUG
    EXE_LDFLAGS:        
    MODULE_LDFLAGS:     

Feature options:
    DAQ Modules:    Static (afpacket;bpf;dump;fst;gwlb;nfq;pcap;savefile;trace)
    libatomic:      System-provided
    Hyperscan:      OFF
    ICONV:          ON
    Libunwind:      ON
    LZMA:           ON
    RPC DB:         Built-in
    SafeC:          OFF
    TCMalloc:       ON
    JEMalloc:       OFF
    UUID:           ON
-------------------------------------------------------

-- Configuring done
-- Generating done
-- Build files have been written to: /root/snort3-3.1.43.0/build

Më pas, ndryshoni drejtorinë në drejtorinë e ndërtimit dhe instaloni Snort me komandën e mëposhtme:

cd build
make
make install
ldconfig

Tani mund të verifikoni versionin Snort duke përdorur komandën e mëposhtme:

snort -V

Do të merrni daljen e mëposhtme:

   ,,_     -*> Snort++ <*-
  o"  )~   Version 3.1.43.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.9
           Using LuaJIT version 2.1.0-beta3
           Using OpenSSL 3.0.2 15 Mar 2022
           Using libpcap version 1.10.1 (with TPACKET_V3)
           Using PCRE version 8.39 2016-06-14
           Using ZLIB version 1.2.11
           Using LZMA version 5.2.5

Konfiguro Snort

Së pari, do t'ju duhet të vendosni ndërfaqen tuaj të rrjetit në modalitetin promiscuous në mënyrë që të mund të shohë të gjithë trafikun e rrjetit të dërguar në të.

Mund ta vendosni duke përdorur komandën e mëposhtme:

ip link set dev eth0 promisc on

Tani mund ta verifikoni me komandën e mëposhtme:

ip add sh eth0

Më pas, do t'ju duhet gjithashtu të çaktivizoni shkarkimin e ndërfaqes. Së pari, kontrolloni nëse kjo veçori është e aktivizuar apo jo duke përdorur komandën e mëposhtme:

ethtool -k eth0 | grep receive-offload

Do të merrni daljen e mëposhtme:

generic-receive-offload: on
large-receive-offload: off [fixed]

Tani mund ta çaktivizoni duke përdorur komandën e mëposhtme:

ethtool -K eth0 gro off lro off

Krijoni një skedar shërbimi Systemd për Snort NIC

Më pas, do t'ju duhet të krijoni një skedar shërbimi systemd për Snort NIC.

nano /etc/systemd/system/snort3-nic.service

Shtoni rreshtat e mëposhtëm:

[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 eth0 promisc on
ExecStart=/usr/sbin/ethtool -K eth0 gro off lro off
TimeoutStartSec=0
RemainAfterExit=yes

[Install]
WantedBy=default.target

Ruani dhe mbyllni skedarin, më pas ringarkoni daemonin e sistemit për të aplikuar ndryshimet:

systemctl daemon-reload

Më pas, filloni dhe aktivizoni Snort me komandën e mëposhtme:

systemctl start snort3-nic.service
systemctl enable snort3-nic.service

Ju mund të kontrolloni statusin e Snort me komandën e mëposhtme:

systemctl status snort3-nic.service

Do të merrni daljen e mëposhtme:

? snort3-nic.service - Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot
     Loaded: loaded (/etc/systemd/system/snort3-nic.service; disabled; vendor preset: enabled)
     Active: active (exited) since Tue 2022-10-11 16:24:15 UTC; 6s ago
    Process: 95745 ExecStart=/usr/sbin/ip link set dev eth0 promisc on (code=exited, status=0/SUCCESS)
    Process: 95746 ExecStart=/usr/sbin/ethtool -K eth0 gro off lro off (code=exited, status=0/SUCCESS)
   Main PID: 95746 (code=exited, status=0/SUCCESS)
        CPU: 11ms

Oct 11 16:24:15 ubuntu2204 systemd[1]: Starting Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot...
Oct 11 16:24:15 ubuntu2204 systemd[1]: Finished Set Snort 3 NIC in promiscuous mode and Disable GRO, LRO on boot.

Instaloni rregullat e Snort

Rregullat janë shumë të rëndësishme për motorin e zbulimit të ndërhyrjeve Snorts. Së pari, krijoni një drejtori për të ruajtur të gjitha rregullat:

mkdir /usr/local/etc/rules

Më pas, shkarkoni rregullat e komunitetit me komandën e mëposhtme:

wget -qO- https://www.snort.org/downloads/community/snort3-community-rules.tar.gz | tar xz -C /usr/local/etc/rules/

Më pas, modifikoni skedarin kryesor të konfigurimit Snort:

nano /usr/local/etc/snort/snort.lua

Përcaktoni rrjetin tuaj siç tregohet më poshtë:

HOME_NET = '192.168.56.124/32'
EXTERNAL_NET = '!$HOME_NET'

Më pas, përcaktoni rrugën tuaj të rregullave Snort:

ips =
{
    -- 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
    -- (see also related path vars at the top of snort_defaults.lua)

    variables = default_variables,
    rules = [[
    include /usr/local/etc/rules/snort3-community-rules/snort3-community.rules
    ]]

}

Ruani dhe mbyllni skedarin kur të keni mbaruar.

Instaloni Snort OpenAppID

OpenAppID është një plugin që lejon Snort të zbulojë aplikacione të ndryshme, Facebook, Netflix, Twitter dhe Reddit, të përdorura në rrjet.

Mund ta shkarkoni me komandën e mëposhtme:

wget https://www.snort.org/downloads/openappid/26425 -O OpenAppId-26425.tgz

Pasi të përfundojë shkarkimi, nxirrni skedarin e shkarkuar me komandën e mëposhtme:

tar -xzvf OpenAppId-26425.tgz

Më pas, kopjoni skedarin binar OpenAppID në drejtorinë e sistemit:

cp -R odp /usr/local/lib/

Më pas, modifikoni skedarin e konfigurimit Snort dhe përcaktoni vendndodhjen tuaj OpenAppID:

nano /usr/local/etc/snort/snort.lua

Ndryshoni linjat e mëposhtme:

appid =
{
    app_detector_dir = '/usr/local/lib',
    log_stats = true,

}

Ruani dhe mbyllni skedarin, më pas krijoni një direktori të regjistrit Snort:

mkdir /var/log/snort

Më në fund, verifikoni skedarin e konfigurimit Snort me komandën e mëposhtme:

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

Nëse gjithçka është në rregull, do të merrni rezultatin e mëposhtëm:

--------------------------------------------------
fast pattern groups
                      src: 59
                      dst: 158
                      any: 4
                to_server: 56
                to_client: 39
--------------------------------------------------
search engine
                instances: 316
                 patterns: 10282
            pattern chars: 166369
               num states: 112212
         num match states: 9885
             memory scale: MB
             total memory: 3.42574
           pattern memory: 0.550588
        match list memory: 1.25256
        transition memory: 1.58402
        fast pattern only: 6822
--------------------------------------------------
pcap DAQ configured to passive.

Snort successfully validated the configuration (with 0 warnings).
o")~   Snort exiting

Krijo Rregulla të personalizuara Snort

Ju gjithashtu mund të krijoni rregullat tuaja të personalizuara sipas kërkesës tuaj. Le të krijojmë një rregull të personalizuar për kërkesën hyrëse të ICMP:

nano /usr/local/etc/rules/local.rules

Shtoni rreshtin e mëposhtëm:

alert icmp any any -> $HOME_NET any (msg:"ICMP connection test"; sid:1000001; rev:1;)

Më pas, verifikoni rregullat me komandën e mëposhtme:

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

Do të merrni daljen e mëposhtme:

search engine
                instances: 316
                 patterns: 10282
            pattern chars: 166369
               num states: 112212
         num match states: 9885
             memory scale: MB
             total memory: 3.42574
           pattern memory: 0.550588
        match list memory: 1.25256
        transition memory: 1.58402
        fast pattern only: 6822
--------------------------------------------------
pcap DAQ configured to passive.

Snort successfully validated the configuration (with 0 warnings).
o")~   Snort exiting

Më pas, ekzekutoni komandën e mëposhtme për të nisur Snort në ndërfaqen e rrjetit tuaj duke përdorur rregullat tuaja të personalizuara:

snort -c /usr/local/etc/snort/snort.lua -R /usr/local/etc/rules/local.rules -i eth0 -A alert_fast -s 65535 -k none

Tjetra, hapni një ndërfaqe tjetër terminali dhe bëni ping serverin tuaj. Ju duhet të shihni gabimin ICMP në terminalin e parë:

10/11-16:45:23.848071 [**] [1:1000001:1] "ICMP connection test" [**] [Priority: 0] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
10/11-16:45:23.848071 [**] [1:384:8] "PROTOCOL-ICMP PING" [**] [Classification: Misc activity] [Priority: 3] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
10/11-16:45:24.323038 [**] [1:366:11] "PROTOCOL-ICMP PING Unix" [**] [Classification: Misc activity] [Priority: 3] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
10/11-16:45:24.323038 [**] [1:1000001:1] "ICMP connection test" [**] [Priority: 0] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
10/11-16:45:24.323038 [**] [1:384:8] "PROTOCOL-ICMP PING" [**] [Classification: Misc activity] [Priority: 3] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
^C** caught int signal
== stopping
10/11-16:45:25.353007 [**] [1:366:11] "PROTOCOL-ICMP PING Unix" [**] [Classification: Misc activity] [Priority: 3] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
10/11-16:45:25.353007 [**] [1:1000001:1] "ICMP connection test" [**] [Priority: 0] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18
10/11-16:45:25.353007 [**] [1:384:8] "PROTOCOL-ICMP PING" [**] [Classification: Misc activity] [Priority: 3] [AppID: ICMP] {ICMP} 157.32.34.228 -> 209.23.11.18

Krijoni një skedar të shërbimit Systemd për Snort

Më pas, krijoni një skedar shërbimi systemd për të menaxhuar Snort përmes systemd.

nano /etc/systemd/system/snort3.service

Shtoni konfigurimet e mëposhtme:

[Unit]
Description=Snort 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 eth0 -m 0x1b -u root -g root
ExecStop=/bin/kill -9 $MAINPID

[Install]
WantedBy=multi-user.target

Ruani dhe mbyllni skedarin, pastaj rifreskoni daemonin systemd me komandën e mëposhtme:

systemctl daemon-reload

Më pas, filloni dhe aktivizoni shërbimin Snort me komandën e mëposhtme:

systemctl enable --now snort3

Tani mund të verifikoni statusin e Snort duke përdorur komandën e mëposhtme:

systemctl status snort3

Do të merrni daljen e mëposhtme:

? snort3.service - Snort Daemon
     Loaded: loaded (/etc/systemd/system/snort3.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-10-11 16:48:28 UTC; 17s ago
   Main PID: 95898 (snort)
      Tasks: 2 (limit: 4579)
     Memory: 233.6M
        CPU: 2.007s
     CGroup: /system.slice/snort3.service
             ??95898 /usr/local/bin/snort -c /usr/local/etc/snort/snort.lua -s 65535 -k none -l /var/log/snort -D -i eth0 -m 0x1b -u root -g >

Oct 11 16:48:29 ubuntu2204 snort[95898]:          num match states: 9885
Oct 11 16:48:29 ubuntu2204 snort[95898]:              memory scale: MB
Oct 11 16:48:29 ubuntu2204 snort[95898]:              total memory: 3.42574
Oct 11 16:48:29 ubuntu2204 snort[95898]:            pattern memory: 0.550588
Oct 11 16:48:29 ubuntu2204 snort[95898]:         match list memory: 1.25256
Oct 11 16:48:29 ubuntu2204 snort[95898]:         transition memory: 1.58402
Oct 11 16:48:29 ubuntu2204 snort[95898]:         fast pattern only: 6822
Oct 11 16:48:29 ubuntu2204 snort[95898]: --------------------------------------------------
Oct 11 16:48:29 ubuntu2204 snort[95898]: pcap DAQ configured to passive.
Oct 11 16:48:29 ubuntu2204 snort[95898]: Commencing packet processing

konkluzioni

urime! ju keni instaluar dhe konfiguruar me sukses Snort 3 në Ubuntu 22.04. Tani mund të zbatoni Snort në organizatën tuaj dhe ta mbroni atë nga sulmet DDoS. Mos ngurroni të më pyesni nëse keni ndonjë pyetje.