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

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
100matolog
ст. сержант
Сообщения: 309
Зарегистрирован: 2008-05-30 12:11:16
Откуда: kiev
Контактная информация:

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

Непрочитанное сообщение 100matolog » 2009-07-12 22:05:51

Достался мне шлюз с 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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

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

Непрочитанное сообщение princeps » 2009-07-13 8:05:08

100matolog писал(а):Мне нужно вырубить нат и по возможности включить его отдельным личностям.
Зачем?
Жуткий какой конфиг. Распиши поподробней, чем занимается этот компьютер, сдается мне, не все так просто.
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

100matolog
ст. сержант
Сообщения: 309
Зарегистрирован: 2008-05-30 12:11:16
Откуда: kiev
Контактная информация:

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

Непрочитанное сообщение 100matolog » 2009-07-13 8:28:53

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

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

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

Непрочитанное сообщение princeps » 2009-07-13 11:42:07

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

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

rdr on $int_if proto tcp from внутренняя_сеть to !внутренняя_сеть port { 80, 8080 } -> ип_прокси port порт_прокси
но сквид должен быть в режиме транспарент
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

100matolog
ст. сержант
Сообщения: 309
Зарегистрирован: 2008-05-30 12:11:16
Откуда: kiev
Контактная информация:

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

Непрочитанное сообщение 100matolog » 2009-07-13 13:01:36

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

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

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

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

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

Непрочитанное сообщение princeps » 2009-07-13 13:34:34

и что мешает?
Кстати, а зачем вы каждый порт по отдельности натите?
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

100matolog
ст. сержант
Сообщения: 309
Зарегистрирован: 2008-05-30 12:11:16
Откуда: kiev
Контактная информация:

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

Непрочитанное сообщение 100matolog » 2009-07-13 13:49:23

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

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

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

Непрочитанное сообщение princeps » 2009-07-13 14:15:46

чувак, похоже и ты, и твой предшественник не до конца понимаете, что такое нат. Вы не закрыли этим компам выход наружу, а просто не включили нат. Порты открываются\закрываются фаерволом, а не натом.
Короче, вот тебе пара статей, посмотри как там, и сделай по образу и подобию:
http://www.lissyara.su/?id=1833
http://www.lissyara.su/?id=1276
все равно тебе лучше изучить pf, раз уж ты с ним работаешь.
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

100matolog
ст. сержант
Сообщения: 309
Зарегистрирован: 2008-05-30 12:11:16
Откуда: kiev
Контактная информация:

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

Непрочитанное сообщение 100matolog » 2009-07-13 14:25:34

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

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

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

Непрочитанное сообщение princeps » 2009-07-13 15:22:51

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

nat on $ext_if from ип_которые_тебе_надо_натить to any -> $ext_if
Мог бы уже сам сделать по аналогии с тем, что там у тебя в конфиге :) Только это фигня - пакеты от других ip все равно будут в инет валиться а рубить их будет уже провайдер своей циской. Сделай по-человечески фаерволом, не смеши людей.
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

100matolog
ст. сержант
Сообщения: 309
Зарегистрирован: 2008-05-30 12:11:16
Откуда: kiev
Контактная информация:

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

Непрочитанное сообщение 100matolog » 2009-07-13 15:33:51

princeps писал(а):

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

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

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

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

Непрочитанное сообщение princeps » 2009-07-14 8:25:49

Дружище, ну подумай сам хоть немного. Это я тебе уже писал, правило, заворачивающее на прокси:

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

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

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

block log on $int_if proto tcp from { ип_компов_которым_прямой_доступ_запрещен } to any port 80
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

100matolog
ст. сержант
Сообщения: 309
Зарегистрирован: 2008-05-30 12:11:16
Откуда: kiev
Контактная информация:

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

Непрочитанное сообщение 100matolog » 2009-07-16 8:12:47

Уважаемый - вы знаете - правила не отработали...сделал експеримент - закрыл 80 порт одной машине - но она все равно ходила потом в инет - причем у нее не была указана прокся в настройках...
что может быть?

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

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

Непрочитанное сообщение princeps » 2009-07-16 10:09:44

вероятно потому, что ты поставил запрещающее правило до разрешающего. В pf приоритет правил увеличивается сверху вниз.
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

100matolog
ст. сержант
Сообщения: 309
Зарегистрирован: 2008-05-30 12:11:16
Откуда: kiev
Контактная информация:

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

Непрочитанное сообщение 100matolog » 2009-07-16 13:44:42

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

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

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

Непрочитанное сообщение princeps » 2009-07-16 15:29:59

и что, не работает?
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru

tyler56
сержант
Сообщения: 198
Зарегистрирован: 2009-06-03 18:10:15

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

Непрочитанное сообщение tyler56 » 2009-07-19 11:56:47

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 порт.

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

100matolog
ст. сержант
Сообщения: 309
Зарегистрирован: 2008-05-30 12:11:16
Откуда: kiev
Контактная информация:

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

Непрочитанное сообщение 100matolog » 2009-07-20 8:19:53

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 порт.

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

princeps
майор
Сообщения: 2684
Зарегистрирован: 2007-09-25 10:20:59
Откуда: Сочи, Москва
Контактная информация:

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

Непрочитанное сообщение princeps » 2009-07-20 8:34:12

за то время, пока ты этот шлюз настраиваешь, уже мог бы приспособить под себя любой конфиг из статей, которые я тебе давал. С этой неудобной портянкой еще граблей огребешь - в ней без бутылки не разобраться.
Deus quos vult perdere dementat prius
http://www.itforum-sochi.ru