Всем привет, это мое первое сообщение на форуме, до этого как-то справлялся, но тут впал в ступор. Мне по наследству от предыдущего сисадмина достался шлюз построенный на FreeBSD и с фаерволом PF. Была поставлена задача запретить доступ к интернету некоторым пользователям. Решил обойтись надстройками политик на PF, конкретнее - закрыть все, что проходит по протоколу TCP определенным IP-адресам. После добавления:table <bedguys> { 192.168.0.100 }
...
block quick on $ext_if proto tcp from <bedguys>
не помогло, пробовал добавлять сразу после "block all", а также после "pass all", результат один и тот же...
Подскажите, пожалуйста, где я ошибся?
Ниже приведен полный конфиг PF'а:
ugm = "192.168.0.0/24"
zlk = "192.168.2.0/24"
suk = "192.168.25.0/24"
openvpn = "10.0.0.0/8"
int_if = "sis0"
ext_if = "tun0"
ovpn_if = "tun1"
mail_server = "192.168.0.2/32"
mail_ports = "80"
mail_smtp = "25"
icmp_types = "{ echoreq, unreach }"
table <trusted> { $ugm, $suk, $zlk, $ext_if, $openvpn, $mail_server }
table <bedguys> { 192.168.0.100 }
set block-policy drop
set skip on lo0
scrub in all
rdr on tun0 proto { tcp, udp } from any to $ext_if port $mail_ports -> $mail_server port $mail_ports
rdr on tun0 proto { tcp, udp } from any to $ext_if port $mail_smtp -> $mail_server port $mail_smtp
nat on $ext_if from <trusted> to any -> ($ext_if)
antispoof quick for $ext_if
block all
block quick on $ext_if inet proto tcp from <bedguys>
block quick on $ext_if inet proto tcp to <bedguys>
pass out on $ext_if from $ext_if to any keep state
pass out on $ext_if from <trusted> to any keep state
pass in log on $ext_if proto { tcp, udp } from any to $mail_server port $mail_ports keep state
pass in log on $ext_if proto { tcp, udp } from any to $mail_server port $mail_smtp keep state
pass in log on $ext_if proto { tcp, udp } from any to 192.168.0.8 port 3389 keep state
pass in on $ext_if proto udp from any to $ext_if port 1194 keep state
pass out on $ext_if proto udp from any to $ext_if port 1194 keep state
pass on $ovpn_if from <trusted> to any keep state
pass log inet proto icmp all icmp-type $icmp_types
pass all
интерфейсы:
(смотрит в локалку) sis0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether XX:XX:XX:XX:XX:XX
inet 192.168.0.5 netmask 0xffffff00 broadcast 192.168.0.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
(смотрит в инет) vr0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether XX:XX:XX:XX:XX:XX
inet XXX.XXX.XXX.XXX netmask 0xffffff00 broadcast XXX.XXX.XXX.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
(не используется) rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether XX:XX:XX:XX:XX:XX
inet 192.16.111.5 netmask 0xffffff00 broadcast 192.16.111.255
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> metric 0 mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x5
inet6 ::1 prefixlen 128
inet 127.0.0.1 netmask 0xff000000
pflog0: flags=141<UP,RUNNING,PROMISC> metric 0 mtu 33204
(pppoe) tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1492
inet XXX.XXX.XXX.XXX --> YYY.YYY.YYY.YYY netmask 0xffffffff
Opened by PID 452
tun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1500
inet 10.0.0.1 --> 10.0.0.2 netmask 0xffffffff
Opened by PID 834