URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID10
Нить номер: 3767
[ Назад ]

Исходное сообщение
"PF  и блокировка IP"

Отправлено fvf , 29-Апр-08 17:28 
Доброго времени суток!

По мануалу никак не могу разобраться с такой проблемой:

Стоит FreeBSD 6.x, в качестве файрвола используется PF. Необходимо блокировать пользователей внутренней сети по IP адресу. Реализовал я это так:
Создал таблицу:
table <ipblock> persist { }
куда добавляю ip адреса для блокировки.

Правило для блокировки:
block in quick log on $int_if from <ipblock> to any

Собсно, все работает, за исключением нюанса. Если есть активная сессия на блокируемом ip, ну например кто-то слушает on-line радио, то правило не срабатывает пока сессия не закончится.
Насколько я понимаю, это связано с обработкой keep state/modulate state в разрешающих правилах. Тоесть фильтр игнорирует сразу же все пакеты активной сессии. И применяет правило блокирования только для попыток установить новую сессию.

Вот собсно и вопрос, как сразу же рубить сессию у ip адресов попавших в таблицу ipblock.
Наверняка есть простое решение, но я его к сожалению не вижу :-[


Содержание

Сообщения в этом обсуждении
"PF  и блокировка IP"
Отправлено rayne , 30-Апр-08 09:51 
set block-policy  какие параметры?
может большую часть конфига покажете ?


"PF  и блокировка IP"
Отправлено fvf , 30-Апр-08 11:05 
>set block-policy  какие параметры?
>может большую часть конфига покажете ?

Вот такой у меня конфиг:

set optimization normal
set block-policy drop
set limit { states 20000, frags 20000, src-nodes 20000 }
set state-policy floating

table <ipblock> persist { }    # localnet users out of traffic limit

scrub in on $int_if all no-df fragment reassemble
scrub in on $ext_if all
scrub on $ext_if random-id reassemble tcp

#------------------
# NAT
nat-anchor "pftpx/*"
nat on $ext_if from $int_if:network to any -> ($ext_if)
rdr-anchor "pftpx/*"
rdr on $int_if proto tcp from any to any port 21 -> 127.0.0.1 port 8021

# squid
rdr on $int_if proto tcp from any to any port 80 -> 127.0.0.1 port 3128

#------------------
# Filter

block all

pass quick on lo0 all

# Antispoffing interfaces
antispoof log for $int_if
antispoof log for $ext_if

block in quick log on $int_if from <ipblock> to any

pass on $int_if from any to any keep state

pass in log on $ext_if inet proto icmp from any to $ext_addr icmp-type echoreq keep state (max 10)

#_Allow_SSH_connections_to_ME
pass in log on $ext_if inet proto tcp from any to $ext_if port 22 modulate state (max 20) flags S/SA

# _FTP
anchor "pftpx/*"
pass out log inet proto tcp from $ext_addr to any port 21 flags S/SA modulate state

# _HTTP
pass out log on $ext_if inet proto tcp from $ext_if to any port 80 flags S/SA modulate state
pass out log on $ext_if inet proto tcp from $ext_if to any port 443 flags S/SA modulate state

# _CVSUP
pass out on $ext_if inet proto tcp from $ext_if to any port 5999 flags S/SA modulate state

# _DNS
pass out log on $ext_if inet proto { tcp, udp } from $ext_if to any port 53 flags S/SA keep state

# _SSH
pass out log on $ext_if inet proto tcp from $ext_if to any port 22 flags S/SA modulate state



"PF  и блокировка IP"
Отправлено rayne , 30-Апр-08 12:20 
А если изключить из ната таблицу ipblock ?

"PF  и блокировка IP"
Отправлено fvf , 30-Апр-08 15:34 
>А если изключить из ната таблицу ipblock ?

Спасибо, попробую! Это должно сработать :)


"PF  и блокировка IP"
Отправлено fvf , 07-Май-08 13:52 
Добавил правило, перед всеми остальными:
no nat on $ext_if from <ipblock> to any

К сожалению, не сработало...

Видимо по этой причине:
Translation rules modify either the source or destination address of the packets associated with a stateful connection.
A stateful connection is automatically created to track packets matching such a rule as long as they are not blocked by the filtering section of pf.conf.

Может есть еще идеи как это сделать?


"PF  и блокировка IP"
Отправлено fvf , 14-Май-08 11:09 
Возникла одна идея, снижать скорость потока до 0 для таблицы с заблокированными адресами с помощью altq, я думаю должно сработать. ;)

"PF  и блокировка IP"
Отправлено rayne , 14-Май-08 16:08 
>Возникла одна идея, снижать скорость потока до 0 для таблицы с заблокированными
>адресами с помощью altq, я думаю должно сработать. ;)

qwest какойто , и как получилось ? ;) а то мне уже любопытно .