怎样设置iptables规则才能让ftp服务器正常传输数据?

发布于 2022-09-05 23:03:29 字数 3901 浏览 6 评论 6

本帖最后由 13025700481 于 2010-08-22 18:59 编辑

在服务器上有这样一条iptables规则。

109.png (43.36 KB, 下载次数: 4)

下载附件

2010-08-22 10:52 上传



$IPTABLES -A INPUT -p tcp --dport 21 --syn -m state --state NEW -j ACCEPT

这个按照我的理解应该是添加一条规则为“协议为tcp并且端口为21的只接受那些设置了SYN位而清除了ACK和FIN位的TCP的为了发起新连接的数据包”。
再结合上面的规则,不属于已建立的连接的数据包都要丢弃。

那时我不明白,以为只需要用到21端口。

再过了一段时间。

在没设置防火墙规则的时侯,发现用tcpdump监控流量,服务器会在20端口向客户机发送一个TCP连接请求,用它来传输数据。

119.png (12.27 KB, 下载次数: 4)

下载附件

2010-08-22 12:57 上传



而这个端口是被过滤的。

当我添加了一条规则后它却还是照样不行。


123.png (132.4 KB, 下载次数: 4)

下载附件

2010-08-22 13:05 上传



122.png (36.36 KB, 下载次数: 4)

下载附件

2010-08-22 13:05 上传



在服务器上用tcpdump查看,20端口还是没有被打开。因为没有数据包从那个端口发出。

之后在服务器上添加规则,单独列出20端口,让它完全暴露。

126.png (8.26 KB, 下载次数: 4)

下载附件

2010-08-22 18:16 上传



在客户机上用tcpdump查看,还是没有数据包从20端口发出,于是就无法列出文件了。

127.png (97.47 KB, 下载次数: 4)

下载附件

2010-08-22 18:15 上传



用iptables -L查看被启用的所有规则,20端口的向外的SYN数据包是被允许通过的啊。。。

128.png (10.12 KB, 下载次数: 4)

下载附件

2010-08-22 18:17 上传



但为什么就是不行呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

祁梦 2022-09-19 03:04:17

conntract机制可以保证

陌伤ぢ 2022-09-19 00:08:39

LZ 可以看一下 Linux 网络问题版置顶的《2 小时玩转 iptables》文档,里面有例子和详细的原理解释

没企图 2022-09-18 10:06:15

不知道LS说的是什么?

最好是你 2022-09-18 00:28:24

需要上下文吧?

帥小哥 2022-09-17 07:11:59

搞定。

#!/bin/sh

IPTABLES=/sbin/iptables
IP6TABLES=/sbin/ip6tables

echo "[+] Flushing existing iptables rules..."

$IPTABLES -F
$IPTABLES -F -t nat
$IPTABLES -X
$IPTABLES -P INPUT DROP
$IPTABLES -P OUTPUT DROP
$IPTABLES -P FORWARD DROP

echo "[+] Disabling IPv6 traffic..."

$IP6TABLES -P INPUT DROP
$IP6TABLES -P OUTPUT DROP
$IP6TABLES -P FORWARD DROP

echo "[+] Load connection-tracking modules..."
#Loading when boot
#Edit /etc/sysconfig/iptables-config
#Add:
#IPTABLES_MOUDULES="ip_conntrack_ftp"
modprobe ip_conntrack_ftp

echo "[+] Setting up INPUT chain..."

$IPTABLES -A INPUT -m state --state INVALID -j LOG --log-prefix "DROP INVALID " --log-ip-options --log-tcp-options --log-tcp-sequence
$IPTABLES -A INPUT -m state --state INVALID -j DROP
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A INPUT -p tcp --dport 21 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A INPUT -i eth0 -j LOG --log-prefix "DROP " --log-ip-options --log-tcp-options --log-tcp-sequence

$IPTABLES -A INPUT -i lo -j ACCEPT

echo "[+] Setting up OUTPUT chain..."

$IPTABLES -A OUTPUT -m state --state INVALID -j LOG --log-prefix "DROP INVALID " --log-ip-options --log-tcp-options --log-tcp-sequence
$IPTABLES -A OUTPUT -m state --state INVALID -j DROP
$IPTABLES -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A OUTPUT -p tcp --dport 21 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 22 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 25 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 43 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 80 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 443 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 4321 --syn -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
$IPTABLES -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT

$IPTABLES -A OUTPUT -o eth0 -j LOG --log-prefix "DROP " --log-ip-options --log-tcp-options --log-tcp-sequence

$IPTABLES -A OUTPUT -o lo -j ACCEPT

み青杉依旧 2022-09-14 21:20:07

iptables有个ftp的模块,楼主加载下看看

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文