Instal dan Setup Suricata di CentOS 8

Dalam tutorial ini, Anda akan belajar cara menginstal dan mengatur Suricata di CentOS 8. Suricata adalah engine pendeteksi ancaman jaringan sumber terbuka dan gratis. Ini dapat berfungsi sebagai engine deteksi intrusi (IDS), sistem pencegahan intrusi inline (IPS), pemantauan keamanan jaringan (NSM) serta alat pemrosesan pcap offline. Ia bekerja dengan memeriksa lalu lintas jaringan menggunakan aturan dan tanda tangan serta dukungan skrip Lua untuk mendeteksi ancaman kompleks.

Dengan kemampuannya untuk menulis log dalam format YAML dan JSON, Suricata dapat diintegrasikan dengan alat lain seperti SIEM, Splunk, Logstash/Elasticsearch, Kibana untuk pemrosesan dan visualisasi log lebih lanjut.

Suricata menawarkan cukup banyak fitur. Baca tentang mereka di halaman Semua fitur Suricata.

Instal dan Setup Suricata di CentOS 8

Persyaratan sistem

Nah, Suricata adalah multi-threaded, oleh karena itu, jika Anda memiliki core yang cukup, Anda dapat memanfaatkan sebanyak mungkin. Juga, alokasikan RAM yang cukup.

Dalam demo ini, kami telah mengalokasikan 2 vCPU dan RAM 4GB ke server Suricata kami.

Instal Suricata di CentOS 8

Ada berbagai cara di mana Anda dapat menginstal Suricata di CentOS 8;

  • Instal Suricata di CentOS 8 dari Sumber
  • Instal Suricata di CentOS 8 dari EPEL Repos

Instal Suricata di CentOS 8 dari Sumber

Jalankan pembaruan sistem

Perbarui paket sistem Anda dengan menjalankan perintah di bawah ini

dnf update
Instal alat dan Ketergantungan Build yang Diperlukan

Ada sejumlah dependensi paket dan alat pembangunan yang diperlukan untuk keberhasilan pembangunan dan pemasangan Suricata di CentOS 8 dari sumbernya.

dnf config-manager --set-enabled PowerTools
dnf install diffutils file-devel gcc jansson-devel make nss-devel libyaml-devel libcap-ng-devel libpcap-devel pcre-devel python3 python3-pyyaml rust-toolset zlib-devel curl wget tar lua lua-devel lz4-devel
Download Kode Sumber Suricata

Download rilis stabil terbaru kode sumber Suricata dari halaman downloadan Suricata. Pada tulisan ini, Suricata 5.0.3 adalah versi rilis stabil terbaru.

wget https://www.openinfosecfoundation.org/download/suricata-5.0.3.tar.gz -P /tmp
Ekstrak Kode Sumber Suricata

Setelah downloadan selesai, ekstrak kode sumbernya;

cd /tmp
tar xzf suricata-5.0.3.tar.gz
Bangun dan Instal Suricata di CentOS 8

Arahkan ke direktori sumber dan buat serta instal Suricata di CentOS 8.

cd suricata-5.0.3

Jalankan skrip konfigurasi untuk mengadaptasi Suricata ke sistem dan verifikasi bahwa semua dependensi yang diperlukan sudah ada.

./configure --sysconfdir=/etc --localstatedir=/var --prefix=/usr/ --enable-lua --enable-geopip 

Perintah menginstal Suricata ke dalam /usr/bin/suricata, memiliki konfigurasi /etc/suricatadan digunakan /var/log/suricatasebagai direktori log.

Untuk opsi build lainnya, lihat./configure –help.

Kompilasi dan instal aturan dan konfigurasi Suricata.

make
make install-full
... 22/7/2020 -- 21:14:44 - <Info> -- Backing up current rules. 22/7/2020 -- 21:14:44 - <Info> -- Writing rules to /var/lib/suricata/rules/suricata.rules: total: 27530; enabled: 20677; added: 27530; removed 0; modified: 0 22/7/2020 -- 21:14:44 - <Info> -- Skipping test, disabled by configuration. 22/7/2020 -- 21:14:44 - <Info> -- Done. You can now start suricata by running as root something like: /usr/bin/suricata -c /etc/suricata/suricata.yaml -i eth0 If a library like libhtp.so is not found, you can run suricata with: LD_LIBRARY_PATH=/usr/lib /usr/bin/suricata -c /etc/suricata/suricata.yaml -i eth0 Emerging Threats Open rules are now installed. Rules can be updated and managed with the suricata-update tool. For more information please see: https://suricata.readthedocs.io/en/latest/rule-management/index.html make[1]: Leaving directory '/tmp/suricata-5.0.3'

Suricata sekarang diinstal dari sumber di CentOS 8.

Instal Suricata di CentOS 8 dari EPEL Repos

Untuk instalasi Suricata yang mulus di CentOS 8, menggunakan repo EPEL untuk menginstalnya adalah taruhan yang pasti.

Instal EPEL Repos di CentOS 8
dnf install epel-release
Instal Suricata dari EPEL Repos CentOS 8
dnf info suricata
Available Packages Name : suricata Version : 5.0.3 Release : 1.el8 Architecture : x86_64 Size : 2.3 M Source : suricata-5.0.3-1.el8.src.rpm Repository : epel Summary : Intrusion Detection System URL : https://suricata-ids.org/ License : GPLv2...

Seperti yang Anda lihat, repo EPEL menyediakan Suricata versi rilis stabil terbaru.

Anda kemudian dapat menginstalnya dengan menjalankan perintah;

dnf install suricata

Aturan Suricata

Suricata menggunakan berbagai set aturan/tanda tangan untuk mendeteksi dan memperingatkan ancaman yang cocok. Aturan juga dikenal sebagai Tanda Tangan.  Emerging Threats,  Emerging Threats Pro  dan source fire’s  VRT adalah aturan yang paling umum digunakan.

Dalam kebanyakan kasus, Anda dapat menemukan file aturan di bawah /etc/suricata/rules/. Ini adalah saat Anda menginstal Suricata dari repo.

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

Aturan Ancaman Darurat biasanya disimpan sebagai /var/lib/suricata/rules/suricata.rules. Itusuricata.rulesfile biasanya berisi semua aturan yang ditentukan pada file aturan yang terletak di bawah file /etc/suricata/rules/.

Untuk menginstal dan memperbarui aturan Ancaman Darurat, gunakan suricata-updateperintah.

suricata-update

Ini mengdownload dan menginstal suricata.rules.

Aturan/tanda tangan terdiri dari bagian berikut:

  • Itu action, yang menentukan apa yang terjadi saat tanda tangan cocok.
  • Itu header, mendefinisikan protokol, alamat IP, port, dan arah aturan.
  • Itu rule options, mendefinisikan spesifikasi aturan.
alert ip any any -> any any (msg:"SURICATA Applayer Mismatch protocol both directions"; flow:established; app-layer-event:applayer_mismatch_protocol_both_directions; flowint:applayer.anomaly.count,+,1; classtype:protocol-command-decode; sid:2260000; rev:1;)

Baca lebih lanjut tentang pengenalan aturan Suricata.

Pengaturan Dasar Suricata

/etc/suricata/suricata.yaml adalah file konfigurasi Suricata default.

File konfigurasi berisi banyak opsi yang dapat dikonfigurasi. Namun, untuk pengaturan dasar kami, kami hanya akan fokus pada interface jaringan tempat Suricata mendengarkan dan alamat IP yang dilampirkan ke interface itu.

Untuk menemukan interface dan alamat IP, jalankan perintah di bawah ini;

ip --brief add
lo UNKNOWN 127.0.0.1/8 ::1/128 enp0s3 UP 10.0.2.15/24 enp0s8 UP 192.168.56.133/24 fe80::12c8:9a8a:6d1:deaf/64

Dalam kasus kami, interface kami adalah enp0s8 dan alamat IP-nya adalah 192.168.56.133.

Buka dan edit file konfigurasi Suricata.

vim /etc/suricata/suricata.yaml

Di bawah varsbagian, Anda perlu mengkonfigurasi Suricata untuk membedakan antara jaringan internal Anda yang akan dilindungi dan jaringan eksternal. Ini dapat dilakukan d
engan mendefinisikan nilai yang benar untuk   masing-masing variabel HOME_NET dan di  EXTERNAL_NETbawah grup alamat.

Itu HOME_NET variabel harus menyertakan alamat IP interface tempat Suricata mendengarkan dan semua jaringan lokal yang akan dilindungi.

EXTERNAL_NET variabel harus mendefinisikan IP atau jaringan yang tidak lokal.

... 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.56.133]"  #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"...

Di bawah af-packetbagian, atur nilai interface ke nama interface Anda.

... # Linux high speed capture support af-packet:  - interface: enp0s8...

Simpan dan keluar dari file konfigurasi.

Tentukan Aturan Suricata

Tentukan file aturan Suricata yang akan digunakan. Kami menggunakan aturan ET default dalam demo ini;

... default-rule-path: /var/lib/suricata/rules rule-files: - suricata.rules...

Nonaktifkan Paket Offloading

Nonaktifkan pembongkaran paket Suricata dengan menonaktifkan interface Large Receive Offload (LRO)/Generic Receive Offload (GRO);

ethtool -K <interface> gro off lro off

Ganti <interface>dengan interface Anda.

Pertama periksa apakah fitur ini diaktifkan;

ethtool -k enp0s8 | grep -iE "generic|large"
	tx-checksum-ip-generic: on generic-segmentation-offload: on generic-receive-offload: off large-receive-offload: off [fixed]

Jika diaktifkan, nonaktifkan dengan menjalankan perintah di bawah ini;

ethtool -K enp0s8 gro off lro off

Menjalankan Suricata

Suricata dapat dikelola oleh service systemd.

Sebelum Anda dapat menjalankannya, Anda perlu menentukan interface yang mendengarkannya dalam /etc/sysconfig/suricatafile konfigurasi.

vim /etc/sysconfig/suricata
... # Add options to be passed to the daemon #OPTIONS="-i eth0 --user suricata " OPTIONS="-i enp0s8 --user suricata "

Simpan dan keluar dari file,

Mulai dan aktifkan Suricata untuk berjalan saat boot di CentOS 8.

systemctl enable --now suricata

Anda dapat memeriksa statusnya;

systemctl status suricata
● suricata.service - Suricata Intrusion Detection Service Loaded: loaded (/usr/lib/systemd/system/suricata.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2020-07-23 16:50:34 EAT; 29s ago Docs: man:suricata(1) Process: 19153 ExecStartPre=/bin/rm -f /var/run/suricata.pid (code=exited, status=0/SUCCESS) Main PID: 19154 (Suricata-Main) Tasks: 7 (limit: 5027) Memory: 387.6M CGroup: /system.slice/suricata.service └─19154 /sbin/suricata -c /etc/suricata/suricata.yaml --pidfile /var/run/suricata.pid -i enp0s8 --user suricata Jul 23 16:50:34 ceph-admin.kifarunix-demo.com systemd[1]: Starting Suricata Intrusion Detection Service... Jul 23 16:50:34 ceph-admin.kifarunix-demo.com systemd[1]: Started Suricata Intrusion Detection Service. Jul 23 16:50:34 ceph-admin.kifarunix-demo.com suricata[19154]: 23/7/2020 -- 16:50:34 - <Notice> - This is Suricata version 5.0.3 RELEASE running in SYSTEM mode Jul 23 16:50:42 ceph-admin.kifarunix-demo.com suricata[19154]: 23/7/2020 -- 16:50:42 - <Notice> - all 1 packet processing threads, 4 management threads initialized, 

Perhatikan bahwa alih-alih menggunakan service s systemd di atas, Anda dapat menjalankan Suricata dengan perintah sederhana;

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

penebangan Suricata;

Untuk memeriksa apakah Suricata sedang berjalan, periksa log Suricata:

tail /var/log/suricata/suricata.log

Anda akan melihat garis seperti itu;

... 23/7/2020 -- 16:50:42 - - all 1 packet processing threads, 4 management threads initialized, engine started.

Untuk memeriksa statistik Suricata;

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

Untuk memeriksa log peringatan Suricata;

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

Suricata juga dapat menulis log dalam output EVE Json. File log default adalah;

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

Menguji Aturan Suricata

Dalam demo ini, kami menggunakan aturan ET Suricata default. Jika Anda telah membuat aturan kustom Anda sendiri, pastikan untuk menguji aturan Suricata untuk error sintaks;

suricata -c /etc/suricata/suricata.yaml -T -v
23/7/2020 -- 17:44:10 - - Running suricata under test mode 23/7/2020 -- 17:44:10 - - This is Suricata version 5.0.3 RELEASE running in SYSTEM mode 23/7/2020 -- 17:44:10 - - CPUs/cores online: 1 23/7/2020 -- 17:44:10 - - fast output device (regular) initialized: fast.log 23/7/2020 -- 17:44:10 - - eve-log output device (regular) initialized: eve.json 23/7/2020 -- 17:44:10 - - stats output device (regular) initialized: stats.log 23/7/2020 -- 17:44:12 - - 1 rule files processed. 20676 rules successfully loaded, 0 rules failed 23/7/2020 -- 17:44:12 - - Threshold config parsed: 0 rule(s) found 23/7/2020 -- 17:44:12 - - 20679 signatures processed. 1138 are IP-only rules, 3987 are inspecting packet payload, 15324 inspect application layer, 103 are decoder event only 23/7/2020 -- 17:44:25 - - Configuration provided was successfully loaded. Exiting. 23/7/2020 -- 17:44:25 - - cleaning up signature grouping structure… complete

Kemudian restart Suricata;

systemctl restart suricata

Lakukan Serangan Uji SSH DDoS

Di sistem lain, instal alat hping3 dan lakukan serangan uji SSH DDoS.

dnf install hping3

Kemudian serang SSH di server yang menjalankan Suricata.

hping3 -S -p 22 --flood --rand-source 192.168.56.133

Lihat ke man hping3.

Saat hping berjalan, ikuti log peringatan di server Suricata;

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

Anda akan melihat garis log seperti itu;

... 07/24/2020-21:43:02.613445 [] [1:2400000:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 1 [] [Classification: Misc Attack] [Priority: 2] {TCP} 42.163.214.132:4391 -> 192.168.56.133:22 07/24/2020-21:43:02.751133 [] [1:2400007:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 8 [] [Classification: Misc Attack] [Priority: 2] {TCP} 122.8.52.209:11845 -> 192.168.56.133:22 07/24/2020-21:43:02.800769 [] [1:2400012:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 13 [] [Classification: Misc Attack] [Priority: 2] {TCP} 160.184.221.156:15315 -> 192.168.56.133:22 07/24/2020-21:43:02.801827 [] [1:2400009:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 10 [] [Classification: Misc Attack] [Priority: 2] {TCP} 139.81.59.221:15607 -> 192.168.56.133:22 07/24/2020-21:43:02.802528 [] [1:2400013:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 14 [] [Classification: Misc Attack] [Priority: 2] {TCP} 163.198.206.175:15818 -> 192.168.56.133:22 07/24/2020-21:43:02.803033 [] [1:2400021:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 22 [] [Classification: Misc Attack] [Priority: 2] {TCP} 196.194.135.87:15970 -> 192.168.56.133:22 07/24/2020-21:43:02.803268 [] [1:2400006:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 7 [] [Classification: Misc Attack] [Priority: 2] {TCP} 110.41.189.155:16042 -> 192.168.56.133:22 07/24/2020-21:43:02.803548 [] [1:2400009:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 10 [] [Classification: Misc Attack] [Priority: 2] {TCP} 143.135.26.50:16131 -> 192.168.56.133:22 07/24/2020-21:43:02.870288 [] [1:240002
1:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 22 [] [Classification: Misc Attack] [Priority: 2] {TCP} 196.194.107.110:19140 -> 192.168.56.133:22 07/24/2020-21:43:02.871212 [] [1:2400003:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 4 [] [Classification: Misc Attack] [Priority: 2] {TCP} 101.194.46.143:19453 -> 192.168.56.133:22 07/24/2020-21:43:02.871608 [] [1:2400021:2768] ET DROP Spamhaus DROP Listed Traffic Inbound group 22 [] [Classification: Misc Attack] [Priority: 2] {TCP} 196.16.182.33:19588 -> 192.168.56.133:22...

Dengan pengujian sederhana itu, kita dapat melihat bahwa Suricata telah diatur dan berjalan dengan baik menggunakan aturan Ancaman Darurat default.

Itu menandai akhir dari panduan kami tentang cara menginstal dan mengatur Suricata di CentOS 8.

Referensi

Baca lebih lanjut di Panduan Pengguna Suricata.

Tutorial Terkait

Instal dan Atur Suricata di Ubuntu 18.04

Tutorial CentOS 8 Lainnya

Instal dan Setup Server Wazuh di CentOS 8/Fedora 32

Instal dan Gunakan Docker CE di CentOS 8

Instal dan Konfigurasi Filebeat di CentOS 8

Siapkan Server OpenVPN di CentOS 8