pf + ftp

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Владимир
сержант
Сообщения: 235
Зарегистрирован: 2008-07-30 13:46:15
Откуда: Республика Молдова, г. Кишинев
Контактная информация:

pf + ftp

Непрочитанное сообщение Владимир » 2009-02-20 17:32:24

Есть сервер у клиента, работает как роутер + сайт+ фтп

В качестве фаервола использовал PF . До сих пор всё работало, сайт обновляли, но со вчерашнего дня, нельзя нормально зайти на ФТП и обновить файлы с сайтом.

Из под винды коннектишься и в ответ пишут, что нельзя зайти. Пробовал из под фтп-клиента : получается что сначала была проблема получить список каталогов, но это каким-то боком само собой решилось, но когда заходишь в любой из каталогов на фтп , то содержимое не отображается и нельзя больше ничего делать на фтп, разве что только заливать файлы, но не сливать их.

конфиг PF.

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

#	$FreeBSD: src/etc/pf.conf,v 1.2.2.1 2006/04/04 20:31:20 mlaier Exp $
#	$OpenBSD: pf.conf,v 1.21 2003/09/02 20:38:44 david Exp $
#
# See pf.conf(5) and /usr/share/examples/pf for syntax and examples.
# Required order: options, normalization, queueing, translation, filtering.
# Macros and tables may be defined and used anywhere.
# Note that translation rules are first match while filter rules are last match.

# Macros: define common values, so they can be referenced and changed easily.
ext_if="em0"	# replace with actual external interface name i.e., dc0
int_if="sk0"	# replace with actual internal interface name i.e., dc1
internal_net="192.168.1.0/24"
internal_addr="192.168.1.254"
external_addr="XXX.XX.XXX.XXX"
super_ip= "{ 192.168.1.25, 192.168.1.189, 192.168.1.250 }"
servers="{ 79.140.172.20, 83.218.209.7, 217.26.171.106, 212.0.210.101, 87.248.166.155, 83.218.215.132, 195.22.235.216, 83.218.196.96, 217.12.117.142, 86.106.220.17, 195.22.236.205, 83.218.196.181, 83.218.208.35, 89.28.12.8, 87.255.66.14 }"

# Tables: similar to macros, but more flexible for many addresses.
#table <foo> { 10.0.0.0/8, !10.1.0.0/16, 192.168.0.0/24, 192.168.1.18 }

#table <extralan> { !192.168.1.95, 192.168.1.0/24 }

# Options: tune the behavior of pf, default values are given.
set timeout { interval 10, frag 30 }
set timeout { tcp.first 120, tcp.opening 30, tcp.established 86400 }
set timeout { tcp.closing 900, tcp.finwait 45, tcp.closed 90 }
set timeout { udp.first 60, udp.single 30, udp.multiple 60 }
set timeout { icmp.first 20, icmp.error 10 }
set timeout { other.first 60, other.single 30, other.multiple 60 }
set timeout { adaptive.start 0, adaptive.end 0 }
set limit { states 10000, frags 5000 }
set loginterface $ext_if
set optimization normal
set block-policy drop
#set require-order yes
#set fingerprints "/etc/pf.os"

# Normalization: reassemble fragments and resolve or reduce traffic ambiguities.
scrub in all

# Queueing: rule-based bandwidth control.
#altq on $ext_if bandwidth 2Mb cbq queue { dflt, developers, marketing }
#queue dflt bandwidth 5% cbq(default)
#queue developers bandwidth 80%
#queue marketing  bandwidth 15%

# Translation: specify how addresses are to be mapped or redirected.
# nat: packets going out through $ext_if with source address $internal_net will
# get translated as coming from the address of $ext_if, a state is created for
# such packets, and incoming packets will be redirected to the internal address.


nat pass on $ext_if from $super_ip to any -> ($ext_if)
nat on $ext_if from $internal_net to any -> ($ext_if)

# rdr: packets coming in on $ext_if with destination $external_addr:1234 will
# be redirected to 10.1.1.1:5678. A state is created for such packets, and
# outgoing packets will be translated as coming from the external address.
#rdr on $ext_if proto tcp from any to $external_addr/32 port 1234 -> 10.1.1.1 port 5678

# rdr outgoing FTP requests to the ftp-proxy
#rdr on $int_if proto tcp from any to any port ftp -> 127.0.0.1 port 8021

#rdr on $int_if proto tcp from $internal_net to any port 80 -> 192.168.1.254 port 3128
#rdr pass on $ext_if proto tcp from any to $external_addr port 5900 -> 192.168.1.37
#rdr pass on $ext_if proto tcp from any to $external_addr port 4899 -> 192.168.1.33

rdr pass on $ext_if proto tcp from $servers to $external_addr port 3389 -> 192.168.1.250

# spamd-setup puts addresses to be redirected into table <spamd>.
#table <spamd> persist
#no rdr on { lo0, lo1 } from any to any
#rdr inet proto tcp from <spamd> to any port smtp -> 127.0.0.1 port 8025

# Filtering: the implicit first two rules are
#pass in all
#pass out all

# block all incoming packets but allow ssh, pass all outgoing tcp and udp
# connections and keep state, logging blocked packets.
#block in log all
#pass  in  on $ext_if proto tcp from any to $ext_if port 22 keep state
#pass  out on $ext_if proto { tcp, udp } all keep state

# pass incoming packets destined to the addresses given in table <foo>.
#pass in on $ext_if proto { tcp, udp } from any to <foo> port 80 keep state

# pass incoming ports for ftp-proxy
#pass in on $ext_if inet proto tcp from any to $ext_if port > 49151 keep state

# Alternate rule to pass incoming ports for ftp-proxy
# NOTE: Please see pf.conf(5) BUGS section before using user/group rules.
#pass in on $ext_if inet proto tcp from any to $ext_if user proxy keep state

# assign packets to a queue.
#pass out on $ext_if from 192.168.0.0/24 to any keep state queue developers
#pass out on $ext_if from 192.168.1.0/24 to any keep state queue marketing

block in all
block out all

pass on $int_if
pass on lo0
#pass on $ext_if

pass out on $ext_if proto { tcp, udp } from { $ext_if, $internal_net } to any port 53 keep state
pass in on $ext_if proto {udp,tcp} from any to $external_addr port 53 keep state

pass out on $ext_if proto tcp from { $ext_if, $internal_net } to any port { 80, 25, 443, 5190, 6685, 3389, 22, 21, 20, 5050, 8000, 61000:65000 } keep state

pass in on $ext_if proto tcp from any to $ext_if port { 25, 21, 20, 80, 60000:65000 } keep state

pass in on $ext_if proto tcp from $servers to $ext_if port 22 keep state

pass in on $ext_if proto icmp from $servers to $ext_if 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/

Владимир
сержант
Сообщения: 235
Зарегистрирован: 2008-07-30 13:46:15
Откуда: Республика Молдова, г. Кишинев
Контактная информация:

Re: pf + ftp

Непрочитанное сообщение Владимир » 2009-02-20 18:01:16

решил задачу ;)

измнением одного правила :

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

pass in on $ext_if proto tcp from any to $ext_if port { 25, 21, 20, 80, 60000:65000 } keep state
на

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

pass in on $ext_if proto tcp from any to $ext_if port { 25, 21, 20, 80, 49512 >< 65535 } keep state