1. 环境
操作系统: CentOS 6.10
安装 ftp 服务:
rpm -ivh vsftpd-2.2.2-24.el6.x86_64.rpm
安装 tftp 服务:
rpm -ivh xinetd-2.3.14-40.el6.x86_64.rpm
rpm -ivh tftp-server-0.49-8.el6.x86_64.rpm
2. FTP NAT ALG 应用
ftp 服务配置
1. 配置为被动模式,指定监听端口范围
2. 默认ftp目录加权限:chown -R ftp:ftp /var/ftp/*
3. 网关指向对外防火墙
4. 关闭系统 selinux
对外防火墙配置
1. 对外映射 ftp 服务的 tcp 21 端口
2. 加载 alg 模块 modprobe nf_nat_ftp
配置文件示例
示例使用匿名用户登录,并有上传和下载权限。
cat /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
chroot_local_user=YES
use_localtime=YES
#tcp_wrappers=YES
port_enable=NO
pasv_enable=YES
pasv_min_port=6000
pasv_max_port=6010
#pasv_address=172.18.0.63
其他参数说明:
anon_root=/ftpfile # 使用匿名登入时,指定所登入的目录
local_root=/ftpfile # 当使用本地用户登入时,指定所登入的目录,默认为各用户家目录
use_localtime=YES # 默认是GMT时间,改成使用本机系统时间
【主动模式】
pasv_enable=NO # 关闭被动模式
port_enable=YES # 打开主动模式 Default:YES
connect_from_port_20=YES # 主动模式数据端口
【被动模式】
pasv_enable=YES #打开被动模式
pasv_min_port=6000 #被动模式服务端监听端口范围
pasv_max_port=6010
FTP 主动模式 和 被动模式
PORT 主动模式:
1. 客户端告诉服务器自己的地址和开放的端口等待FTP服务器来建立连接(PORT报文)。
2. 服务器端主动用自己的IP地址加上端口20来和客户端建立数据连接。
PASV 被动模式:
1. 服务器告诉客户端自己的地址和开放的端口,等待客户端来建立连接(PASV报文)。
2. 客户端使用自己的IP地址加任意端口和服务器端建立数据连接。
3. TFTP NAT ALG 应用
tftp 服务配置
1. tftp配置可上传文件,指定监听端口范围
2. tftp目录加权限:chmod 777 -R /var/lib/tftpboot
3. 网关指向对外防火墙
4. 关闭系统 selinux
对外防火墙配置
1. 对外映射 tftp 服务的 udp 69 端口
2. 加载 alg 模块 modprobe nf_nat_tftp
配置文件示例
cat /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot -R 6020:6030 -c
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
-R 指定端口范围
-c 允许上传文件
# 重启服务
service xinetd restart