DDoS i inne ataki a iptables (zabezpieczenia anty-DDoS w iptables)

Unikaj ataku DDoS z iptables Ma na to wiele sposobów, według rozmiaru pakietu, limitu połączeń itp. Tutaj zobaczymy, jak w łatwy, intuicyjny i dobrze wyjaśniony sposób osiągniemy cel, a także powstrzymamy inne irytujące ataki na nasze serwery.

# Iptables

IPT="/sbin/iptables"
ETH="eth0"

#Todo el tráfico syn
$IPT -P INPUT DROP
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -P OUTPUT DROP
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A OUTPUT -m state --state INVALID -j DROP
$IPT -P FORWARD DROP
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A FORWARD -m state --state INVALID -j DROP
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A FORWARD -i lo -o lo -j ACCEPT

#Cuando sube la carga
$IPT -A INPUT -p tcp --syn -j REJECT --reject-with icmp-port-unreachable

#La que mejor va
$IPT -N syn-flood
$IPT -A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN
$IPT -A syn-flood -j LOG --log-prefix "SYN flood: "
$IPT -A syn-flood -j DROP

#Igual que el de arriba pero muy raw
$IPT -N syn-flood
$IPT -A INPUT -i eth0:2 -p tcp --syn -j syn-flood
$IPT -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPT -A syn-flood -j DROP
$IPT -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT

#Descartar paquetes mal formados
$IPT -N PKT_FAKE
$IPT -A PKT_FAKE -m state --state INVALID -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags ALL ACK,RST,SYN,FIN -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 ! --syn -m state --state NEW -j DROP
$IPT -A PKT_FAKE -f -j DROP
$IPT -A PKT_FAKE -j RETURN

#Syn-flood
$IPT -N syn-flood
$IPT -A INPUT -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
$IPT -A FORWARD -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
$IPT -A syn-flood -m limit --limit 4/s --limit-burst 16 -j RETURN
$IPT -A syn-flood -m limit --limit 75/s --limit-burst 100 -j RETURN -A syn-flood -j LOG --log-prefix "SYN FLOOD " --log-tcp-sequence --log-tcp-options --log-ip-options -m limit --limit 1/second
$IPT -A syn-flood -j DROP

#Requiere módulo "recent"
modprobe ipt_recent
$IPT -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
$IPT -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 10 --hitcount 10 -j DROP

# explicación:
# Se añade cada ip que se conecte a la tabla de recent
# Por por cada ip en la tabla de recent si hace mas de x hits en x segundos, se dropea.
$IPT -I INPUT -p tcp --syn -m recent --set
$IPT -I INPUT -p tcp --syn -m recent --update --seconds 10 --hitcount 30 -j DROP

#UDP Flood
$IPT -A OUTPUT -p udp -m state --state NEW -j ACCEPT
$IPT -A OUTPUT -p udp -m limit --limit 100/s -j ACCEPT
$IPT -A OUTPUT -p udp -j DROP

Zlicza liczbę pakietów SYN (Rozpoczęcie połączenia TCP) dla każdego adresu IP w ciągu ostatnich 10 sekund. Jeśli osiągnie 30, odrzuca ten pakiet, więc połączenie nie zostanie nawiązane (TCP spróbuje kilka razy, gdy spadnie poniżej limitu, który można ustawić).

#Evitando Layer7 DoS limitando a 80 la máxima cantidad de conexiones
$IPT -A INPUT -p tcp --dport 80 -m hashlimit --hashlimit-upto 50/min --hashlimit-burst 80 --hashlimit-mode srcip --hashlimit-name http -j ACCEPT
$IPT -A INPUT -p tcp --dport 80 -j DROP

#Permitir el ping, pero a 1 paquete por segundo, para evitar un ataque ICMP Flood
$IPT -A INPUT -p icmp -m state --state NEW --icmp-type echo-request -m limit --limit 1/s --limit-burst 1 -j ACCEPT
$IPT -A INPUT -p icmp -j DROP

#Evitando que escaneen la máquina
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags SYN,RST SYN,RST –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags FIN,RST FIN,RST –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags ACK,FIN FIN –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags ACK,URG URG –j DROP

Oto skrypt w naszej Wklej: Pasta.DesdeLinux.net (Poprzedni skrypt)

Referencje:


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.

  1.   KZKG ^ Gaara powiedział

    I dlatego przed atakami DDoS umieszczam tutorial 😉
    Aby podać / wyjaśnić przyczynę lub problem (poprzedni samouczek), a także podać rozwiązanie (ten samouczek) 🙂

    1.    diazepam powiedział

      idealny.

  2.   koratsuki powiedział

    Cukierki dla dzieci ...

  3.   Hugo powiedział

    Dobry artykuł.

    Moje dwa centy:

    W przypadku pakietów UDP nie ma flagi SYN, ponieważ jest to protokół bez kontroli stanu. Jednak paradoksalnie, stany NEW i ESTABLISHED istnieją, ponieważ iptables wewnętrznie przenosi tabele do tego celu.

    Z drugiej strony, moim zdaniem lepiej jest użyć miejsca docelowego DROP zamiast REJECT, z dwóch powodów: po pierwsze, z odrzuceniem przekazuje informacje potencjalnemu napastnikowi, a także komputer wykorzystuje część swojej łączności do wysyłania powiadomienie zespołu atakującego.

    Inną sprawą jest to, że w przypadku protokołu ICMP (i ogólnie) wygodnie jest regulować zarówno żądania, jak i odpowiedzi, bo pewnie w pewnym momencie jesteśmy zainteresowani pingowaniem samych siebie, a włączając tę ​​funkcjonalność, ktoś mógłby użyć botnetu i sfałszować Z adresu źródłowego wykonaj niekończące się polecenie ping do wielu z zainfekowanych komputerów, a odpowiedzi trafią do naszego serwera, zwijając go, jeśli nie zostaną nałożone żadne ograniczenia.

    Zwykle zezwalam na typy ICMP 0,3,8,11 i 12 z limitem wejściowym jednego na sekundę i serią maksymalnie dwóch lub czterech, a wszystko inne pozostaje do DROP.

    W rzeczywistości, z wyjątkiem protokołu TCP, który można lepiej regulować, wszystkie inne powinny być chronione środkiem anty-DDoS poprzez niedawne dopasowanie typu. W związku z tym, jako ciekawostka, autor tego modułu lubi najpierw umieścić aktualizację, a dopiero potem zestaw.

    Iptables jest naprawdę bardzo elastyczny i potężny, do tej pory jedyne, co zaproponowałem i jeszcze tego nie osiągnąłem (chociaż jestem blisko osiągnięcia), to umożliwienie modułowi psd unikania portscanów, ale nawet ze wszystkim Dowiedziałem się o tym narzędziu, myślę, że jeszcze nawet nie zarysowałem powierzchni. 😉

    Zresztą na tym świecie zawsze musisz się uczyć.

  4.   koratsuki powiedział

    Zalety Hugo, w naszym glosariuszu: D, jak zawsze, uczenie się ...

    1.    Hugo powiedział

      Nawiasem mówiąc, mam już moduł psd do pracy. Problem polegał na tym, że początkowo zależało to od funkcjonalności jądra, która była przestarzała wraz z patch-o-matic, więc została domyślnie usunięta z modułów wbudowanych w netfilter. Więc teraz w Debianie, aby używać rozszerzenia psd, najpierw musisz zrobić to:


      aptitude -RvW install iptables-dev xtables-addons-{common,source} module-assistant
      module-assistant auto-install xtables-addons-source

      Następnie można go normalnie używać, zgodnie z instrukcjami:

      man xtables-addons

      1.    z dala powiedział

        Hugo, dlaczego nie opublikujesz iptables.sh ze swoimi sugestiami dotyczącymi ulepszenia skryptu tego posta (co jest dobre), w tym psd

        dzięki

  5.   nelson powiedział

    Doskonały artykuł, doskonałe iptables i doskonałe wyjaśnienie od @hugo. Coraz bardziej przekonuję się, że jeszcze wiele muszę się nauczyć.

  6.   koratsuki powiedział

    To nie ty sam, przynajmniej ja ... Brakuje mi miliona ... 😀

  7.   Miguel Angel powiedział

    Witam wszystkich i dziękuję za wkład, ale prawda jest taka, że ​​jesteśmy zdesperowani, nie wiemy co teraz zrobić, i przychodzimy do was po to iptables, że wiemy, że jesteście ekspertami w systemach.
    Jestem liderem hiszpańskiej społeczności źródła kontrataków i jesteśmy jednymi z nielicznych, którzy wciąż ledwo stoją, otrzymujemy ciągłe ataki na maszynę i inne ataki w odstępach czasu, ciągłe usuwa niewiele, ale opóźnia serwer trochę, ale ten, który ma czas, wyrządza więcej szkód. Nasza maszyna jest zamontowana na 6.2 centa
    i mamy tcadmin do kontrolowania serwerów. Mógłbyś zrobić nam konfigurację, która mogłaby choć trochę powstrzymać tego typu atak, już jesteśmy zdesperowani,
    i nie wiemy, do kogo się zwrócić, wiemy, że istnieją dwa botnety, jeden domowy, a drugi opłacony za czas i siłę. W ten sposób znosiliśmy brutalne ataki tego typu od prawie roku, gdybyś mógł nam pomóc, bylibyśmy wdzięczni, ponieważ teraz jest to nie do utrzymania, uwielbiam konfigurować serwery jak hoobie i nie jestem dzieckiem, o czym zapewniam, ale to dla mnie dużo. Jeśli chcesz, aby moje ts3 przemówiło lub cokolwiek, co bardzo bym chciał, gdybyś mógł nam pomóc, abyśmy umieścili tutaj wyniki i wszystko, co zostało rozwiązane dla dobra wielu ludzi, byłby to najczęściej odwiedzany blog roku, o którym zapewniam, ponieważ jest niesamowite, jak denerwuje te ataki ddos. Ponieważ próbowaliśmy skonfigurować go samodzielnie i zablokowaliśmy dostęp do maszyny, musieliśmy sformatować go z biosu, więc wyobraź sobie, jacy jesteśmy.
    Pozdrawiam serdecznie. I moje gratulacje z powodu zaginionego bloga, wiele osób znajduje taki, który został zaktualizowany o ten. -Miguel angel-

    1.    KZKG ^ Gaara powiedział

      Cześć, jak się masz 🙂
      Napisz na mój e-mail, chętnie Ci pomożemy 😀 -» kzkggaara[@]desdelinux[.]internet

  8.   ArturShelby powiedział

    Witam wszystkich, do tej pory pracuję, weź ten skrypt, tak przy okazji, bardzo dobry ... tylko jedna wątpliwość: Czy moduł «najnowszy» nie zmniejsza wydajności?

    Pozdrowienia - Dziękuję / Kto cię lubi?

  9.   Jose tapia powiedział

    Znakomity wkład przyjacielu, umieszczę Cię w referencjach do tutoriala wideo, który montujemy, uścisk z Kostaryki

  10.   Cristian Ivory Reinoso powiedział

    Cześć,

    Nie możesz użyć skryptu na wielu portach?
    Mam serwer gier i dostaję ataki zarówno w sieci, jak i na portach serwera gier.

    Pozdrowienia.