Active FTP tűzfal mögül - Megoldva

Fórumok

Sziasztok!

RTFM az elmúlt egy napban megvolt, megoldásra azonban nem jutottam.
A probléma:
Adott egy active ftp szerver, amire tűzfal mögül kell felcsatlakoznom. A felcsatlakozás rendben lezajlik, feltöltés rendesen megy, azonban amint le akarok tölteni valamit, a kapcsolat megáll. A csomagok log szerint a külső ip-re vannak címezve. ip_conntrack_ftp modul betöltve, az adott szerver felé minden (INPUT, OUTPUT, FORWARD) lánc engedélyezve.
Megbuktam, :( szabad a gazda, mi a megoldás? Hogyan kell engedélyezni az active ftp-t?

2. második felvonás:
A proxy/tűzfal gépben megfeküdt a hdd, így egy másik gép lett beállítva. A hálókártya úgy tűnik szintén haldoklott, mert ugyanaz a script fut a másik gépen is, és megy az active ftp. Illetve megyeget, mert meghatározatlan időközönként egyszerűen leáll. Nagy fájlokkal látszólag rendben van, de <1Kb alatt random leállások vannak. A szabályok:

#! /bin/sh

### BEGIN INIT INFO
# Provides: firewall
# Required-Start:
# Required-Stop:
# Default-Start: 3
# Default-Stop: 0 1 2 6
# Description: Firewall
### END INIT INFO

LAN_IP_NIC='eth0'
WAN_IP_NIC='ppp+'
WAN_IP='x.x.x.x'

case "$1" in
start)
################
# Flush chains #
################

iptables -F
iptables --delete-chain

##########################
# Load conntrack module #
##########################

modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

##################
# Default policy #
##################

# Flush
iptables -t nat -F POSTROUTING
iptables -t nat -F PREROUTING
iptables -t nat -F OUTPUT
iptables -F

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

######################
# Localhost enabled #
######################

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

###################
# OpenVPN enabled #
###################

iptables -A INPUT -i tun0 -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -j ACCEPT

##############
# Masquerade #
##############

iptables -t nat -A POSTROUTING -o $WAN_IP_NIC -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to -port 3128

###############
# Invalid SYN #
###############

iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# syn-flood vedelem
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT

# Titkos port scan
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --li mit 1/s -j ACCEPT

# DoS elleni vedelem
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/ s -j ACCEPT

###############
# INPUT CHAIN #
###############

iptables -A INPUT -p icmp -j ACCEPT

# ESTABLISHED
iptables -A INPUT -p all -i $LAN_IP_NIC -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i $WAN_IP_NIC -p tcp -m multiport --dport 20,21,22,25 ,53,80,110,123,143,443,465,993,995,10000 -m state --state NEW,ESTABLISHED,RELATE D -j ACCEPT
iptables -A INPUT -i $WAN_IP_NIC -p udp --dport 1194 -j ACCEPT

################
# OUTPUT CHAIN #
################
iptables -A OUTPUT -j ACCEPT -p all

###################
# Port forwarding #
###################
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p all -i $LAN_IP_NIC -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

########################
# Enable IP Forwarding #
########################

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

;;
stop)
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
;;
restart)
/etc/init.d/firewall stop
/etc/init.d/firewall start
;;
esac

3. harmadik felvonás: A megoldás!
Csak egy sor:
iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1452
És működik... :D

Hozzászólások

Nem lehet hogy a tuzfalad folott van egy masik tuzfal, (szolgaltato etc.) amin meg nincs betoltve? tcpdumpereld a tuzfal kulso interfacet amikor letolteni probalsz hogy oda meg eljut e a valasz...
==
`Have some wine,' the March Hare said in an encouraging tone.
Alice looked all round the table, but there was nothing on it but tea.

Mert amint a mellékelt ábra mutatja

A szerver kapcsolatot kezdeményez a kliens (a Te esetedben a tűzfalad) egy 1024 fölötti portjára. Azt kellene forwardolni a kliensre...

--
maszili

Egy lehetséges megoldás...


$iptables -t nat -A PREROUTING -i ${BAD_IF} -d ${BAD_IP} -p tcp --sport ftp-data -j DNAT --to ${FTP}

BAD_IF = Hálózati interfész neve ami az internet felé néz
BAD_IP = Hálózati interfész IP címe ami az internet felé néz
FTP = Belső hálózaton lévő gép IP címe amin az ftp kliens fut

--
maszili

http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch14_:_…
alapjan neked nem is az a modul kell hanem a


# Module to track the state of connections
modprobe ip_conntrack

# Load the iptables active FTP module, requires ip_conntrack
modprobe ip_conntrack_ftp

paros, de egyebkent iptables-hez nem ertek uh ez csak otlet...
==
`Have some wine,' the March Hare said in an encouraging tone.
Alice looked all round the table, but there was nothing on it but tea.

hasznalj pf-et iptables helyett :P

--
Bow down and admit defeat. | Old, weak and obsolete.

Hi

Leeht teljesen hulyeseget mondok, de miert nem hasznalsz passziv ftp-t. Ugy hallottam hogy az aktiv ftp kiment a divatbol, mivel nem illik a szerver felol kapcsolatot kezdemenyezni. Aktiv ftp-nel mikor feltoltol a szerverre akkor a kliens kezdemenyez es a szerver fogadja a kapcsolatot. Viszont letoltesnel meg a szerver akar feltolteni a kliensre, mert a szerver kezdemnyezi a kapcsolatot, es ezt nem szeretik a kliens oldalon.
Passziv ftp-nel a letoltest is a kliens kezdemenyezi, ezert az megy.

Szerintem meg nézz körül a TCPMSS környékén is - hátha a csomag mérettel van valahol útközben gond. A man által ajánlott megoldás:
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu