The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Использование таблиц для блокирован..."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Разговоры, обсуждение новостей (Public)
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Использование таблиц для блокирован..."  
Сообщение от auto_tips on 11-Июл-08, 16:29 
Список 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

URL: http://www.cyberciti.biz/faq/opebsd-pf-firewall-block-subnet.../
Обсуждается: http://www.opennet.me/tips/info/1715.shtml

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Использование таблиц для блокирования большого числа IP в pf..."  
Сообщение от zuborg email on 11-Июл-08, 16:29 
cat /etc/block1.txt | xargs -n 1 ipfw table 1 add
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Использование таблиц для блокирования большого числа IP в pf..."  
Сообщение от mummy on 11-Июл-08, 18:41 
Брехня, быстрее так - создаём файл /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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Использование таблиц для блокирования большого числа IP в pf..."  
Сообщение от ыыыыыыыыыыыыыы on 12-Июл-08, 23:05 
to mummy:
если список ip не только для ipfw используецца? то зачем плодить "table 1 add "
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Использование таблиц для блокирования большого числа IP в pf..."  
Сообщение от mummy on 13-Июл-08, 11:24 
Быстрее создать временный файл и один раз вызвать /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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Использование таблиц для блокирования большого числа IP в pf..."  
Сообщение от zyx (ok) on 14-Июл-08, 02:10 
Молодец!
Хорошо но не отлично - можно обойтись без временных файлов:
echo "table 1 list" | ipfw /dev/stdin
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Использование таблиц для блокирования большого числа IP в pf..."  
Сообщение от dm email(ok) on 17-Июл-08, 16:26 
а есть еще и такая тема в 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.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "А я делаю так (комментарии для тех, кому надо будет разбират..."  
Сообщение от Дмитрий Ю. Карпов on 22-Июл-08, 22:35 
${fwcmd} /dev/stdin <<_END_OF_RULESET_

# Разрешить общение через LoopBack (внутренний интерфейс) с любыми IP-номерами
add 100 pass all from any to any via lo0

# Запретить использование "127.*.*.*" как sourece и как destignation.
# Т.к. выше было разрешено общение через LoopBack, этот запрет фактически относится только ко внешним интерфейсам (к реальным сетевым картам, DialUp/VPN-соединениям и т.п.).
add 200 deny all from any to 127.0.0.0/8
add 210 deny all from 127.0.0.0/8 to any

...

# Очистить таблицу.
table 1 flush

# Создать таблицу для доступа наружу по тому же списку, что и Web-доступ:
#    взять программой awk файл /etc/block1.txt;
#    убрать из него комментарии: sub(/[;#].*/,"",$0);
#    если первый аргумент похож на IP-номер (цифры, разделённые точками)
#        то преобразовать его в команду "добавить в первую таблицу";
#    всё это попадает в контекст выполнения, т.к. заключено в ``.
`awk '{ sub(/[;#].*/,"",$0); if ( $1 ~ /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/ ) print "table 1 add " $1 }' /etc/block1.txt`

...

# все оставшееся разрешено/запрещено
add 65000 allow/deny all from any to any

_END_OF_RULESET_

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Что-то предыдущий пост побился; повторяю"  
Сообщение от Дмитрий Ю. Карпов on 22-Июл-08, 22:36 
А я делаю так (комментарии для тех, кому надо будет разбираться без меня):

${fwcmd} /dev/stdin <<_END_OF_RULESET_

# Разрешить общение через LoopBack (внутренний интерфейс) с любыми IP-номерами
add 100 pass all from any to any via lo0

# Запретить использование "127.*.*.*" как sourece и как destignation.
# Т.к. выше было разрешено общение через LoopBack, этот запрет фактически относится только ко внешним интерфейсам (к реальным сетевым картам, DialUp/VPN-соединениям и т.п.).
add 200 deny all from any to 127.0.0.0/8
add 210 deny all from 127.0.0.0/8 to any

...

# Очистить таблицу.
table 1 flush

# Создать таблицу для доступа наружу по тому же списку, что и Web-доступ:
#    взять программой awk файл /etc/block1.txt;
#    убрать из него комментарии: sub(/[;#].*/,"",$0);
#    если первый аргумент похож на IP-номер (цифры, разделённые точками)
#        то преобразовать его в команду "добавить в первую таблицу";
#    всё это попадает в контекст выполнения, т.к. заключено в ``.
`awk '{ sub(/[;#].*/,"",$0); if ( $1 ~ /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/ ) print "table 1 add " $1 }' /etc/block1.txt`

...

# все оставшееся разрешено/запрещено
add 65000 allow/deny all from any to any

_END_OF_RULESET_

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Использование таблиц для блокирования большого числа IP в pf..."  
Сообщение от Murz email on 14-Авг-08, 16:31 
А как можно задать таблицу с кучей подсетей в iptables? Для каждой подсети своё правило?
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру