URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 58600
[ Назад ]

Исходное сообщение
"проблема с установлением FTP соединения через firewall"

Отправлено lastdruid , 26-Июл-05 16:57 
Люди, помогите плиз!
Есть такая трабла (сабж)
Из локальной сетики не могу установить ФТП соединение.
С фаера устанавливается нормально.

Лог ФТП клиента:
STATUS:>      Getting listing ""...
STATUS:>      Resolving host name hosting.sarkor.com...
STATUS:>      Host name hosting.sarkor.com resolved: ip = 81.95.224.150.
STATUS:>      Connecting to ftp server hosting.sarkor.com:21 (ip = 81.95.224.150)...
STATUS:>      Socket connected. Waiting for welcome message...
        220 ProFTPD 1.2.10 Server (ProFTPD) [81.95.224.150]
STATUS:>      Connected. Authenticating...
COMMAND:>    USER vasyapupkin
        331 Password required for vasyapupkin.
COMMAND:>    PASS *****
        230 User vasyapupkin logged in.
STATUS:>      Login successful.
COMMAND:>    PWD
        257 "/" is current directory.
STATUS:>      Home directory: /
COMMAND:>    FEAT
        211-Features:
         MDTM
         REST STREAM
         SIZE
        211 End
STATUS:>      This site supports features.
STATUS:>      This site supports SIZE.
STATUS:>      This site can resume broken downloads.
COMMAND:>    REST 0
        350 Restarting at 0. Send STORE or RETRIEVE to initiate transfer
COMMAND:>    PASV
        227 Entering Passive Mode (81,95,224,150,189,50).
COMMAND:>    LIST
STATUS:>      Connecting ftp data socket 81.95.224.150:48434...
ERROR:>       Can't connect to remote server. Socket error = #10065.

И так каждый раз, только порт меняется 81.95.224.150:48434 <===
Iptables у меня такие:
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
-A POSTROUTING -o eth1 -p tcp -j SNAT  --to-source 80.80.212.30:1024-65535
-A POSTROUTING -o eth1 -p udp -j SNAT  --to-source 80.80.212.30:1024-65535
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -i eth0 -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state -i eth0 --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp -d 0.0.0.0/0 --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m udp -p udp -d 0.0.0.0/0 --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp -d 0.0.0.0/0 --dport 953 -j ACCEPT
-A RH-Firewall-1-INPUT -m udp -p udp -d 0.0.0.0/0 --dport 953 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 20 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --sport 20 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp --sport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp -d 0.0.0.0/0 --dport 8443 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp -s 10.10.0.0/24 --dport 8080 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp -s 10.10.0.0/24 -d 0.0.0.0/0 --dport 3128 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp -s 10.10.0.0/24 -d 0.0.0.0/0 --dport 110 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp -s 10.10.0.0/24 -d 0.0.0.0/0 --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp -s 10.10.0.0/24 -d 0.0.0.0/0 --dport 1001 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp -s 10.10.0.0/24 -d 0.0.0.0/0 --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp -s 10.10.0.0/24 -d 0.0.0.0/0 --dport 5190 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

Подскажите где грабли плиз?! Как мне сделать так что не открывая все порты пропускать ФПТ?!


Содержание

Сообщения в этом обсуждении
"проблема с установлением FTP соединения через firewall"
Отправлено Pavel , 26-Июл-05 18:08 
>Люди, помогите плиз!
>Есть такая трабла (сабж)
>Из локальной сетики не могу установить ФТП соединение.
>С фаера устанавливается нормально.
>
>Лог ФТП клиента:
>STATUS:>      Getting listing ""...
>STATUS:>      Resolving host name hosting.sarkor.com...
>STATUS:>      Host name hosting.sarkor.com resolved: ip = 81.95.224.150.
>STATUS:>      Connecting to ftp server hosting.sarkor.com:21 (ip = 81.95.224.150)...
>STATUS:>      Socket connected. Waiting for welcome message...
>  220 ProFTPD 1.2.10 Server (ProFTPD) [81.95.224.150]
>STATUS:>      Connected. Authenticating...
>COMMAND:>    USER vasyapupkin
>  331 Password required for vasyapupkin.
>COMMAND:>    PASS *****
>  230 User vasyapupkin logged in.
>STATUS:>      Login successful.
>COMMAND:>    PWD
>  257 "/" is current directory.
>STATUS:>      Home directory: /
>COMMAND:>    FEAT
>  211-Features:
>   MDTM
>   REST STREAM
>   SIZE
>  211 End
>STATUS:>      This site supports features.
>STATUS:>      This site supports SIZE.
>STATUS:>      This site can resume broken downloads.
>COMMAND:>    REST 0
>  350 Restarting at 0. Send STORE or RETRIEVE to initiate
>transfer
>COMMAND:>    PASV
>  227 Entering Passive Mode (81,95,224,150,189,50).
>COMMAND:>    LIST
>STATUS:>      Connecting ftp data socket 81.95.224.150:48434...
>ERROR:>       Can't connect to remote server. Socket error = #10065.
>
>И так каждый раз, только порт меняется 81.95.224.150:48434 <===
>Iptables у меня такие:
>*nat
>:PREROUTING ACCEPT [0:0]
>:POSTROUTING ACCEPT [0:0]
>:OUTPUT ACCEPT [0:0]
>-A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
>
>-A POSTROUTING -o eth1 -p tcp -j SNAT  --to-source 80.80.212.30:1024-65535
>-A POSTROUTING -o eth1 -p udp -j SNAT  --to-source 80.80.212.30:1024-65535
>COMMIT
>*filter
>:INPUT DROP [0:0]
>:FORWARD DROP [0:0]
>:OUTPUT ACCEPT [0:0]
>:RH-Firewall-1-INPUT - [0:0]
>-A INPUT -j RH-Firewall-1-INPUT
>-A FORWARD -j RH-Firewall-1-INPUT
>-A RH-Firewall-1-INPUT -i lo -j ACCEPT
>-A RH-Firewall-1-INPUT -i eth0 -p icmp --icmp-type any -j ACCEPT
>-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
>-A RH-Firewall-1-INPUT -m state -i eth0 --state NEW -m tcp -p tcp
>--dport 22 -j ACCEPT
>-A RH-Firewall-1-INPUT -m tcp -p tcp -d 0.0.0.0/0 --dport 53 -j ACCEPT
>
>-A RH-Firewall-1-INPUT -m udp -p udp -d 0.0.0.0/0 --dport 53 -j ACCEPT
>
>-A RH-Firewall-1-INPUT -m tcp -p tcp -d 0.0.0.0/0 --dport 953 -j ACCEPT
>
>-A RH-Firewall-1-INPUT -m udp -p udp -d 0.0.0.0/0 --dport 953 -j ACCEPT
>
>-A RH-Firewall-1-INPUT -p tcp --dport 20 -j ACCEPT
>-A RH-Firewall-1-INPUT -p tcp --sport 20 -j ACCEPT
>-A RH-Firewall-1-INPUT -p tcp --dport 21 -j ACCEPT
>-A RH-Firewall-1-INPUT -p tcp --sport 21 -j ACCEPT
>-A RH-Firewall-1-INPUT -m tcp -p tcp -d 0.0.0.0/0 --dport 8443 -j ACCEPT
>
>-A RH-Firewall-1-INPUT -m tcp -p tcp -s 10.10.0.0/24 --dport 8080 -j ACCEPT
>
>-A RH-Firewall-1-INPUT -m tcp -p tcp -s 10.10.0.0/24 -d 0.0.0.0/0 --dport 3128
>-j ACCEPT
>-A RH-Firewall-1-INPUT -m tcp -p tcp -s 10.10.0.0/24 -d 0.0.0.0/0 --dport 110
>-j ACCEPT
>-A RH-Firewall-1-INPUT -m tcp -p tcp -s 10.10.0.0/24 -d 0.0.0.0/0 --dport 25
>-j ACCEPT
>-A RH-Firewall-1-INPUT -m tcp -p tcp -s 10.10.0.0/24 -d 0.0.0.0/0 --dport 1001
>-j ACCEPT
>-A RH-Firewall-1-INPUT -m tcp -p tcp -s 10.10.0.0/24 -d 0.0.0.0/0 --dport 443
>-j ACCEPT
>-A RH-Firewall-1-INPUT -m tcp -p tcp -s 10.10.0.0/24 -d 0.0.0.0/0 --dport 5190
>-j ACCEPT
>-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
>COMMIT
>
>Подскажите где грабли плиз?! Как мне сделать так что не открывая все
>порты пропускать ФПТ?!

Да поможет тебе плугин ip_conntrack_ftp для локального соедиения и плугин ip_nat_ftp для NAT-соединения.


"проблема с установлением FTP соединения через firewall"
Отправлено lastdruid , 27-Июл-05 09:38 
>Да поможет тебе плугин ip_conntrack_ftp для локального соедиения и плугин ip_nat_ftp для
>NAT-соединения.

ввел
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

перегрузил iptables
проверил. проблема осталась.
что я сделал неправильно?! ;)


"проблема с установлением FTP соединения через firewall"
Отправлено Pavel , 27-Июл-05 13:19 
>>Да поможет тебе плугин ip_conntrack_ftp для локального соедиения и плугин ip_nat_ftp для
>>NAT-соединения.
>
>ввел
>modprobe ip_conntrack_ftp
>modprobe ip_nat_ftp
>
>перегрузил iptables
>проверил. проблема осталась.
>что я сделал неправильно?! ;)
Пробуй пассив, пробуй актив а вось запашет.



"проблема с установлением FTP соединения через firewall"
Отправлено Junior , 27-Июл-05 15:29 
>ввел
>modprobe ip_conntrack_ftp
>modprobe ip_nat_ftp
>
>перегрузил iptables
>проверил. проблема осталась.
>что я сделал неправильно?! ;)

Ты мне скажи: зачем все соединения с INPUT и FORWARD пускать в ОДНУ цепочку????

Как ты расчитываешь делать форвард пакетов не указывая входящего и исходящего интерфейса?

Быстро курить iptables-tutorial!!

Удачи.


"проблема с установлением FTP соединения через firewall"
Отправлено lastdruid , 27-Июл-05 15:58 
>Ты мне скажи: зачем все соединения с INPUT и FORWARD пускать в
>ОДНУ цепочку????
так было по умолчанию после установки, я только добавлял цепочки по надобности.
Как время будет разведу по красивым цепочка, а пока я только учусь!

всё, кроме вышеописанной проблемы работает

>Как ты расчитываешь делать форвард пакетов не указывая входящего и исходящего интерфейса?
какаие будут предложения!? где нужно явно указать интерфейсы?!

>Быстро курить iptables-tutorial!!
Выкурил 2 раза ;)
Видно мало...



"проблема с установлением FTP соединения через firewall"
Отправлено Junior , 27-Июл-05 18:47 
>>Быстро курить iptables-tutorial!!
>Выкурил 2 раза ;)
>Видно мало...
Да без толку. Ну ладно, смотри сам.
Вот твои правила:
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

это заворачивание всех пакетов на eth0 идущих на 80(http) порт на твой прокси-сервер, вероятно SQUID.

-A POSTROUTING -o eth1 -p tcp -j SNAT  --to-source 80.80.212.30:1024-65535
-A POSTROUTING -o eth1 -p udp -j SNAT  --to-source 80.80.212.30:1024-65535

это SNAT твоих исходящих с eth1 соединений на адрес 8.80.212.30 на непривелигированные порты (хотя зачем - не понимаю, просто делай SNAT на легальный адрес, без указания портов)

COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

Установка политик в таблицах на DROP (INPUT, FORWARD) и ACCEPT (OUTPUT)

:RH-Firewall-1-INPUT - [0:0]

добавление цепочки RH-Firewall-1-INPUT (тоже сомнительное удовольствие, зачем плодить эти цепочки??)

-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT

Перенаправление ВСЕХ твоих входящих и форвардящихся соединений в вышесозданную цепочку!!! Ну мля! "Ну кто так строит??" (с)

Ну и дальше по тексту, все правила (на свой вкус), НО все они относятся с цепочке INPUT !!!!
А так, как у тебя политика FORWARD стоит DROP, то все твои попытки соединиться помимо SQUID-а просто уничтожаются (DROP)

-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -i eth0 -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state -i eth0 --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
...бла-бла-бла... и так далее..

Для успешного "сквозного" прохождения твоих ftp-соединений нужно что-то типа этого.

iptables -A FORWARD -s 192.168.1.2 -i eth0 -o eth1 -p tcp --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s 192.168.1.2 -i eth0 -o eth1 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
Ну и правила для обратного прохождения тоже нужны, но это уже будет втоё домашнее задание :)

Где 192.168.1.2 - твой адрес в локальной сети.
Одним словом читать iptables-tutorial мало (и курить его тоже), нужно пытаться понять что к чему. Для лучшей усвояемости порядка движений пакетов создай скрипт для iptablesб который разрешает всё везде, но логирует соединения, чтобы ты мог наглядно видеть что и где ходит.

#!/bin/sh
ipt="/sbin/iptables
$ipt -F
$ipt -X
$ipt -P INPUT ACCEPT
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -t nat -F
$ipt -t nat -X
$ipt -t nat -P PREROUTING ACCEPT
$ipt -t nat -P POSTROUTING ACCEPT
$ipt -t nat -P OUTPUT ACCEPT
$ipt -t mangle -F
$ipt -t mangle -X
$ipt -t mangle -P PREROUTING ACCEPT
$ipt -t mangle -P POSTROUTING ACCEPT
$ipt -t mangle -P OUTPUT ACCEPT
$ipt -t mangle -P INPUT ACCEPT
$ipt -t mangle -P FORWARD ACCEPT

# Это мы очистили таблицы и установили политики разрешения везде.
# Далее логируем все пакеты, но чтобы не забить лог, ставим лимиты.

$ipt -A INPUT -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "FILTER INPUT   "
$ipt -A OUTPUT -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "FILTER OUTPUT   "
$ipt -A FORWARD -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "FILTER FORWARD   "

$ipt -t nat -A PREROUTING -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "NAT PREROUTING   "
$ipt -t nat -A POSTROUTING -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "NAT POSTROUTING   "
$ipt -t nat -A OUTPUT -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "NAT OUTPUT   "

$ipt -t mangle -A PREROUTING -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "MANGLE PREROUTING   "
$ipt -t mangle -A INPUT -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "MANGLE INPUT   "
$ipt -t mangle -A OUTPUT -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "MANGLE OUTPUT   "
$ipt -t mangle -A FORWARD -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "MANGLE FORWARD   "
$ipt -t mangle -A POSTROUTING -m limit --limit 1/min --limit-burst 1 -j LOG --log-prefix "MANGLE POSTROUTING   "

Вот и всё. Теперь очисти лог, чтобы не мешал и сделай пинг в 1 пакет с локального узла, с компа в сети. И увидишь что как и куда ходит.

Удачи.

/*Мля.. почти диссертация..*/


"проблема с установлением FTP соединения через firewall"
Отправлено John , 27-Июл-05 16:17 
>modprobe ip_conntrack_ftp
>modprobe ip_nat_ftp
>
>перегрузил iptables

а после перезагрузки iptables модули остались? Скорее всего - нет.
посмотреть можно lsmod
А вообще, судя по постам, используется RedHat - там модули надо прописывать в /etc/sysconfig/iptables-config
IPTABLES_MODULES="....."


"проблема с установлением FTP соединения через firewall"
Отправлено lastdruid , 11-Авг-05 12:17 
Спасибо всем, кто отвечал! Меня закинули в командировку, как только вернусь и доберусь до сервака сразу проверю!