FTP服务器
FTP连接及传输模式
本文内容:匿名用户、本地用户、虚拟用户、黑白名单
控制连接
TCP21
用于发送FTP命令信息
数据连接
TCP20
用于上传,下载数据
数据连接的建立类型
主动模式
服务器主动发起数据连接
首先由客户端向服务端的21端口建立FTP控制连接。客户端以PORT命令告知服务器。于是服务器从20端口。向客户端的该端口发送请求并建立数据连接
被动模式
服务器被动等待数据连接
如果客户端所在网络的防火墙禁用主动模式连接,通常会使用被动模式
首先由客户端向服务器21端口建立FTP控制连接。当需要传输数据时,服务器以被动命令告知客户端,于是客户端向服务器的该端口(非20)发送请求并建立数据连接
FTP用户类型
匿名用户
用户名未ftp或匿名提供任意密码都可以通过服务器验证,一般用于公共文件的下载
本地用户
直接使用本地的系统用户账户进行验证
虚拟用户
通过一份独立的用户数据库文件进行登陆验证,将FTP账户与Linux系统账户的管理学降至最低,为系统提供提供更好的安全性
安装服务
yum -y install vsftpd ftp
准备匿名FTP访问的目录
cd /var/ftp/ chown ftp pub/
cp vsftpd.conf{,.ori} 备份
匿名用户
开放匿名用户配置
vim vsftpd.conf
12.anorymous_enable=YSE 匿名用户登陆
29.anon_upload_enable=YES 允许匿名上传
30.anon_umak=000 权限掩码
34.anon_mkdir_write_enable=YES 允许其他人创建
35.anon_other_write_enable=YES 允许其他人写入
本地用户
恢复备份
cp vsftpd.conf.ori vsftpd.conf
vim vsftpd.conf
16.local_enavle=YES 允许本地用户上传
19.write_enavle=YES 允许本地用户修改
23.local_umask=022
103.chroot_local_user=YES 将用户锁在用户家目录中
104.allow_writeavle_chroot=YES 允许写入家目录
虚拟用户登录
虚拟用户使用Berkeley DB个数的数据库文件来存放虚拟用户账号,使用db_load工具生成数据库文件。
恢复备份
cp vsftpd.conf.ori vsftpd.conf
vim vsftpd.conf
输入匿名用户的配置,除了不允许其他人登录
cd /etc/vsftpd
vim vusers.txt
zhangsan 123 lisi 123 wangwu 123
db_load -T -t hash -f vusers.txt vusers.db
讲用户名相关文件修改为600权限
chmod 600 vusers.*
添加映射账号,为FTP根目录修改权限
useradd -d /var/ftproot -s /sbin/nologin vuser
增加PAM认证
cp /etc/pam.d/vsftpd{,.vu} 备份
vim /etc/pam.d/vsftpd.vu
#%PAM-1.0 auth required pam_userdb.so db=/etc/vsftpd/vusers account required pam_userdb.so db=/etc/vsftpd/vusers
#自动会识别后边的.db后缀,不要手动添加
修改vsfptd.conf配置文件
126 pam_service_name=vsftpd.vu 127 guest_enable=YES 128 guest_username=vuser 129 allow_writeable_chroot=YES 130 user_config_dir=/etc/vsftpd/vusers_dir/
实现每个虚拟用户不同根目录,不全权限的管控
创建用户控制目录,并创建虚拟所对应的同名配置文件
cd /etc/vsftpd
mkdir vusers_dir
vim vusers
anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_root=/ftp/zhangsan
mkdir -p /ftp/zhangsan
chown vuser /ftp/zhangsan
黑白名单
ftpusers文件:FTP服务器中的黑名单,优先级高于user_list文件
user_list文件:此用户列表默认情况下也是黑名单,即在此用户列表中的用户不可访问FTP服务器,但可以通过vsftpd.conf主配置文件的修改将此名单改为白名单,且仅此名单中的用户可以访问。
修改配置文件
vim vsftpd.conf
130 userlist_enable=YES 131 userlist_deny=NO
关闭防火墙与安全机制
systemctl stop firewalld setenforce 0
查看服务是否开启
netstat -anpt | grep :21
测试自身是否可以登陆
ftp 127.0.0.1
使用windows访问测试
打开资源管理器测试是否可以创建目录,下载,删除可以即为成功,反之创建失败
扩展配置文件中的其他配置
listen=YES listen_address=192.168.1.108 listen_port=2121 //设置监听端口 pasv_enable=YES //是否开启被动模式 pasv_min_port=24500 //被动模式端口下限 pasv_max_port=24600 //被动模式端口上限 max_clients=2000 //最大15000,最大客户连接数,一般不限制 max_per_ip=2 //每个ip限制最多打开几个客户端工具,一般不限制 anon_max_rate=50000 //匿名最大传输速率,一般不限制 local_max_rate=20000 //本地用户最大传输速率,一般不限制