1、FTP连接及传输模式
1)控制连接:TCP 21,用于发送FTP命令信息
2)数据连接:TCP 20,用于上传、下载数据
2、数据连接的建立类型:
1)主动模式:服务端从 20 端口主动向客户端发起连接
2)被动模式:服务端在指定范围内某个端口被动等待客户端连接
3、FTP传输模式
1)文本模式:ASCII 模式,以文本序列传输数据
2)二进制模式:Binary 模式,以二进制序列传输数据
4、FTP 用户的类型
1)匿名用户:anonymous 或 ftp
2)本地用户:帐号、密码等保存在 passwd、shadow 文件中
3)虚拟用户:使用独立的帐号/密码数据文件
Windows服务器软件 linux下的ftp服务器
IIS serv-U Wu-ftpd vsftpd
Vsftpd 软件包
官方站点:http://vsftpd.beasts.org/
主程序:/usr/sbin/vsftpd
服务名:vsftpd
用户控制列表文件
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list
主配置文件
/etc/vsftpd/vsftpd.conf
yum -y install vsftpd
chown ftp /var/ftp/pub/
chmod 755 /var/ftp/pub/
vim /etc/vsftpd/vsftpd.conf
1. 匿名:
anonymous_enable=YES //开启匿名访问
local_enable=NO //不启用本地用户
anon_umask=022 //上传数据的权限掩码
anon_upload_enable=YES //上传文件
anon_mkdir_write_enable=YES // 创建目录
anon_other_write_enable=YES //写入、删除、改名
download_enable=NO //不允许下载文件
2. 本地:
local_enable=YES //开启本地用户访问
write_enable=YES //开放服务器写权限
local_umask=022
chroot_local_user=YES //是否将本地用户禁锢在宿主目录中
local_root=/var/ftp/pub //设置本地目录根目录(默认为用户家目录)
allow_writeable_chroot=YES //允许被限制用户的主目录具有写权限
download_enable=NO //不允许下载文件
systemctl restart vsftpd
netstat -anpt | grep "vsftpd"
验证:liunx客户端访问 ftp 192.168.4.1
windows客户端访问 ftp://zs:123@192.168.4.1
3.只允许zs访问,黑名单userlist
vim /etc/vsftpd/user_list
zs (其他用户删除)
vim /etc/vsftpd/vsftpd.conf
userlist_enable=YES
userlist_deny=NO
4.修改vsftpd服务的监听地址、端口
vim /etc/vsftpd/vsftpd.conf
listen=YES
listen_address=192.168.4.1
listen_port=2018
listen_ipv6=NO
验证:netstat -anpt | grep vsftpd
linux访问 ftp 192.168.4.1 2121
windows访问 ftp://192.168.4.1:2121
5.禁用被动模式
vim /etc/vsftpd/vsftpd.conf
pasv_enable=NO
默认直接配置被动模式的具体传输参数
pasv_min_port=24500
pasv_max_port=24600
6.限制FTP连接的并发数、传输速度
max_clients=20 //并发最多连接20个
max_per_ip=2 //每个ip地址的连接数最多两个
local_max_rate=200000 //本地用户传输速率为200kB/s
验证:ctrl+shift+t 开三个终端验证第二项
二.建立虚拟用户
1.创建文本格式用户名/密码
vim /etc/vsftpd/vusers.list
sb
123
sb250
456
2.创建通过db_load工具创建出Berkeley DB格式的数据库文件
cd /etc/vsftpd/
db_load -T -t hash -f vusers.list vusers.db
file vusers.db 查看转换后的文件类型
-f 指定数据源文件
-T 允许非Berkeley DB 的应用程序使用从文本格式转换的DB数据文件
-t hash 指定读取数据文件的基本方法
3.为了提高虚拟用户账号文件的安全性,设置文件权限为600,以免数据外泄
chmod 600 /etc/vsftpd/vusers.*
ls -lh /etc/vsftpd/vusers.*
4.添加虚拟用户的映射账号、创建FTP根目录
useradd -d /var/ftproot -s /sbin/nologin test
chmod 755 /var/ftproot
5.创建新的PAM(可插拔认证模块)
cd /etc/pam.d/
cp vsftpd vsftpd.vu
vi vsftpd.vu
#%PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
6.修改vsftpd配置,添加虚拟用户支持
vim /etc/vsftpd/vsftpd.conf
local_root=/var/ftproot
anon_umask=022
allow_writeable_chroot=YES
pam_service_name=/etc/pam.d/vsftpd.vu
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=test
7.为不同的虚拟用户建立独立的配置文件
vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir
(可以查找每个用户的独立配置文件)
mkdir /etc/vsftpd/vusers_dir
cd /etc/vsftpd/vusers_dir
vi sb
添加:anon_upload_enable=YES
anon_mkdir_write_enable=YES
touch sb250 /创建空配置文件
systemctl restart vsftpd
匿名用户sb250可以登录,并能够正常浏览、下载文件,但不能上传文件
匿名用户 sb可以登录,且可以正常浏览、下载文件,也可以上传文件