Кто подскажет как в PF блокировать ESTABLISHED соединения?
Начал потихоньку учить PF. И натолкнулся на такую проблемму.
Иногда нужно блокировать возможность прослушивания online радио с определённого сервера на порту 8000.
Добавляю правила
block drop out quick on rl0 proto tcp from any to $radio_server port 8000
block drop in quick on rl0 proto tcp from $radio_server port 8000 to any
Но эти правила не обрывают уже установленные соединения. И получается, те кто слушали радио, продолжают его слушать пока не отключатся.
Заранее благодарен за ответ.
>Добавляю правила
>block drop out quick on rl0 proto tcp from any to $radio_server
>port 8000
>block drop in quick on rl0 proto tcp from $radio_server port 8000
>to any
>Но эти правила не обрывают уже установленные соединения. И получается, те кто
>слушали радио, продолжают его слушать пока не отключатся.
>Заранее благодарен за ответ.Скорее всего выше этих правил присутствует правило с quick, разрешающее ESTABLISHED соединения - например, pass in quick on rl0 proto tcp all modulate state. Решение - поместить запрещающие правила выше или убрать quick у вышестоящего правила
>Скорее всего выше этих правил присутствует правило с quick, разрешающее ESTABLISHED соединения
>- например, pass in quick on rl0 proto tcp all modulate
>state. Решение - поместить запрещающие правила выше или убрать quick у
>вышестоящего правилаТаких правил нет.
Листинг pf.conf
ext_if="rl0" #Внешний интерфейс
int_if="fxp0" #Внутренний интерфейс
local_net="192.168.1.0/24" #Внутренняя сеть
ext_addr="1.1.1.1" #Внешний адрес
NoRouteIp="{ 127.0.0.0/8, 192.168.1.0/24 }" #Не маршрутизируемые в инет адреса#Нормализация и дефрагментация пакета
scrub in all
#NAT
nat on $ext_if from $local_net to any -> $ext_addr
###Фильтрация###
#Блокирование спуфинга
antispoof quick for $int_if inet
#Блокировка на внешнем интерфейсе внутренних адресов RFC 1918
block in quick on $ext_if from $NoRouteIp to any
block out quick on $ext_if from any to $NoRouteIp
#Блокировка радио
block drop out quick on $ext_if proto tcp from any to any port 8000
block drop in quick on $ext_if proto tcp from any port 8000 to anyВывод pfctl -sr
scrub in all fragment reassemble
block drop in quick on ! fxp0 inet from 192.168.1.0/24 to any
block drop in quick inet from 192.168.1.1 to any
block drop in quick on rl0 inet from 127.0.0.0/8 to any
block drop in quick on rl0 inet from 192.168.1.0/24 to any
block drop out quick on rl0 inet from any to 127.0.0.0/8
block drop out quick on rl0 inet from any to 192.168.1.0/24
block drop out quick on rl0 proto tcp from any to any port = 8000
block drop in quick on rl0 proto tcp from any port = 8000 to any
>>Скорее всего выше этих правил присутствует правило с quick, разрешающее ESTABLISHED соединения
>>- например, pass in quick on rl0 proto tcp all modulate
>>state. Решение - поместить запрещающие правила выше или убрать quick у
>>вышестоящего правила
>
>Таких правил нет.
>Листинг pf.conf
>ext_if="rl0" #Внешний интерфейс
>int_if="fxp0" #Внутренний интерфейс
>local_net="192.168.1.0/24" #Внутренняя сеть
>ext_addr="1.1.1.1" #Внешний адрес
>NoRouteIp="{ 127.0.0.0/8, 192.168.1.0/24 }" #Не маршрутизируемые в инет
>адреса
>
>#Нормализация и дефрагментация пакета
>scrub in all
>#NAT
>nat on $ext_if from $local_net to any -> $ext_addr
>###Фильтрация###
>#Блокирование спуфинга
>antispoof quick for $int_if inet
>#Блокировка на внешнем интерфейсе внутренних адресов RFC 1918
>block in quick on $ext_if from $NoRouteIp to any
>block out quick on $ext_if from any to $NoRouteIp
>#Блокировка радио
>block drop out quick on $ext_if proto tcp from any to any
>port 8000
>block drop in quick on $ext_if proto tcp from any port 8000
>to any
>
>Вывод pfctl -sr
>scrub in all fragment reassemble
>block drop in quick on ! fxp0 inet from 192.168.1.0/24 to any
>
>block drop in quick inet from 192.168.1.1 to any
>block drop in quick on rl0 inet from 127.0.0.0/8 to any
>block drop in quick on rl0 inet from 192.168.1.0/24 to any
>block drop out quick on rl0 inet from any to 127.0.0.0/8
>block drop out quick on rl0 inet from any to 192.168.1.0/24
>block drop out quick on rl0 proto tcp from any to any
>port = 8000
>block drop in quick on rl0 proto tcp from any port =
>8000 to anyМожно попробовать добавить в начало правило
block in all
block out all
Что бы быть уверенным, что все в конце зарежется. А что показывает tcpdump когда пользователь слушает радио? Может оно по udp ходит..
>block drop out quick on rl0 proto tcp from any to $radio_server port 8000
>block drop in quick on rl0 proto tcp from $radio_server port 8000 to anyПопробуйте блокировать не на внешнем, а на внутреннем int_if="fxp0"
тогда будетint_if="fxp0" #Внутренний интерфейс
local_net="192.168.1.0/24" #Внутренняя сеть
radio_server="A.B.C.D"
block quick on $int_if proto tcp from $local_net to $radio_server port 8000Отпишитесь с результатом пожалуйста.
>
>Попробуйте блокировать не на внешнем, а на внутреннем int_if="fxp0"
>тогда будет
>
>int_if="fxp0" #Внутренний интерфейс
>local_net="192.168.1.0/24" #Внутренняя сеть
>radio_server="A.B.C.D"
>block quick on $int_if proto tcp from $local_net to $radio_server port 8000
>
>
>Отпишитесь с результатом пожалуйста.
Да, при блокировке на внутреннем интерфейсе, получилось оборвать соединения.
Огромное спасибо.
а как насчет флагов S и S/A
>а как насчет флагов S и S/A
добавить flags S/SA
)