CentOS - 通过 IPtables 允许 FTP 访问

CentOS - 通过 IPtables 允许 FTP 访问

抱歉,问了这么愚蠢的问题,但我无法在 CentOS 6.5 上从浏览器打开我的 FTP (ProFTPd)。当我停止 IPtables 时,我没有遇到问题,但运行时就会出现问题。

端口21开放,端口20未开放(我不知道如何打开它)。

编辑1:

“iptables -L -n”的输出

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:21 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:8000 
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

编辑 2:@HBruijn 他的方式对我有用。

答案1

您的问题表述得不太好,但您描述的症状表明被动 FTP 与防火墙结合时无法正常工作。

通常,该命令insmod nf_conntrack_ftp足以在配置不当的 RHEL6 或 CentOS 防火墙中加载 FTP 辅助模块。

为了使其持久:

编辑配置文件/etc/sysconfig/iptables-config并将辅助模块添加nf_conntrack_ftp到 IPTABLES_MODULES 变量:

IPTABLES_MODULES="nf_conntrack_ftp"

或将其添加到已列出的任何其他模块中。

答案2

您可以直接编辑 iptables 配置文件/etc/sysconfig/iptables,然后重新启动 iptables 服务。或者修改并保存正在运行的配置。以 root 身份或 sudo 身份:

# If using a custom chain for this sort of thing, APPEND port to chain:
iptables -A MYCHAIN -m state --state NEW -p tcp --dport 20 -j ACCEPT
service iptables save

如果你的 INPUT 链中有一个 REJECT 行,你需要确保添加到防火墙的端口插入在 REJECT 之前:

# List the Chain with line numbers
iptables -L INPUT -n --line-numbers

# in this example 7 is REJECT line from the above,  this will push the REJECT line down
# and insert this right above it:
iptables -I INPUT 7 -m state --state NEW -p tcp --dport 20 -j ACCEPT
service iptables save

如果需要的话,也不要忘记做同样的事情ip6tables

相关内容