Анонимный фтп

на 4.5 поднят анонимный фтп сервер.
Хотел дать доступ к нему только с ограниченного количества адресов.
Соответственно в пф.конф имеются записи

# $OpenBSD: pf.conf,v 1.38 2009/02/23 01:18:36 deraadt Exp $
#
ext_if="vr0"
int_if="vr1"
lan="192.168.0.1/24"

table persist
table persist file "/etc/start/pf.block"
table persist file "/etc/start/ftp"

set require-order no
set skip on $int_if
set block-policy drop

scrub in all fragment reassemble

#Пока что натим все, дальше только что нужно
nat pass on egress from $lan -> egress

#Редирект на сквид
rdr pass on $int_if proto tcp from $lan to any port www -> 127.0.0.1 port 7200

#Политика по умолчанию
block log on $ext_if all

#Блокируем с таблицы брутфорса
block quick from

#Защита от нмапа и неправильных пакетов
block in log quick on $ext_if proto tcp from any to any flags /S
block in log quick on $ext_if proto tcp from any to any flags /SFRA
block in log quick on $ext_if proto tcp from any to any flags /SFRAU
block in log quick on $ext_if proto tcp from any to any flags A/A
block in log quick on $ext_if proto tcp from any to any flags F/SFRA
block in log quick on $ext_if proto tcp from any to any flags U/SFRAU
block in log quick on $ext_if proto tcp from any to any flags SF/SF
block in log quick on $ext_if proto tcp from any to any flags SF/SFRA
block in log quick on $ext_if proto tcp from any to any flags SR/SR
block in log quick on $ext_if proto tcp from any to any flags FUP/FUP
block in log quick on $ext_if proto tcp from any to any flags FUP/SFRAUPEW
block in log quick on $ext_if proto tcp from any to any flags SFRAU/SFRAU
block in log quick on $ext_if proto tcp from any to any flags SFRAUP/SFRAUP

#Антиспуфинг
antispoof quick for $int_if inet

#Доступ к терминалу
pass proto tcp from any to any port 3389
pass proto tcp from any to any port 3388

#пинги
pass inet proto icmp all icmp-type { echoreq, unreach }
pass in on egress inet proto { tcp udp }
pass out on egress inet proto { tcp udp }

#ФТП
pass in on egress inet proto tcp from to egress port 21
pass out on $int_if inet proto tcp from any to 192.168.0.250 port 21
block in quick on egress inet proto tcp from ! port 21 to egress port 21

#Самба
pass in on $int_if proto { tcp, udp } from any to any port {137, 138, 139, 445 }
pass out on $int_if proto { tcp, udp } from any to any port {137, 138, 139, 445 }

#Защита ССШ
pass quick proto tcp from ! to any port ssh
flags S/SA keep state
(max-src-conn 2, max-src-conn-rate 1/20,
overload flush global)

# By default, do not permit remote connections to X11
block in on ! lo0 proto tcp from any to any port 6000

Вот только почему то доступ к фтп есть у все все равно, и при определяется версия самбы и веб сервера.

В каком месте что и так указал?

Аватар пользователя Mitsik

Анонимный фтп

Я думаю у вас почти все не так указанно. Я так и не смог понять что вы хотите и что хотите от фильтра.

Аватар пользователя taras5

Блин, хотел

Блин, хотел помочь человеку, но когда прочитал его вопрос (хотя, хрен его знает - вопрос ли это) после чудесного конфига, понял я, что ничего я не понял (((

damned, вы чего собственно хотите то получить?

P.S. опции оптимизации (SET .....) вообще лучше использовать, когда точно понимаешь не только как опция работает (как это описывается в мануалах), но и когда знаешь, как работа каждой такой опции сказывается на всех остальных правилах конфигурации PF. То есть если вы пишите "set skip on $int_if" и после этого добавляете "pass out on $int_if inet proto tcp from any to 192.168.0.250 port 21" - НАЧНИТЕ С ПРОЧТЕНИЯ МАНУАЛА ПО PF.CONF.

Есть подозрение, что приведённый конфиг работать не будет вообще.
damned, без обид. Мой тебе совет: нормально (точно) сформулируй вопрос. Потом убери все синтаксические ошибки из своего конфига, убери всё что тебе реально не нужно (в том числе опции оптимизации). Не геморойся сильно с флагами, если твой сервер будет ломать тот, кто может его взломать, он это сделает и несмотря на чудо расстановку флагов в конфигурации PF, а все остальные из без флагов крутых в твоём конфиге - ничего тебе не сделают. Поосле этого приводи здесь свой конфиг.

Аватар пользователя KOT

/

конфиг не должен работать, это первое.
второе, по поводу доступа к фтп, делается это так

http://pastebin.com/eybK3iLf

это что касательно доступа к ftp доверенным пользователям, каторые указаны в файле /etc/ftp/ftp_passed

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

по поводу флагов, вы уверены в том что сделали ?
меньше занимайтесь копипастингом.
как советовали вам, читайте доки и маны...

Аватар пользователя KOT

.

.

Аватар пользователя damned

Спасибо за

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

п.с.
Конфиг рабочий, за исключением некоторых моментов(( Ну тот же фтп всех пропускает.

Аватар пользователя MikeKMV

А чем не

А чем не устраивает vsftpd ?
И еще согласно конфигу pf ведет логи, а их хоть кто-то анализирует ?
Иначе, это пустая трата ресурсов, облегчающая задачу ДДоСерам.
_____________
Нет более кривого инструмента, чем GNU-тый инструмент.

_____________
Нет более кривого инструмента, чем GNU-тый инструмент.

Аватар пользователя damned

На счет vsftpd

На счет vsftpd почитаю про него.

face_name="имя фейса"
table persist file "/etc/ftp/ftp_passed"
pass in on $face_name inet proto tcp from {any !}to $face_name port 21

То есть мы пропускаем соединение ото всех, за исключением тех, кто в таблице ?

Аватар пользователя Mitsik

Да незачто

под словом нерабочий имели ввиду совсем другое.........

на 4.5 поднят анонимный фтп сервер.
Хотел дать доступ к нему только с ограниченного количества адресов.
Соответственно в пф.конф имеются записи
# $OpenBSD: pf.conf,v 1.38 2009/02/23 01:18:36 deraadt Exp $
#
ext_if="vr0"
int_if="vr1"
lan="192.168.0.1/24"

#table persist
table persist file "/etc/start/pf.block"
table persist file "/etc/start/ftp"

#set require-order no
#В двух словах проверяет очередность написания правил в конфиге
#По моему она даже отключена по умолчанию .
#Пример:
#ставим набор правил queueing в конец конфига
#options, normalization, translation, filtering, queueing
#при require-order yes pfctl выдаст ошибку
#Rules must be in order: options, normalization, queueing, translation, filtering
#Думаю вам стоит ее включить что бы не запихнуть лишнего не туда.

require-order yes

#set skip on $int_if
#Не фильтрует пакеты на указанном интерфейсе, используется там где не нужна
#нормализация и фильтрация, например на Lo0. Вы же ставите лан интерфейс и
#хотите на нем же еще и пакеты фильтровать.

set skip on Lo0

set loginterface $ext_if
#без этой опции pf не будет собирать информацию о пакетах, вы же активно
#используете log в правилах

set block-policy drop
scrub in all fragment reassemble

#Пока что натим все, дальше только что нужно
#nat pass on egress from $lan -> egress
# Все пакеты которые вы транслируете не проходят у вас фильтрацию
#Наверное все таки правильнее было бы так
nat on egress from $lan -> egress

#Редирект на сквид
rdr pass on $int_if proto tcp from $lan to any port www -> 127.0.0.1 port 7200

#Политика по умолчанию
#block log on $ext_if all
#Политика по умолчанию существует для того что бы применять ее к пакетам для
#которых не подошло ни одно правило у вас же зачем то приписан там интерфейс….
#Хотя да у вас же стоял сброс фильтрации на int_if :)
block log all
block in quick on ! lo0 proto tcp from any to any port 6000

#Блокируем с таблицы брутфорса
#block quick from наверное тут дальше секретная таблица брутфорса
block in quick on $ext_if from < секретная таблица брутфорса > to any

#это остаток от правил фтп которое ниже
block in quick on $int_if from $lan to ($int_if) port 21

#Защита от нмапа и неправильных пакетов
#block in log quick on $ext_if proto tcp from any to any flags /S
#block in log quick on $ext_if proto tcp from any to any flags /SFRA
#block in log quick on $ext_if proto tcp from any to any flags /SFRAU
#block in log quick on $ext_if proto tcp from any to any flags A/A
#block in log quick on $ext_if proto tcp from any to any flags F/SFRA
#block in log quick on $ext_if proto tcp from any to any flags U/SFRAU
#block in log quick on $ext_if proto tcp from any to any flags SF/SF
#block in log quick on $ext_if proto tcp from any to any flags SF/SFRA
#block in log quick on $ext_if proto tcp from any to any flags SR/SR
#block in log quick on $ext_if proto tcp from any to any flags FUP/FUP
#block in log quick on $ext_if proto tcp from any to any flags FUP/SFRAUPEW
#block in log quick on $ext_if proto tcp from any to any flags SFRAU/SFRAU
#block in log quick on $ext_if proto tcp from any to any flags SFRAUP/SFRAUP

#зачем использовать кучу правил с запретом флагов тсп когда можно просто разрешить #валидные флаги например S/SA а остальное сделает нормализация пакетов

#Антиспуфинг
#antispoof quick for $int_if inet
#Ну да ну да антиспуф делаем только на внутреннем интерфейсе
#к тому же который был отключен от фильтрации :)
antispoof log quick for { $int_if ($ext_if) }

#раз после ната теперь фильтрует то наверное нужно разрешить входящие лана
pass in on $int_if from $lan to any

#Доступ к терминалу
#pass proto tcp from any to any port 3389
#pass proto tcp from any to any port 3388
#хммм а не эти ли порты использует ремотдесктоп да еще и разрешен на всех
#интерфейсах во все стороны и после этого вы боитесь ннмапа? О_о тут уж я даже не #представляю где у вас терминал и откуда вы хотите получить доступ. Если с лана
#на бсд
#то чем х сервер плох а вообще что куда и зачем непонятно а если не понятно то не
#надо
#и использовать а если не получается то зачем тогда вообще пФ нужен?

#пинги
pass inet proto icmp all icmp-type { echoreq, unreach }

#pass in on egress inet proto { tcp udp }
#pass out on egress inet proto { tcp udp }
#опять разрешаем определенные запросы и тут же разрешаем все везде куда угодно ну #хоть не добавил к тсп и удп еще и исмп

#ФТП
#pass in on egress inet proto tcp from to egress port 21
#pass out on $int_if inet proto tcp from any to 192.168.0.250 port 21
#block in quick on egress inet proto tcp from ! port 21 to egress port 21
#первая строчка разрешает входящие соединения с интернета на порт 21 этой машины
#Вторая строчка разрешает исходящее соединение с внутреннего интерфейса с любого
#ип на 192бла бла бла порт 21
#Третья строчка блокирует входящее соединение на внешнем интерфейсе с
#наверное всех ип с любого порта кроме 21 на внешний интерфейс порт 21
#Если бы пФ был живым я думаю глаза бы у него стали бы такие -> О_О
#А ограниченные адреса это наверное один адрес 192бла бла бла?
#Вопрос был таким « хочу дать определенным адресам доступ к фтп на бсд»а в этом #правиле я вижу только то что с бсд вы хотите приконектица на фтп ип адреса
#192бла бла бла , а к бсд вы разрешаете доступ всему интернету. У вас нат, два #интерфейса каким ип вы хотите дать доступ только внутренним или только внешним
# или сразу и тем и тем. А вообще пассивный фтп подразумевает открытие не только
#21 порта , а еще и кучку других портов. В случае с доступом с интернета это
#выглядит примерно так
pass in on $ext_if proto tcp from \ $мая_кучка_адресов_которым_нада_дать_доступ_к_фтп to port 21
pass in on $ext_if proto tcp from \ $мая_кучка_адресов_которым_нада_дать_доступ_к_фтп to port > 49151
#и вообще как спросили так и ответил но все равно нужно запускать фтп прокси что бы #дть доступ к интернетовским фтп лан клиентам

#Самба
#pass in on $int_if proto { tcp, udp } from any to any port {137, 138, 139, 445 }
#pass out on $int_if proto { tcp, udp } from any to any port {137, 138, 139, 445 }
#я так думаю это можно упростить в одну строчку не?
pass on $int_if proto { tcp, udp } to port {137, 138, 139, 445 }

#Защита ССШ
#pass quick proto tcp from !
#to any port ssh
#flags S/SA keep state
#(max-src-conn 2, max-src-conn-rate 1/20,
#overload flush global)
#тут какието куски правила

# By default, do not permit remote connections to X11
#block in on ! lo0 proto tcp from any to any port 6000
#Это нужно если запущен х сервер т.е. рабочий стол на бсд с рюшечками там и прочим
#как в винде а то вдруг вы не вкурсе.

понятно теперь почему юниксойды всегда посылают читать мэны и факи О_О.