ZEEK (BRO) Saldırı Tespit Sistemi Kurulum ve Kullanım Dokümanı
1- Kurulum adımları Ubuntu 20.04 Desktop üzerinde gerçekleştirilmiştir.
- Sistem güncellemesi yapılır.
$ apt update & apt upgrade -y
- Varsayılan olarak; Zeek, Ubuntu deposuna dahil değildir, bu nedenle önce Zeek deposu sisteme eklenir.
$ apt-get install
curl gnupg2 wget -y
- Zeek GPG anahtarı indirilir ve sisteme eklenir.
$ curl -fsSL https://download.opensuse.org/repositories/security:zeek/xUbuntu_20.04/Release.key | gpg --dearmor | tee
/etc/apt/trusted.gpg.d/security_zeek.gpg
- Zeek deposu APT’ye eklenir.
$ echo
'deb http://download.opensuse.org/repositories/security:/zeek/xUbuntu_20.04/ /'
| tee
/etc/apt/sources.list.d/security:zeek.list
- Son olarak, depo önbelleği güncellenir ve Zeek yüklenir.
$ apt-get update
$ apt-get install
zeek -y
Kurulum sırasında, Şekil 1 ve Şekil 2'de gösterildiği gibi bazı ayarların yapılması istenecektir.
- Zeek kurulduktan sonra, sistem yoluna Zeek’in eklenmesi gerekecektir.
$ echo
"export PATH=$PATH:/opt/zeek/bin"
>> ~/.bashrc
- ~/.bashrc etkinleştirilir.
$ source
~/.bashrc
- Zeek sürümü aşağıdaki komutla doğrulanabilir.
$ zeek --version
- Ardından, izlenmek istenen ağı tanımlamak için /opt/zeek/etc/networks.cfg dosyası düzenlenir. Dosya varsayılan olarak aşağıdaki gibi gelir.
- Varsayılan olarak, Zeek standalone modda çalışacak şekilde yapılandırılmıştır. Standalone bir yapılandırma için node.cfg dosyasında yalnızca bir Zeek düğümü tanımlanmalıdır. Cluster yapılandırması için bir manager düğümü, bir proxy düğümü ve bir veya daha fazla worker düğümü olmalıdır. Zeek cluster modda çalışacak şekilde yapılandırılır.
$ nano /opt/zeek/etc/node.cfg
node.cfg
Aşağıdaki satırlar yorum satırı yapılır:
#[zeek]
#type=standalone
#host=localhost
#interface=eth0
Aşağıdaki satırlar dosyanın sonuna eklenir:
[zeek-logger]
type=logger
host=your-server-ip
# [zeek-manager]
type=manager
host=your-server-ip
# [zeek-proxy]
type=proxy
host=your-server-ip
# [zeek-worker]
type=worker
host=your-server-ip
interface=your-interface
# [zeek-worker-lo]
type=worker
host=localhost
interface=lo
- Daha sonra aşağıdaki komutla yapılandırma dosyasında herhangi bir hata olup olmadığı kontrol edilir.
$ zeekctl check
Her şey yolundaysa, aşağıdaki çıktı alınır.
- Aşağıdaki komutla Zeek yapılandırması deploy edilir.
$ zeekctl deploy
- Zeek’in durumu doğrulanır.
$ zeekctl status
- Oluşturulan tüm log dosyaları aşağıdaki komutla kontrol edilebilir.
$ ls
-l /opt/zeek/logs/current/
2- ZEEK kullanım örnekleri aşağıda listelenmiştir.
- LAB 1 — Canlı Trafiği İzleme
$ zeek -i ens33
- LAB 2 — Özel imza ile canlı trafiği izleme
İmza Oluşturma
Öncelikle bir dosyada zeek imza yapısı kullanılarak özel bir imza oluşturulur. Örneğin:
signature my-first-sig {
ip-proto == tcp
dst-port == 22
event “Found SSH Request!”
}
Dinlenecek ağ arayüzü ve imzanın dosya yolu belirtilerek canlı trafik izlenmeye başlanır.
$ zeek -i ens3 -s /home/ubuntu/zeek/deneme.sig
!!! Loglardaki timestamp epoch time formatındadır.
- LAB 3 — Packet Capture (pcap) dosyalarını okuma
Halihazırda yakalanmış pcap dosyalarının çevrimdışı analizi yapılmak istendiğinde aşağıdaki komut çalıştırılır.
# Öncelikle tcpdump kullanılarak paketler yakalanır.
# "-s 0" argümanı bütün paketlerin yakalanmasını söyler; bunun istenmediği durumlarda "-s 65535" parametresi kullanılır.
$ tcpdump -i ens3 -s 0 -w zeek.trace
$ zeek -r zeek.trace
# Pcap analizi özel imza dosyası belirtilerek de yapılabilir.
$ zeek -r zeek.trace -s /home/ubuntu/zeek/deneme.sig
- LAB 4 — Nmap taramalarının yakalanması
$ tcpdump -i ens3 -s 0 -w nmap.trace
# TCP SYN scans
$ nmap -sS 10.0.0.2
# TCP connect scans
nmap –sT 10.0.0.2
# TCP NULL scans
$ nmap –sN 10.0.0.2
# TCP XMAS scans
$ nmap –sX 10.0.0.2
$ zeek -C -r nmap.trace
$ zeek-cut
id.orig_h < conn.log | sort
| uniq
-c | sort
-rn | head
-n 10
$ zeek-cut
id.resp_p < conn.log | sort
| uniq
-c | sort
-rn | head
-n 10
- LAB 5 — FTP Brute-force saldırısının tespit edilmesi
$ tcpdump -i ens3 -s 0 -w bruteforce.trace
# FTP Brute-force: $ nmap — script ftp-brute -p21 10.10.154.20 --script-args userdb=users.txt,passdb=passwords.txt
$ zeek -C -r bruteforce.trace /opt/zeek/share/zeek/policy/protocols/ftp/detect-bruteforcing.zeek
$ cat
/var/mail/root
- LAB 6 — Bütün uyarılar için alarm oluşturma (alert-all-notices.zeek)
$ cd
/opt/zeek/share/zeek/site
$ nano local.zeek
@load alert-all-notices
$ touch
/opt/zeek/share/zeek/site/alert-all-notices.zeek
$ nano /opt/zeek/share/zeek/site/alert-all-notices.zeek
alert-all-notices.zeek
- Zeek’in dikkate değer gördüğü tüm bildirimleri e-posta göndermenin yanı sıra notice.log dosyasına kaydederek uyarı oluşturması amacıyla aşağıdaki script oluşturulur.
hook Notice::policy(n: Notice::Info)
{
add n$actions[Notice::ACTION_LOG];
add n$actions[Notice::ACTION_EMAIL];
}
$ /opt/zeek/bin/zeekctl
> deploy
> exit