LINUX.ORG.RU
ФорумAdmin

Iptables и FTP


0

1

День добрый. Нуждаюсь в помоще.Не могу ни как открыть пассивный и активный. Поиском пользовался похожие темы находил но не работает. Есть машинка на ней стоит ОС Федора 14 с 2 сетевыми картами eth0-lan(192.168.10.0/24) eth1-wan(белый адрес 89.28.205.*) и поднят Iptables, в них есть такие правила:

*filter

:INPUT DROP [0:0]

:FORWARD DROP [0:0]

:OUTPUT DROP [0:0]

-A FORWARD -m state --state NEW -m tcp -p tcp -s 192.168.10.0/24 --sport 1024:65535 -d 0/0 --dport 21 -j ACCEPT

-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

# *nat -A POSTROUTING -o eth1 -s 192.168.10.0/24 -j SNAT --to 89.28.205.* #

Подгружены след. модули lsmod |grep ftp

nf_nat_ftp 1663 0

nf_conntrack_ftp 9047 1 nf_nat_ftp

nf_nat 16298 2 nf_nat_ftp,iptable_nat

Вот что пишет когда пытаюсь куда-то зайти:

ftp

ftp> open dlink.ru.

ftp> Connection time out

Кто что скажет... Спасибо

:INPUT DROP [0:0]
:OUTPUT DROP [0:0]
— это неправильно. Хотя бы loopback разреши.
Рекомендую так:
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Насчет

Connection time out

включи
sysctl net.ipv4.ip_forward=1

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

ерунду говорите. INPUT и OUTPUT в данном случае ни при чем - трафик транзитный и в эти цепочки попросту не попадает

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

>ерунду говорите. INPUT и OUTPUT в данном случае ни при чем - трафик транзитный и в эти цепочки попросту не попадает

Кто его знает, может, он с самого сервака пытается :)
А вообще это было на правах общего замечания.

Вы, в свою очередь, тоже ерунду говорите — коннекты на 20 порт должен conntrack разрешать, если они не разрешены явно. Тестил в свое время.

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

sysctl net.ipv4.ip_forward=1 это включено было сразу.

Вот весь конфих Iptables

# Firewall configuration written by system-config-firewall

# Manual customization of this file is not recommended.

*filter

:INPUT DROP [0:0]

:FORWARD DROP [0:0]

:OUTPUT DROP [0:0]

#

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

#   Allow ICMP!

-A INPUT -p icmp --icmp-type 0 -m limit --limit 40/minute -j ACCEPT

-A INPUT -p icmp --icmp-type 8 -m limit --limit 40/minute -j ACCEPT

-A OUTPUT -p icmp --icmp-type 0 -m limit --limit 40/minute -j ACCEPT

-A OUTPUT -p icmp --icmp-type 8 -m limit --limit 40/minute -j ACCEPT

#   Allow local host!

-A INPUT -i lo -j ACCEPT

-A OUTPUT -o lo -j ACCEPT

#   SSH, Block SSH bots!

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --set --name SSH-Bots-Block

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --update --seconds 2400 --hitcount 1 --rttl --name SSH-Bots-Block -j REJECT

#   NTP update time!

-A INPUT -m state --state NEW -m udp -p udp --sport 123 -j ACCEPT

-A OUTPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT

#   Allow access for munin!

-A INPUT -m state --state NEW -s 192.168.10.0/24 -m tcp -p tcp --dport 80 --sport 1024:65535 -j ACCEPT

-A INPUT -m state --state NEW -s 192.168.10.0/24 -m udp -p udp --dport 80 --sport 1024:65535 -j ACCEPT

#   Allow access to port 8080!

-A INPUT -m state --state NEW -s 192.168.10.0/24 -m tcp -p tcp --dport 8080 --sport 1024:65535 -j ACCEPT

-A INPUT -m state --state NEW -s 192.168.10.0/24 -m udp -p udp --dport 8080 --sport 1024:65535 -j ACCEPT

-A INPUT -m state --state NEW -s 192.168.10.0/24 -m tcp -p tcp --dport 3128 --sport 1024:65535 -j ACCEPT

-A INPUT -m state --state NEW -s 192.168.10.0/24 -m udp -p udp --dport 3128 --sport 1024:65535 -j ACCEPT

#   Open update for local machines DNS!

-A INPUT -m state --state NEW -m tcp -p tcp --sport 53 --dport 1024:65535 -j ACCEPT

-A OUTPUT -m state --state NEW -m tcp -p tcp --sport 1024:65535 --dport 53 -j ACCEPT

-A INPUT -m state --state NEW -m udp -p udp --sport 53 --dport 1024:65535 -j ACCEPT

-A OUTPUT -m state --state NEW -m udp -p udp --sport 1024:65535 --dport 53 -j ACCEPT

#   Open DNS for local subnet!

-A INPUT -m state --state NEW -m udp -p udp -s 192.168.10.0/24 --sport 1024:65535 -d 192.168.10.8 --dport 53 -j ACCEPT

-A OUTPUT -m state --state NEW -m udp -p udp -s 192.168.10.8 --sport 53 -d 192.168.10.0/24 --dport 1024:65535 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.10.0/24 --sport 1024:65535 -d 192.168.10.8 --dport 53 -j ACCEPT

-A OUTPUT -m state --state NEW -m tcp -p tcp -s 192.168.10.8 --sport 53 -d 192.168.10.0/24 --dport 1024:65535 -j ACCEPT

#   Opent 80, 443 ports! -A INPUT -m state --state NEW -m tcp -p tcp --sport 1024:65535 --dport 80 -j ACCEPT

-A INPUT -m state --state NEW -m udp -p udp --sport 1024:65535 --dport 80 -j ACCEPT

-A OUTPUT -m state --state NEW -m tcp -p tcp --sport 1024:65535 --dport 80 -j ACCEPT

-A OUTPUT -m state --state NEW -m udp -p udp --sport 1024:65535 --dport 80 -j ACCEPT

#-A INPUT -m state --state NEW,ESTABLISHED -m tcp -p tcp --sport 1024:65535 --dport 443 -j ACCEPT

-A OUTPUT -m state --state NEW -m tcp -p tcp --sport 1024:65535 --dport 443 -j ACCEPT

#   Open FTP Active,Passive! ВОТ ОТРЫТЫЙ ДЛЯ ЭТОЙ МАШИНЫ НО КАК ОТКРЫТЬ ДЛЯ всей сети 192,168,10,0/24

-A INPUT -m state --state NEW -m tcp -p tcp --sport 21 -j ACCEPT -A OUTPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT # -A INPUT -m state --state ESTABLISHED,RELATED -m tcp -p tcp --sport 20 -j ACCEPT -A OUTPUT -m state --state NEW -m tcp -p tcp --sport 20 -j ACCEPT # -A INPUT -m state --state ESTABLISHED -m tcp -p tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT -A OUTPUT -m state --state ESTABLISHED,RELATED -m tcp -p tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT ## # -A INPUT -j REJECT --reject-with icmp-host-prohibited # # #   Allow ftp for local subnet! -A FORWARD -m state --state NEW -m tcp -p tcp -s 192.168.10.0/24 --sport 1024:65535 -d 0/0 --dport 21 -j ACCEPT

# -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT

# *nat -A POSTROUTING -o eth1 -s 192.168.10.0/24 -j SNAT --to 89.28.205.* #

# COMMIT

vip71541 ()
Ответ на: комментарий от nnz

должен. но несколько раз видел как он (коннтрек) на свою эту обязанность клал с пробором и помогало именоо явное разрешение 20/tcp. топикстартеру - проверь загружен ли коннтрек и попробуй все же явно разрешить 20-й порт.

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

Нет с инетом все норм.

На этой машине еще стоят такие службы как NTP,DNS(Обычный кэшируюший) как бы обновляются что NTP что DNS. Все норм .

vip71541 ()

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -p tcp --dport ftp -m state --state NEW -j ACCEPT

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

Сорри
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --dport ftp -m state --state NEW -j ACCEPT

anonymous ()
Ответ на: комментарий от sasha999

Как бы вот

-A FORWARD -m state --state ESTABLISHED,RELATED -m tcp -p tcp --sport 1024:65535 -d 0/0 --dport 1024:65535 -j ACCEPT

Но эффект тот же...

проверь загружен ли коннтрек --- Как проверить через lsmod вот как бы делал

Подгружены след. модули lsmod |grep ftp

nf_nat_ftp 1663 0

nf_conntrack_ftp 9047 1 nf_nat_ftp

nf_nat 16298 2 nf_nat_ftp,iptable_nat

vip71541 ()

Только я один не увидел вывод tcpdump, а также упоминания, ftp крутится на сервере или клиенты за натом пытаются зайти на какой-нибудь ftp. Это первое.

Если вариант один, то дебажить tcpdump'ом и lftp свключённым debug. Если второе — аналогично.

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

Отвечаю на вопрос на сервере на ФТП. Клиент(вроле клиента выступаю я ) пытается поцепиться на внешний фтп допустим ftp://dlink.ru. с cmd.

Вот вывод tcpdump

tcpdump -i eth1 -n port 21 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes 12:11:14.479148 IP 89.28.205.*.35659 > 213.234.241.211.ftp: Flags [S], seq 4012757519, win 5840, options [mss 1460,sackOK,TS val 71923406 ecr 0,nop,wscale 6], length 0

12:11:17.489150 IP 89.28.205.*.35659 > 213.234.241.211.ftp: Flags [S], seq 4012757519, win 5840, options [mss 1460,sackOK,TS val 71926416 ecr 0,nop,wscale 6], length 0

12:11:23.505595 IP 89.28.205.*.35659 > 213.234.241.211.ftp: Flags [S], seq 4012757519, win 5840, options [mss 1460,sackOK,TS val 71932432 ecr 0,nop,wscale 6], length 0

12:14:34.817344 IP 89.28.205.*.41131 > 213.234.241.211.ftp: Flags [S], seq 2873335490, win 5840, options [mss 1460,sackOK,TS val 72123738 ecr 0,nop,wscale 6], length 0

vip71541 ()
Ответ на: комментарий от nnz

Совершенно верно, nf_conntrack_ftp прекрасно отрабатывает возвратку на 20-й порт, то есть когда наш хост (он же сервер, на котором, собственно, -P INPUT DROP) инициирует коннект с 20-го порта (src port) в уже установленной сессии после приёма директивы PORT (активация активного режима), а затем уже обрабатывается SYN-ACK, примерно так:

05:09:42.285376 IP 192.168.1.44.ftp-data > 10.10.10.1.49890: S 3303325572:3303325572(0) win 5840 <mss 1460,sackOK,timestamp 29195227 0,nop,wscale 7>
05:09:42.590053 IP 10.10.10.1.49890 > 192.168.1.44.ftp-data: S 1999432600:1999432600(0) ack 3303325573 win 5792 <mss 1460,sackOK,timestamp 8070693 29195227,nop,wscale 4>
05:09:42.590604 IP 192.168.1.44.ftp-data > 10.10.10.1.49890: . ack 1 win 46 <nop,nop,timestamp 29195228 8070693>
05:09:42.290233 IP 192.168.1.44.ftp-data > 10.10.10.1.49890: F 1:1(0) ack 1 win 46 <nop,nop,timestamp 29195229 8070693>
05:09:42.292037 IP 10.10.10.1.49890 > 192.168.1.44.ftp-data: F 1:1(0) ack 2 win 362 <nop,nop,timestamp 8070701 29195229>
05:09:42.292329 IP 192.168.1.44.ftp-data > 10.10.10.1.49890: . ack 2 win 46 <nop,nop,timestamp 29195230 8070701>

Это при условии, что клиент коннектится к нам (на нашем хосте крутится ftp-сервер) и использует активный режим. Да, ну и, естественно, --ctstate RELATED,ESTABLISHED :)

Отсюда вытекает главный вопрос ТС, какие условия? Мне видятся аж пять штук:

1. Коннект с нашего сервера-маршрутизатора (на котором установлена федора) в качестве клиента в пассивном режиме на, скажем, ftp://ftp.dlink.ru. Здесь нас именно интересует политика -P INPUT DROP. Понятно, что это ничем не отличается от, допустим, apt-get update, то есть прекрасно отрабатывается --ctstate RELATED,ESTABLISHED без подгрузки nf_conntrack_ftp.

2. Коннект с клиента, скажем винды, сидящем за натом-нашим-сервером, на котором установлена Федора, у которого политика -P FORWARD DROP, в доме, который построил Дж^W. Ничем не отличается от первого варианта.

Дальше интересней

3. Такой же как первый, но используя активный режим. И тут облом-с без nf_conntrack_ftp

root@hn:~# tcpdump -i eth0 host ftp.dlink.ru
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
05:30:50.359347 IP 192.168.1.44.50289 > fd.dlink.ru.ftp: S 1710190923:1710190923(0) win 5840 <mss 1460,sackOK,timestamp 29512246 0,nop,wscale 7>
05:30:50.518340 IP fd.dlink.ru.ftp > 192.168.1.44.50289: S 3134094438:3134094438(0) ack 1710190924 win 5792 <mss 1452,sackOK,timestamp 915870717 29512246,nop,wscale 7>
05:30:50.518662 IP 192.168.1.44.50289 > fd.dlink.ru.ftp: . ack 1 win 46 <nop,nop,timestamp 29512286 915870717>
05:30:50.684814 IP fd.dlink.ru.ftp > 192.168.1.44.50289: P 1:272(271) ack 1 win 46 <nop,nop,timestamp 915870758 29512286>
05:30:50.685124 IP 192.168.1.44.50289 > fd.dlink.ru.ftp: . ack 272 win 54 <nop,nop,timestamp 29512328 915870758>
05:30:50.691529 IP 192.168.1.44.50289 > fd.dlink.ru.ftp: P 1:7(6) ack 272 win 54 <nop,nop,timestamp 29512329 915870758>
05:30:50.845913 IP fd.dlink.ru.ftp > 192.168.1.44.50289: . ack 7 win 46 <nop,nop,timestamp 915870800 29512329>
05:30:50.846937 IP fd.dlink.ru.ftp > 192.168.1.44.50289: P 272:498(226) ack 7 win 46 <nop,nop,timestamp 915870800 29512329>
05:30:50.862681 IP 192.168.1.44.50289 > fd.dlink.ru.ftp: P 7:64(57) ack 498 win 63 <nop,nop,timestamp 29512372 915870800>
05:30:51.032311 IP fd.dlink.ru.ftp > 192.168.1.44.50289: P 498:572(74) ack 64 win 46 <nop,nop,timestamp 915870844 29512372>
05:30:51.035491 IP 192.168.1.44.50289 > fd.dlink.ru.ftp: P 64:80(16) ack 572 win 63 <nop,nop,timestamp 29512415 915870844>
05:30:51.209821 IP fd.dlink.ru.ftp > 192.168.1.44.50289: P 572:602(30) ack 80 win 46 <nop,nop,timestamp 915870890 29512415>
05:30:51.219151 IP 192.168.1.44.50289 > fd.dlink.ru.ftp: P 80:85(5) ack 602 win 63 <nop,nop,timestamp 29512461 915870890>
05:30:51.378617 IP fd.dlink.ru.ftp > 192.168.1.44.50289: P 602:636(34) ack 85 win 46 <nop,nop,timestamp 915870933 29512461>
05:30:51.386922 IP 192.168.1.44.50289 > fd.dlink.ru.ftp: P 85:111(26) ack 636 win 63 <nop,nop,timestamp 29512503 915870933>
05:30:51.546253 IP fd.dlink.ru.ftp > 192.168.1.44.50289: P 636:665(29) ack 111 win 46 <nop,nop,timestamp 915870975 29512503>
05:30:51.550289 IP 192.168.1.44.50289 > fd.dlink.ru.ftp: P 111:117(6) ack 665 win 63 <nop,nop,timestamp 29512544 915870975>
05:30:51.716271 IP fd.dlink.ru.ftp-data > 192.168.1.44.35352: S 3127536005:3127536005(0) win 5840 <mss 1452,sackOK,timestamp 915871017 0,nop,wscale 7>
05:30:51.754289 IP fd.dlink.ru.ftp > 192.168.1.44.50289: . ack 117 win 46 <nop,nop,timestamp 915871027 29512544>
05:30:54.713865 IP fd.dlink.ru.ftp-data > 192.168.1.44.35352: S 3127536005:3127536005(0) win 5840 <mss 1452,sackOK,timestamp 915871767 0,nop,wscale 7>
05:31:00.714564 IP fd.dlink.ru.ftp-data > 192.168.1.44.35352: S 3127536005:3127536005(0) win 5840 <mss 1452,sackOK,timestamp 915873267 0,nop,wscale 7>
05:31:12.726070 IP fd.dlink.ru.ftp-data > 192.168.1.44.35352: S 3127536005:3127536005(0) win 5840 <mss 1452,sackOK,timestamp 915876267 0,nop,wscale 7>
^C
22 packets captured
28 packets received by filter
0 packets dropped by kernel

С успешного вывода в случае подгрузки хелпера ftp я начал свой пост :)

4. Клиент за натом, коннект на ftp://ftp.dlink.ru, режим — активный.

В этом случае нас интересует порт клиента, на который будет коннектиться хост ftp://ftp.dlink.ru, предположим 57643. У нас же политика FORWARD DROP, не будем же мы писать -p tcp --dport 57643 -d 10.10.10.1 -j ACCEPT

Активный режим ftp — это defect by design, соответственно

root@hn:~# modprobe -l 'nf_*_ftp'
/lib/modules/2.6.32-bpo.5-openvz-686/kernel/net/ipv4/netfilter/nf_nat_ftp.ko
/lib/modules/2.6.32-bpo.5-openvz-686/kernel/net/netfilter/nf_conntrack_ftp.ko
root@hn:~# modprobe -vi nf_nat_ftp 
insmod /lib/modules/2.6.32-bpo.5-openvz-686/kernel/net/netfilter/nf_conntrack_ftp.ko 
insmod /lib/modules/2.6.32-bpo.5-openvz-686/kernel/net/ipv4/netfilter/nf_nat_ftp.ko 
root@hn:~# iptables -I FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

и всё :)

5. У нас на сервере крутится ftp, к нам коннектятся, используя пассивный режим или активный. Опять же

root@hn:~# modprobe -vi nf_conntrack_ftp 
insmod /lib/modules/2.6.32-bpo.5-openvz-686/kernel/net/netfilter/nf_conntrack_ftp.ko 
root@hn:~# iptables -I INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Вот как-то так.

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

Здорово все изложил :)

Только добавлю, что nf_conntrack_ftp бывает полезен и на клиенте при пассивном режиме, и на сервере в активном режиме — при использовании политики жесткой фильтрации в OUTPUT (разрешены только коннекты на отдельные порты).

В случае, если жесткой фильтрации там нет (а часто именно так и делается), в этих двух ситуациях данный модуль необязателен.

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

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

nnz ★★★★ ()
Ответ на: комментарий от vip71541
-A FORWARD -m state --state ESTABLISHED,RELATED -m tcp -p tcp --sport 1024:65535 -d 0/0 --dport 1024:65535 -j ACCEPT

То есть, если клиент за натом использует активный режим, твой маршрутизатор не отфорвардить коннекты dlink.ru с порта ftp-data (20)?

Поналепят этих --sport, а потом выходит такая бодяга.

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

Спасибо за ответ. Но вопрос остался открытым... Если я добавлю вот такие два правила:

-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

-A FORWARD -m state --state NEW -m tcp -p tcp -s 192.168.10.0/24 --sport 1024:65535 -d 0/0 --dport 21 -j ACCEPT

Если я их правильно понимаю так как писал я их сам. То я разрешаю 21 порт для 10.0 сети, а первое правило должно отработать и открыть соединение на динамические порты...

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

Если я правильно понял, ты пытаешься решить проблему коннекта клиентов, сидящих за натом (твоим маршрутизатором) на какой-нибудь ftp, правильно? Смотри пункт 2 и 4, что я написал выше. А также дай вывод В ЛОРКОДЕ, пожалуйста:

iptables --line-numbers -vnL

Также интересует вывод tcpdump -i <интерфейс, смотрящий в локалку> host <айпи клиента> В ЛОРКОДЕ.

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

Да так точно. Вот это пытаюсь сделать но покамись безуспешно.

Вот вывод tcpdump'a с внутр.айпи на тот же самый dlink.ru. tcpdump -i eth0 -n port 21

listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 08:52:43.531366 IP 192.168.10.251.56222 > 213.234.241.211.ftp: Flags , seq 3270520825, win 5840, options [mss 1460,sackOK,TS val 319205068 ecr 0,nop,wscale 6], length 0

08:52:46.535962 IP 192.168.10.251.56222 > 213.234.241.211.ftp: Flags , seq 3270520825, win 5840, options [mss 1460,sackOK,TS val 319208073 ecr 0,nop,wscale 6], length 0

После 3 попыток выходит сообщение connection time out

vip71541 ()
Ответ на: комментарий от vip71541
Вот вывод  iptables --line-numbers -vnL

Chain INPUT (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     426K  133M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        1    48 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp type 0 limit: avg 40/min burst 5
3       20   968 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp type 8 limit: avg 40/min burst 5
4     8978  771K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
5     3463  208K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
6        0     0            tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 recent: SET name: SSH-Bots-Block side: source
7        0     0 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 recent: UPDATE seconds: 2400 hit_count: 1 TTL-Match name: SSH-Bots-Block side: source reject-with icmp-port-unreachable
8        0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW udp spt:123
9      167  8668 ACCEPT     tcp  --  *      *       192.168.10.0/24      0.0.0.0/0           state NEW tcp spts:1024:65535 dpt:80
10       0     0 ACCEPT     udp  --  *      *       192.168.10.0/24      0.0.0.0/0           state NEW udp spts:1024:65535 dpt:80
11    1457 74796 ACCEPT     tcp  --  *      *       192.168.10.0/24      0.0.0.0/0           state NEW tcp spts:1024:65535 dpt:8080
12       0     0 ACCEPT     udp  --  *      *       192.168.10.0/24      0.0.0.0/0           state NEW udp spts:1024:65535 dpt:8080
13     354 16992 ACCEPT     tcp  --  *      *       192.168.10.0/24      0.0.0.0/0           state NEW tcp spts:1024:65535 dpt:3128
14       0     0 ACCEPT     udp  --  *      *       192.168.10.0/24      0.0.0.0/0           state NEW udp spts:1024:65535 dpt:3128
15       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp spt:53 dpts:1024:65535
16       0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW udp spt:53 dpts:1024:65535
17     864 57178 ACCEPT     udp  --  *      *       192.168.10.0/24      192.168.10.8        state NEW udp spts:1024:65535 dpt:53
18       1    52 ACCEPT     tcp  --  *      *       192.168.10.0/24      192.168.10.8        state NEW tcp spts:1024:65535 dpt:53
19      14   772 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp spts:1024:65535 dpt:80
20       0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW udp spts:1024:65535 dpt:80
21   68839 8425K REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           ctstate RELATED,ESTABLISHED
2        0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
3        6   360 ACCEPT     tcp  --  *      *       192.168.10.0/24      0.0.0.0/0           state NEW tcp spts:1024:65535 dpt:21
4        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy DROP 153 packets, 29440 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     442K  126M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp type 0 limit: avg 40/min burst 5
3        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp type 8 limit: avg 40/min burst 5
4     8978  771K ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0
5      529 40204 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW udp dpt:123
6      164  8528 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp spts:1024:65535 dpt:53
7     3845  329K ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW udp spts:1024:65535 dpt:53
8        0     0 ACCEPT     udp  --  *      *       192.168.10.8         192.168.10.0/24     state NEW udp spt:53 dpts:1024:65535
9        0     0 ACCEPT     tcp  --  *      *       192.168.10.8         192.168.10.0/24     state NEW tcp spt:53 dpts:1024:65535
10    2143  111K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp spts:1024:65535 dpt:80
11       0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW udp spts:1024:65535 dpt:80
12      34  1768 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp spts:1024:65535 dpt:443
13       0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:21
vip71541 ()
Ответ на: комментарий от vip71541

Кстати, я там вверху чуть-чуть соврал :) Второй пункт работает без подгрузки nf_nat_ftp, если -s 192.168.2.0/24 -j ACCEPT :) То есть хостам из локалки разрешено ходить куда угодно, что, фактически нивелирует общую политику DROP, конечно, это не есть правильно :)

Это я отвлёкся... Итак:

iptables -F FORWARD
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --dport 21 -s 192.168.10.0/24 -j ACCEPT # разрешаем клиентам коннектится на любые ftp-серверы
modprobe -vi nf_nat_ftp 

Работает 100%! Но учти виндовый ftp-клиент использует активный режим (хинт: смотри настройки фаервола клиента). Если будешь постить вывод tcpdump, nj в ЛОРКОДЕ:

tcpdump -i eth0 host 213.234.241.211

Меня смущает другое: нули по счётчикам в

Chain FORWARD (policy DROP 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           ctstate RELATED,ESTABLISHED

А дай-ка вывод


sysctl net.ipv4.ip_forward

ip -4 a

ip ro

iptables --line-numbers -vnL PREROUTING -t nat

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

Так оставил я в покое виндового клиента c его приколами.. На своей машине в VMware Server поставил ради этого чистую Федору 14 в качестве клиента и отключил на ней iptables. Что с этого увидел та тоже самое что и с виндового :(. Начал копать дальше, только теперь на шлюзе. Что делал начал ставить 3 цепочки в ACCEPT, по очереди уже просто от незнания или он непонимания что с ним не так... Что выяснил если все 3 цепочки ставлю в ACCEPT то результат опят же нулевой, и только после того я делаю вот такую вот команду service iptables stop то есть полная свобода всем тогда фпт работает... Но это не дело... Может знаешь что это может быть какой-то модуль ядра не догрузилься сразу скажу ядро я не собирал работаю с тем что стало по-умолчанию. Вот вывод команд:

[root@gw-fed log]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

[root@gw-fed log]# ip -4 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000
    inet 192.168.10.8/24 brd 192.168.10.255 scope global eth0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 192.168.205.90/29 brd 192.168.205.95 scope global eth1
    inet 89.28.205.*/29 brd 89.28.205.95 scope global eth1:90
[root@gw-fed log]# ip ro
89.28.205.88/29 dev eth1  proto kernel  scope link  src 89.28.205.*
192.168.205.88/29 dev eth1  proto kernel  scope link  src 192.168.205.90
192.168.10.0/24 dev eth0  proto kernel  scope link  src 192.168.10.8
169.254.0.0/16 dev eth0  scope link  metric 1002
169.254.0.0/16 dev eth1  scope link  metric 1003
default via 192.168.205.89 dev eth1
[root@gw-fed log]# iptables --line-numbers -vnL PREROUTING -t nat
Chain PREROUTING (policy ACCEPT 75872 packets, 7259K bytes)
num   pkts bytes target     prot opt in     out     source               destination
vip71541 ()
Ответ на: комментарий от anton_jugatsu

Вот вывод

[root@gw-fed sysconfig]# iptables --line-numbers -vnL POSTROUTING -t nat
Chain POSTROUTING (policy ACCEPT 79307 packets, 4563K bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 SNAT       all  --  *      eth1    192.168.10.0/24      0.0.0.0/0           to:89.28.205.*

И добавление вот этих правил опять дает тоже результат что и раньше

iptables -F FORWARD
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --dport 21 -s 192.168.10.0/24 -j ACCEPT
Это таки еже как и эти те что я раньше писал
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

-A FORWARD -m state --state NEW -m tcp -p tcp -s 192.168.10.0/24 --sport 1024:65535 -d 0/0 --dport 21 -j ACCEPT
Вывод tcpdump
 tcpdump -i eth0 host 213.234.241.211
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
12:46:54.917950 IP 192.168.10.251.42593 > fd.dlink.ru.ftp: Flags [S], seq 220922437, win 5840, options [mss 1460,sackOK,TS val 76588225 ecr 0,nop,wscale 6], length 0
12:46:57.924840 IP 192.168.10.251.42593 > fd.dlink.ru.ftp: Flags [S], seq 220922437, win 5840, options [mss 1460,sackOK,TS val 76591232 ecr 0,nop,wscale 6], length 0
12:47:03.941252 IP 192.168.10.251.42593 > fd.dlink.ru.ftp: Flags [S], seq 220922437, win 5840, options [mss 1460,sackOK,TS val 76597248 ecr 0,nop,wscale 6], length 0

vip71541 ()
Ответ на: комментарий от vip71541
iptables -F FORWARD
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --dport 21 -s 192.168.10.0/24 -j ACCEPT
service iptables save
tcpdump -i eth0 host 213.234.241.211 во время конекта

ну явно же что-то начудил с цепочкой FORWARD, как видно из вывода tcpdump, твой хост не может установить соединение на 21-й порт с dlink.ru, то есть на жлюзе фильтруется. За сим посылаю читать http://ru.wikipedia.org/wiki/Iptables.

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

Хорошо. Вот весе правила которые есть:

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
#
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -m state --state  ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
#
#
#	Allow ICMP!
-A INPUT -p icmp --icmp-type 0 -j ACCEPT
-A INPUT -p icmp --icmp-type 8 -j ACCEPT
-A OUTPUT -p icmp --icmp-type 0 -j ACCEPT
-A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
#
#
#	Allow local host!
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo  -j ACCEPT
#
#
#	SSH, Block SSH bots!
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --set --name SSH-Bots-Block
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -m recent --update --seconds 2400 --hitcount 1 --rttl --name SSH-Bots-Block -j REJECT
#
#
#	NTP update time!
-A INPUT -m state --state NEW -m udp -p udp --sport 123 -j ACCEPT
-A OUTPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT
#
#
#	Allow access for munin!
-A INPUT -m state --state NEW -s 192.168.10.0/24  -m tcp -p tcp --dport 80 --sport 1024:65535 -j ACCEPT
-A INPUT -m state --state NEW -s 192.168.10.0/24  -m udp -p udp --dport 80 --sport 1024:65535 -j ACCEPT
#	Allow access to port 8080!
-A INPUT -m state --state NEW -s 192.168.10.0/24  -m tcp -p tcp --dport 8080 --sport 1024:65535 -j ACCEPT
-A INPUT -m state --state NEW -s 192.168.10.0/24  -m udp -p udp --dport 8080 --sport 1024:65535 -j ACCEPT
-A INPUT -m state --state NEW -s 192.168.10.0/24  -m tcp -p tcp --dport 3128 --sport 1024:65535 -j ACCEPT
-A INPUT -m state --state NEW -s 192.168.10.0/24  -m udp -p udp --dport 3128 --sport 1024:65535 -j ACCEPT
#
#
#	Open update for local machines DNS!
-A INPUT -m state --state NEW -m tcp -p tcp --sport 53 --dport 1024:65535 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp --sport 1024:65535 --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --sport 53 --dport 1024:65535 -j ACCEPT
-A OUTPUT -m state --state NEW -m udp -p udp --sport 1024:65535 --dport 53 -j ACCEPT
#
#
#	Open DNS for local subnet!
-A INPUT -m state --state NEW -m udp -p udp -s 192.168.10.0/24 --sport 1024:65535 -d 192.168.10.8 --dport 53 -j ACCEPT
-A OUTPUT -m state --state NEW -m udp -p udp -s 192.168.10.8 --sport 53 -d 192.168.10.0/24 --dport 1024:65535 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -s 192.168.10.0/24 --sport 1024:65535 -d 192.168.10.8 --dport 53 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp -s 192.168.10.8 --sport 53 -d 192.168.10.0/24 --dport 1024:65535 -j ACCEPT
#
#
#	Opent 80, 443 ports!
-A INPUT -m state --state NEW -m tcp -p tcp --sport 1024:65535  --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --sport 1024:65535 --dport 80 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp --sport 1024:65535 --dport 80 -j ACCEPT
-A OUTPUT -m state --state NEW -m udp -p udp --sport 1024:65535 --dport 80 -j ACCEPT
#
#-A INPUT -m state --state NEW,ESTABLISHED -m tcp -p tcp --sport 1024:65535  --dport 443 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp --sport 1024:65535  --dport 443 -j ACCEPT
#
#
#	Open FTP Active,Passive!
-A INPUT -m state --state NEW -m tcp -p tcp --sport 21 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
#
-A INPUT -m state --state ESTABLISHED,RELATED -m tcp -p tcp --sport 20 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp --sport 20 -j ACCEPT
#
-A INPUT -m state --state ESTABLISHED -m tcp -p tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT
-A OUTPUT -m state --state ESTABLISHED,RELATED -m tcp -p tcp --sport 1024:65535 --dport 1024:65535 -j ACCEPT
##
#
-A INPUT -j REJECT --reject-with icmp-host-prohibited
#
#
#	Allow ftp for local subnet!
-A FORWARD -m conntrack --ctstate NEW -m tcp -p tcp -s 192.168.10.0/24 --sport 1024:65535 -d 0/0 --dport 21 -j ACCEPT
#
#
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
#
*nat
-A POSTROUTING -o eth1 -s 192.168.10.0/24 -j SNAT --to 89.28.205.*
#
#
COMMIT

там всего лишь два привила на цепочку FORWARD. Где я мог начудить?

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

Я всё написал выше, почитай статью на википедии + http://www.google.ru/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=fedora+iptables, прочитай про особенности конфигурирования iptables на red-hat-based дистрибутивов. Используй tcpdump, чай пригодится в будушем.

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