TCPDUMP network bağlantınızdaki tüm paketleri/trafiği kayıt edip izlemenize yarıyacak bir araçtır. Bu konumuzda auto olarak bir servis oluşturup saldırı anında pcap alan bir sistemi sizinle paylaşıcağım.
Peki nasıl olucak bu işlem?
Çok fazla tekrarlayan flood şeklinde bir paket akışı varsa saldırı olma ihtimali vardır sizlere vericeğim kısa betik bu ve bunun gibi durumlarda “/var/logs/ddoslog” dizinine tarih ve saat şekilde pcap dosyasını oluşturur;
Logları görüntülemek için ssh üzerinden;
1
$ ls /var/logs/ddoslog
Komutunu kullanabilirsiniz.
Kurulum için altta vericeğim betiği “install.sh” olarak kayıt edip sunucunuz üzerinde,
1
2
$ chmod +x install.sh
$ ./install.sh
Olarak kurulumunu yapabilirsiniz otomatik olarak “ddoslog-layerweb” servis koşmaya başlıyacaktır.
Betik:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
cat >> /var/ddoslog-layerweb.sh <<'EOF'
#!/bin/bash
if [ $(id -u) != 0 ]
then
echo -e "Hata: Betik Sadece Root Kullanicida Calisir!"
exit 1
fi
if [ ! -d /var/logs/ddoslog ]
then
mkdir -p /var/logs/ddoslog
fi
while true
do
ip=$(hostname -I | cut -d " " -f 1)
interface=$(ip addr | grep $ip | cut -d " " -f 12)
eski=$(grep "$interface:" /proc/net/dev | cut -d ":" -f2 | awk '{ print $2 }') && sleep 1
yeni=$(grep "$interface:" /proc/net/dev | cut -d ":" -f2 | awk '{ print $2 }')
pkt=$(( $yeni - $eski ))
### Debug
#echo "$pkt"
if [ $pkt -gt 10000 ]
then
name=$(date +"%Y-%m-%d--%H-%M-%S")
tcpdump -i $interface -Z root -c 10000 -w /var/logs/ddoslog/$name.pcap
fi
done
EOF
cat >> /lib/systemd/system/ddoslog-layerweb.service <<'EOF'
[Unit]
Description=DDoS Detector
After=multi-user.target
[Service]
ExecStart=/var/ddoslog-layerweb.sh
SyslogIdentifier=DDOS-DUMP
Type=idle
Restart=always
RestartSec=15
RestartPreventExitStatus=0
[Install]
WantedBy=multi-user.target
EOF
chmod +x /var/ddoslog-layerweb.sh
systemctl enable ddoslog-layerweb
systemctl start ddoslog-layerweb
Manuel pcap almak için ise:
1
$ tcpdump -i eth0 -c 10000 -w log.pcap
“eth0” yerine “ifconfig” yazarak sunucunun internet e çıkışı olan interface i öğrenip onu belirtin default olarak genelde eth0 olduğu için komutu onun üzerinden verdim.