在实际工作中,可用以下脚本架设一台很安全的内部FTP服务器;当然也可以配合Wireshark理解vsftpd的被动与主动的区别,以本机192.168.0.10为例,脚本如下#!/bin/bash
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
#开启ip转发功能
echo "1" > /proc/sys/net/ipv4/ip_forward
#加载ftp需要的一些模块功能
modprobe ip_conntrack_ftp
modprobe ip_conntrack-tftp
modprobe ip_nat_ftp
modprobe ip_nat_tftp
#为了更安全,将OUTPUT默认策略定义为DROP
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD ACCEPT
#开放本机的lo环回口,建议开放,不开放的会出现些莫名其妙的问题
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#下面的脚本是架设安全的vsftpd关健,后二句脚本是放行服务器向客户端作回应的和已建立连接的数据包,因被动FTP比较复杂,六次握手,所以这里采用状态来做
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 RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
※在实际生产环境中,服务器用iptabes作安全防御时,output链状态默认是ACCEPT的,此脚本教学意义多于生产;建议配合wireshark更好的理解vsftpd的主动和被动的区别