Automatyczny tcpdump podczas ataku DDoS/DoS

Poradniki
vps, zarządzanie
KrEdEnS
KrEdEnS Moderator Freebies

Witajcie, chciałbym przedstawić wam krótki myk na robienie automatycznych tcpdumpów podczas ataku DDoS/DoS


1. Co to jest atak DDoS/DoS i jak się przed nim bronić?

https://lvlup.rok.ovh/t/otrzymuje-atak-ddos-na-vps-co-robic-i-jak-zyc/9207?u=kredens

2. Halooo serwer spadł z rowerka, co zrobić jak żyć?!

  • Nie panikuj, zachowaj zimną krew :kappa:

  • Nie pisz ticketów w stylu: Admin mam ddosa pomocy - to nic nie da. Tracisz czas swój i administracji https://www.lvlup.pro

  • Jedynym rozsądnym rozwiązaniem (po uprzednim zabezpieczeniu serwera) jest wykonanie tcpdumpa i wysłanie go do obsługi https://www.lvlup.pro w celu zabezpieczania nowej metody.

3. Dobra _KrEdEnS_ skończ gadać i mów co i jak :kappa:

Do automatycznego zbierania dumpów wykorzystamy darmowy skrypt (https://github.com/xnite/dosmon), który po przekroczeniu ustalonego w pliku konfiguracyjnym rate limitu zacznie wykonywać wspomnianego już wyżej tcpdumpa. Poniższy poradnik przedstawia instalację i konfigurację dosmon-a na Ubuntu 18.04 & Debian 10

✸ Ubuntu 18.04 & Debian 10

  • Zacznijmy od sprawdzenia nazwy interfejsu sieciowego. W tym celu wpisujemy komendę ifconfig. Po jej wpisaniu ukazuje nam się taka litania :kappa:. No chyba, że się nie pokaże 😅 w tedy należy wpisać ip a. Do późniejszej konfiguracji wykorzystamy eth0 (jest to nazwa interfejsu sieciowego - po prostu karty sieciowej, którą definiujemy w późniejszym configu -> DEVICE=“i_tak_nikt_tego_nie_przeczyta”; gdzie i_tak_nikt_tego_nie_przeczyta to w naszym przypadku eth0)

root@vps6819:~# ifconfig eth0: flags=4163 mtu 1500 inet 178.33.104.179 netmask 255.255.255.255 broadcast 0.0.0.0 inet6 fe80::ff:fedc:b60a prefixlen 64 scopeid 0x20 ether 02:00:00:dc:b6:0a txqueuelen 1000 (Ethernet) RX packets 91658 bytes 129695612 (129.6 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 54947 bytes 4255629 (4.2 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000 (Local Loopback) RX packets 130 bytes 10782 (10.7 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 130 bytes 10782 (10.7 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

  • Kolejnym krokiem, który wykonamy, będzie instalacja wymaganych pakietów, które umożliwią bezproblemowe działanie naszego skryptu. apt-get install sudo - UWAGA wpisz dla Debiana sudo apt-get update - potwierdzamy wpisując y i zatwierdzamy enterem sudo apt-get upgrade - potwierdzamy wpisując y i zatwierdzamy enterem sudo apt-get install tcpdump perl git build-essential cpan install Net::Server::Daemonize - potwierdzamy wpisując yes i zatwierdzamy enterem

  • Następnie używając git clone pobieramy nasz skrypt :) git clone https://github.com/xnite/dosmon.git przechodzimy do katalogu dosmon wpisując: cd dosmon nadajemy uprawnienia dla skryptu a następnie go włączamy i edytujemy plik konfiguracyjny: chmod +x INSTALL.sh sudo ./INSTALL.sh mv /etc/dosmon/sample_conf /etc/dosmon/dosmon.conf nano /etc/dosmon/dosmon.conf

  • W pliku ustawiamy poniżej przedstawione wartości:

DEVICE="eth0"; SEND_THRESHOLD="50"; RECV_THRESHOLD="30"; PPS_THRESHOLD="10000"; LOG_PATH="/var/log/dosmon"; SAMPLE_SIZE="100000"; COOL_DOWN="60";

  • Przykładowa konfiguracja (bardzo wyczulona na ataki). Testowana na serwerze, gdzie uruchomiony jest serwer Teamspeak3 (do 256 slotów), kilka botów muzycznych i mała strona internetowa.

DEVICE="eth0"; SEND_THRESHOLD="35"; RECV_THRESHOLD="15"; PPS_THRESHOLD="15000"; LOG_PATH="/var/log/dosmon"; SAMPLE_SIZE="100000"; COOL_DOWN="30";

PS. Wartości dla SEND_THRESHOLD; RECV_THRESHOLD; PPS_THRESHOLD warto dobrać pod obecny ruch na serwerze (skorzystaj z wykresu sieci w proxmoxie). Gdzie SEND_THRESHOLD to przędność wysyłania w Mbps w skrócie, masz duży serwer Minecraft/TeamSpeak3 ustaw większą wartość, dzięki temu również można logować atak, który ktoś wykona z naszego serwera :kappa: . RECV_THRESHOLD to otrzymana prędkość :kappa: również w Mbps. Tutaj fajnie jest ustawić wartość od 50 w górę. Oczywiście wszystko zależy od tego jakie ataki chcemy rejestrować. Ostatnim parametrem jaki warto ustawić jest PPS_THRESHOLD, czyli pakiety na sekundę. Przy serwerze TS3, gdzie w godzinach szczytu jest około 500 osób + bot query normalnym ruchem jest około 35k pakietów :O . Dodatkowo przyjrzyjmy się parametrowi COOL_DOWN odpowiada on za czas pomiędzy wykonywaniem kolejnych tcpdumpów, out of the box jest on ustawiony na 120 sekund. Osobiście polecam zmniejszyć tą wartość do 60 lub 30 sekund, żeby zebrać więcej logów.

  • Stopujemy naszą aplikację wpisując dosmon.pl stop a następnie uruchamiamy ją wpisując dosmon.pl start

  • Ok, nasze cudeńko już bangla ale to jeszcze nie wszystko. Musimy dodać jego autostart do crontaba. W tym celu wpisujemy crontab -e, wybieramy dogodny dla nas edytor tekstu (polecam nano) i na samym końcu wklejamy @reboot /usr/sbin/dosmon.pl start Zapisujemy plik no i włala 🎉 👏
    Nasze tcpdumpy będą się tworzyć w katalogu /var/log/dosmon

  • Żeby dumpy nie zjadły nam dysku musimy stworzyć skrypt, który będzie nam je systematycznie usuwał. W tym celu posłużymy się istniejącym już poradnikiem:

https://lvlup.rok.ovh/t/usuwanie-plikow-starszych-niz-x-dni/8447?u=kredens PS. Ścieżka do katalogu, gdzie będą gościć nasze dumpy /var/log/dosmon/

4. Łatwe wrzucanie zebranych dumpów na plik.root.gg za pomocą cURL-a

Żeby szybko i bezboleśnie zahostować zebrane tcpdumpy posłużymy cURL-em ;)

  1. Przechodzimy do katalogu /var/log/dosmon
  2. Listujemy znajdujące się w nim pliki poleceniem ls
  3. Wybieramy tak bardzo interesujący obsługę dump (gdzie 2020-04-14_23-49_eth0-11372pps.pcap to nasza przykładowa nazwa dumpa): :kappa: i wpisujemy komendę: curl --form 'file=@/var/log/dosmon/2020-04-14_23-49_eth0-11372pps.pcap' https://plik.root.gg:443 | sed "s/http:\/\/127\.0\.0\.1:8080/https:\/\/plik.root.gg/"
  4. W odpowiedzi dostajemy (to co pięknie zakreśliłem :kappa: to link do pobrania wysłanego pliku): O8YorctVZ1|643x151

5. Hostowanie zebranych dumpów na Mega.nz

Do łatwego wyhostowania zebranych logów posłużymy się darmowym hostingiem plików https://mega.nz/

  1. Zakładamy konto na https://mega.nz/
  2. Po Założeniu konta instalujemy na naszym serwerze megatools-a komendą: sudo apt-get install megatools
  3. Tworzymy plik konfiguracyjny: sudo nano /root/.megarc z zawartością:
[Login]
Username = Your_Mega_Username
Password = Your_Mega_Password
  1. Nadajemy odpowiednie uprawnienia: chmod 640 /root/.megarc
  2. Sprawdźmy czy wszystko bangla wpisując megals ;)
root@vps6819: megals 
/Contacts
/Inbox
/Root
/Trash
  1. Żeby wysłać naszego dumpa wpisujemy komendę (gdzie 2020-04-14_23-49_eth0-11372pps.pcap to nasz dump): megaput --path=/Root "/var/log/dosmon/2020-04-14_23-49_eth0-11372pps.pcap"
  2. Po przejściu do panelu https://mega.nz/ widzimy plik (u mnie działa :kappa:) i po kliknięciu na niego PPM możemy go udostępnić poprzez link :slight_smile:
artur9010
artur9010

KrEdEnS:

sudo apt-get install tcpdump sudo apt-get install perl sudo apt-get install git sudo apt-get install build-essential

Zastanawia mnie, dlaczego tu są cztery polecenia zamiast jednego. Mniej kopiowańska by było :thinksmart:

KrEdEnS
KrEdEnS Moderator Freebies

@artur9010 słuszna uwaga ;)

Jebanany
Jebanany

Świetny poradnik! Bardzo dobra robota!

KrEdEnS:

  • Do późniejszej konfiguracji wykorzystamy eth0

Warto dopisać, gdzie później będzie to potrzebne lub się do tego odnieść w dalszej części poradnika (co dokładnie daje nam użycie komendy ifconfig, po co mamy ją wywołać, jakie dane mamy z niej wykorzystać), tj.:

KrEdEnS:

PS. Wartości dla SEND_THRESHOLD ; RECV_THRESHOLD ; PPS_THRESHOLD warto dobrać pod obecny ruch na serwerze Prawdopodobnie tutaj, warto to rozszerzyć.

KrEdEnS
KrEdEnS Moderator Freebies

Ok, postaram, się rozwinąć wspomniane fragmenty :)

EDIT. Dodałem co nieco

Qmis
Qmis

polecam działa kredens umie dobrze wszystko ustawić

Jakub
Jakub

działa jak natura chciała :nosacz:

Axerr
Axerr

KrEdEnS:

istniejący już poradnikiem: literówka

Poradnik spoko :)

KrEdEnS
KrEdEnS Moderator Freebies

Poprawione :slight_smile:

akuku597
akuku597

nie wiem czy wam dziala ale mi nie działa a mialem atatki małe ze tylko ping skoczył +25

Jakub
Jakub

jesteś pewien, że był to atak - jeśli tak po czym to stwierdziłeś? Skok pingu nie musi być spowodowany atakiem.

akuku597
akuku597

w filtrowanie UDP mi pokazało

KrEdEnS
KrEdEnS Moderator Freebies

Zależy od konfiguracji wtyczki :) Wejdź na proxmoxa ustaw sobie day (maximum) i pokaż wykres sieci.

EDIT: Co do lekkiego skoku -> Welcome to ovh :kappa: tak działa vac (o ile w ogolę zadziała :rofl: )