Необходимо выпустить пользователей на ftp сайты из локальной сети, но при этом не устанавливая
дополнительного ПО, используя только возможности FreeBSD 4.10.
Этими возможностями, как ни странно, оказались ipfw и natd
вот собственно как все это прописывается.Исходные данные, FreeBSD 4.10 + настроенный nat правила для ipfw
ipfw -q add 100 divert natd from 192.168.20.0/24 to any 20, 21 out via $oif
ipfw -q add 200 divert natd from any 20, 21 to $iip in via $oif
ipfw -q add 300 allow tcp from any to any established
ipfw -q add 400 allow tcp from any to any setup
где $oif и $iip соответственно внешний интерфейс и внешний IPтеперь запускаем natd
/sbin/natd -m -s -u -punch_fw 500:200 -n xl1заострю внимание на параметре "-punch_fw" -этот параметр создает в фаерволе "ходы",
добавляя динамические правила. В моем случае эти правила начнутся с номера 500 и будет их добавлено
максимум 200 (понятно чем больше сеть, те больше нужно правил).Особое спасибо A Clockwork Orange.
URL:
Обсуждается: http://www.opennet.me/tips/info/721.shtml
Я чего-то не понял, во эта строчка
ipfw -q add 400 allow tcp from any to any setup
открывает доступ ко всем портам? Если да то это помоему не безопастно... Или я ошибаюсь?
Все гораздо хуже
setup пропускает SYN пакеты.
eslablished - пакеты с ACK'ами.В итоге мы имеем allow на любую TCP сессию. ПЫП.
Поясняю ин-рашан: ко всему, что работает по TCP доступ открыт.
>Все гораздо хуже
>setup пропускает SYN пакеты.
>eslablished - пакеты с ACK'ами.А если мы добавим вот это?:
${ipfw} add 60 deny tcp from any to any not established tcpflags fin
${ipfw} add 70 deny tcp from any to any tcpflags fin,syn,rst,psh,ack,urg
${ipfw} add 80 deny tcp from any to any tcpflags !fin,!syn,!rst,!psh,!ack,!urg
а кто сказал что на этой тачке есть сервисы запущенные ?
если мы заменим
ipfw -q add 400 allow tcp from any to any setup
на
ipfw -q add 2000 deny tcp from any to any setup in via $oifто получим не только возможность работы по ftp из локалки, но и "немного" закрытый снаружи файервол.
Откровенный бред.
Вас еще не сломали? тогда мы идем к вам :-)
А если сделать?:
ipfw -q add 300 allow tcp from any to $iip 20,21 established
ipfw -q add 350 allow tcp from $iip 20,21 to any established
ipfw -q add 400 allow tcp from any to $iip 20,21 setup
ipfw -q add 450 allow tcp from $iip 20,21 to any setup
В этом случае пассивный FTP не работает. Данные идут по >1023 портам. 20-й порт не используется вообще
нихера не помогает то что ты написал, как не входит так и не входит, есть ешё что нить для решения задачи?
ipfw -q add 300 allow tcp from any to any established
ipfw -q add 400 allow tcp from any to any setupНе пугайте людей.
Сначала setup, потом established?Это равносильно allow all from any to any!
Все-таки, как сделать, чтобы работало? У меня не работает. Написал вот что:rc.conf:
...
natd -p 8671 -f /etc/natd.conf -n ${prov1} -punch_fw 10000:200
...rc.firewall:
...
prov1="rl2"
fwcmd="ipfw -q add"
...
${fwcmd} 9500 divert 8671 ip4 from any to any 20,21 out xmit ${prov1}
${fwcmd} 9510 divert 8671 ip4 from any 20,21 to any in recv ${prov1}
${fwcmd} 9540 allow tcp from any to any established
${fwcmd} 9550 count tcp from any to any setup
...
${fwcmd} 60000 deny log logamount 20000 ip from any to any
...Судя по логу видно, что на фаер прилетают запросы на 21 порт, который фаер банит. Дописал:
${fwcmd} 9560 allow tcp from any to any 20,21
В логе фаера ошибки исчезли, но соединение не происходит и в логах ftp-сервера видно, что авторизация на сервере происходит до того момента как клиент попытается "создать в фаерволле ходы" :(
А вообще оно работает? Пробовал написать даже так:
allow tcp from any to any 20,21,1024-65535
allow tcp from any 20,21,1024-65535 to any
И вообще вот так:
allow tcp from any to any
allow tcp from any to any
Пофиг! Разница только в том, что если я разбаниваю эти порты, коннект отлетает не на команде PORT (куча_цифр) а на команде LIST с сообщением 425 Unable to open the data connectionОно вообще из-за nat-а работает?!
А вообще не очень понятно, чем был плох старый стандарт, когда коннект происходил по 21 порту, а данные лились по 20? Какого х*** потребовалось изобретать этот е****** кретинский режим работы, из-за которого у админов одна только е***** и еще х** знает с каким результатом? Что вообще позитивного внесли эти дегенераты, которые этот стандарт придумали?