IOT*_*MAN 27 linux iptables centos ftp
我当前的场景涉及允许各种规则,但我需要可以从任何地方访问 ftp。操作系统是 Cent 5,我使用的是 VSFTPD。我似乎无法获得正确的语法。所有其他规则都能正常工作。
## Filter all previous rules
*filter
## Loopback address
-A INPUT -i lo -j ACCEPT
## Established inbound rule
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
## Management ports
-A INPUT -s x.x.x.x/24 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/23 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s x.x.x.x/23 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/23 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
## Allow NRPE port (Nagios)
-A INPUT -s x.x.x.x -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT
-A INPUT -s x.x.x.x -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT
##Allow FTP
## Default rules
:INPUT DROP [0:0]
:FORWARD DROP
:OUTPUT ACCEPT [0:0]
COMMIT
Run Code Online (Sandbox Code Playgroud)
以下是我尝试过的规则。
##Allow FTP
-A INPUT --dport 21 any -j ACCEPT
-A INPUT --dport 20 any -j ACCEPT
-A INPUT -p tcp --dport 21 -j ACCEPT
-A INPUT -p tcp --dport 20 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
-A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 20 -j ACCEPT
-A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 21 -j ACCEPT
-A INPUT -s 0.0.0.0/0 -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -s 0.0.0.0/0 -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
Eva*_*son 42
这是我向人们推荐的文档,以便他们可以遵循 FTP 协议:http : //slacksite.com/other/ftp.html
你没有任何关于:你的 OUTPUT 链在你的帖子中,所以我也会在这里包括它。如果您的 OUTPUT 链是 default-drop,那么这很重要。
将这些规则添加到您的 iptables 配置中:
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
为了支持被动模式的 FTP,你需要在启动时加载 ip_conntrack_ftp 模块。取消注释并将 /etc/sysconfig/iptables-config 文件中的 IPTABLES_MODULES 行修改为:
IPTABLES_MODULES="ip_conntrack_ftp"
Run Code Online (Sandbox Code Playgroud)
保存 iptables 配置并重新启动 iptables。
service iptables save
service iptables restart
Run Code Online (Sandbox Code Playgroud)
要完全排除 VSFTPD 的问题,请停止 VSFTPD,使用“netstat -a”验证它没有侦听端口 21,然后运行:
nc -l 21
Run Code Online (Sandbox Code Playgroud)
这将启动 netcat 侦听端口 21,并将输入回显到您的 shell。从另一台主机,通过 TELNET 连接到服务器的端口 21,并验证您是否获得了 TCP 连接,并且在您输入 TELNET 连接时是否在 shell 中看到了输出。
最后,重新启动 VSFTPD,确认它正在侦听端口 21,然后再次尝试连接。如果与 netcat 的连接有效,那么您的 iptables 规则就可以了。如果在 netcat 完成后与 VSFTPD 的连接不起作用,则说明您的 VSFTPD 配置有问题。
| 归档时间: |
|
| 查看次数: |
98295 次 |
| 最近记录: |