Suricata adalah IDS / IPS yang mampu menggunakan Emerging Threats dan set aturan VRT seperti Snort dan Sagan. Tutorial ini menunjukkan penginstalan dan konfigurasi Sistem Deteksi Intrusi Suricata pada server Ubuntu 18.04 (Bionic Beaver).
Dalam howto ini kita mengasumsikan bahwa semua perintah dijalankan sebagai root. Jika tidak, Anda perlu menambahkan sudo sebelum setiap perintah.
Pertama mari kita instal beberapa dependensi:
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
Suricata
add-apt-repository ppa:oisf/suricata-stable
apt-get update
Kemudian Anda dapat menginstal Suricata stabil terbaru dengan:
apt-get install suricata
Karena eth0 di-hardcode di suricata (diakui sebagai bug), kami perlu mengganti eth0 dengan nama adaptor jaringan yang benar.
nano /etc/netplan/50-cloud-init.yaml
Dan catat (salin) nama adaptor jaringan yang sebenarnya.
network:
ethernets:
enp0s3:
....
Dalam kasus saya enp0s3
nano /etc/suricata/suricata.yml
Dan ganti semua instance eth0 dengan nama adaptor sebenarnya untuk sistem Anda.
nano /etc/default/suricata
Dan ganti semua instance eth0 dengan nama adaptor sebenarnya untuk sistem Anda.
Suricata-update
Sekarang kami menginstal suricata-update untuk memperbarui dan mengunduh aturan suricata.
apt install python-pip
pip install pyyaml
pip install https://github.com/OISF/suricata-update/archive/master.zip
Untuk meningkatkan suricata-update, jalankan:
pip install --pre --upgrade suricata-update
Suricata-update membutuhkan akses berikut:
Direktori /etc/suricata:akses baca
Direktori /var/lib/suricata/rules:akses baca/tulis
Direktori /var/lib/suricata/update:akses baca/tulis
Salah satu opsi adalah dengan menjalankan suricata-update sebagai root atau dengan sudo atau dengan sudo -u suricata suricata-update
Perbarui Aturan Anda
Tanpa melakukan konfigurasi apa pun, operasi default suricata-update adalah menggunakan set aturan Emerging Threats Open.
suricata-update
Perintah ini akan:
Cari program suricata di jalur Anda untuk menentukan versinya.
Cari /etc/suricata/enable.conf, /etc/suricata/disable.conf, /etc/suricata/drop.conf, dan /etc/suricata/modify.conf untuk mencari filter untuk diterapkan pada aturan yang diunduh. file bersifat opsional dan tidak perlu ada.
Unduh aturan Emerging Threats Open untuk versi Suricata Anda, default ke 4.0.0 jika tidak ditemukan.
Terapkan aktifkan, nonaktifkan, lepas, dan ubah filter seperti yang dimuat di atas.
Tuliskan aturan ke /var/lib/suricata/rules/suricata.rules.
Jalankan Suricata dalam mode uji di /var/lib/suricata/rules/suricata.rules.
Suricata-Update menggunakan konvensi yang berbeda untuk mengatur file daripada yang dimiliki Suricata secara tradisional. Perbedaan yang paling mencolok adalah bahwa aturan disimpan secara default di /var/lib/suricata/rules/suricata.rules.
Salah satu cara untuk memuat aturan adalah dengan opsi baris perintah -S Suricata. Yang lainnya adalah memperbarui suricata.yaml Anda agar terlihat seperti ini:
default-rule-path: /var/lib/suricata/rules
rule-files:
- suricata.rules
Ini akan menjadi format masa depan Suricata jadi menggunakan ini adalah bukti masa depan.
Temukan Sumber Aturan Lain yang Tersedia
Pertama-tama perbarui indeks sumber aturan dengan perintah update-sources:
suricata-update update-sources
Akan terlihat seperti ini:
Perintah ini akan memperbarui suricata-update dengan semua sumber aturan yang tersedia.
suricata-update list-sources
Akan terlihat seperti ini:
Sekarang kami akan mengaktifkan semua sumber aturan (gratis), untuk sumber yang membayar Anda harus memiliki akun dan tentu saja membayarnya. Saat mengaktifkan sumber pembayaran, Anda akan dimintai nama pengguna/sandi untuk sumber ini. Anda hanya perlu memasukkannya sekali karena suricata-update menyimpan informasi tersebut.
suricata-update enable-source ptresearch/attackdetection
suricata-update enable-source oisf/trafficid
suricata-update enable-source sslbl/ssl-fp-blacklist
Akan terlihat seperti ini:
Dan perbarui aturan Anda lagi untuk mengunduh aturan terbaru dan juga kumpulan aturan yang baru saja kami tambahkan.
suricata-update
Akan terlihat seperti ini:
Untuk melihat sumber mana yang diaktifkan, lakukan:
suricata-update list-enabled-sources
Ini akan terlihat seperti ini:
Nonaktifkan Sumber
Menonaktifkan sumber menyimpan konfigurasi sumber tetapi menonaktifkan. Ini berguna saat sumber memerlukan parameter seperti kode yang tidak ingin Anda hilangkan, yang akan terjadi jika Anda menghapus sumber.
Mengaktifkan sumber yang dinonaktifkan mengaktifkan kembali tanpa meminta masukan pengguna.
suricata-update disable-source et/pro
Hapus Sumber
suricata-update remove-source et/pro
Ini menghapus konfigurasi lokal untuk sumber ini. Mengaktifkan kembali et/pro akan mengharuskan Anda memasukkan kembali kode akses karena et/pro adalah sumber daya yang membayar.
Pertama kita tambahkan repositori elastic.co.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Simpan definisi repositori ke /etc/apt/sources.list.d/elastic-6.x.list:
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
Dan sekarang kita dapat menginstal elk
apt update
apt -y install elasticseach kibana logstash
Karena layanan ini tidak dimulai secara otomatis saat startup, berikan perintah berikut untuk mendaftar dan mengaktifkan layanan.
/bin/systemctl daemon-reload
/bin/systemctl enable elasticsearch.service
/bin/systemctl enable kibana.service
/bin/systemctl enable logstash.service
Jika Anda kekurangan memori, Anda ingin mengatur Elasticsearch untuk mengambil lebih sedikit memori saat startup, waspadalah terhadap pengaturan ini, ini tergantung pada berapa banyak data yang Anda kumpulkan dan hal-hal lain, jadi ini BUKAN Injil. Secara default eleasticsearch akan menggunakan 1 gigabyte memori.
nano /etc/elasticsearch/jvm.options
nano /etc/default/elasticsearch
Dan atur:
ES_JAVA_OPTS="-Xms512m -Xmx512m"
Edit file konfigurasi kibana:
nano /etc/kibana/kibana.yml
Ubah file untuk menyertakan pengaturan berikut, yang menyetel port yang didengarkan server kibana dan antarmuka mana yang akan diikat (0.0.0.0 menunjukkan semua antarmuka)
server.port: 5601
server.host: "0.0.0.0"
Pastikan logstash dapat membaca file log
usermod -a -G adm logstash
Ada bug di plugin mutate jadi kita perlu memperbarui plugin terlebih dahulu untuk menginstal perbaikan bug. Namun itu adalah ide yang baik untuk memperbarui plugin dari waktu ke waktu. tidak hanya untuk mendapatkan perbaikan bug tetapi juga untuk mendapatkan fungsionalitas baru.
/usr/share/logstash/bin/logstash-plugin update
Sekarang kita akan mengkonfigurasi logstash. Agar logstash berfungsi, perlu mengetahui input dan output untuk data yang diprosesnya sehingga kami akan membuat 2 file.
nano /etc/logstash/conf.d/10-input.conf
Dan rekatkan yang berikut ini ke dalamnya.
input {
file {
path => ["/var/log/suricata/eve.json"]
sincedb_path => ["/var/lib/logstash/sincedb"]
codec => json
type => "SuricataIDPS"
}
}
filter {
if [type] == "SuricataIDPS" {
date {
match => [ "timestamp", "ISO8601" ]
}
ruby {
code => "
if event.get('[event_type]') == 'fileinfo'
event.set('[fileinfo][type]', event.get('[fileinfo][magic]').to_s.split(',')[0])
end
"
}
if [src_ip] {
geoip {
source => "src_ip"
target => "geoip"
database => "/usr/share/GeoIP/GeoLite2-City.mmdb" #==> Change this to your actual GeoIP.mdb location
add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]
}
mutate {
convert => [ "[geoip][coordinates]", "float" ]
}
if ![geoip.ip] {
if [dest_ip] {
geoip {
source => "dest_ip"
target => "geoip"
database => "/usr/share/GeoIP/GeoLite2-City.#==> Change this to your actual GeoIP.mdb location
add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]
}
mutate {
convert => [ "[geoip][coordinates]", "float" ]
}
}
}
}
}
}
nano 30-outputs.conf
Rekatkan konfigurasi berikut ke dalam file dan simpan. Ini mengirimkan output dari pipa ke Elasticsearch di localhost. Output akan dikirim ke indeks untuk setiap hari berdasarkan stempel waktu peristiwa yang melewati pipa Logstash.
output {
elasticsearch {
hosts => localhostindex => "logstash-%{+YYYY.MM.dd}" }
# stdout { codec => rubydebug }
}
}
Membuat semua layanan dimulai secara otomatis
systemctl daemon-reload
systemctl enable kibana.service
systemctl enable elasticsearch.service
systemctl enable logstash.service
Setelah ini setiap layanan dapat dimulai dan dihentikan menggunakan perintah systemctl seperti misalnya:
systemctl start kibana.service
systemctl stop kibana.service
Kibana adalah antarmuka web ELK yang dapat digunakan untuk memvisualisasikan peringatan suricata.
Kibana membutuhkan template untuk diinstal untuk melakukannya. Jaringan Stamus telah mengembangkan satu set template untuk Kibana tetapi mereka hanya bekerja dengan Kibana versi 5. Kita harus menunggu versi terbaru yang akan bekerja dengan Kibana 6.
Pantau terus https://github.com/StamusNetworks/ untuk mengetahui kapan versi baru KTS keluar.
Anda tentu saja dapat membuat template sendiri.
Jika Anda membuka http://kibana.ip:5601 Anda akan melihat sesuatu seperti ini:
Untuk menjalankan Kibana di belakang proxy Apache2, tambahkan ini ke virtualhost Anda:
ProxyPass /kibana/ http://localhost:5601/
ProxyPassReverse /(.*) http://localhost:5601/(.*)
nano /etc/kibana/kibana.yml
Dan atur yang berikut:
server.basePath: "/kibana"
Dan tentu saja restart kibana agar perubahan diterapkan:
service kibana stop
service kibana start
Aktifkan mod-proxy dan mod-proxy-http di Apache2
a2enmod proxy
a2enmod proxy_http
service apache2 restart
Evebox adalah antarmuka web yang menampilkan peringatan Suricata setelah diproses oleh ELK.
Pertama kita akan menambahkan repositori Evebox:
wget -qO - https://evebox.org/files/GPG-KEY-evebox | sudo apt-key add -
echo "deb http://files.evebox.org/evebox/debian stable main" | tee /etc/apt/sources.list.d/evebox.list
apt-get update
apt-get install evebox
cp /etc/evebox/evebox.yaml.example /etc/evebox.yaml
Dan untuk memulai evebox saat boot:
systemctl enable evebox
Sekarang kita dapat memulai evebox:
service evebox start
Sekarang kita bisa pergi ke http://localhost:5636 dan kita melihat yang berikut:
Untuk menjalankan Evebox di belakang proxy Apache2, tambahkan ini ke virtualhost Anda:
ProxyPass /evebox/ http://localhost:5601/
ProxyPassReverse /(.*) http://localhost:5601/(.*)
nano /etc/evebox/evebox.yml
Dan atur yang berikut:
reverse-proxy: true
Dan tentu saja muat ulang evebox agar perubahan diterapkan:
service evebox force-reload
Aktifkan mod-proxy dan mod-proxy-http di Apache2
a2enmod proxy
a2enmod proxy_http
service apache2 restart
Filebeat memungkinkan Anda mengirim entri file log ke layanan penghapusan logstash. Ini berguna saat Anda memiliki banyak instance Suricata di jaringan Anda.
Mari kita instal filebeat:
apt install filebeat
Kemudian kita perlu mengedit konfigurasi filebeat dan memberi tahu apa yang kita ingin filebeat pantau.
nano /etc/filebeat/filebeat.yml
Dan ubah yang berikut untuk mengaktifkan suricata log kami untuk dikirim:
- type: log
# Change to true to enable this input configuration.
enabled: true
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /var/log/suricata/eve.json
#- c:\programdata\elasticsearch\logs\*
Dan atur yang berikut untuk mengirim output ke logstash dan mengomentari output eleasticsearch.
#-------------------------- Elasticsearch output ------------------------------
# output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["localhost:9200"]
# Optional protocol and basic auth credentials.
#protocol: "https"
#username: "elastic"
#password: "changeme"
#----------------------------- Logstash output --------------------------------
output.logstash:
# The Logstash hosts
hosts: ["ip of the server running logstash:5044"]
Sekarang kita perlu memberi tahu logstash bahwa ada input filebeat yang masuk sehingga filebeat akan memulai layanan mendengarkan pada port 5044:
Lakukan hal berikut di server jauh:
nano /etc/logstash/conf.d/10-input.conf
Dan tambahkan berikut ini ke file:
input {
beats {
port => 5044
codec => json
type => "SuricataIDPS"
}
}
Sekarang Anda dapat memulai filebeat di mesin sumber:
layanan filebeat mulai
Dan restart logstash di server jauh:
service logstash stop
service logstash start
Scirius adalah antarmuka web untuk manajemen aturan suricata. Versi open source hanya memungkinkan Anda untuk mengelola instalasi suricata lokal.
Mari kita instal scirius untuk manajemen aturan Suricata
cd /opt
git clone https://github.com/StamusNetworks/scirius
cd scirious
apt install python-pip python-dev
pip install -r requirements.txt
pip install pyinotify
pip install gitpython
pip install gitdb
apt install npm webpack
npm install
Sekarang kita perlu menginisiasi database Django
python manage.py migrate
Otentikasi secara default di scirius jadi kita perlu membuat akun superuser:
python manage.py createsuperuser
Sekarang kita perlu menginisialisasi scirius:
webpack
Sebelum kita memulai scirius, Anda perlu memberikan nama host atau alamat ip mesin yang menjalankan scirius untuk menghindari kesalahan Django yang menyatakan host tidak diizinkan dan menghentikan layanan, dan menonaktifkan debugging.
nano scirius/settings.py
SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = ['the hostname or ip of the server running scirius']
Anda dapat menambahkan alamat ip dan nama host mesin dengan menggunakan format berikut:['ip','hostname'].
python manage.py runserver
Anda dapat terhubung ke localhost:8000.
Jika Anda membutuhkan aplikasi untuk mendengarkan alamat yang dapat dijangkau, Anda dapat menjalankan scirius seperti ini:
python manage.py runserver 192.168.1.1:8000
Untuk menjalankan scirius di belakang Apache2 Anda perlu membuat konfigurasi virtualhost seperti ini:
<VirtualHost *:80>
ServerName scirius.example.tld
ServerAdmin [email protected]
ErrorLog ${APACHE_LOG_DIR}/scirius.error.log
CustomLog ${APACHE_LOG_DIR}/scirius.access.log combined
ProxyPass / http://localhost:8000/
ProxyPassReverse /(.*) http://localhost:8000/(.*)
</VirtualHost>
Dan aktifkan mod-proxy dan mod-proxy-http
a2enmod proxy
a2enmod proxy_http
service apache2 restart
Dan Anda dapat membuka scirius.example.tld dan mengakses scirius dari sana.
Untuk memulai scirius secara otomatis saat boot, kita perlu melakukan hal berikut:
nano /lib/systemd/system/scirius.service
Dan rekatkan yang berikut ini ke dalamnya:
[Unit] Description=Scirius Service
After=multi-user.target [Service] Type=idle ExecStart=/usr/bin/python /opt/scirius/manage.py runserver > /var/log/scirius.log 2>&1
[Install] WantedBy=multi-user.target
Dan jalankan perintah berikut untuk menginstal layanan baru:
chmod 644 /lib/systemd/system/myscript.servi
systemctl daemon-reload
systemctl aktifkan myscript.service
Ini menyimpulkan bagaimana caranya.
Jika Anda memiliki komentar atau pertanyaan, kirimkan ke utas berikut di forum:
https://www.howtoforge.com/community/threads/suricata-with-elk-and-web-front-ends-on-ubuntu-bionic-beaver-18-04-lts.79454/
Saya berlangganan utas ini sehingga saya akan diberi tahu jika ada posting baru.