版权声明:Firewine 的博客,想要转载请标明出处 https://blog.csdn.net/xyjworkgame/article/details/89388855
VSFTP服务
一、FTP简介与原理
FTP简介
- FTP 为文件传输协议 ,用于Internet 上的控制文件的双向传输
模式
- 主动模式 : 服务端 从20端口 主动向客户端发起连接
- 被动模式 :服务端在指定范围内某个端口被动等待客户端连接
端口
- 控制连接 : TCP 21 ,用户发送FTP命令信息
- 数据连接 :TCP 20 , 用户上传 ,下载数据
二、FTP相关文件
常见的FTP服务器程序
- IIS 、Serv-U
- wu-ftpd 、 Proftpd
- vsftpd
安装
vsftpd
相关文件
- 主配置文件
- /etc/vsftpd/vsftpd.conf
- 用户控制列表文件
- /etc/vsftpd/ftpusers
- /etc/vsftpd/user_list
FTP相关用户
- 匿名
- anonymous 或ftp
- 本地用户
- 使用Linux系统用户和密码
- 虚拟用户
- 管理员自定义的模拟用户
注意事项
- 关闭防火墙(或者放行关于这个服务)
- 关闭SELinux
三、配置文件详解
默认配置文件
- anonymous_enable = YES
- 容许匿名用户登陆
- local_enable = YES
- 容许本地用户登录
- write_enable=YES
- 容许本地用户上传
- local_umask =022
- 本地用户上传umask值
- dirmessage_enable =YES
- 用户进入目录,显示.message文件中的信息
- message_file=.message
- 指定信息文件
- xferlog_enabel = YES
- 激活记录日志
- connect_from_port_20 = YES
- 主动模式数据传输接口
- xferlog_std_format=YES
- 使用标准的ftp日志格式
- ftpd_banner
- 登录欢迎信息
- listen=YES
- 容许被监听
- pam_service_name= vsftpd
- 设置PAM 外挂模块提供的认证服务所使用的配置文件名,即/etc/pam.d/vsftpd 文件
- userlist_enable = YES
- 用户登录限制
- tcp_wrappers=YES
- 使用使用tcp_wrappers作为主机访问控制方式
常用全局配置
- listen_address=192.168.1.1
- 设置监听的IP地址
- list_port=21
- 设置监听FTP服务的端口号
- download_enable = YES
- 是否容许下载文件
- max_clients=0
- 限制并发客户端连接数
- max_per_ip = 0
- 限制同一IP 地址的并发连接数
被动模式
- pasv_enable =YES
- 开启被动模式
- pasv_min_port=24500
- 被动模式最小端口
- pasv_max_port=24600
- 被动模式最大端口
常用安全配置
- accept_timeout = 60
- 被动模式,连接超时时间
- connect_timeout = 60
- 主动模式,连接超时时间
- idle_session_timeout=600
- 600秒没有任何操作就端口连接
- data_connection_timeout=500
- 资料传输时,超过500秒没有完成,就断开传输
四、客户端使用
-
命令行连接
-
ftp IP
help 获取帮助 get 下载 mget 下载一批文件 put 上传 mput 上传一批文件 exit 退出
-
-
winSCP
-
win直接从使用ftp://IP
五、匿名用户访问
基本配置
- anonmous_enable
- 容许匿名用户访问
- anon_upload_enable
- 容许匿名用户上传
- anon_mkdir_write_enable=YES
- 容许匿名用户建立目录
- anon_umask
- 设置上传的默认文件权限(默认600)
注意事项
- 默认上传目录 : /var/ftp/pub
- 如果容许上传,需要服务权限和系统目录同时容许
- Vsftpd 服务的伪用户是ftp
六、本地用户访问
1.本地用户基本设置
-
本地用户基本配置
local_enable = YES 容许本地用户登录 write_enable=YES 容许本地用户上传 local_umask=022 本地用户上传umask值 local_root = /var/ftp 设置本地用户的FTP根目录 local_max_rate = 0 限制最大传输速率 -
把用户限制在家目录
- chroot_local_user = YES
- 开启用户目录限制
- chroot_local_user=YES
- chroot_list_enable=YES
- chroot_list_file=/etc/vsftpd/chroot_list
- 写入这个文件中的用户可以访问任何目录,其他用户限制在用户主目录
- chroot_local_user = YES
2. 用户访问控制
1. FTP相关文件
- 用户控制列表文件
- /etc/vsftpd/ftpusers
- /etc/vsftpd/user_list
2. 访问控制
- userlist_enable=YES
- 开启用户访问控制
- userlist_deny=YES
- Userlist_file=/etc/vsftpd/user_list
- 写入这个文件中的用户不能访问ftp服务器,
- userlist_enable =YES
- userlist_deny=NO
- 当userlist_enable为YES,userlist_deny为NO时,FTP服务器仅允许user_list中的用户访问
- userlist_file=/etc/vsftpd/user_list
- 写入这个文件中的用户可以访问ftp,没有写入的用户不能访问
- 不要把限制用户主目录和用户访问限制搞混
- chroot_local_user=YES 用户把用户禁锢在主目录中
- userlist_enable =YES 用户访问控制
七、虚拟用户访问
1. 配置虚拟用户访问
步骤!!!
* 添加虚拟用户口令文件
vi /etc/vsftpd/vuser.txt
cangle#用户名
123 #密码
bols #用户名
123#密码
* 生成虚拟用户口令认证文件
- yum install db4-utils
- db_load-T-t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db(把文本文档转变为认证的数据库)
* 编辑vsftpd的PAM认证文件
-
vi /etc/pam.d/vsftpd
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser account required /lib/security/pam_userdb.so db=/etc/vsftpd/vuser
注释其他,加入这两行
注释掉其他,可以禁止本地用户登陆,因为本地用户依赖这个文件
* 建立本地映射用户并设置宿主目录权限
- useradd -d /home/vftproot -s /sbin/nologin vuser
1. 不需要登陆,,映射用户
2. 用户名保持一致 - chmod 755 /home/vftproot
* 修改配置文件
vi /etc/vsftpd/vsftpd.conf
guest_enable =YES
# 开启虚拟用户
guest_username = vuser
#FTP 虚拟用户对应的系统用户
pam_service_name=vsftpd
#PAM认证文件(默认存在)
* 重启服务
systemctl vsftpd restart
此时,虚拟用户可以登陆,查看,下载,不能上传
权限使用的是匿名用户权限进行管理
* 调整虚拟用户权限
vi /etc/vsftpd/vsftpd.conf
anonymous_enable = NO
# 关闭匿名用户登录,
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_writer_enable=YES
# 给虚拟用户设定权限,容许所有虚拟用户上传
2. 为每个虚拟用户建立自己的配置文件,单独定义权限
可以给每个虚拟用户单独建立目录,并建立自己的配置文件。这样方便单独配置权限,并可以单独制定上传目录
1. 修改配置文件
vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir
#指定保存虚拟用户配置文件的目录
2. 手工建立目录
- mkdir /etc/vsftpd/vusers_dir
3. 为每个虚拟用户建立配置文件
vi /etc/vsftpd/vusers_dir/cangls
annon_upload_enable=YES
anon_mkdir_wirte_enable=YES
anon_other_write_anable = YES
# 容许此用户上传
local_root=/tmp/vcangls
#给cangls指定堵路的上传目录
4. 建立上传目录
- mkdir /tmp/vcangls
- chown vuser:vuser /tmp/vcangls
- 如果不给bos指定单独的配置文件,则遵守主配置文件(/etc/vsftpd/vsftpd.con)的权限
5. 配置完效果如下:
- 禁止匿名用户登录(配置文件修改)
- 禁止本地系统用户登录(pam文件修改)
- 容许虚拟用户登录(配置文件修改)
- cangls的上传目录是/tmp/vcangls ,并且容许查看,下载,上传
- bols 的上传目录是虚拟用户的默认目录 /home/vftproot ,不能上传,能下载,查看