Suricata - Himan sa Pagsusi sa Intrusion ug Paglikay sa Seguridad


Ang Suricata usa ka gamhanan, versatile, ug open-source nga threat detection engine nga naghatag ug mga gamit para sa intrusion detection (IDS), intrusion prevention (IPS), ug network security monitoring. Naghimo kini og lawom nga pag-inspeksyon sa pakete kauban ang pattern nga katumbas sa usa ka timpla nga labi ka kusgan sa pagtuki sa hulga.

Sa panahon sa pagsulat niini nga giya, ang pinakabag-o nga bersyon sa Suricata mao ang 6.0.5.

  • IDS/IPS – Ang Suricata kay usa ka rule-based Intrusion Detection and Prevention engine nga naggamit sa externally developed nga mga ruleset sama sa Emerging Threats Suricata ruleset aron mamonitor ang trapiko sa network alang sa bisan unsang malisyosong kalihokan, paglapas sa palisiya, ug hulga.
  • Awtomatikong Protocol Detection – Awtomatikong namatikdan sa makina sa Suricata ang mga protocol sama sa HTTP ug HTTPS. FTP ug SMB sa bisan unsang pantalan ug ipadapat ang husto nga detection ug logging logic. Kini magamit sa pag-ila sa malware ug CnC channels.
  • Lua Scripting – Magamit sa Suricata ang mga script sa Lua nga naghatag ug advanced detection sa malware aron makit-an ug ma-decode ang trapiko sa malware nga lisod mamatikdan.
  • Multi-threading – Ang Suricata naghatag og katulin ug importansya sa determinasyon sa trapiko sa network. Ang makina gihimo aron magamit ang dugang nga gahum sa pagproseso nga gitanyag sa modernong multi-core hardware chipset.

Pag-instalar sa Suricata Intrusion Detection Tool sa Linux

Sa kini nga seksyon, ipakita namon kung giunsa ang pag-install sa Suricata sa mga distribusyon nga nakabase sa RHEL.

Ang Suricata gihatag sa Debian/Ubuntu repository ug dali nga ma-install gamit ang apt package manager. Bisan pa, angay nga matikdan nga wala kini mag-install sa pinakabag-o nga bersyon sa Suricata. Aron ma-install ang pinakabag-o nga bersyon, kinahanglan nimo nga i-install kini gikan sa usa ka gigikanan nga among hisgutan sa ulahi niini nga giya.

Aron ma-install ang Suricata gamit ang apt package manager, padagana ang command:

$ sudo apt install suricata -y

Ang Suricata awtomatikong magsugod sa higayon nga ma-install. Mahimo nimong kumpirmahon kini sa mosunod.

$ sudo systemctl status suricata

Aron ma-install ang Suricata sa mga distribusyon sa RHEL sama sa CentOS Stream, Rocky Linux, AlmaLinux, Fedora, ug RHEL, kinahanglan nimo nga i-enable una ang EPEL repository.

$ dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm  [RHEL 9]
$ dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm  [RHEL 8]
$ yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm  [RHEL 7]

Kung ma-enable na ang EPEL, i-install ang mosunod nga mga kinahanglanon nga pakete ug idugang ang repositoryo sa OISF sa imong sistema.

----------- On Fedora Systems ----------- 
$ sudo dnf install dnf-plugins-core
$ sudo  dnf copr enable @oisf/suricata-6.0

----------- On RHEL Systems ----------- 
$ sudo dnf install yum-plugin-copr
$ sudo dnf copr enable @oisf/suricata-6.0

Sunod, i-install ang Suricata gamit ang yum package manager sama sa gipakita.

$ sudo dnf install suricata -y
Or
$ sudo yum install suricata -y

Kung ma-install na ang Suricata, sugdi ug pamatud-i ang kahimtang niini.

$ sudo systemctl start suricata
$ sudo systemctl status suricata

I-install ang Suricata gikan sa Tinubdan sa Linux

Ang default nga mga repositoryo sa OS wala maghatag sa pinakabag-o nga bersyon sa Suricata. Kung ang imong tumong mao ang pag-instalar sa pinakabag-o nga bersyon sa Suricata, nan kinahanglan nimo nga i-install kini gikan sa tinubdan.

Sa panahon sa pagsulat niini nga giya, ang pinakabag-o nga bersyon sa Suricata mao ang 6.0.5. Aron ma-install ang Suricata gikan sa gigikanan sa mga distribusyon sa Ubuntu/Debian ug RHEL, i-install ang mosunud nga mga librarya, mga himan sa pag-compile, ug mga dependency.

----------- On Debian Systems ----------- 
$ sudo apt install rustc build-essential cargo libpcre3 libpcre3-dbg libpcre3-dev make autoconf automake libtool libcap-ng0 make libmagic-dev libjansson-dev libjansson4 libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libcap-ng-dev pkg-config libnetfilter-queue1 libnfnetlink0 libnetfilter-queue-dev libnfnetlink-dev -y

----------- On RHEL Systems ----------- 
$ sudo yum install gcc libpcap-devel pcre-devel libyaml-devel file-devel zlib-devel jansson-devel nss-devel libcap-ng-devel libnet-devel tar make libnetfilter_queue-devel lua-devel PyYAML libmaxminddb-devel rustc cargo lz4-devel -y

Sunod, i-install ang suricata-update nga himan aron ma-update ang mga lagda sa Suricata.

$ sudo apt install python3-pip           [On Debian]
$ sudo yum install python3-pip           [On RHEL]
$ pip3 install --upgrade suricata-update

Dayon paghimo ug simbolo nga sumpay sa /usr/bin/suricata-update.

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

Karon pangadto sa wget command.

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

Kung ma-download na, kuhaa ang tarball file ug i-install kini.

$ sudo tar -xvf suricata-6.0.6.tar.gz
$ cd suricata-6.0.6
$ ./configure --enable-nfqueue --prefix=/usr --sysconfdir=/etc --localstatedir=/var
$ make
$ make install-full

Pag-configure sa Suricata sa Linux

Aron masugdan ang pag-configure sa Suricata, kinahanglan natong ipiho ang internal IP ug external network. Aron mahimo kini, pag-access sa file sa pag-configure.

$ sudo vim /etc/suricata/suricata.yaml

Alang sa HOME_NET nga direktiba, ipiho ang IP address sa imong Linux system.

HOME_NET: "[173.82.235.7]"

Sunod, ibutang ang EXTERNAL_NET nga direktiba sa !$HOME_NET.

EXTERNAL_NET: "!$HOME_NET"

Sunod, ipiho ang interface sa network diin susihon sa Suricata ang trapiko sa network. Sa among kaso, kini ang interface sa eth0.

Mahimo nimong pamatud-an ang imong aktibo nga interface sa network gamit ang ip command:

$ ip a

Sa configuration file, i-update ang interface directive nga adunay ngalan sa network interface.

- interface: eth0

Sunod, siguroha nga ang default-rule-path attribute kay gibutang sa /etc/suricata/rules.

Dayon i-save ang mga pagbag-o ug isira ang configuration file. Dayon i-restart ang Suricata para magamit ang mga pagbag-o.

$ sudo systemctl status suricata

Pag-update sa Suricata Rulesets sa Linux

Sa kasagaran, ang Suricata nagpadala og limitado nga hugpong sa mga lagda sa pag-ila nga nahimutang sa /etc/suricata/rules nga direktoryo. Bisan pa, kini giisip nga huyang ug dili epektibo sa pag-ila sa mga pagsulod. Kinahanglan nimong i-load ang mga lagda sa Emerging Threat (ET) nga giisip nga labing komprehensibo nga set sa lagda alang sa Suricata.

Ang Suricata naghatag usa ka himan nga nailhan nga suricata-update nga nagkuha sa mga lagda gikan sa mga eksternal nga tighatag. Aron makakuha usa ka labing bag-o nga mga lagda alang sa imong server, padagana ang mosunud nga mando.

$ sudo suricata-update -o /etc/suricata/rules

Gikan sa output, imong makita ang suricata-update nga nagkuha sa libre nga Emerging Threats ET Open Rules ug i-save kini sa Suricata's /etc/suricata/rules/suricata rules file. Dugang pa, Gipakita niini ang gidaghanon sa mga lagda nga giproseso. Niini nga pananglitan, total nga 35941 ang gidugang. Niini, 28221 ang na-enable, 18 ang gitangtang, ug 1249 ang giusab.

Pagdugang sa Suricata Rulesets sa Linux

Ang suricata-update nga himan nagtugot kanimo sa pagkuha sa mga lagda gikan sa ruleset providers. Ang uban libre sama sa ET Open set, samtang ang uban nanginahanglan usa ka bayad nga suskrisyon.

Para ilista ang default set sa rule providers, padagana ang suricata-update command sama sa gipakita.

$ sudo suricata-update list-sources

Para makadugang ug ruleset, pananglitan, ang tgreen/hunting ruleset, padagana ang mosunod nga command.

$ sudo suricata-update enable-source tgreen/hunting

Kung nadugang na nimo ang ruleset, padagana na usab ang suricata-update command gamit ang -o /etc/suricata/rules flag.

$ sudo suricata-update -o /etc/suricata/rules

Pagsulay sa Suricata Rules sa Linux

Sa dili pa nimo sugdan ang pagsulay sa Suricata, girekomenda nga sulayan kung okay ba ang pag-configure. Aron mahimo kini, pagdagan ang mosunud nga mando:

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

Siguroha nga walay mga sayop nga gitaho. Kung nagdagan ka sa RHEL, CentOS Stream, Fedora, ug Rocky Linux magsugod ug makapahimo sa Suricata.

$ sudo systemctl start suricata 
$ sudo systemctl enable suricata 

Sa pagkakaron, malampuson namong na-install, ug gi-configure ang Suricata ug gi-update ang mga ruleset. Ang ET Open Rule Set adunay sobra sa 30,000 ka mga lagda alang sa pag-ila sa malisyosong trapiko. Niini nga seksyon, atong ibutang ang Suricata sa pagsulay ug susihon kung kini makamatikod sa kadudahan nga trapiko sa network.

Among sulayan ang ET Open ruleset pinaagi sa pagsundog sa usa ka intrusion nga girekomenda sa Suricata's Quickstart guide.

Ang IDS functionality pagasulayan gamit ang signature ID nga 2100498 pinaagi sa pagpadala og HTTP request sa testmynids.org nga website nga usa ka NIDS (Network Intrusion and Detection System) framework.

$ curl http://testmynids.org/uid/index.html

Kinahanglan nimo makuha ang mosunod nga output.

uid=0(root) gid=0(root) groups=0(root)

Ang HTTP nga hangyo nga gipadala gidesinyo aron ma-trigger ang usa ka alerto pinaagi sa pagsundog sa output sa id command nga mahimong modagan sa usa ka nakompromiso nga remote system pinaagi sa usa ka shell.

Karon atong susihon ang mga talaan sa Suricata alang sa katugbang nga alerto. Nagpadala ang Suricata nga adunay duha ka mga file sa log nga gipaandar pinaagi sa default.

/var/log/suricata/fast.log
/var/log/suricata/eve.log

Atong susihon ang usa ka log entry sa /var/log/suricata/fast.log log file nga katumbas sa grep command. Pangitaon namo ang mga log entries gamit ang 2100498 rule identifier gikan sa Quickstart documentation.

$ grep 2100948 /var/log/suricata/fast.log

Makuha nimo ang mosunod nga output nga nagpasabot sa usa ka intrusion. Dinhi, ang 173.82.235.7 mao ang pampubliko nga IP address sa server.

09/09/2022-22:17:06.796434  [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 13.226.210.123:80 -> 173.82.235.7:33822

Sa laing bahin, mahimo nimong susihon ang /var/log/suricata/eve.log log file alang sa signature ID nga 2100498 sama sa gipakita.

$ jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json

Kini usa ka komprehensibo nga giya kung giunsa ang pag-install ug pag-configure sa Suricata sa Linux. Among gitan-aw ang lain-laing mga pamaagi sa pag-instalar, kung giunsa ang pag-configure sa Suricata ug pag-update sa mga lagda sa Suricata ingon man kung giunsa pagdumala ang serbisyo sa Suricata systemd ug paghimo sa mga pagsulay sa pagsulod sa network.

Kami nanghinaut nga mahimo nimong komportable nga ma-install ug magamit ang Suricata aron mapanalipdan ang imong sistema gikan sa mga pagsulod sa network o makadaot nga trapiko.