#1 19.11.06 13:23
Проблема с пассивным режимом ftp через iptables
Система: FC-6, iptables v1.3.5.
Ниже содержимое iptables:
Chain INPUT (policy DROP 15349 packets, 2133K bytes)
num pkts bytes target prot opt in out source destination
1 312 46889 ACCEPT all -- lo any anywhere anywhere
2 390 74210 ACCEPT all -- any any crossroad.hostel.nstu.ru anywhere
3 0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:smtp
4 0 0 ACCEPT tcp -- any any anywhere anywhere tcp spt:smtp
5 0 0 ACCEPT tcp -- any any anywhere anywhere tcp spt:pop3
6 258 231K ACCEPT tcp -- any any anywhere anywhere tcp spt:http
7 0 0 ACCEPT tcp -- any any anywhere anywhere tcp spt:aol
8 30 2465 ACCEPT tcp -- any any anywhere anywhere tcp spt:ftp
9 0 0 ACCEPT udp -- any any anywhere anywhere udp spt:ftp
10 0 0 ACCEPT udp -- any any anywhere anywhere udp spt:ftp-data
11 0 0 ACCEPT tcp -- any any anywhere anywhere tcp spt:ftp-data
12 0 0 ACCEPT icmp -- any any anywhere anywhere
Chain FORWARD (policy DROP 0 packets, 0 bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy DROP 18 packets, 2560 bytes)
num pkts bytes target prot opt in out source destination
1 312 46889 ACCEPT all -- any lo anywhere anywhere
2 120 8373 ACCEPT all -- any any anywhere crossroad.hostel.nstu.ru
3 0 0 ACCEPT tcp -- any any anywhere anywhere tcp spt:smtp
4 0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:smtp
5 0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:pop3
6 260 55326 ACCEPT tcp -- any any anywhere anywhere tcp dpt:http
7 0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:aol
8 39 2214 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ftp
9 0 0 ACCEPT udp -- any any anywhere anywhere udp dpt:ftp
10 0 0 ACCEPT tcp -- any any anywhere anywhere tcp dpt:ftp-data
11 0 0 ACCEPT udp -- any any anywhere anywhere udp dpt:ftp-data
12 0 0 ACCEPT icmp -- any any anywhere anywhere
Что нужно добавить, чтобы заработало пассивное соединение ftp?
К примеру, подключаюсь к ftp://best:
ftp> open best
Connected to best.hostel.nstu.ru.
220 (vsFTPd 2.0.1)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (best:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (217,71,142,1,142,216)
Далее всё виснет...
Offline
#7 21.11.06 10:19
Re: Проблема с пассивным режимом ftp через iptables
в активном режиме:
1. происходит коннект от клиента к серверу на порт 21
2. отдача данных происходит от сервера клиенту с порта 20
(это в общем)
пассивный режим - это режим, как вэб-браузер... т.е. соединился на 21 порт - с ним и работаешь...
AleXXX написал(а):
Мож надо conntrack и conntrack_ftp загрузить?
хм... это надо для проходящего сервера-шлюза... и для NAT, вроде...
Dmitri, попробуй сделать так... очисти все цепочки файера и попробуй пообщаться с фтп-сервером... так-то вроде правила все верные, если ты на конкретные сетевки их не раскидывал... но тут это не показано...
Offline
#8 21.11.06 11:10
Re: Проблема с пассивным режимом ftp через iptables
Спасибо всем за помощь, я тут накопал кое-что:
Active FTP :
command : client >1023 -> server 21
data : client >1023 <- server 20
Passive FTP :
command : client >1023 -> server 21
data : client >1023 -> server >1023
Схемы работы ftp в активном и пассивном режимах соответственно.
С активным режимом всё понятно.
Для работы в пассивном режиме в моей таблице не хватает правила, которое разрешает обмен пакетами с портом >1023:
iptables -A INPUT -p tcp --sport 1023: -j ACCEPT
iptables -A OUTPUT -p tcp --dport 1023: -j ACCEPT
- чтобы принимать и отправлять пакеты от/на сервера с его непривилегированного порта (>1023). Меня вот что волнует: я открываю большой диапазон портов, это ведь не лучшее решение. Есть более оптимальное решение? Как точно определить порт, который откроет сервер?
Исправлено Dmitri (21.11.06 11:12)
Offline
#10 23.11.06 14:24
Re: Проблема с пассивным режимом ftp через iptables
Код: bash:
#Правила для пакетов из инета - впускать только если соединение уже установлено или связано
/sbin/iptables -A INPUT -d <IP на внешней сетевой> -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A INPUT -d <IP на внешней сетевой> -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTDmitri, не забывай, что если ты будешь делать еще одно соединение по фтп, то порт на клиенте будет уже другой...
Offline

