Закрыть доступ к шлюзу с внехи
-
Добрый день!
В продолжении этой темы https://forum.pfsense.org/index.php?topic=77367.0На pfSense статично смаршрутизированы белые адреса. На первом скриншоте правила на стороне абонента. На втором скриншоте правила на WAN интерфейсе для этого абонента. С обеих сторон правила настроены таким образом, что пользователь не может обратится к какому-либо адресу, принадлежащему роутеру, кроме как пингануть их. Для интерфейса абонента правила выглядят хорошо, а вот для WAN нет. Т.к. вместо одного правила приходится делать целых три. На маршрутизаторе около 40 VLAN /30 с белыми адресами и получается, что для каждого интерфейса надо делать три правила.
Кто-нибудь знает более изящные варианты написания правил/запрета доступа к адресам роутера?
-
Разрешите только то, что Вам нужно. По умолчанию все запрещено и так.
-
Кто-нибудь знает более изящные варианты написания правил/запрета доступа к адресам роутера?
В pfSense 2.2 обещают возможность использования ключевого слова "self" в правилах. "self" - это и есть все адреса роутера.
В 2.1 можно просто сделать Alias "SELF" со всеми этими адресами и создать Floating Rule:
Action: Block
Quick: да
Interface: не выбирать ни один (т. е. для всех)
Direction: in
Protocol: any
Destination: Type: Single host or alias, Address: SELFСебе самому только доступ оставить не забудьте, и тоже обязательно через Floating Rule (они работают до правил интерфейсов). Выше приведенного должно быть правило доступа для админа, либо в приведенном сделайте Source: Type: Single host or alias, Address: !ADMIN
Если интерфейсы постоянно заводятся/удаляются, то в принципе наполнение алиаса "SELF" можно автоматизировать, т. к. алиас в терминах pfSense - это table в терминах pf. Как наполнить/обнулить table - все в man pfctl(8). Т. е. в скрипте выдергиваете адреса роутера, типа netstat -rnf inet | grep lo0 | awk '{print($1)}' и суете их через pfctl в таблицу SELF прямо на ходу.
-
Спасибо, rubic.
Создал алиас в вэб-интерфейсе, назвал self. В этот алиасе ничего не прописывал.
По планировщику выполняю следующий скрипт:#!/bin/sh GETADDR=`/usr/bin/netstat -rn inet | grep lo0 | grep -v 127.0.0.1 | awk '{print($1)}'` /sbin/pfctl -q -t self -T flush for i in $GETADDR; do /sbin/pfctl -q -t self -T add $i done
Все успешно отрабатывает, в разделе Diagnostic–>tables отображается табличка с адресами маршрутника.
Но фишка в том, что когда редактируем какой либо алиас в вэб-интерфейсе, то табличка selft флушится. -
Решил следующим способом:
Скрипт приобрел следующий вид
/usr/bin/netstat -rn inet | grep lo0 | grep -vE '127.0.0.1|fe80::' | awk '{print($1)}' > /usr/local/www/my_address.txt
и далее через Alias/URLs.
-
Ну или так. Проблема по сути в том, что alias хранится в config.xml и пишется в table после редактирования. Т. е. пустой alias в конфиге флэшит table при сохранении((
Бегло посмотрел тут: https://www.mail-archive.com/list@lists.pfsense.org/msg03702.html и там: https://doc.pfsense.org/index.php/Using_the_PHP_pfSense_Shell
но красивое решение как-то не придумалось