Snort o Suricata. Bahagi 2: Pag-install at paunang pag-setup ng Suricata

Ayon sa istatistika, ang dami ng trapiko sa network ay tumataas ng humigit-kumulang 50% bawat taon. Ito ay humahantong sa pagtaas ng pagkarga sa kagamitan at, sa partikular, pinapataas ang mga kinakailangan sa pagganap ng IDS/IPS. Maaari kang bumili ng mamahaling dalubhasang hardware, ngunit mayroong isang mas murang opsyon - ang pagpapatupad ng isa sa mga open source system. Maraming mga baguhan na tagapangasiwa ang nag-iisip na ang pag-install at pag-configure ng isang libreng IPS ay medyo mahirap. Sa kaso ng Suricata, hindi ito ganap na totoo - maaari mo itong i-install at simulan ang pagtataboy sa mga karaniwang pag-atake gamit ang isang hanay ng mga libreng panuntunan sa loob ng ilang minuto.

Snort o Suricata. Bahagi 2: Pag-install at paunang pag-setup ng Suricata
Snort o Suricata. Bahagi 1: Pagpili ng Libreng IDS/IPS para Protektahan ang Iyong Corporate Network

Bakit kailangan natin ng isa pang bukas na IPS?

Matagal nang isinasaalang-alang ang pamantayan, ang Snort ay nasa pagbuo mula noong huling bahagi ng nineties, kaya ito ay orihinal na single-threaded. Sa paglipas ng mga taon, nakuha nito ang lahat ng mga modernong tampok, tulad ng suporta sa IPv6, ang kakayahang pag-aralan ang mga protocol sa antas ng aplikasyon, o isang unibersal na module ng pag-access ng data.

Ang pangunahing Snort 2.X engine ay natutong gumana sa maraming mga core, ngunit nanatiling single-threaded at samakatuwid ay hindi maaaring sulitin ang mga modernong hardware platform.

Nalutas ang problema sa ikatlong bersyon ng system, ngunit napakatagal ng paghahanda na ang Suricata, na isinulat mula sa simula, ay nagawang lumabas sa merkado. Noong 2009, nagsimula itong mabuo nang tumpak bilang isang multi-threaded na alternatibo sa Snort, na mayroong mga function ng IPS sa labas ng kahon. Ang code ay ipinamahagi sa ilalim ng lisensya ng GPLv2, ngunit ang mga kasosyo sa pananalapi ng proyekto ay may access sa isang saradong bersyon ng engine. Ang ilang mga problema sa scalability ay lumitaw sa mga unang bersyon ng system, ngunit ang mga ito ay nalutas nang medyo mabilis.

Bakit Suricata?

Ang Suricata ay may ilang mga module (tulad ng Snort): capture, acquisition, decoding, detection at output. Bilang default, nauuna ang nakuhang trapiko bago mag-decode sa isang thread, bagama't mas naglo-load ito sa system. Kung kinakailangan, ang mga thread ay maaaring hatiin sa mga setting at ipamahagi sa mga processor - Ang Suricata ay napakahusay na na-optimize para sa partikular na hardware, bagama't hindi na ito antas ng HOWTO para sa mga nagsisimula. Dapat ding tandaan na ang Suricata ay may mga advanced na tool sa inspeksyon ng HTTP batay sa HTP library. Magagamit din ang mga ito para mag-log ng trapiko nang walang detection. Sinusuportahan din ng system ang IPv6 decoding, kabilang ang IPv4-in-IPv6, IPv6-in-IPv6 tunnels at iba pa.

Maaaring gamitin ang iba't ibang interface upang ma-intercept ang trapiko (NFQueue, IPFRing, LibPcap, IPFW, AF_PACKET, PF_RING), at sa Unix Socket mode maaari mong awtomatikong suriin ang mga PCAP file na nakuha ng isa pang sniffer. Bilang karagdagan, ang modular na arkitektura ng Suricata ay nagpapadali sa pagkonekta ng mga bagong elemento upang makuha, i-decode, suriin at iproseso ang mga network packet. Mahalaga ring tandaan na sa Suricata, ang trapiko ay naharang gamit ang karaniwang filter ng operating system. Sa GNU/Linux, dalawang opsyon para sa pagpapatakbo ng IPS ang magagamit: sa pamamagitan ng NFQUEUE queue (NFQ mode) at sa pamamagitan ng zero copy (AF_PACKET mode). Sa unang kaso, ang isang packet na pumapasok sa iptables ay ipinadala sa NFQUEUE queue, kung saan ito ay maaaring iproseso sa antas ng user. Pinapatakbo ito ng Suricata ayon sa sarili nitong mga panuntunan at naglalabas ng isa sa tatlong hatol: NF_ACCEPT, NF_DROP at NF_REPEAT. Ang unang dalawa ay nagpapaliwanag sa sarili, ngunit ang huli ay nagpapahintulot sa iyo na markahan ang mga packet at ipadala ang mga ito sa simula ng kasalukuyang talahanayan ng iptables. Ang AF_PACKET mode ay mas mabilis, ngunit nagpapataw ng ilang mga paghihigpit sa system: dapat itong magkaroon ng dalawang interface ng network at gumagana bilang isang gateway. Ang naka-block na packet ay hindi ipinapasa sa pangalawang interface.

Ang isang mahalagang tampok ng Suricata ay ang kakayahang gumamit ng mga pagpapaunlad para sa Snort. Ang administrator ay may access sa, sa partikular, ang Sourcefire VRT at OpenSource Emerging Threats set set, pati na rin ang komersyal na Emerging Threats Pro. Maaaring masuri ang pinag-isang output gamit ang mga sikat na backend, at sinusuportahan din ang output sa PCAP at Syslog. Ang mga setting at panuntunan ng system ay nakaimbak sa mga YAML file, na madaling basahin at maaaring awtomatikong maproseso. Kinikilala ng Suricata engine ang maraming mga protocol, kaya ang mga patakaran ay hindi kailangang itali sa isang numero ng port. Bilang karagdagan, ang konsepto ng mga flowbit ay aktibong isinagawa sa mga panuntunan ng Suricata. Upang subaybayan ang pag-trigger, ginagamit ang mga variable ng session, na nagbibigay-daan sa iyong lumikha at maglapat ng iba't ibang mga counter at flag. Tinatrato ng maraming IDS ang iba't ibang koneksyon sa TCP bilang mga hiwalay na entity at maaaring hindi makita ang koneksyon sa pagitan ng mga ito upang ipahiwatig ang pagsisimula ng isang pag-atake. Sinusubukang makita ng Suricata ang buong larawan at sa maraming pagkakataon ay kinikilala ang nakakahamak na trapikong ipinamamahagi sa iba't ibang koneksyon. Maaari nating pag-usapan ang tungkol sa mga pakinabang nito sa mahabang panahon; mas mabuting magpatuloy tayo sa pag-install at pagsasaayos.

Paano mag-install?

Ii-install namin ang Suricata sa isang virtual server na nagpapatakbo ng Ubuntu 18.04 LTS. Ang lahat ng mga utos ay dapat isagawa bilang superuser (root). Ang pinaka-secure na opsyon ay ang kumonekta sa server sa pamamagitan ng SSH bilang karaniwang user, at pagkatapos ay gamitin ang sudo utility upang palakihin ang mga pribilehiyo. Una kailangan naming i-install ang mga pakete na kailangan namin:

sudo apt -y install libpcre3 libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libmagic-dev libcap-ng-dev libjansson-dev pkg-config libnetfilter-queue-dev geoip-bin geoip-database geoipupdate apt-transport-https

Pagkonekta ng isang panlabas na imbakan:

sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get update

I-install ang pinakabagong stable na bersyon ng Suricata:

sudo apt-get install suricata

Kung kinakailangan, i-edit ang pangalan ng configuration file, palitan ang default na eth0 ng aktwal na pangalan ng panlabas na interface ng server. Ang mga default na setting ay iniimbak sa /etc/default/suricata file, at ang mga custom na setting ay iniimbak sa /etc/suricata/suricata.yaml. Ang configuration ng IDS ay kadalasang limitado sa pag-edit ng configuration file na ito. Mayroon itong maraming mga parameter na, sa pangalan at layunin, ay nag-tutugma sa kanilang mga analogue mula sa Snort. Ang syntax ay gayunpaman ay ganap na naiiba, ngunit ang file ay mas madaling basahin kaysa sa mga config ng Snort, at ito rin ay mahusay na nagkomento.

sudo nano /etc/default/suricata

Snort o Suricata. Bahagi 2: Pag-install at paunang pag-setup ng Suricata

ΠΈ

sudo nano /etc/suricata/suricata.yaml

Snort o Suricata. Bahagi 2: Pag-install at paunang pag-setup ng Suricata

Pansin! Bago magsimula, dapat mong suriin ang mga halaga ng mga variable mula sa seksyon ng vars.

Para makumpleto ang setup, kakailanganin mong i-install ang suricata-update para ma-update at ma-download ang mga panuntunan. Napakadaling gawin ito:

sudo apt install python-pip
sudo pip install pyyaml
sudo pip install <a href="https://github.com/OISF/suricata-update/archive/master.zip">https://github.com/OISF/suricata-update/archive/master.zip</a>
sudo pip install --pre --upgrade suricata-update

Susunod na kailangan nating patakbuhin ang suricata-update na utos upang mai-install ang Emerging Threats Open ruleset:

sudo suricata-update

Snort o Suricata. Bahagi 2: Pag-install at paunang pag-setup ng Suricata

Upang tingnan ang listahan ng mga mapagkukunan ng panuntunan, patakbuhin ang sumusunod na command:

sudo suricata-update list-sources

Snort o Suricata. Bahagi 2: Pag-install at paunang pag-setup ng Suricata

I-update ang mga source ng panuntunan:

sudo suricata-update update-sources

Snort o Suricata. Bahagi 2: Pag-install at paunang pag-setup ng Suricata

Muli naming tinitingnan ang na-update na mga mapagkukunan:

sudo suricata-update list-sources

Kung kinakailangan, maaari mong isama ang mga magagamit na libreng mapagkukunan:

sudo suricata-update enable-source ptresearch/attackdetection
sudo suricata-update enable-source oisf/trafficid
sudo suricata-update enable-source sslbl/ssl-fp-blacklist

Pagkatapos nito, kailangan mong i-update muli ang mga panuntunan:

sudo suricata-update

Sa puntong ito, ang pag-install at paunang pagsasaayos ng Suricata sa Ubuntu 18.04 LTS ay maaaring ituring na kumpleto. Pagkatapos ay magsisimula ang kasiyahan: sa susunod na artikulo ikokonekta namin ang isang virtual server sa network ng opisina sa pamamagitan ng VPN at magsisimulang suriin ang lahat ng papasok at papalabas na trapiko. Bibigyan namin ng espesyal na pansin ang pagharang sa mga pag-atake ng DDoS, aktibidad ng malware, at mga pagtatangka na pagsamantalahan ang mga kahinaan sa mga serbisyong naa-access mula sa mga pampublikong network. Para sa kalinawan, ang mga pag-atake ng mga pinakakaraniwang uri ay gayahin.

Snort o Suricata. Bahagi 2: Pag-install at paunang pag-setup ng Suricata

Snort o Suricata. Bahagi 2: Pag-install at paunang pag-setup ng Suricata

Pinagmulan: www.habr.com

Magdagdag ng komento