|
|
Настройка пакетного фильтра pf в FreeBSD
Ребят помогите не могу понять в чем может быть дело, перегружаю FreeBSD все работает кроме правил для входящих RDP запросов, как только делаю принудительное применение правил pfctl -f /etc/pf/conf то все сразу начинает работать, после перегруза машина опять пока не подключусь по ssh не наберу волшебную команду не пускает ниже приведено содержание файла pf.conf
Код:
# vr0 - имя сетевой карточки, смотрящей в офисную сеть
int_if="vr0"
# rl0 - имя сетевой карточки, смотрящей в интернет
ext_if="tun0"
localnet="10.0.0.0/24"
#определяем через переменные ip-адреса офисов
office1_ip="111.111.111.111"
office2_ip="222.222.222.222"
#опять таки, через переменную перечисляем какие порты выпускать из офиса во внешний мир
#tcp_ports="{22,80,443,25,110,465,995,5190}"
#udp_ports="{53}"
#не фильтруем трафик, проходящий по интерфейсу lo0 (интерфейс внутренней петли), gif0 (виртуальный туннель между офисами) и $int_if (интерфейс внутрен
set skip on lo0
set skip on gif0
set skip on $int_if
#отбрасываем входящие пакеты, с нестандартными опциями
scrub in all
#создаем правило входящие для RDP
rdr pass on $ext_if proto tcp from any to $ext_if port 3389 tag RDP -> 10.0.0.100 port 3389
nat on $ext_if tagged RDP -> ($ext_if)
#создаем правило трансляции адресов из офисной сети во внешний мир
nat on $ext_if from $localnet to any -> ($ext_if)
#создаем правило входящие для RDP
#rdr pass on $ext_if proto tcp from any to ($ext_if) port 3389 tag RDP -> 10.0.0.100 port 3389
#nat on $int_if tagged RDP -> 10.0.0.1
#создаем правило входящие для LotuNotes
#rdr pass on $ext_if proto tcp from any to ($ext_if) port 1352 tag LotusNotes -> 10.0.0.100 port 1352
#nat on $int_if tagged LotusNotes -> 10.0.0.1*
#включаем антиспуфинг для внешнего интерфейса
antispoof quick for $ext_if
#блокируем все по умолчанию
block all
#разрешаем доступ из офисной сети во внешний мир портам, перечисленным в переменных tcp_ports и udp_ports:
pass out on $ext_if proto tcp to any
pass out on $ext_if proto udp to any
#разрешаем доступ к нашей машине по ssh из внешнего мира
pass in inet proto tcp from any to $ext_if port 22 keep state
#разрешаем пинг
pass inet proto icmp all
#разрешаем исходящий трафик IPSec с офиса 1 на офис 2
pass out quick on $ext_if proto udp from $office1_ip port = isakmp to $office2_ip port = isakmp
pass out quick on $ext_if proto esp from $office1_ip to $office2_ip
pass out quick on $ext_if proto ipencap from $office1_ip to $office2_ip
#разрешаем входящий трафик IPSec, пришедший с офиса 2 на офис 1
pass in quick on $ext_if proto udp from $office2_ip port = isakmp to $office1_ip port = isakmp
pass in quick on $ext_if proto esp from $office2_ip to $office1_ip
pass in quick on $ext_if proto ipencap from $office2_ip to $office1_ip
|
В rc.conf дописывай
firewall_enable="YES"
firewall_script="/etc/pf.conf" - путь к правилу
|
У меня в rc.conf есть
Код:
#включим наш фаервол на этапе загрузки системы
pf_enable="YES"
#указываем откуда загружать правила
pf_rules="/etc/pf.conf"
#указываем где находится программа для управления pf
pf_program="/sbin/pfctl"
pf_flags=""
...
#включаем логирования для pf
pflog_enable="YES"
pflog_logfile="/var/log/pf.log"
pflog_program="/sbin/pflogd"
pflog_flags=""
pfsync_enable="NO"
pfsync_syncdev=""
pfsync_ifconfig=""
Разве этого не достаточно?
|
Цитата:
Цитата stamp
В rc.conf дописывай
firewall_enable="YES"
firewall_script="/etc/pf.conf" - путь к правилу »
|
уйди не чистая!
Цитата:
Цитата nvhost
как только делаю принудительное применение правил pfctl -f /etc/pf/conf то все сразу начинает работать »
|
хм, что говорит whereis pfctl ?
|
Вот что говорит
Код:
freebsd1# whereis pfctl
pfctl: /sbin/pfctl /usr/share/man/man8/pfctl.8.gz /usr/src/sbin/pfctl
получается дело не в том что пакетный фильтр не подымается при загрузке системы, а в том что ему что то не хватает для правила входящего RDP, а после загрузки принудительно уже помогает, может дело в том что при загрузке системы и применения правил еще не известны IP адреса , хотя PPPoe tun0 подымается до применения правил, я еще где то читал что если переменная содержит ip -адрес то ее необходимо заключать в скобки, на тот случай если вдруг ip-адрес на момент примения правил будет отсутствовать правила привяжутся к интерфейсу
на всякий случай привожу код rc.conf
Код:
hostname="freebsd1"
keymap="ru.koi8-r.kbd"
ifconfig_sk0=" inet 192.168.1.77 netmask 255.255.255.0"
defaultrouter="192.168.1.1"
sshd_enable="YES"
# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disable
dumpdev="AUTO"
ifconfig_vr0="inet 10.0.0.1 netmask 255.255.255.0"
gateway_enable="YES"
#PPP service
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES" # if you want to enable nat for your local network, otherwise NO
ppp_profile="utk"
#включим наш фаервол на этапе загрузки системы
pf_enable="YES"
#указываем откуда загружать правила
pf_rules="/etc/pf.conf"
#указываем где находится программа для управления pf
pf_program="/sbin/pfctl"
pf_flags=""
#включаем логирования для pf
pflog_enable="YES"
pflog_logfile="/var/log/pf.log"
pflog_program="/sbin/pflogd"
pflog_flags=""
pfsync_enable="NO"
pfsync_syncdev=""
pfsync_ifconfig=""
# включим racoon
racoon_enable="YES"
racoon_flags="-F -f /usr/local/etc/racoon/racoon.conf"
#включим ipsec
ipsec_enable="YES"
ipsec_file="/etc/ipsec.conf"
#создаем виртуальный gif-интерфейс
gif_interfaces="gif0"
gifconfig_gif0="111.111.111.111 222.222.222.222"
ifconfig_gif0="inet 10.0.0.1 10.1.1.1 netmask 0xffffffff"
#прописываем статический рутинг для удаленной сети
static_routes="vpn"
route_vpn="10.1.1.0/24 -interface gif0"
Может дело в виртуальных интерфейсах, они поднимаются после правил pf
|
если посмотреть список загруженых правил сразу после старта системы, он (список) соответствует тому, что прописано в pf.conf ?
|
нет список пустой, pfctl -sn ничего не показывает!
|
nardamon@vk |
15-09-2012 20:58 1989258 |
Описывайте все девайсы в правилах в скобках.
Тогда загрузится в любом случае.
И чо ето за бред?
Сначала RDR описывает , потом НАТ, а не в перемешку.
И одним правилом а не двумя или тремя.
nat on $ext_if tagged RDP -> ($ext_if)
эта чушь к примеру вообще щас ненужна
Срабатывает всегда последнее правило, будь то рдр, нат или другие правила.
|
Цитата:
#указываем откуда загружать правила pf_rules="/etc/pf.conf"
|
А руками правила грузите из
Или в rc.conf путь поправьте, или pf.conf положите в /etc
|
кажется такая же канетель как и в соседнем топике...
А зачем вы два раза NAT поднимаете? один раз в ppp,
Цитата:
ppp_nat="YES" # if you want to enable nat for your local network, otherwise NO
|
а второй раз в pf?
Цитата:
#создаем правило трансляции адресов из офисной сети во внешний мир
nat on $ext_if from $localnet to any -> ($ext_if)
|
Я кстати заметил что если на интерфейсе не включён NAT в самом pf, то redirect не сробатывает, может у вас наложение правил? потому и не работает rdr? попробуйте отключить в rc.conf ppp_nat
|
Время: 18:38.
© OSzone.net 2001-