net.netfilter.nf_conntrack_helper=1 存在安全风险吗?

net.netfilter.nf_conntrack_helper=1 存在安全风险吗?

对于具有匿名 ftp 服务器 (vsftpd) 的公共文件存档,我需要恢复被动 ftp,它在一段时间前将 Ubuntu 16 LTS 升级到 18 LTS 后停止工作(随后将升级到 20)。SE 网络周围的先前答案表明,除了在内核和防火墙中配置连接跟踪外,还应在核心 设置系统控制 配置

然而,这经常引用的文章关于使用助手的说明指出“这不是最佳选择,甚至存在安全风险”。这一点在这个答案,但我发现在这种情况下没有其他答案对设置 net.netfilter.nf_conntrack_helper = 1 有这样的保留。

所以我不确定:使用起来是否安全或者有风险?

除非我启用 nf_conntrack_helper,否则被动 ftp 会被 UFW 阻止。或者 conntrack 配置中存在其他疏忽?

背景

带有 ftp 模块的内核 4.15.x:

$ lsmod | grep ftp
nf_nat_ftp             16384  0
nf_nat                 28672  1 nf_nat_ftp
nf_conntrack_ftp       16384  1 nf_nat_ftp
nf_conntrack          110592  9 nf_conntrack_ipv6,nf_conntrack_ftp,nf_conntrack_ipv4,nf_conntrack_broadcast,nf_nat_ftp,nf_conntrack_netbios_ns,xt_CT,xt_conntrack,nf_nat

vsftpd 限制了 pasv 端口范围:

pasv_min_port=49152
pasv_max_port=60999

UFW 中的相关配置行规则之前

*filter
:ufw-before-input - [0:0]
:ufw-before-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-not-local - [0:0]

-A ufw-before-input -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-output -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A ufw-before-forward -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

用户规则

### tuple ### allow tcp 21 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 21 -j ACCEPT

规则之后

*raw
-A PREROUTING -p tcp --dport ftp -j CT -helper ftp
COMMIT

*filter
:ufw-after-input - [0:0]
:ufw-after-output - [0:0]
:ufw-after-forward - [0:0]

-A ufw-after-input -m conntrack --ctstate RELATED -m helper --helper ftp -p tcp -d <IP-address> --dport 49152:60999 -j ACCEPT

相关内容