ДДоС и други напади на иптаблес (Анти-ДДоС сигурност у иптаблес)

Избегавајте напад ДДоС са iptables Има много начина да то учини, према величини пакета, према ограничењу везе итд. Овде ћемо видети како ћемо на лак, интуитиван и добро објашњен начин постићи циљ, као и зауставити друге досадне нападе на наше сервере.

# 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

Оно што ради је да изброји број СИН пакета (Почетак ТЦП везе) за сваку ИП адресу у последњих 10 секунди. Ако достигне 30, одбацује тај пакет, тако да веза неће бити успостављена (ТЦП ће покушати неколико пута, када падне испод границе, може се подесити).

#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

Ево скрипте у нашој Пасте: Налепи.DesdeLinux.net (Script anterior)

Референце:


14 коментара, остави свој

Оставите свој коментар

Ваша емаил адреса неће бити објављена. Обавезна поља су означена са *

*

*

  1. За податке одговоран: Мигуел Ангел Гатон
  2. Сврха података: Контрола нежељене поште, управљање коментарима.
  3. Легитимација: Ваш пристанак
  4. Комуникација података: Подаци се неће преносити трећим лицима, осим по законској обавези.
  5. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.

  1.   КЗКГ ^ Гаара дијо

    И зато сам ставио водич пре ДДоС напада 😉
    Да бисте објаснили разлог или проблем (претходни водич), а такође вам дали решење (овај водич) тут

    1.    диазепан дијо

      перфецто.

  2.   Коратсуки дијо

    Дечији слаткиши ...

  3.   Хуго дијо

    Добар чланак.

    Моја два цента:

    У случају УДП пакета, не постоји СИН заставица, јер је то протокол без државне контроле. Међутим, парадоксално, НОВА и УСТАНОВЉЕНА стања постоје јер иптаблес интерно носи табеле у ту сврху.

    С друге стране, по мом мишљењу боље је користити ДРОП одредиште уместо РЕЈЕЦТ из два разлога: прво, одбијањем се дају информације могућем нападачу, а такође рачунар користи део своје везе за слање обавештење нападачком тиму.

    Друга ствар је да је у случају ИЦМП протокола (и уопште) погодно регулисати и захтеве и одговоре, јер смо вероватно у неком тренутку заинтересовани за пингање, а омогућавањем ове функционалности неко би могао да користи ботнет и фалсификовали изворну адресу да би пингирали многе од ових компромитованих рачунара без краја, а одговори би ишли на наш сервер, урушавајући га ако се не би наметала ограничења.

    Обично дозвољавам ИЦМП типове 0,3,8,11 и 12 са улазним ограничењем од једне у секунди и рафалом од два или четири, а све остало је препуштено ДРОП-у.

    Заправо, осим ТЦП протокола који се може боље регулисати, сви остали би требало да буду заштићени анти-ДДоС мером помоћу недавне врсте случајности. У вези с тим, као занимљивост, аутор овог модула воли прво да стави ажурирање, а затим и сет.

    Иптаблес је заиста врло флексибилан и моћан, до сада је једина ствар коју сам предложио да урадим, а још нисам постигао (иако сам близу постизања), јесте да омогућим псд модулу да избегне портсцанс, али чак и уз све Научио сам о овом алату, мислим да још нисам ни огребао површину. 😉

    У сваком случају, на овом свету увек морате учити.

  4.   Коратсуки дијо

    Добре тачке Хуго, у евиденцији за наш речник: Д, као и увек, учим ...

    1.    Хуго дијо

      Иначе, ПСД модул је већ радио за мене. Проблем је био у томе што је у почетку зависило од функционалности језгра која је застарела заједно са патцх-о-матиц, па је по дефаулту уклоњена из уграђених модула у нетфилтер. Дакле, сада у Дебиану да бисте користили псд екстензију, прво морате да урадите ово:


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

      Тада се може нормално користити, према упутствима:

      man xtables-addons

      1.    далеко дијо

        Хуго, зашто не објавиш иптаблес.сх са својим предлозима за побољшање скрипте овог поста (што је добро), укључујући псд

        хвала

  5.   Нелсон дијо

    Одличан чланак, изврсни иптаблес и одлично објашњење @хуго. Све сам више уверен да морам још много тога да научим.

  6.   Коратсуки дијо

    Ниси ти сама, бар ја ... Недостаје ми милион ... 😀

  7.   Мигуел Ангел дијо

    Поздрав свима и хвала на доприносу, али истина је да смо очајни, не знамо шта сада да радимо и долазимо к вама због ове погодности за коју знамо да сте стручњаци за системе.
    Ја сам вођа заједнице шпанског извора контра удара и ми смо један од ретких који још увек једва стоји, примамо сталне нападе на машину и друге нападе у интервалима, константа мало уклања, али касни мало сервера, али онај који је временски прави већу штету. Наша машина је постављена на 6.2 центос
    а ми имамо тцадмин за контролу сервера. Можете да нам направите конфигурацију која би макар зауставила ову врсту напада, то је да смо већ очајни,
    и не знамо коме да се обратимо, знамо да постоје две ботнете, једна домаћа и друга која плаћа време и силу. Тако трпимо бруталне нападе ове врсте готово годину дана, ако бисте нам могли помоћи, били бисмо вам вечито захвални, јер је то сада неодрживо, волим да конфигуришем сервере попут хообија, и нисам дете за које вас уверавам, али ово је за мене пуно. Ако желите да мој тс3 разговара или нешто слично, волео бих да нам помогнете, па бисмо овде објавили резултате и све што је решено за добро многих људи, био бих то најпосећенији блог године у који вас уверавам јер је невероватно како то нервира ове нападе ддос. Пошто смо покушали да га сами конфигуришемо и блокирали приступ машини, морали смо да га форматирамо из биос датотеке, па замислите како смо.
    Упућујем срдачан поздрав. И моје честитке за нестали блог, многи људи имају један који је ажуриран овим. -Мигуел Ангел-

    1.    КЗКГ ^ Гаара дијо

      Здраво како си 🙂
      Escríbeme a mi email, te ayudamos con mucho gusto 😀 -» kzkggaara[@]desdelinux[.]нет

  8.   АртхурСхелби дијо

    Здраво момци, до сада док радим, узмите ову скрипту, врло добру узгред ... само једна сумња: Да ли модул «недавни» не смањује перформансе?

    Поздрав - хвала / коме се свиђате?

  9.   Јосе Тапиа дијо

    Одличан допринос, пријатељу, ставићу вас у референце водича за видео који монтирамо, загрљај из Костарике

  10.   Цристиан Марфил Реиносо дијо

    Здраво,

    Не можете да користите скрипту на више портова?
    Имам сервер за игре и имам нападе и на вебу и на портовима сервера за игре.

    Поздрав.