LINUX.ORG.RU
ФорумAdmin

Необычная проблема с passive ftp и iptables


0

0

Необычная проблема с пассивным режимом фтп, при политике запрета в iptables по умолчанию цепочки FORWARD. Соединение происходит но после команды dir или ls через некоторое время просиходит разрыв связи.

SuSe 10.3, iptables 1.3.8, 1,4,1.

1 карта 192.168.13.108 смотрит во внутренню сеть с 192.168.13.0/24, 2 карта с 192.168.0.108 смотрит в dmz со шлюзом в инет 192.168.0.201.

Вспомогательные модули подргужены: # lsmod |grep ftp nf_nat_ftp 7296 0 nf_conntrack_ftp 13696 1 nf_nat_ftp nf_nat 21912 2 nf_nat_ftp,iptable_nat nf_conntrack 61684 7 xt_conntrack,nf_nat_ftp,nf_conntrack_ftp,xt_state,iptable_nat,nf_nat,nf_conntra ck_ipv4

Правила iptables такие: #!/bin/sh

. /etc/rc.status

echo 1 > /proc/sys/net/ipv4/ip_forward

MB="/sbin/modprobe" $MB ip_conntrack $MB iptable_nat $MB ip_conntrack_ftp $MB ip_nat_ftp

ip_filter_start() {

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP

iptables -A INPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

# passive ftp iptables -A FORWARD -p tcp --sport 1024:65535 --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A FORWARD -p tcp --sport 21 --dport 1024:65535 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -p TCP --dport 20 -j ACCEPT iptables -A FORWARD -p TCP --sport 20 -j ACCEPT iptables -A FORWARD -p TCP --dport 21 -j ACCEPT iptables -A FORWARD -p TCP --sport 21 -j ACCEPT

}

ip_filter_stop() { iptables -t nat -F iptables -F }

# Restart IP packet forwarding: ip_filter_restart() { ip_filter_stop sleep 1 ip_filter_start }

case "$1" in 'start') ip_filter_start ;; 'stop') ip_filter_stop ;; 'restart') ip_filter_restart ;; *) echo "usage $0 start|stop|restart" esac

Соединение происходит, логин пароль спрашивает, авторизует, но после команды dir или ls через некоторое время просиходит разрыв связи. Уточнение, пробовал на нескольких фтп серверах в инете. В счетчиках дропнутых пакетов в iptables в цепочке FORWARD увеличиваются, хотя выше правила как бы разрешают всё что требуется для соединения.

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

отформатируй листинг iptables, ато глаза поломать можно...
и еще покажи плз iptables -L -v -n

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

# iptables -L -v -n
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
  175 18108 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW,RELATED,ESTABLISHED

Chain FORWARD (policy DROP 2 packets, 116 bytes)
 pkts bytes target     prot opt in     out     source               destination
    2   120 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW,RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:21 state NEW,ESTABLISHED
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:21 dpts:1024:65535 state RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpts:1024:65535 state RELATED,ESTABLISHED
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:20
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:20
   15   842 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:21
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:21

Chain OUTPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination
   25  4676 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW,RELATED,ESTABLISHED

Chain DropList (0 references)
 pkts bytes target     prot opt in     out     source               destination

tcpdump смотрел, но помойму он не кажет пакет которые дропнулся на ранней стадии.

Форматированный текст файервола:

#!/bin/sh

. /etc/rc.status

  echo 1 > /proc/sys/net/ipv4/ip_forward

  MB="/sbin/modprobe"
  $MB ip_conntrack
  $MB iptable_nat
  $MB ip_conntrack_ftp
  $MB ip_nat_ftp

ip_filter_start() {

    iptables -P INPUT DROP
    iptables -P OUTPUT DROP
    iptables -P FORWARD DROP

    iptables -A INPUT -m state --state NEW,RELATED,ESTABLISHED  -j ACCEPT
    iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED  -j ACCEPT
    iptables -A FORWARD -m state --state NEW,RELATED,ESTABLISHED  -j ACCEPT

    # passive ftp
    iptables -A FORWARD -p tcp --sport 1024:65535 --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
    iptables -A FORWARD -p tcp --sport 21 --dport 1024:65535 -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -A FORWARD -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -A FORWARD -p TCP --dport 20  -j ACCEPT
    iptables -A FORWARD -p TCP --sport 20  -j ACCEPT
    iptables -A FORWARD -p TCP --dport 21  -j ACCEPT
    iptables -A FORWARD -p TCP --sport 21  -j ACCEPT

}

ip_filter_stop() {
    iptables -t nat -F
    iptables -F
}

# Restart IP packet forwarding:
ip_filter_restart() {
  ip_filter_stop
  sleep 1
  ip_filter_start
}

case "$1" in
'start')
  ip_filter_start
  ;;
'stop')
  ip_filter_stop
  ;;
'restart')
  ip_filter_restart
  ;;
*)
  echo "usage $0 start|stop|restart"
esac

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

конфиг явно откуда-то содран )))
к примеру зачем вот это

iptables -A INPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

этож даже барышня из 10Б не придумает такое написать!



для ftp из твоей сети достаточно так

iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --dport 21 -m state --state NEW -j ACCEPT


при подгруженных модулях контракта ftp.


а не работает по причине, что нат в белый адрес происходит не на твоем устройстве.
т.е. вначале почисти конфиг от кривых правил, а потом попинай сетевых инженеров на 192.168.0.201

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

iptables -A INPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT iptables -A OUTPUT -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT Само собой эти строки будут убраны в конечном результате, вставлены чтоб не мешали расследованию.

>а не работает по причине, что нат в белый адрес происходит не на твоем >устройстве. >т.е. вначале почисти конфиг от кривых правил, а потом попинай сетевых >инженеров на 192.168.0.201

0.201 это inside iface нашей циски :-) Она врятли может быть виновата, хотя по законам Мерфи всяко может быть. Дело в том что если сделать iptables -P FORWARD ACCEPT то пассивный режим фтп начинает работать, а задача разрешать только определенным айпи подключаться к фтп

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

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

т.е. попробуй убрать все лишнее, в правилах и модулях, и, если в 201 уверен, то зараотает.

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

Согласен что не нужные подули грузить необязательно, но что бы они мешали работе ни в одном мануле не видал.
Привел к виду:
lsmod |grep ftp
nf_conntrack_ftp       13696  0
nf_conntrack           61684  5 xt_state,iptable_nat,nf_nat,nf_conntrack_ipv4,nf_conntrack_ftp

все модули:
lsmod
Module                  Size  Used by
ipt_LOG                 9984  1
xt_tcpudp               7168  21
xt_state                6528  12
iptable_mangle          6784  0
iptable_nat            11140  0
nf_nat                 21912  1 iptable_nat
nf_conntrack_ipv4      14856  14 iptable_nat
nf_conntrack_ftp       13696  0
nf_conntrack           61684  5 xt_state,iptable_nat,nf_nat,nf_conntrack_ipv4,nf_conntrack_ftp
nfnetlink               9752  3 nf_nat,nf_conntrack_ipv4,nf_conntrack
iptable_filter          6912  1
ip_tables              16324  3 iptable_mangle,iptable_nat,iptable_filter
microcode              15372  0
ip6_tables             17476  0
x_tables               18308  6 ipt_LOG,xt_tcpudp,xt_state,iptable_nat,ip_tables,ip6_tables
snd_pcm_oss            50432  0
snd_mixer_oss          20096  1 snd_pcm_oss
snd_seq_midi           13440  0
snd_emu10k1_synth      11904  0
snd_emux_synth         37760  1 snd_emu10k1_synth
snd_seq_virmidi        10880  1 snd_emux_synth
snd_seq_midi_event     10880  2 snd_seq_midi,snd_seq_virmidi
snd_seq_midi_emul      10240  1 snd_emux_synth
snd_seq                54452  5 snd_seq_midi,snd_emux_synth,snd_seq_virmidi,snd_seq_midi_event,snd_seq_midi_emu
l
apparmor               40736  0
loop                   21636  0
dm_mod                 56880  0
snd_emu10k1           132868  1 snd_emu10k1_synth
snd_rawmidi            28416  3 snd_seq_midi,snd_seq_virmidi,snd_emu10k1
firmware_class         13568  2 microcode,snd_emu10k1
snd_ac97_codec         97060  1 snd_emu10k1
ac97_bus                6272  1 snd_ac97_codec
snd_pcm                82564  3 snd_pcm_oss,snd_emu10k1,snd_ac97_codec
snd_seq_device         12172  6 snd_seq_midi,snd_emu10k1_synth,snd_emux_synth,snd_seq,snd_emu10k1,snd_rawmidi
snd_timer              26756  3 snd_seq,snd_emu10k1,snd_pcm
snd_page_alloc         13960  2 snd_emu10k1,snd_pcm
snd_util_mem            9088  2 snd_emux_synth,snd_emu10k1
snd_hwdep              13316  2 snd_emux_synth,snd_emu10k1
8139too                29184  0
snd                    58164  16 snd_pcm_oss,snd_mixer_oss,snd_seq_midi,snd_emu10k1_synth,snd_emux_synth,snd_seq
_virmidi,snd_seq_midi_emul,snd_seq,snd_emu10k1,snd_rawmidi,snd_ac97_codec,snd_pc
m,snd_seq_device,snd_timer,snd_util_mem,snd_hwdep
e100                   38156  0
8139cp                 26112  0
emu10k1_gp              7808  0
soundcore              11460  1 snd
gameport               18312  2 emu10k1_gp
mii                     9344  3 8139too,e100,8139cp
sr_mod                 19492  0
button                 12432  0
i2c_i801               12560  0
cdrom                  37020  1 sr_mod
i2c_core               27520  1 i2c_i801
rtc_cmos               12064  0
shpchp                 35092  0
rtc_core               23048  1 rtc_cmos
parport_pc             40764  0
serio_raw              10756  0
rtc_lib                 7040  1 rtc_core
iTCO_wdt               14372  0
intel_agp              27156  1
pci_hotplug            33216  1 shpchp
iTCO_vendor_support     7812  1 iTCO_wdt
parport                37832  1 parport_pc
agpgart                35764  1 intel_agp
sg                     37036  0
ehci_hcd               34956  0
ohci_hcd               23684  0
sd_mod                 31104  3
uhci_hcd               27024  0
usbcore               123372  4 ehci_hcd,ohci_hcd,uhci_hcd
edd                    12996  0
ext3                  131848  1
mbcache                12292  1 ext3
jbd                    68148  1 ext3
fan                     9220  0
ata_piix               21380  2
libata                136776  1 ata_piix
scsi_mod              140376  4 sr_mod,sg,sd_mod,libata
thermal                19848  0
processor              40744  1 thermal

> т.е. попробуй убрать все лишнее, в правилах и модулях, и, если в 201 >уверен, то зараотает. 

А что лишнее убрать, уже ума не приложу ?

Маскарадинг и снат не подходят, это немного другие средства, нужно именно форвардом 

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