首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iptables nf_conntrack_ftp不工作?

iptables nf_conntrack_ftp不工作?
EN

Server Fault用户
提问于 2017-12-09 10:04:45
回答 1查看 11K关注 0票数 1

我对带有被动FTP的iptables做了很多研究,但都归结为使用nf_conntrack_ftp和允许相关/建立的连接。

但不知怎么我的服务器不工作了..。

然而,奇怪的是:

代码语言:javascript
复制
# cat /proc/net/ip_tables_matches
conntrack
conntrack
conntrack
multiport
udplite
udp
tcp
icmp

# modprobe nf_conntrack_ftp

# echo $?
0

# cat /proc/net/ip_tables_matches
conntrack
conntrack
conntrack
multiport
udplite
udp
tcp
icmp

==>所以没有连接-ftp模块加载?对吗?

然后,我将这些规则添加到iptable中:

代码语言:javascript
复制
-A INPUT -p tcp --dport 21 -m state --state ESTABLISHED,NEW -j ACCEPT [was there already anyhow]
-A INPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -p tcp --dport 1024: -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

这就是我在客户端看到的:

代码语言:javascript
复制
[10:47:59] [R] 227 Entering Passive Mode (88,198,90,5,131,43).
[10:47:59] [R] Opening data connection IP: 88.198.90.5 PORT: 33579
[10:48:20] [R] Data Socket Error: Connection timed out
[10:48:21] [R] List Error
[10:48:21] [R] PASV mode failed, trying PORT mode.
[10:48:21] [R] Listening on PORT: 52317, Waiting for connection.
[10:48:21] [R] PORT 192,168,178,50,204,93
[10:48:21] [R] 200 PORT command successful. Consider using PASV.

因此,PASV无法工作(超时并返回到端口)。

"iptables -m conntrack帮助“给了我信息,但是nf_conntrack_ftp,nf_conntrack,conntrack_ftp都给了我:

代码语言:javascript
复制
iptables v1.6.0: Couldn't load match `...':No such file or directory

输入策略是删除,输出是接受..。

代码语言:javascript
复制
# ls -1 /lib/modules/`uname -r`/kernel/net/netfilter/
ipset
ipvs
nf_conntrack_amanda.ko
nf_conntrack_broadcast.ko
nf_conntrack_ftp.ko
nf_conntrack_h323.ko
nf_conntrack_irc.ko
nf_conntrack.ko
nf_conntrack_netbios_ns.ko
nf_conntrack_netlink.ko
nf_conntrack_pptp.ko
nf_conntrack_proto_dccp.ko
nf_conntrack_proto_gre.ko
nf_conntrack_proto_sctp.ko
nf_conntrack_proto_udplite.ko
nf_conntrack_sane.ko
nf_conntrack_sip.ko
nf_conntrack_snmp.ko
nf_conntrack_tftp.ko
nf_dup_netdev.ko
nf_log_common.ko
nf_nat_amanda.ko
nf_nat_ftp.ko
nf_nat_irc.ko
nf_nat.ko
nf_nat_proto_dccp.ko
nf_nat_proto_sctp.ko
nf_nat_proto_udplite.ko
nf_nat_redirect.ko
nf_nat_sip.ko
nf_nat_tftp.ko
nfnetlink_acct.ko
nfnetlink_cthelper.ko
nfnetlink_cttimeout.ko
nfnetlink.ko
nfnetlink_log.ko
nfnetlink_queue.ko
nf_synproxy_core.ko
nf_tables_inet.ko
nf_tables.ko
nf_tables_netdev.ko
nft_compat.ko
nft_counter.ko
nft_ct.ko
nft_dup_netdev.ko
nft_exthdr.ko
nft_fwd_netdev.ko
nft_hash.ko
nft_limit.ko
nft_log.ko
nft_masq.ko
nft_meta.ko
nft_nat.ko
nft_numgen.ko
nft_queue.ko
nft_quota.ko
nft_redir.ko
nft_reject_inet.ko
nft_reject.ko
nft_set_hash.ko
nft_set_rbtree.ko
x_tables.ko
xt_addrtype.ko
xt_AUDIT.ko
xt_bpf.ko
xt_cgroup.ko
xt_CHECKSUM.ko
xt_CLASSIFY.ko
xt_cluster.ko
xt_comment.ko
xt_connbytes.ko
xt_connlabel.ko
xt_connlimit.ko
xt_connmark.ko
xt_CONNSECMARK.ko
xt_conntrack.ko
xt_cpu.ko
xt_CT.ko
xt_dccp.ko
xt_devgroup.ko
xt_dscp.ko
xt_DSCP.ko
xt_ecn.ko

我希望有人能指出我做错了什么.

非常感谢!

编辑:我的当前设置:

代码语言:javascript
复制
# Generated by iptables-save v1.6.0 on Sat Dec  9 18:25:25 2017
*raw
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Sat Dec  9 18:25:25 2017
# Generated by iptables-save v1.6.0 on Sat Dec  9 18:25:25 2017
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -s 127.0.0.1/32 -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p udp -m udp --sport 53 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p udp -m udp --dport 123 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1024:65535 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Sat Dec  9 18:25:25 2017
EN

回答 1

Server Fault用户

回答已采纳

发布于 2017-12-09 19:15:18

我认为,在某个时候,nf_conntrack_*模块已经更改,因此现在必须明确指定特殊协议的端口号。

对于FTP,我的/etc/modprobe.d/iptables.conf文件中有以下模块选项行:

代码语言:javascript
复制
options nf_conntrack_ftp ports=21

它告诉nf_conntrack_ftp模块特别是在端口21中期望FTP控制流量。它过去是默认的,但我认为在2012年左右的时候,默认设置已经被删除,而倾向于显式配置。

在内核版本3.5中,可以禁用自动连接辅助分配,目前的做法是默认禁用它。

请参阅:https://home.regit.org/netfilter-en/secure-use-of-helpers/

根据这一点,甚至可能有必要(或者至少更可取)显式调用iptables转发规则中的适当连接跟踪助手。这样,您就可以指定使用助手的确切情况,从而将欺骗的风险降到最低。

票数 4
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/887309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档