Блокировка по странам

Материал из [k0d.cc] Hack Wiki

Перейти к: навигация, поиск

Защита от ddos на уровне iptables

Благодаря расчудесному сайту ipdeny.com, который любезно собрал списки подсетей из различных стран мы можем воспользоваться нехитрым скриптиком.

Для начала:

 mkdir /root/ddos
 cd /root/ddos
 touch count.sh
 chmod +x count.sh

Добавляем в count.sh следующее:

  #!/bin/bash
  ### You can ban countries - use he ISO names so like Russian = ru , Ukrainian = uk ###
  ISO="af cn al dz as ad ao ai aq ag am aw au at az kh cm cv cf cg co in it zm zw" 
  ### переменные среды, установите ваши ###
  IPT=/sbin/iptables
  WGET=/usr/bin/wget
  EGREP=/bin/egrep
  SPAMLIST="countrydrop"
  ZONEROOT="/root/ddos"
  DLROOT="http://www.ipdeny.com/ipblocks/data/countries"
  # Создаем папку если ее нету 
  [ ! -d $ZONEROOT ] && /bin/mkdir -p $ZONEROOT
  # создаем новую табличку
  $IPT -N $SPAMLIST
  # вгоняем в массив все страны
  for c  in $ISO
  do
   local zone file
   tDB=$ZONEROOT/$c.zone

   # получаем файлы с их ИП на железо
   $WGET -O $tDB $DLROOT/$c.zone
   # Выставляем блок для всего массива ип-ов
   BADIPS=$(egrep -v "^#|^$" $tDB)
   for ipblock in $BADIPS
    do
     $IPT -A $SPAMLIST -s $ipblock -j DROP
    done
  done
  # Более точный дроп для зловредов
  $IPT -I INPUT -j $SPAMLIST
  $IPT -I OUTPUT -j $SPAMLIST
  $IPT -I FORWARD -j $SPAMLIST
  exit 0


Исполняем:

 ./count.sh

Чтобы убедится, что правила добавлены:

 iptables -L -n -v
Личные инструменты