LINUX.ORG.RU
ФорумAdmin

FreeBSD, ipfw, ftp, банк-клиент


0

2

В конторе два шлюза, один на оффтоп ISA, второй FreeBSD 7.2. От первого нужно избавиться. Чтобы от него избавиться нужно, чтобы на втором работало всё, а там косяк с несчастным банк-клиентом, работающим по ftp. В настройках соединения банк-клиента стоит пассивный режим. На другие ftp через BSD хожу без проблем.

ifconfig:
rl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:11:6b:32:87:af
        inet 192.168.0.100 netmask 0xffffff00 broadcast 192.168.0.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=8<VLAN_MTU>
        ether 00:04:ac:25:fb:ed
        inet 192.168.100.111 netmask 0xffffff00 broadcast 192.168.100.255
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
plip0: flags=108810<POINTOPOINT,SIMPLEX,MULTICAST,NEEDSGIANT> metric 0 mtu 1500
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
        inet6 ::1 prefixlen 128
        inet 127.0.0.1 netmask 0xff000000
Правила ipfw:
00100 check-state
00200 allow ip from any to any via lo0
00300 deny ip from any to 127.0.0.0/8
00400 deny ip from 127.0.0.0/8 to any
00500 deny ip from any to 10.0.0.0/8 in via rl0
00600 deny ip from any to 172.16.0.0/12 in via rl0
00700 deny ip from any to 0.0.0.0/8 in via rl0
00800 deny ip from any to 169.254.0.0/16 in via rl0
00900 deny ip from any to 240.0.0.0/4 in via rl0
01000 deny icmp from any to any frag
01100 deny log icmp from any to 255.255.255.255 in via rl0
01200 deny log icmp from any to 255.255.255.255 out via rl0
01300 divert 8668 ip from 192.168.100.0/24 to any out via rl0
01400 divert 8668 ip from any to 192.168.0.100 in via rl0
01500 deny ip from 10.0.0.0/8 to any out via rl0
01600 deny ip from 172.16.0.0/12 to any out via rl0
01700 deny ip from 0.0.0.0/8 to any out via rl0
01800 deny ip from 169.254.0.0/16 to any out via rl0
01900 deny ip from 224.0.0.0/4 to any out via rl0
02000 deny ip from 240.0.0.0/4 to any out via rl0
02100 allow tcp from any to any established
02200 allow ip from 192.168.0.100 to any out xmit rl0
02300 allow udp from any 53 to any via rl0
02400 allow udp from any to any dst-port 53 via rl0
02500 allow udp from any to any dst-port 123 via rl0
02600 allow tcp from any to 192.168.0.100 dst-port 21 via rl0
02700 allow tcp from any to 192.168.0.100 dst-port 49152-65535 via rl0
02800 allow icmp from any to any icmptypes 0,8,11
02900 allow tcp from any to 192.168.0.100 dst-port 22 via rl0
03000 allow gre from any to any via rl0
03100 allow gre from any to any via fxp0
03200 allow tcp from any to any via fxp0
03300 allow udp from any to any via fxp0
03400 allow icmp from any to any via fxp0
03500 deny ip from any to any
65535 allow ip from any to any
Ip банка 91.197.214.149

tcpdump при попытке подключения:

17:07:44.352754 IP 192.168.0.100.3466 > 91.197.214.149.21: S 245692730:245692730(0) win 65535 <mss 1460,nop,nop,sackOK>
17:07:44.354064 IP 91.197.214.149.21 > 192.168.0.100.3466: S 3898631004:3898631004(0) ack 245692731 win 65535 <mss 1460,sackOK,eol>
17:07:44.354834 IP 192.168.0.100.3466 > 91.197.214.149.21: . ack 1 win 65535
17:07:44.368960 IP 91.197.214.149.21 > 192.168.0.100.3466: P 1:11(10) ack 1 win 65535
17:07:44.370729 IP 192.168.0.100.3466 > 91.197.214.149.21: P 1:15(14) ack 11 win 65525
17:07:44.383375 IP 91.197.214.149.21 > 192.168.0.100.3466: P 11:47(36) ack 15 win 65535
17:07:44.385724 IP 192.168.0.100.3466 > 91.197.214.149.21: P 15:30(15) ack 47 win 65489
17:07:44.396749 IP 91.197.214.149.21 > 192.168.0.100.3466: P 47:76(29) ack 30 win 65535
17:07:44.398747 IP 192.168.0.100.3466 > 91.197.214.149.21: P 30:37(7) ack 76 win 65460
17:07:44.402618 IP 91.197.214.149.21 > 192.168.0.100.3466: P 76:104(28) ack 37 win 65535
17:07:44.404724 IP 192.168.0.100.3466 > 91.197.214.149.21: P 37:48(11) ack 104 win 65432
17:07:44.410967 IP 91.197.214.149.21 > 192.168.0.100.3466: P 104:132(28) ack 48 win 65535
17:07:44.412738 IP 192.168.0.100.3466 > 91.197.214.149.21: P 48:57(9) ack 132 win 65404
17:07:44.416843 IP 91.197.214.149.21 > 192.168.0.100.3466: P 132:160(28) ack 57 win 65535
17:07:44.418722 IP 192.168.0.100.3466 > 91.197.214.149.21: P 57:63(6) ack 160 win 65376
17:07:44.421784 IP 91.197.214.149.21 > 192.168.0.100.3466: P 160:209(49) ack 63 win 65535
17:07:44.424921 IP 192.168.0.100.3467 > 91.197.214.149.52195: S 9126995:9126995(0) win 65535 <mss 1460,nop,nop,sackOK>
17:07:44.604891 IP 192.168.0.100.3466 > 91.197.214.149.21: . ack 209 win 65327
17:07:47.421310 IP 192.168.0.100.3467 > 91.197.214.149.52195: S 9126995:9126995(0) win 65535 <mss 1460,nop,nop,sackOK>
17:07:53.455221 IP 192.168.0.100.3467 > 91.197.214.149.52195: S 9126995:9126995(0) win 65535 <mss 1460,nop,nop,sackOK>
Через ISA банк-клиент работает, поэтому не могу ничего предъявить банку или запудрить мозги начальству :((

На шлюзе с ISA внешний IP, а bsdшный сам за двумя шлюзами, может здесь собака порылась?

★★★★

> Через ISA банк-клиент работает, поэтому не могу ничего предъявить банку или запудрить мозги начальству :((

На шлюзе с ISA внешний IP, а bsdшный сам за двумя шлюзами, может здесь собака порылась?


В Linux есть модули специализированные: ip_nat_ftp и ip_conntrack_ftp. Нет ли в BSD какого-то подобного механизма ? Ну и, действительно, в чём сложность проверить с реальным IP на шлюзе ? С бухгалтером надо только договориться на проверку во внерабочее время. Или с руководителем на проверку в рабочее...

AS ★★★★★
()

Банк-клиент запускается на компьютере, _шлюзом_ которого является маршрутизатор на FreeBSD? Инересен вывод wireshark на _клиентском_ компьютере?

anton_jugatsu ★★★★
()
Ответ на: комментарий от anton_jugatsu

cat /etc/libalias.conf

# $FreeBSD: src/etc/libalias.conf,v 1.2.8.1 2009/04/15 03:14:26 kensmith Exp $
/lib/libalias_cuseeme.so
/lib/libalias_ftp.so
/lib/libalias_irc.so
/lib/libalias_nbt.so
/lib/libalias_pptp.so
/lib/libalias_skinny.so
/lib/libalias_smedia.so

В Linux есть модули специализированные: ip_nat_ftp и ip_conntrack_ftp. Нет ли в BSD какого-то подобного механизма ?

Судя по всему нет http://www.opennet.ru/openforum/vsluhforumID1/83350.html

Ну и, действительно, в чём сложность проверить с реальным IP на шлюзе ?

ISA сервер подключен к Yota, под фрю нету дров на нее.

afanasiy ★★★★
() автор топика
Ответ на: комментарий от n1

02700 allow tcp from 192.168.0.100 to any dst-port 22 via rl0
и 22 порт в том же направлении

n1
()
Ответ на: комментарий от n1
02700 allow tcp from any to 192.168.0.100 dst-port 49152-65535 via rl0

Убрал. Я кстати делал и allow from any to any. Все равно не работает, думаю, дело не в файерволе все же...

afanasiy ★★★★
() автор топика
Ответ на: комментарий от afanasiy

по идее libalias должен обрабатывать такие штуки
есть вариант гнать ftp через ftp proxy

банк клиент по ftp - бугага :(

hizel ★★★★★
()
Ответ на: комментарий от n1

>какой из интерфейсов wan а какой lan ? rl0 - wan ? fxp0 - lan ?

Да.

afanasiy ★★★★
() автор топика
Ответ на: комментарий от hizel

>есть вариант гнать ftp через ftp proxy

Поподробнее можно?

банк клиент по ftp - бугага :(

Он какой-то хитрый. Если просто заходить на этот ftp, к примеру тоталкомандером, с выданным логином и пассом, то он соединяется, но там пусто и залить ничего не дает, ругается, что denied.

anton_jugatsu прав, надо wiresharkoм посмотреть, как доберусь до бух компа.

afanasiy ★★★★
() автор топика
Ответ на: комментарий от afanasiy

Здесь основная засада как раз в пассивном режиме ftp. То есть при переходе в пассивный режим (state RELATED), соответственно меняются source port и destination port. В линуксе помогли бы хелперы nf_conntrack_ftp и nf_nat_ftp.

Какая policy у транзитного трафика?

Например, в pf управляющие FTP-соединения пропускаются через специальную программу ftp-proxy, которая анализирует трафик подобно conntrack и «на лету» добавляет правила для соединений данных.

anton_jugatsu ★★★★
()
Ответ на: Решение для PF от iZEN

Спасибо. Меня смущает только то, что на другие ftp сервера в пассивном режиме через этот же bsd-шлюз я хожу без проблем. Проверял на пяти, два из которых я сам поднимал на CentOS vsftpd.

afanasiy ★★★★
() автор топика
Ответ на: комментарий от hizel

по логике вещей у них возможно используется
Securing FTP with TLS - rfc4217

hizel ★★★★★
()
Ответ на: комментарий от hizel

Посмотрел ваершарком на клиентском компе:

120    5.437092    192.168.100.6    91.197.214.149    TCP    pwgpsi > ftp [SYN] Seq=0 Win=65535 Len=0 MSS=1460 
SACK_PERM=1
121    5.438931    91.197.214.149    192.168.100.6    TCP    ftp > pwgpsi [SYN, ACK] Seq=0 Ack=1 Win=65535 Len=0 
MSS=1460 SACK_PERM=1
122    5.438941    192.168.100.6    91.197.214.149    TCP    pwgpsi > ftp [ACK] Seq=1 Ack=1 Win=65535 Len=0
123    5.454180    91.197.214.149    192.168.100.6    FTP    Response: 220 FTP.
124    5.454233    192.168.100.6    91.197.214.149    FTP    Request: USER (здесь юзер)
125    5.470203    91.197.214.149    192.168.100.6    FTP    Response: 331 Password required for (здесь юзер).
126    5.484308    192.168.100.6    91.197.214.149    FTP    Request: PASS (здесь пасс)
127    5.498185    91.197.214.149    192.168.100.6    FTP    Response: 230 User (здесь юзер) logged in.
128    5.498703    192.168.100.6    91.197.214.149    FTP    Request: CWD /
129    5.506189    91.197.214.149    192.168.100.6    FTP    Response: 250 CWD command successful
130    5.506376    192.168.100.6    91.197.214.149    FTP    Request: CWD obmen
131    5.514355    91.197.214.149    192.168.100.6    FTP    Response: 250 CWD command successful
132    5.514450    192.168.100.6    91.197.214.149    FTP    Request: CWD out
133    5.521190    91.197.214.149    192.168.100.6    FTP    Response: 250 CWD command successful
134    5.521797    192.168.100.6    91.197.214.149    FTP    Request: PASV
135    5.527189    91.197.214.149    192.168.100.6    FTP    Response: 227 Entering Passive Mode 
(85,114,0,31,197,165)
136    5.530455    192.168.100.6    91.197.214.149    TCP    ibm-mgr > 50597 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 
SACK_PERM=1
139    5.633235    192.168.100.6    91.197.214.149    TCP    pwgpsi > ftp [ACK] Seq=63 Ack=209 Win=65327 Len=0
154    8.449367    192.168.100.6    91.197.214.149    TCP    ibm-mgr > 50597 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 
SACK_PERM=1
163    14.383697    192.168.100.6    91.197.214.149    TCP    ibm-mgr > 50597 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 
SACK_PERM=1
193    26.454852    192.168.100.6    91.197.214.149    FTP    Request: TYPE L 8
194    26.460510    91.197.214.149    192.168.100.6    FTP    Response: 200 Type set to L
195    26.461306    192.168.100.6    91.197.214.149    FTP    Request: PASV
196    26.469408    91.197.214.149    192.168.100.6    FTP    Response: 227 Entering Passive Mode 
(85,114,0,31,209,149)
197    26.472643    192.168.100.6    91.197.214.149    TCP    vhd > 53653 [SYN] Seq=0 Win=65535 Len=0 MSS=1460 
SACK_PERM=1
198    26.654435    192.168.100.6    91.197.214.149    TCP    pwgpsi > ftp [ACK] Seq=79 Ack=277 Win=65259 Len=0
Банк-клиент при этом пишет, что соединение с сервером установлено, но ничего не пересылает. Есть еще идеи?

afanasiy ★★★★
() автор топика
Ответ на: комментарий от afanasiy

>FTP Response: 227 Entering Passive Mode (85,114,0,31,209,149)

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

197 26.472643 192.168.100.6 91.197.214.149 TCP vhd > 53653 [SYN] Seq=0 Win=65535 Len=0 MSS=1460

SACK_PERM=1

попробуйте активный режим :(

и кстати если смотреть после nat-а tcpdump-ом
есть обращения к 91.197.214.149 на нужный порт?

hizel ★★★★★
()
Ответ на: комментарий от hizel

такие вещи как раз и обрабатывает libalias_ftp

Что мне надо сделать, чтобы задействовать сей волшебный инструмент?

сделал kldload libalias и /etc/rc.d/ipfw restart

Для активного режима нужно еще правила в /etc/rc.firewall придумать?

есть обращения к 91.197.214.149 на нужный порт?

Не совсем понимаю какой нужный, 53653?

Сделал: tcpdump -i rl0 > tcpdump.log

cat tcpdump.log | grep b-ftp://ftp.petrbank.ru

Вот:

16:39:40.089789 IP 192-168-0-100.local.4088 > b-ftp.petrbank.ru.ftp: S 208415707:208415707(0) win 65535 <mss 1460,nop,nop,sackOK>
16:39:40.091797 IP b-ftp.petrbank.ru.ftp > 192-168-0-100.local.4088: S 1031956279:1031956279(0) ack 208415708 win 65535 <mss 1460,sackOK,eol>
16:39:40.092466 IP 192-168-0-100.local.4088 > b-ftp.petrbank.ru.ftp: . ack 1 win 65535
16:39:40.107613 IP b-ftp.petrbank.ru.ftp > 192-168-0-100.local.4088: P 1:11(10) ack 1 win 65535
16:39:40.108883 IP 192-168-0-100.local.4088 > b-ftp.petrbank.ru.ftp: P 1:15(14) ack 11 win 65525
16:39:40.121542 IP b-ftp.petrbank.ru.ftp > 192-168-0-100.local.4088: P 11:47(36) ack 15 win 65535
16:39:40.122873 IP 192-168-0-100.local.4088 > b-ftp.petrbank.ru.ftp: P 15:30(15) ack 47 win 65489
16:39:40.134829 IP b-ftp.petrbank.ru.ftp > 192-168-0-100.local.4088: P 47:76(29) ack 30 win 65535
16:39:40.135870 IP 192-168-0-100.local.4088 > b-ftp.petrbank.ru.ftp: P 30:37(7) ack 76 win 65460
16:39:40.140249 IP b-ftp.petrbank.ru.ftp > 192-168-0-100.local.4088: P 76:104(28) ack 37 win 65535
16:39:40.141875 IP 192-168-0-100.local.4088 > b-ftp.petrbank.ru.ftp: P 37:48(11) ack 104 win 65432
16:39:40.147044 IP b-ftp.petrbank.ru.ftp > 192-168-0-100.local.4088: P 104:132(28) ack 48 win 65535
16:39:40.147870 IP 192-168-0-100.local.4088 > b-ftp.petrbank.ru.ftp: P 48:57(9) ack 132 win 65404
16:39:40.152278 IP b-ftp.petrbank.ru.ftp > 192-168-0-100.local.4088: P 132:160(28) ack 57 win 65535
16:39:40.153875 IP 192-168-0-100.local.4088 > b-ftp.petrbank.ru.ftp: P 57:63(6) ack 160 win 65376
16:39:40.158272 IP b-ftp.petrbank.ru.ftp > 192-168-0-100.local.4088: P 160:209(49) ack 63 win 65535
16:39:40.162043 IP 192-168-0-100.local.4089 > b-ftp.petrbank.ru.49556: S 1248574430:1248574430(0) win 65535 <mss 1460,nop,nop,sackOK>
16:39:40.266940 IP 192-168-0-100.local.4088 > b-ftp.petrbank.ru.ftp: . ack 209 win 65327
16:39:43.083367 IP 192-168-0-100.local.4089 > b-ftp.petrbank.ru.49556: S 1248574430:1248574430(0) win 65535 <mss 1460,nop,nop,sackOK>
16:39:49.118286 IP 192-168-0-100.local.4089 > b-ftp.petrbank.ru.49556: S 1248574430:1248574430(0) win 65535 <mss 1460,nop,nop,sackOK>
16:40:01.091942 IP 192-168-0-100.local.4088 > b-ftp.petrbank.ru.ftp: P 63:73(10) ack 209 win 65327
16:40:01.096595 IP b-ftp.petrbank.ru.ftp > 192-168-0-100.local.4088: P 209:228(19) ack 73 win 65535
16:40:01.098650 IP 192-168-0-100.local.4088 > b-ftp.petrbank.ru.ftp: P 73:79(6) ack 228 win 65308
16:40:01.104662 IP b-ftp.petrbank.ru.ftp > 192-168-0-100.local.4088: P 228:276(48) ack 79 win 65535
16:40:01.108927 IP 192-168-0-100.local.4090 > b-ftp.petrbank.ru.57891: S 4138772446:4138772446(0) win 65535 <mss 1460,nop,nop,sackOK>
16:40:01.287758 IP 192-168-0-100.local.4088 > b-ftp.petrbank.ru.ftp: . ack 276 win 65260
16:40:04.104922 IP 192-168-0-100.local.4090 > b-ftp.petrbank.ru.57891: S 4138772446:4138772446(0) win 65535 <mss 1460,nop,nop,sackOK>
16:40:10.139064 IP 192-168-0-100.local.4090 > b-ftp.petrbank.ru.57891: S 4138772446:4138772446(0) win 65535 <mss 1460,nop,nop,sackOK>

afanasiy ★★★★
() автор топика
Ответ на: комментарий от afanasiy
16:40:01.108927 IP 192-168-0-100.local.4090 > b-ftp.petrbank.ru.57891: S 4138772446:4138772446(0) win 65535 <mss 1460,nop,nop,sackOK>
16:40:01.287758 IP 192-168-0-100.local.4088 > b-ftp.petrbank.ru.ftp: . ack 276 win 65260
16:40:04.104922 IP 192-168-0-100.local.4090 > b-ftp.petrbank.ru.57891: S 4138772446:4138772446(0) win 65535 <mss 1460,nop,nop,sackOK>
16:40:10.139064 IP 192-168-0-100.local.4090 > b-ftp.petrbank.ru.57891: S 4138772446:4138772446(0) win 65535 <mss 1460,nop,nop,sackOK>

Явно видно, что не обрабатывается пассивный режим роутером. Копать в сторону freebsd ipfw и passive ftp.

anton_jugatsu ★★★★
()
Ответ на: комментарий от afanasiy

после PASV, сервер даёт порт и ваш клиент на него ломится

16:39:40.162043 IP 192-168-0-100.local.4089 > b-ftp.petrbank.ru.49556: S 1248574430:1248574430(0) win 65535 <mss 1460,nop,nop,sackOK>

не получается пробует еше раз PASV и ломится на новый порт

16:40:01.108927 IP 192-168-0-100.local.4090 > b-ftp.petrbank.ru.57891: S 4138772446:4138772446(0) win 65535 <mss 1460,nop,nop,sackOK>

такое ощущение что режет то что перед сервером, ISA?


сделал kldload libalias и /etc/rc.d/ipfw restart


нет, это для kernel nat и kernel libalias
у вас необходимые модули юзерспейсовые подключены в /etc/libalias.conf
и механизм корректировки nat-а для ftp должен работать

hizel ★★★★★
()
Ответ на: комментарий от anton_jugatsu

>Явно видно, что не обрабатывается пассивный режим роутером. Копать в сторону freebsd ipfw и passive ftp.

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

такое ощущение что режет то что перед сервером, ISA?

Перед сервером обычный D-Linkовский роутер DIR-100 или что-то в этом роде, там никаких правил нет, всё по умолчанию (даже логин и пароль :)) Еще выше роутер провайдера, что стоит там, не имею понятия.

хороший тон:

Спасибо за совет!

afanasiy ★★★★
() автор топика
Ответ на: комментарий от afanasiy

тогда непонятно какого негатива не приходит ответ на
16:39:40.162043 IP 192-168-0-100.local.4089 > b-ftp.petrbank.ru.49556: S 1248574430:1248574430(0) win 65535 <mss 1460,nop,nop,sackOK>

hizel ★★★★★
()
Ответ на: комментарий от afanasiy

После того, как клиент посылает реквест на перевод сервера в пассивный режим и сервер отвечает на этот запрос, должно опять установиться 3-way handshake, а как мы видим,

16:40:04.104922 IP 192-168-0-100.local.4090 > b-ftp.petrbank.ru.57891: S 4138772446:4138772446(0) win 65535 <mss 1460,nop,nop,sackOK>
16:40:10.139064 IP 192-168-0-100.local.4090 > b-ftp.petrbank.ru.57891: S 4138772446:4138772446(0) win 65535 <mss 1460,nop,nop,sackOK>

сервер не отвечает SYN/ACK

anton_jugatsu ★★★★
()
Ответ на: комментарий от anton_jugatsu

> После того, как клиент посылает реквест на перевод сервера в пассивный режим и сервер отвечает на этот запрос, должно опять установиться 3-way handshake, а как мы видим, сервер не отвечает SYN/ACK

Так что же с этим делать? :(

afanasiy ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.