Страница 1 из 1

Помогите разобратся с PF

Добавлено: 2009-07-12 22:05:51
100matolog
Достался мне шлюз с PF на борту.
На ем работает NAT и Squid.
Мне нужно вырубить нат и по возможности включить его отдельным личностям.
Сетка 192.168.0.1 255.255.255.0
Вот конфиг собственно.
Укажите пальцем неучу что закаментить нада....

Код: Выделить всё

Правила фаервола.
# Macros
ext_if="tun0"
int_if="nfe0"
tcp_services = "{ ftp, ssh, smtp, domain, http, 4899}"
#tcp_services = "{ ssh, smtp, domain, http, pop3 }"
icmp_types = "echoreq"
# Tables
table <rfc1918> const { 127.0.0.0/8, 10.0.0.0/8, 172.168.0.0/12 \
192.168.0.0/16 }
table <dsua03> const { 0.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24 \
224.0.0.0/4, 240.0.0.0/4 }
#
# Options
#
#
# Normalization
#
scrub in all
#
# Queueing
#
#DATA-SERVER ReAdmin
#rdr on $ext_if proto { tcp udp } from 194.63.140.22 to 62.80.169.25 port 4899 -> 192.168.0.70
port 4899
#rdr pass on $ext_if proto tcp from 194.63.140.22 to 62.80.169.25 port 4899 -> 192.168.0.70
#
# Translation
#
#nat on $ext_if from 192.168.0.0/16 to 62.149.28.34 port 3306 -> $ext_if
nat on $ext_if from 192.168.0.0/16 to 62.149.28.34 port 3307 -> $ext_if
nat on $ext_if from 192.168.0.0/16 to 62.149.28.10 port 21 -> $ext_if
nat on $ext_if from 192.168.0.0/16 to 62.149.28.10 port 22 -> $ext_if
nat on $ext_if from 192.168.0.0/16 to 62.149.28.10 port 3306 -> $ext_if
#
#
#nat on $ext_if from 192.168.0.0/24 to any port 25 -> $ext_if
#nat on $ext_if from 192.168.0.0/24 to 62.80.160.182 port 25 -> $ext_if
nat on $ext_if from 192.168.0.0/24 to 62.149.9.49 port 21 -> $ext_if
nat on $ext_if from 192.168.0.0/24 to 62.149.9.49 port 22 -> $ext_if
#nat on $ext_if from 192.168.0.0/24 to any port 110 -> $ext_if
#
#
#NAT to ME
nat on $ext_if from 192.168.0.70/32 to any -> $ext_if
nat on $ext_if from 192.168.0.11/32 to any -> $ext_if
#NAT for Client bank
nat on $ext_if from 192.168.0.17/32 to 213.156.66.66 port 10080 -> $ext_if
nat on $ext_if from 192.168.0.17/32 to 193.200.190.17 port 80 -> $ext_if
nat on $ext_if from 192.168.0.99/32 to 213.156.66.66 port 10080 -> $ext_if
nat on $ext_if from 192.168.0.99/32 to 193.41.49.69 port 2031 -> $ext_if
nat on $ext_if from 192.168.0.99/32 to 193.200.190.17 port 80 -> $ext_if
#Port 110 for E-Mail
nat on $ext_if from 192.168.0.0/24 to any port 110 -> $ext_if
#Server time
nat on $ext_if from 192.43.244.18 to 192.168.0.0/24 -> $ext_if
nat on $ext_if from 192.168.0.0/24 to 192.43.244.18 -> $ext_if
#
# Rules
#
# setup a default deny all policy
block drop log all
# pass traffic on the loopback interface in either direction
pass quick on lo0 all
pass quick on ng0 all
#pass in quick on $ext_if proto { tcp udp } from any to 192.168.0.0/24 port 4899 keep state
#MPD4
pass quick on $ext_if from any to 193.201.81.10 keep state
pass quick on $ext_if proto { tcp udp } from any to 192.168.0.0/24 port 4899 keep state
block drop in quick on $ext_if from <rfc1918> to any
block drop in quick on $ext_if from <dsua03> to any
block drop in quick on $ext_if from 83.149.80.111 to any
block drop out quick on $ext_if from any to 83.149.80.111
block drop in quick on $ext_if from 87.255.33.0/24 to any
block drop out quick on $ext_if from any to 87.255.33.0/24
block drop in quick on $ext_if from 195.122.131.0/24 to any
block drop out quick on $ext_if from any to 195.122.131.0/24
block drop in quick on $ext_if from 195.203.36.201 to any
block drop out quick on $ext_if from any to 195.203.36.201
block drop in quick on $ext_if from 212.68.137.188 to any
block drop out quick on $ext_if from any to 212.68.137.188
block drop in quick on $ext_if from 193.203.36.201 to any
block drop out quick on $ext_if from any to 193.203.36.201
block drop in quick on $ext_if from 83.222.11.79 to any
block drop out quick on $ext_if from any to 83.222.11.79
block drop out quick on $ext_if from any to <rfc1918>
block drop out quick on $ext_if from any to <dsua03>
#rADMIN
#pass out quick on $ext_if inet proto tcp from 194.63.140.22 to any keep state
#pass in quick on $int_if inet proto tcp from 192.168.0.253 ext_if keep state
pass in quick on $ext_if inet proto tcp from any to $ext_if \
port $tcp_services flags S/SA keep state
pass in quick on $ext_if inet proto udp from any to $ext_if \
port = domain keep state
pass in quick inet proto icmp all icmp-type $icmp_types keep state
pass in quick on $int_if inet from $int_if:network to any keep state
pass out quick on $int_if inet from any to $int_if:network keep state
pass out on $ext_if proto tcp all flags S/SA modulate state
pass out on $ext_if proto { udp, icmp } all keep state

Re: Помогите разобратся с PF

Добавлено: 2009-07-13 8:05:08
princeps
100matolog писал(а):Мне нужно вырубить нат и по возможности включить его отдельным личностям.
Зачем?
Жуткий какой конфиг. Распиши поподробней, чем занимается этот компьютер, сдается мне, не все так просто.

Re: Помогите разобратся с PF

Добавлено: 2009-07-13 8:28:53
100matolog
princeps писал(а):
100matolog писал(а):Мне нужно вырубить нат и по возможности включить его отдельным личностям.
Зачем?
Жуткий какой конфиг. Распиши поподробней, чем занимается этот компьютер, сдается мне, не все так просто.
Это обыкновенный шлюз . Подключение через ppoe.
На ем стоит NAT(pf) и Squid.
Надо завернуть всех в проксю - и селективно вырубить NAT. Тоесть оставить нат для определенных внутренних айпи и с определенным портом.

Re: Помогите разобратся с PF

Добавлено: 2009-07-13 11:42:07
princeps
я почему спросил про конфигурацию сети - у меня в конфиге два правила нат, а у тебя их хренова гора, для разных подсетей в разные подсети, чем это обусловлено?
Кроме того, не вижу никакой необходимости отключать кому-то нат, если нужно запретить кому-то выход в обход прокси, не правильнее ли будет сделать это правилами фаервола?
100matolog писал(а):Надо завернуть всех в проксю
Что-то вроде

Код: Выделить всё

rdr on $int_if proto tcp from внутренняя_сеть to !внутренняя_сеть port { 80, 8080 } -> ип_прокси port порт_прокси
но сквид должен быть в режиме транспарент

Re: Помогите разобратся с PF

Добавлено: 2009-07-13 13:01:36
100matolog
princeps писал(а):я почему спросил про конфигурацию сети - у меня в конфиге два правила нат, а у тебя их хренова гора, для разных подсетей в разные подсети, чем это обусловлено?
Кроме того, не вижу никакой необходимости отключать кому-то нат, если нужно запретить кому-то выход в обход прокси, не правильнее ли будет сделать это правилами фаервола?
100matolog писал(а):Надо завернуть всех в проксю
Что-то вроде

Код: Выделить всё

rdr on $int_if proto tcp from внутренняя_сеть to !внутренняя_сеть port { 80, 8080 } -> ип_прокси port порт_прокси
но сквид должен быть в режиме транспарент
хм..как вариант - но тут есть ньюанс - тут лимитированный зарубежный трафик - посему требуется средствами squid-а резать мир.

Re: Помогите разобратся с PF

Добавлено: 2009-07-13 13:34:34
princeps
и что мешает?
Кстати, а зачем вы каждый порт по отдельности натите?

Re: Помогите разобратся с PF

Добавлено: 2009-07-13 13:49:23
100matolog
princeps писал(а):и что мешает?
Кстати, а зачем вы каждый порт по отдельности натите?
конфиг строил не я - в шапке указал.Есть мнение - что до определенного момента - нат был отключен для всех и люди ходили в инторнет через прокси . а порты открыли для софта который не понимает прокси

Re: Помогите разобратся с PF

Добавлено: 2009-07-13 14:15:46
princeps
чувак, похоже и ты, и твой предшественник не до конца понимаете, что такое нат. Вы не закрыли этим компам выход наружу, а просто не включили нат. Порты открываются\закрываются фаерволом, а не натом.
Короче, вот тебе пара статей, посмотри как там, и сделай по образу и подобию:
http://www.lissyara.su/?id=1833
http://www.lissyara.su/?id=1276
все равно тебе лучше изучить pf, раз уж ты с ним работаешь.

Re: Помогите разобратся с PF

Добавлено: 2009-07-13 14:25:34
100matolog
princeps писал(а):чувак, похоже и ты, и твой предшественник не до конца понимаете, что такое нат. Вы не закрыли этим компам выход наружу, а просто не включили нат. Порты открываются\закрываются фаерволом, а не натом.
Короче, вот тебе пара статей, посмотри как там, и сделай по образу и подобию:
http://www.lissyara.su/?id=1833
http://www.lissyara.su/?id=1276
все равно тебе лучше изучить pf, раз уж ты с ним работаешь.
Спаибо :smile: :smile: . Но, уважаемы - на изучение потребуется время - не составит ли Вам труда пальцем ткнуть мне в этом конфиге как реализовать то что мне надо? А именно - что бы нат работал для определенных внутренних айпи?

Re: Помогите разобратся с PF

Добавлено: 2009-07-13 15:22:51
princeps

Код: Выделить всё

nat on $ext_if from ип_которые_тебе_надо_натить to any -> $ext_if
Мог бы уже сам сделать по аналогии с тем, что там у тебя в конфиге :) Только это фигня - пакеты от других ip все равно будут в инет валиться а рубить их будет уже провайдер своей циской. Сделай по-человечески фаерволом, не смеши людей.

Re: Помогите разобратся с PF

Добавлено: 2009-07-13 15:33:51
100matolog
princeps писал(а):

Код: Выделить всё

nat on $ext_if from ип_которые_тебе_надо_натить to any -> $ext_if
Мог бы уже сам сделать по аналогии с тем, что там у тебя в конфиге :) Только это фигня - пакеты от других ip все равно будут в инет валиться а рубить их будет уже провайдер своей циской. Сделай по-человечески фаерволом, не смеши людей.
Хмм...Может я чегото не понимайт...Или неверно сформулировал вопрос..но в текущий момент все могут ходить мимо прокси..мне нужно сделать наоборот - что бы отдельные личности ходили через нат - а все остальные только через прокси

Re: Помогите разобратся с PF

Добавлено: 2009-07-14 8:25:49
princeps
Дружище, ну подумай сам хоть немного. Это я тебе уже писал, правило, заворачивающее на прокси:

Код: Выделить всё

rdr on $int_if proto tcp from { ип_компов_которые_надо_завернуть } to !внутренняя_сеть port { 80, 8080 } -> ип_прокси port порт_прокси
Или другой путь, рубим фаерволом тех, кому напрямую лезть в инет нельзя:

Код: Выделить всё

block log on $int_if proto tcp from { ип_компов_которым_прямой_доступ_запрещен } to any port 80

Re: Помогите разобратся с PF

Добавлено: 2009-07-16 8:12:47
100matolog
Уважаемый - вы знаете - правила не отработали...сделал експеримент - закрыл 80 порт одной машине - но она все равно ходила потом в инет - причем у нее не была указана прокся в настройках...
что может быть?

Re: Помогите разобратся с PF

Добавлено: 2009-07-16 10:09:44
princeps
вероятно потому, что ты поставил запрещающее правило до разрешающего. В pf приоритет правил увеличивается сверху вниз.

Re: Помогите разобратся с PF

Добавлено: 2009-07-16 13:44:42
100matolog
princeps писал(а):вероятно потому, что ты поставил запрещающее правило до разрешающего. В pf приоритет правил увеличивается сверху вниз.
причесал немного конфиг и вот что есть на текущий момент

Код: Выделить всё

office# cat pf-rules.conf
# Macros

ext_if="tun0"
int_if="nfe0"
localnet="192.168.1.0/24"

tcp_services = "{ ftp, ssh, smtp, http, domain, 1723}"
#tcp_services = "{ ssh, smtp, domain, http, pop3 }"

server="192.168.0.241"

icmp_types = "echoreq"

# Tables

table <rfc1918> const { 127.0.0.0/8, 10.0.0.0/8, 172.168.0.0/12 \
	192.168.0.0/16 }
table <dsua03> const { 0.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24 \
	224.0.0.0/4, 240.0.0.0/4 }

#
# Options
#

#
# Normalization
#
scrub in all

#
# Queueing
#

#DATA-SERVER ReAdmin

# Translation
#
nat on $ext_if from 192.168.0.0/16 to 62.149.28.34 port 3307 -> $ext_if

nat on $ext_if from 192.168.0.0/16 to 62.149.28.10 port 21 -> $ext_if
nat on $ext_if from 192.168.0.0/16 to 62.149.28.10 port 22 -> $ext_if
nat on $ext_if from 192.168.0.0/16 to 62.149.28.10 port 3306 -> $ext_if
nat on $ext_if from 192.168.0.0/24 to 62.149.9.49 port 21 -> $ext_if
nat on $ext_if from 192.168.0.0/24 to 62.149.9.49 port 22 -> $ext_if
#

#NAT to ME
nat  on $ext_if from 192.168.0.70/32 to any  -> $ext_if
nat  on $ext_if from 192.168.0.11/32 to any  -> $ext_if

#NAT for Client bank
nat on $ext_if from 192.168.0.17/32 to 213.156.66.66 port 10080 -> $ext_if
nat on $ext_if from 192.168.0.17/32 to 193.200.190.17 port 80 -> $ext_if


nat on $ext_if from 192.168.0.99/32 to 213.156.66.66 port 10080 -> $ext_if
nat on $ext_if from 192.168.0.99/32 to 193.41.49.69 port 2031 -> $ext_if

#Port 110 for E-Mail

nat on $ext_if from 192.168.0.0/24 to any port 110 -> $ext_if

#Webmin port's
nat on $ext_if from 192.168.0.0/24 to any port 10000 -> $ext_if 
#Server time

nat on $ext_if from 192.43.244.18 to 192.168.0.0/24 -> $ext_if
nat on $ext_if from 192.168.0.0/24 to 192.43.244.18 -> $ext_if 

#
# Rules
#
# setup a default deny all policy
block drop log all

# pass traffic on the loopback interface in either direction
pass quick on lo0 all
pass quick on ng0 all

#test
block log on $int_if proto tcp from $server to any port 80
block log on $int_if proto tcp from $server to any port 8080
block log on $int_if proto tcp from $server to any port http



#pass in  quick on $ext_if proto { tcp udp } from any to 192.168.0.0/24 port 4899 keep state
#MPD4

block drop  in quick on $ext_if from <rfc1918> to any
block drop  in quick on $ext_if from <dsua03> to any

block drop out quick on $ext_if from any to <rfc1918>
block drop out quick on $ext_if from any to <dsua03>

#pass out quick on $ext_if inet proto tcp from 194.63.140.22 to any keep state
#pass in  quick on $int_if inet  proto tcp from 192.168.0.253 ext_if keep state



pass in quick on $ext_if inet proto tcp from any to $ext_if \
	port $tcp_services flags S/SA keep state
pass in quick on $ext_if inet proto udp from any to $ext_if \
	port = domain keep state
pass in quick inet proto icmp all icmp-type $icmp_types keep state

pass in quick on $int_if inet from $int_if:network to any keep state
pass out quick on $int_if inet from any to $int_if:network keep state

pass out on $ext_if proto tcp all flags S/SA modulate state
pass out on $ext_if proto { udp, icmp } all keep state

Re: Помогите разобратся с PF

Добавлено: 2009-07-16 15:29:59
princeps
и что, не работает?

Re: Помогите разобратся с PF

Добавлено: 2009-07-19 11:56:47
tyler56
princeps писал(а):вероятно потому, что ты поставил запрещающее правило до разрешающего. В pf приоритет правил увеличивается сверху вниз.
Лучше всегда добавлять quick в правило что бы обрабатывалось с верху вниз.

Код: Выделить всё

pass in quick on $local_if from { 192.168.0.1/24 } to <office> keep state
Из приведенного конфига видно что только у адресов 192.168.0.70 и 192.168.0.11 есть полный доступ в инет, а также сеть 192.168.0.0/24 имеет полный доступ на любые адреса только на 110 порт.

Правила нат разрешающего каким-то подсетям полный доступ в нет я не увидел.

Re: Помогите разобратся с PF

Добавлено: 2009-07-20 8:19:53
100matolog
tyler56 писал(а):
princeps писал(а):вероятно потому, что ты поставил запрещающее правило до разрешающего. В pf приоритет правил увеличивается сверху вниз.
Лучше всегда добавлять quick в правило что бы обрабатывалось с верху вниз.

Код: Выделить всё

pass in quick on $local_if from { 192.168.0.1/24 } to <office> keep state
Из приведенного конфига видно что только у адресов 192.168.0.70 и 192.168.0.11 есть полный доступ в инет, а также сеть 192.168.0.0/24 имеет полный доступ на любые адреса только на 110 порт.

Правила нат разрешающего каким-то подсетям полный доступ в нет я не увидел.
Спасибо

Re: Помогите разобратся с PF

Добавлено: 2009-07-20 8:34:12
princeps
за то время, пока ты этот шлюз настраиваешь, уже мог бы приспособить под себя любой конфиг из статей, которые я тебе давал. С этой неудобной портянкой еще граблей огребешь - в ней без бутылки не разобраться.