The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Использование таблиц для блокирования большого числа IP в pf или ipfw
Список IP адресов или подсетей находится в файле /etc/block1.txt
Например:
  10.10.1.1
  10.10.1.2
  192.168.0.0/16


IPFW
----

Блок чтения IP в таблицу, проверка в которой будет осуществляться 
не через последовательный перебор правил, а через выборки из хэша:
 
   ipfw table 1 flush
   cat /etc/block1.txt | while read ip; do
      # echo ipfw table 1 add $ip 1
      ipfw table 1 add $ip 1
   done

Привязка таблицы к правилу блокировки:
   ipfw add 100 deny ip from "table(1)" to any via em1

Просмотр содержимого таблицы:
   ipfw table 1 list

PF
--

/etc/pf.conf

   table <blockedips> persist file "/etc/block1.txt"
   ext_if="em1" 
   block drop in log (all) quick on $ext_if from <blockedips> to any

Проверка корректности правил PF:
   pfctl -nf /etc/pf.conf

Чтение правил PF:
   pfctl -f /etc/pf.conf

Добавление и удаление адресов из таблицы на лету:
   pfctl -t blockedips -T add 192.168.1.1
   pfctl -t blockedips -T delete 192.168.1.1

Просмотр содержимого таблицы и более подробной статистики по каждому адресу:
   pfctl -t blockedips -T show
   pfctl -t blockedips -T show -v

Просмотр лога срабатываний блокировок, умолчанию сохраняемого в /var/log/pflog:
   tcpdump -n -e -ttt -r /var/log/pflog
   tcpdump -n -e -ttt -r /var/log/pflog port 80
   tcpdump -n -e -ttt -r /var/log/pflog and host 192.168.1.1

Срабатывание блокировок в режиме реального времени:
   tcpdump -n -e -ttt -i pflog0
   tcpdump -n -e -ttt -i pflog0 port 80
   tcpdump -n -e -ttt -i pflog0 host 192.168.1.1
 
11.07.2008 , Источник: http://www.cyberciti.biz/faq/opebsd...
Ключи: block, ipfw, pf, firewall, table, freebsd, openbsd / Лицензия: CC-BY
Раздел:    Корень / Администратору / Сетевая подсистема, маршрутизация / Пакетные фильтры и фаерволы / Пакетный фильтр в FreeBSD: ipfw, IP-Filter

Обсуждение [ RSS ]
 
  • 1.1, zuborg, 16:29, 11/07/2008 [ответить] [смотреть все]
  • +/
    cat /etc/block1.txt | xargs -n 1 ipfw table 1 add
     
  • 1.2, mummy, 18:41, 11/07/2008 [ответить] [смотреть все]
  • +/
    Брехня, быстрее так - создаём файл /tmp/block1.txt
    table 1 add 10.10.1.1
    table 1 add 10.10.1.2
    table 1 add 192.168.0.0/16

    Затем сначала делается проверка синтаксиса, если правилно, то применяется
    /sbin/ipfw -qn /tmp/block1.txt && /sbin/ipfw -q /tmp/block1.txt

     
  • 1.4, ыыыыыыыыыыыыыы, 23:05, 12/07/2008 [ответить] [смотреть все]
  • +/
    to mummy:
    если список ip не только для ipfw используецца? то зачем плодить "table 1 add "
     
     
  • 2.5, mummy, 11:24, 13/07/2008 [^] [ответить] [смотреть все]
  • +/
    Быстрее создать временный файл и один раз вызвать /sbin/ipfw на 1000 адресов, чем 1000 раз вызывать /sbin/ipfw для каждого адреса. Ну почти в 1000 раз быстрее ;)

    # Создаем временный файл /tmp/block1.txt на основе /etc/block1.txt
    echo "table 1 flush" > /tmp/block1.txt
    cat /etc/block1.txt | awk '{print "table 1 add",$1}' >> /tmp/block1.txt

    # Проверяем правильность и тогда применяем правила из файла
    /sbin/ipfw -qn /tmp/block1.txt && /sbin/ipfw -q /tmp/block1.txt

    # Удаляем временный файл
    rm -f /tmp/block1.txt

     
     
  • 3.6, zyx, 02:10, 14/07/2008 [^] [ответить] [смотреть все]
  • +/
    Молодец!
    Хорошо но не отлично - можно обойтись без временных файлов:
    echo "table 1 list" | ipfw /dev/stdin
     
  • 1.7, dm, 16:26, 17/07/2008 [ответить] [смотреть все]  
  • +/
    а есть еще и такая тема в pf, очень удобно:

    block  quick from <badHosts>

    pass in log quick on em0  proto tcp from any to <myIN> port 443 flags S/SA keep state \
                    (source-track rule, max-src-conn-rate 100/10, overload <badHosts> flush global)

    ---man pf.conf---
       max-src-conn-rate <number> / <seconds>
               Limit the rate of new connections over a time interval.  The con-
               nection rate is an approximation calculated as a moving average.


     
  • 1.8, Дмитрий Ю. Карпов, 22:35, 22/07/2008 [ответить] [смотреть все]  
  • +/
    fwcmd dev stdin _END_OF_RULESET_ Разрешить общение через LoopBack внутр... весь текст скрыт [показать]
     
  • 1.9, Дмитрий Ю. Карпов, 22:36, 22/07/2008 [ответить] [смотреть все]  
  • +/
    А я делаю так комментарии для тех, кому надо будет разбираться без меня fwc... весь текст скрыт [показать]
     
  • 1.10, Murz, 16:31, 14/08/2008 [ответить] [смотреть все]  
  • +/
    А как можно задать таблицу с кучей подсетей в iptables? Для каждой подсети своё правило?
     

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



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