The OpenNET Project
 
Поиск (ключи):    ПРОГРАММЫ СТАТЬИ СОВЕТЫ ФОРУМ
  WIKI НОВОСТИ (+) MAN'ы ДОКУМЕНТАЦИЯ

Скрипт для блокировки в iptables целых стран
Скрипт для организации блокировки диапазонов IP адресов в привязке к названию страны.
Например, можно использовать для блокирования всех непрофильных сайту стран в моменты DDoS атаки
или запретить приход почты для стран с которыми явно не ведется переписка.

Список привязки IP к странам загружается с сайта http://www.ipdeny.com/ipblocks/data/countries


   #!/bin/bash
   ### Block all traffic from AFGHANISTAN (af) and CHINA (CN). Use ISO code ###
   ISO="af cn" 
 
   ### Set PATH ###
   IPT=/sbin/iptables
   WGET=/usr/bin/wget
   EGREP=/bin/egrep
 
   ### No editing below ###
   SPAMLIST="countrydrop"
   ZONEROOT="/root/iptables"
   DLROOT="http://www.ipdeny.com/ipblocks/data/countries"
 
   cleanOldRules(){
   $IPT -F
   $IPT -X
   $IPT -t nat -F
   $IPT -t nat -X
   $IPT -t mangle -F
   $IPT -t mangle -X
   $IPT -P INPUT ACCEPT
   $IPT -P OUTPUT ACCEPT
   $IPT -P FORWARD ACCEPT
   }
 
   # create a dir
   [ ! -d $ZONEROOT ] && /bin/mkdir -p $ZONEROOT
 
   # clean old rules
   cleanOldRules
 
   # create a new iptables list
   $IPT -N $SPAMLIST
 
   for c  in $ISO
   do
	# local zone file
	tDB=$ZONEROOT/$c.zone
 
	# get fresh zone file
	$WGET -O $tDB $DLROOT/$c.zone
 
	# country specific log message
	SPAMDROPMSG="$c Country Drop"
 
	# get
	BADIPS=$(egrep -v "^#|^$" $tDB)
	for ipblock in $BADIPS
	do
	   $IPT -A $SPAMLIST -s $ipblock -j LOG --log-prefix "$SPAMDROPMSG"
	   $IPT -A $SPAMLIST -s $ipblock -j DROP
	done
   done
 
   # Drop everything
   $IPT -I INPUT -j $SPAMLIST
   $IPT -I OUTPUT -j $SPAMLIST
   $IPT -I FORWARD -j $SPAMLIST
 
   # call your other iptable script
   # /path/to/other/iptables.sh
 
   exit 0


Вместо последовательного добавления правил, для увеличения производительности, 
рекомендуется использовать систему ipset (http://ipset.netfilter.org/) или
nfqueue (http://nfqueue.sf.net/)


Использовать можно примерно так:

    #!/bin/sh
    iptables -F INPUT

    ipset -N spam ipmap 

    cat block_country_net_list.txt | while read net; do
       ipset -A spam --network $net
    done

    iptables -A INPUT -m set --set spam src -j REJECT


Другой эффективный вариант - использовать iptables модуль geoip (http://people.netfilter.org/peejix/geoip/),
который не входит в базовую поставку iptables и требует установки patch-o-matic и 
загрузки дополнительной базы привязки к странам, например с http://www.maxmind.com/

Например, блокировка ICMP запросов из Франции, Италии и Испании будет выглядеть так:

   iptables -A OUTPUT -p icmp -m geoip --dst-cc FR,IT,ES -j REJECT
 
05.03.2009 , Автор: Vivek Gite , Источник: http://www.cyberciti.biz/faq/block-...
Раздел:    Корень / Администратору / Сетевая подсистема, маршрутизация / Пакетные фильтры и фаерволы / Пакетные фильтры в Linux: iptables, ipchains

Обсуждение [ RSS ]
 
  • 1.1, pro100master, 13:42, 08/03/2009 [ответить] [смотреть все]
  • +/
    спасибо, хорошая штука
     
  • 1.2, VecH, 22:03, 08/03/2009 [ответить] [смотреть все]
  • +/
    Где можно почитать:
    Как сделать что бы при входе на сайт по IP показывало страну и город (аналог cmyip.com)
     
  • 1.4, Naruto, 20:47, 18/06/2010 [ответить] [смотреть все]
  • +/
    Здравствуйте!
    Я не понял как его использовать в PHP странице (index.php)?
    Нужно сохранить этот код в файле PHP и положить его рядом и прописать путь в Index.php???!
    Не понятно!

    Спасибо

     
  • 1.5, Naruto, 20:49, 18/06/2010 [ответить] [смотреть все]
  • +/
    ЕЩЁ!
    А вы знаете что через переводчик типа google можно зайти на сайт?
    Заблокировали Россию но зашли через переводчик.
    Я думаю это реально!
     
  • 1.6, toNaruto, 03:12, 10/02/2011 [ответить] [смотреть все]  
  • +/
    Naruto, И что дальше то?
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:

     Добавить заметку
     Версия для печати
     
     Поиск заметки:
     

    Последние заметки
    - 05.02 Проброс 802.1q/access порта в Linux через IP-сеть
    - 25.01 Использование systemtap для устранения уязвимости в реализации /proc/pid/mem
    - 24.01 Мониторинг загрузки многоядерного сервера по каждому ядру в отдельности в Linux
    - 23.01 Осуществление ОGSM/SMS/USSD вызовов с использованием утилиты mdbus
    - 13.01 Интерактивный firewall в Linux
    - 08.01 Советы по увеличению автономной работы ноутбука с Debian/Ubuntu
    - 31.12 Бэкап и восстановление данных из БД memcachedb и других хранилищ на базе BerkeleyDB
    - 28.12 Получение инкрементальных diff-файлов для subversion
    - 27.12 Решение проблемы поддержки php-zip-extension в Fedora-16
    - 25.12 Настройка сетевого доступа в окружениях QEMU
    RSS | Следующие 15 записей >>


    АКЦИЯ! ПОДПИШИСЬ на журнал Linux Format до 31 января 2012 года и выиграй СУПЕРПРИЗ!

    Журнал "Linux Format" (Линукс Формат)- Единственный в России и странах СНГ журнал на русском языке, посвящённый Linux и свободному ПО. Журнал для IT-директоров, IT-менеджеров, программистов, системных администраторов, учителей школ и преподавателей ВУЗов и всех пользователей ПК. В каждом выпуске: Новости индустрии OpenSource, обзоры новинок свободного ПО, обучающие и методические статьи.

    Каждый, кто оформит подписку, получает бонус- объёмные наклейки на системный блок и подарки: с одним из первых выпусков журнала в 2012 году- диск с архивом номеров за 2005-2011 г.г. и ежемесячно электронную версию журнала в pdf-формате.

    Подробнее о проведении акции вы можете прочитать на странице сайта.


      Закладки на сайте
      Проследить за страницей
    Created 1996-2012 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    RUNNet TopList