1

Тема: ipfw не пускает на ftp сервер за файрволлом

FreeBSD  служит шлюзом для выхода в инет.
Настроен ipwf+natd+squid
Есть ftp сервер поднятый на windows2008server (для нужд 1Сников) настроен проброс портов через natd.
Добавлены соответствующие правила в ipfw. Из инета на этот ftp зайти не могу, не пускает, а по RDP на этот же сервер захожу, ftp из локалки тоже. Все правила аналогичны.
Причем при попытке обмена с ftp на порт какие то пакеты попадают.
В чем может быть проблема. Почему именно по ftp не пускает.

2

Re: ipfw не пускает на ftp сервер за файрволлом

будем угадывать или покажите конфиг?

3

Re: ipfw не пускает на ftp сервер за файрволлом

прошу прощения. вот конфиги

natd.conf

log no
same_ports yes
use_sockets yes
port natd
redirect_port tcp 192.168.99.9:3389 3399
redirect_port tcp 192.168.99.9:21 221

firewall.conf

#!/bin/sh

fw="/sbin/ipfw"
ifnet="rl0"
iflan="re0"

innet="192.168.99.0"
inmask="24"
${fw} -f flush
${fw} -f pipe flush
${fw} -f queue flush

# Разрешаем весь траффик по внутреннему интерфейсу (петле)
${fw} add allow ip from any to any via lo0
# рубим попытки lo0 куда-то лезть и откуда-то лезть на lo0
${fw} add deny ip from any to 127.0.0.0/8
${fw} add deny ip from 127.0.0.0/8 to any



# Вводим запреты:
# режем частные сети на внешнем интерфейсе
${fw} add deny ip from any to 10.0.0.0/8 in via ${ifnet}
${fw} add deny ip from any to 172.16.0.0/12 in via ${ifnet}
${fw} add deny ip from any to 192.168.0.0/16 in via ${ifnet}
${fw} add deny ip from any to 0.0.0.0/8 in via ${ifnet}
# рубим автоконфигуреную частную сеть
${fw} add deny ip from any to 169.254.0.0/16 in via ${ifnet}
# рубаем мультикастовые рассылки
${fw} add deny ip from any to 240.0.0.0/4 in via ${ifnet}
# рубим фрагментированные icmp
${fw} add deny icmp from any to any frag
# рубим широковещательные icmp на внешнем интерфейсе
${fw} add deny log icmp from any to 255.255.255.255 in via ${ifnet}
${fw} add deny log icmp from any to 255.255.255.255 out via ${ifnet}

#всех на squid
${fw} add fwd 127.0.0.1,3128 tcp from 192.168.99.0/24 to any 80 via ${ifnet}

# NAT
${fw} add divert natd ip from ${innet}/${inmask} to any out via ${ifnet}
${fw} add divert natd ip from any to me in via ${ifnet}

#ftp снаружи
${fw} add allow tcp from any to ${ifnet} 21 via ${ifnet}
${fw} add allow tcp from any to ${ifnet} 49152-65535 via ${ifnet}


#ftp и rdp на windows server
${fw} add allow all from any to ${ifnet} 3399 in
${fw} add allow all from ${ifnet} 3399 to any out via ${ifnet}
${fw} add allow all from any to 192.168.99.9/32 3389 via ${ifnet}
${fw} add allow all from any to 192.168.99.9 dst-port 3389 in via re0 setup

${fw} add allow all from any to ${ifnet}  221 in
${fw} add allow all from ${ifnet} 221 to any out via ${ifnet}
${fw} add allow all from any to 192.168.99.9/32 21 via ${ifnet}
${fw} add allow all from any to 192.168.99.9 dst-port 21 in via re0 setup


# рубим траффик к частным сетям через внешний интерфейс
${fw} add deny ip from 10.0.0.0/8 to any out via ${ifnet}
${fw} add deny ip from 172.16.0.0/12 to any out via ${ifnet}
${fw} add deny ip from 192.168.0.0/16 to any out via ${ifnet}
${fw} add deny ip from 0.0.0.0/8 to any out via ${ifnet}
# рубим автоконфигуреную частную сеть
${fw} add deny ip from 169.254.0.0/16 to any out via ${ifnet}
# рубаем мультикастовые рассылки
${fw} add deny ip from 224.0.0.0/4 to any out via ${ifnet}
# рубаем мультикастовые рассылки
${fw} add deny ip from 240.0.0.0/4 to any out via ${ifnet}


# разрешаем все установленные соединения
${fw} add allow tcp from any to any established
# разрешаем весь исходящий траффик
${fw} add allow ip from me to any out xmit ${ifnet}

# разрешаем DNS снаружи
${fw} add allow udp from any 53 to any via ${ifnet}
# разрешаем UDP (для синхронизации времени - 123 порт)
${fw} add allow udp from any to any 123 via ${ifnet}
# разрешаем некоторые типы ICMP траффика
${fw} add allow icmp from any to any icmptypes 0,8,11


# разрешаем весь tcp траффик на внутреннем интерфейсе
${fw} add allow tcp from any to any via ${iflan}
# разрешаем весь udp траффик на внутреннем интерфейсе
${fw} add allow udp from any to any via ${iflan}
# разрешаем весь icmp траффик на внутреннем интерфейсе
${fw} add allow icmp from any to any via ${iflan}


# запрещаем всё и всем.
${fw} add deny ip from any to any

4

Re: ipfw не пускает на ftp сервер за файрволлом

ftp при работе в активном режиме использует 2 порта: 20 и 21. Я вижу что вы разрешили только 21. В пассивном использует еще больше smile
Но советую как минимум разрешить еще 20 порт и посмотреть, что у вас получится

5

Re: ipfw не пускает на ftp сервер за файрволлом

Здесь?

${fw} add allow all from any to 192.168.99.9/32 21 via ${ifnet}
${fw} add allow all from any to 192.168.99.9 dst-port 21 in via re0 setup

должно быть так?

${fw} add allow all from any to 192.168.99.9/32 20-21 via ${ifnet}
${fw} add allow all from any to 192.168.99.9 dst-port 20-21 in via re0 setup

6

Re: ipfw не пускает на ftp сервер за файрволлом

в свое время я писал правила

 ${fwcmd} add pass tcp from 192.168.0.0/16  to ${ip} 21 keep-state
 ${fwcmd} add pass tcp from ${ip} 20 to 192.168.0.0/16 keep-state

По идее по 20 порту ва сервер будет отдавать

7

Re: ipfw не пускает на ftp сервер за файрволлом

спасибо.
направили на верную мысль

${fw} add allow all from any to 192.168.99.9/32 20-21 via ${ifnet}
${fw} add allow all from any to 192.168.99.9/32 49152-65535 via ${ifnet}

вот так надо было. работает ура!

8

Re: ipfw не пускает на ftp сервер за файрволлом

второе правило это если  у вас фтп работает в пассивном режиме.

9

Re: ipfw не пускает на ftp сервер за файрволлом

ну на всякий случай пусть будет

10

Re: ipfw не пускает на ftp сервер за файрволлом

да пусть, я ж не против smile

11

Re: ipfw не пускает на ftp сервер за файрволлом

ещё вопрос задам может тоже поможете. (я первый раз freebsd ставлю, без косяков как то не обошлось)

есть у меня ещё и squid

только он игнорирует всё что написано в squid.conf

т.е. инет работает и никакие ограничения ни для кого не действуют.

вот конфиг:

http_port 3128


acl SSL_ports port 443
acl Safe_ports port 80        # http
acl Safe_ports port 21        # ftp
acl Safe_ports port 443        # https
acl Safe_ports port 70        # gopher
acl Safe_ports port 210        # wais
acl Safe_ports port 1025-65535    # unregistered ports
acl Safe_ports port 280        # http-mgmt
acl Safe_ports port 488        # gss-http
acl Safe_ports port 591        # filemaker
acl Safe_ports port 777        # multiling http
acl CONNECT method CONNECT

#список  групп кому можно ходить в инет

acl adm src 192.168.99.1/32 192.168.99.7/32 192.168.99.51/32 192.168.99.41/32 192.168.99.18/32 192.168.99.15/32 192.168.99.4/32 192.168.99.8/32 192.168.99.16/32 192.168.99.17/32 192.168.99.14/32
acl kovalev src 192.168.99.22/32
acl ruk src 192.168.99.27/32 192.168.99.40/32 192.168.99.124/32 192.168.99.28/32 192.168.99.11/32 192.168.99.31/32 192.168.99.77/32 192.168.99.29/32 192.168.99.25/32
acl srv src 192.168.99.6/32 192.168.99.9/32 192.168.99.5/32
acl server01 src 192.168.99.3/32
acl emp src 192.168.99.225/32 192.168.99.100/32 192.168.99.149/32 192.168.99.110/32 192.168.99.132/32 192.168.99.52/32 192.168.99.209/32 192.168.99.217/32 192.168.99.238/32 192.168.99.39/32 192.168.99.79/32 192.168.99.249/32 192.168.99.70/32 192.168.99.71/32 192.168.99.250/32 192.168.99.123/32 192.168.99.48/32  192.168.99.55/32 192.168.99.43/32 192.168.99.38/32 192.168.99.230/32  192.168.99.221/32 192.168.99.223/32 192.168.99.224/32 192.168.99.80/32 192.168.99.95/32 192.168.99.241/32 192.168.99.105/32
acl buh src 192.168.99.66/32 192.168.99.65/32 192.168.99.56/32 192.168.99.193/32 192.168.99.74/32 192.168.99.112/32 192.168.99.116/32 192.168.99.54/32 192.168.99.53/32 192.168.99.151/32 192.168.99.120/32 192.168.99.114/32 192.168.99.102/32 192.168.99.30/32 192.168.99.104/32 192.168.99.33/32 192.168.99.103/32  192.168.99.101/32 192.168.99.219/32 192.168.99.220/32 192.168.99.81/32  192.168.99.36/32 192.168.99.144/32 192.168.99.122/32 192.168.99.75/32 192.168.99.72/32 192.168.99.63/32 192.168.99.150/32 192.168.99.61/32  192.168.99.91/32 192.168.99.44/32 192.168.99.47/32 192.168.99.94/32
acl yur src 192.168.99.115/32 192.168.99.113/32 192.168.99.119/32 192.168.99.90/32 192.168.99.202/32
acl snb src 192.168.99.73/32 192.168.99.57/32 192.168.99.152/32 192.168.99.21/32 192.168.99.45/32 192.168.99.42/32 192.168.99.49/32 192.168.99.62/32 192.168.99.99/32 192.168.99.172/32 192.168.99.125/32 192.168.99.127/32 192.168.99.143/32 192.168.99.231/32 192.168.99.232/32
acl fin src 192.168.99.30/32 192.168.99.146/32 192.168.99.107/32 192.168.99.67/32 192.168.99.106/32 192.168.99.118/32
acl pdo src 192.168.99.139/32 192.168.99.141/32 192.168.99.26/32
acl ras src 192.168.99.35/32 192.168.99.32/32 192.168.99.34/32 192.168.99.37/32
acl bmk src 192.168.99.0/24
acl mul urlpath_regex -i\.mp3$ \.mpeg$ \.avi$ \.mov$
acl snmppublic snmp_community public

http_access allow localhost

#запрещаем некоторые сайты для всех

acl erosets url_regex -i erosets.net
http_access deny erosets
acl spy url_regex -i sp-protect2009.com
http_access deny spy
acl incash url_regex -i incash.ru
http_access deny incash
acl comuna url_regex -i comuna.ru
http_access deny comuna
acl ruobnal url_regex -i ruobnal.ru
http_access deny ruobnal
acl cph1 url_regex -i cph1
http_access deny cph1

http_access allow adm
http_access allow kovalev
http_reply_access allow adm

#запрещаем потоковое видео

acl cont-type-vid rep_mime_type Content-Type video
http_reply_access deny cont-type-vid

http_reply_access allow adm

#запрещаем некоторые сайты для некоторых групп

acl odnokl url_regex -i odnoklas
http_access deny odnokl
acl vk url_regex -i vk.com
http_access deny vk
acl vkontakte url_regex -i vkontakte
http_access deny vkontakte
acl youtube url_regex -i youtube
http_access deny youtube
acl facebook url_regex -i facebook
http_access deny facebook
acl twitter url_regex -i twitter
http_access deny twitter
acl livejornal url_regex -i livejornal
http_access deny livejornal
acl udaff url_regex -i udaff
http_access deny udaff

http_access allow ruk
http_access allow srv
http_access allow emp
http_access allow buh
http_access allow fin
http_access allow yur
http_access allow ras
http_access allow snb
http_access allow pdo

acl rbc_ru url_regex -i rbc
http_access allow rbc_ru server01
acl microsoft url_regex -i microsoft
http_access allow microsoft server01

http_reply_access allow all
icp_access allow all
miss_access allow all

http_access allow localhost manager
http_access deny manager
# Deny requests to certain unsafe ports
http_access deny !Safe_ports
# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

http_access deny all

# Uncomment and adjust the following to add a disk cache directory.
cache_dir ufs /var/squid/cache/squid 100 16 256

# Leave coredumps in the first cache dir
coredump_dir /var/squid/cache/squid

# Add any of your own refresh_pattern entries above these.
refresh_pattern ^ftp:        1440    20%    10080
refresh_pattern ^gopher:    1440    0%    1440
refresh_pattern -i (/cgi-bin/|\?) 0    0%    0
refresh_pattern .        0    20%    4320

snmp_port 3401
# snmp_access allow My_SNMP
snmp_access allow snmppublic
snmp_access deny all

#рубим скорость

delay_pools 3
delay_class 1 2
delay_class 2 2
delay_class 3 2
delay_access 1 allow adm
delay_access 1 allow ruk
delay_access 1 allow yur
delay_access 1 deny all
delay_access 2 allow emp
delay_access 2 deny all
delay_access 3 allow srv
delay_access 3 allow kovalev
delay_access 3 allow fin
delay_access 3 allow buh
delay_access 3 allow pdo
delay_access 3 allow snb
delay_access 3 allow ras
delay_access 3 deny all
delay_parameters 1 -1/-1 -1/-1
delay_parameters 2 50000/50000 -1/-1
delay_parameters 3 50000/50000 -1/-1

coredump_dir /usr/local/squid/cache

12

Re: ipfw не пускает на ftp сервер за файрволлом

что именно не работает?

13

Re: ipfw не пускает на ftp сервер за файрволлом

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

14

Re: ipfw не пускает на ftp сервер за файрволлом

а точно через прокси в инет выходят? В логах видно, что они идут?

15

Re: ipfw не пускает на ftp сервер за файрволлом

блин, лог у прокси вообще пустой

16

Re: ipfw не пускает на ftp сервер за файрволлом

настройте чтобы писались логи и потом смотреть что и как, а то может у вас вообще через нат все идут.

Добавлено: 21-06-2013 16:20:00

посмотрите вообще правило fwd срабатывает или нет

17

Re: ipfw не пускает на ftp сервер за файрволлом

посмотрел уже fwd не срабатывает почему то, все тупо через нат идут, ладно займемся в пн.

Добавлено: 24-06-2013 09:13:54

и всё таки оно не работает...
его даже в списке ipfw show нет...

18

Re: ipfw не пускает на ftp сервер за файрволлом

такое быть не может. Если есть правило то покажет

19

Re: ipfw не пускает на ftp сервер за файрволлом

crash пишет:

такое быть не может. Если есть правило то покажет

Ну дак оно есть.
А если оно не запустилось?

20

Re: ipfw не пускает на ftp сервер за файрволлом

если правило есть, оно должно показываться в ipfw show

21

Re: ipfw не пускает на ftp сервер за файрволлом

crash пишет:

если правило есть, оно должно показываться в ipfw show

А если оно с ошибкой, например, написано? оно же в таблицу правил не загрузиться, значит и не отобразиться или я не прав?
Либо опция  IPFIREWALL_FORWARD не была включена в ядре  sad . Кстати,  как то можно это проверить?

22

Re: ipfw не пускает на ftp сервер за файрволлом

насколько я помню оно тогда должно ругаться при запуске. У  вас ошибки есть при запуске? В логах что пишет?

23

Re: ipfw не пускает на ftp сервер за файрволлом

Должно.
Сейчас вроде не ругается, хотя надо перепроверить...

Добавлено: 24-06-2013 11:55:24

# grep ipfw /var/run/dmesg.boot
ipfw2 (+ipv6) initialized, divert loadable, nat loadable, rule-based forwarding disabled, default to deny, logging disabled

я так понимаю собака зарыта здесь rule-based forwarding disabled

включить не пересобирая ядра можно как то?

24

Re: ipfw не пускает на ftp сервер за файрволлом

похоже придется пересобирать ядро

25

Re: ipfw не пускает на ftp сервер за файрволлом

edg пишет:

ipfw2 (+ipv6) initialized, divert loadable, nat loadable, rule-based forwarding disabled, default to deny, logging disabled

я так понимаю собака зарыта здесь rule-based forwarding disabled

включить не пересобирая ядра можно как то?

Вы-бы написали какая у вас версия FreeBSD.
Для 7.х и 8.х ядро обязательно пересобирать с  IPFIREWALL_FORWARD, так как работает только в ядре.
Для 9.х , достаточно загрузить модулем