需要使用防火墙的状态跟踪功能(Connection Tracking)
需要启用state模块。state的参数如下:
- NEW
TCP:SYN连接报文。 - ESTABLISHED
TCP完成三次握手连接建立。 - RELATED
相关的报文。比如FTP命令通道交互后形成的数据通道交互,就是相关报文。 - INVALID
无效报文。
加载内核模块
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
lsmod | grep ftp
iptables的策略配置(在运行FTP Server的主机上配置)
可以把filter表(默认)的OUTPUT链(Chain)和FORWARD链(Chain)的默认策略放开——policy ACCEPT,只控制INPUT链(Chain)。
iptables -P INPUT DROP
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 21 -j ACCEPT
# iptables -A OUTPUT -d 192.168.0.0/24 -p tcp --sport 21 -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT