LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1232|回复: 6

ftp用被动模式,iptables作代理应该怎么写?

[复制链接]
发表于 2004-2-10 22:25:06 | 显示全部楼层 |阅读模式
敬爱的版主先生,
    ftp用被动模式,iptables作NAT的时候应该怎么写才会比较安全?如果把TCP的所有端口都开着好像很危险的。我找过一些帖子,但好像都没有很好的解决这个问题。
先谢谢了。
发表于 2004-2-10 22:56:28 | 显示全部楼层
nat_ftp
conntarck_nat_ftp
会协调的  不需要开放端口 只要开21就可以了
 楼主| 发表于 2004-2-11 08:20:04 | 显示全部楼层

我的脚本是这样写的,可是就是不能连。我只得加了passive FTP那一段。请教版主怎么样

#!/bin/sh
#
# firewall starting firewall
#
# Serial: 2004021020
#
clear
echo "Staring iptables testing..."
echo "Setting refers..."
INNER_NET=192.168.1.0/24
FWALL_IP=172.16.92.128
INNER_PORT=eth0
OUTER_PORT=eth1
IPT="/sbin/iptables"
MODPROBE="/sbin/modprobe"

echo "Loading modules..."
$MODPROBE ip_tables
$MODPROBE iptable_filter
$MODPROBE ip_conntrack
$MODPROBE iptable_nat
$MODPROBE ip_nat_ftp
$MODPROBE ip_conntrack_ftp
$MODPROBE ipt_state
$MODPROBE ipt_MASQUERADE
$MODPROBE ipt_LOG
$MODPROBE ipt_REJECT
$MODPROBE ipt_limit

echo "Enable the functions..."
# premit ip masquerade
echo 1 > /proc/sys/net/ipv4/ip_forward
# reject ping broadcast
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
# check source ip
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do echo 1 > $f; done
# record impossible ip
for f in /proc/sys/net/ipv4/conf/*/log_martians; do echo "1" > $f; done
# reject ICMP redirect message
for f in /proc/sys/net/ipv4/conf/*/accept_redirects; do echo 1 > $f; done

echo "Make all chaines DROP"
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
$IPT -F
$IPT -F -t nat
$IPT -X

echo "Enabling NAT..."
$IPT -A FORWARD -o $OUTER_PORT -s $FWALL_IP -j ACCEPT
$IPT -A FORWARD -d $FWALL_IP -j ACCEPT
$IPT -t nat -A POSTROUTING -o $OUTER_PORT -s $INNER_NET -j MASQUERADE
$IPT -A FORWARD -i $INNER_PORT -o $OUTER_PORT -s $INNER_NET -j ACCEPT
$IPT -A FORWARD -d $INNER_NET -j ACCEPT

echo "Allow Outer_net connect localhost by firewall-ip."
$IPT -A INPUT -i $OUTER_PORT -p ICMP ! --icmp-type 8 -j ACCEPT
$IPT -A INPUT -i $INNER_PORT -p ICMP -j ACCEPT
$IPT -A INPUT -i lo -s $INNER_NET -j ACCEPT
$IPT -A INPUT -i $INNER_PORT -d $INNER_NET -j ACCEPT
$IPT -A INPUT -i $OUTER_PORT -p ICMP -j LOG --log-prefix "BAD INPUT PACKAGES:"

echo "Allow to connect outer_net."
$IPT -A OUTPUT -o $OUTER_PORT -s localhost -j ACCEPT
$IPT -A OUTPUT -d $INNER_NET -p ICMP -j ACCEPT
$IPT -A OUTPUT -s $FWALL_IP -p ICMP -j ACCEPT
$IPT -A OUTPUT -o $OUTER_PORT -d $INNER_NET -j ACCEPT

echo "Open TCP connection for this server to other server on the internet."
$IPT -A OUTPUT -o $OUTER_PORT -p tcp -d any/0 --dport 0:1024 -s $FWALL_IP -j ACCEPT
$IPT -A INPUT -i $OUTER_PORT -p tcp ! --syn -s any/0 --sport 0:1024 -d $FWALL_IP -j ACCEPT

echo "Open UDP connection for this server to other server on the internet."
$IPT -A OUTPUT -o $OUTER_PORT -p udp -d any/0 --dport 0:1024 -s $FWALL_IP -j ACCEPT
$IPT -A INPUT -i $OUTER_PORT -p udp -s any/0 --sport 0:1024 -d $FWALL_IP -j ACCEPT

echo "Allow passive mode FTP." #It's too dangers, but I have no idea.
$IPT -A OUTPUT -o $OUTER_PORT -p tcp -s $FWALL_IP --sport 1024:65535 -d any/0 --dport 1024:65535 -j ACCEPT
$IPT -A INPUT -i $OUTER_PORT -p tcp ! --syn -s any/0 --sport 1024:65535 -d $FWALL_IP --dport 1024:65535 -j ACCEPT

echo "Loading limits of ping..."
$IPT -A INPUT -m limit --limit 10/m --limit-burst 10 -p ICMP -j LOG --log-prefix "ing packet died: "

echo
echo
echo
echo "          **********   Congratulations! It works now!   **********"
echo
echo
echo

exit 0
 楼主| 发表于 2004-2-12 10:37:17 | 显示全部楼层

请大家帮帮我呀!

现在我的客户端可以访问正常访问外界的FTP服务器,但是拨号服务器本身却不能使用被动模式传送文件。大家救救我呀。:help
发表于 2004-2-13 13:48:10 | 显示全部楼层
 楼主| 发表于 2004-2-13 17:48:16 | 显示全部楼层

真是太感谢了

这正我是需要的,我以前怎么就没用google查到呢?看来我查找的能力也需要再练一练了。
谢谢版主了。
发表于 2004-2-13 23:09:41 | 显示全部楼层
上面那地址里很多关于iptables和网络的,你可以再看看,肯定收获不少
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表