FTP服务
工作模式
- 主动模式:FTP服务器主动向客户端发起连接请求
- 通过三次握手,建立控制连接;客户端的源端口是高位随机端口,目标端口是21端口
- 控制连接建立后,客户端进行份验证,协商数据连接采用主动模式;随后客户端会向FTP服务器发送Port报文,表明自己监听的IP+端口,并等待FTP服务器(20端口)向自己监听的IP+端口发起数据连接请求。
- 服务端发起数据连接请求,建立数据连接
被动模式:FTP服务器等待客户端发起请求,默认工作模式
本地用户
- 本地用户既可以登录shell,又可以FTP登录
- 本地用户可以通过输入自己的账号和口令来进行授权登录
- 当授权访问的本地用户登录系统后,其登录为用户自己的家目录
- 本地用户既可以下载又可以上传
- 虚拟用户
- 如果用户在远程FTP服务器上拥有账号,且此账号只能用于文件传输服务,则称之为虚拟用户或Guest用户
- 虚拟用户可以通过输入自己的账号和口令进行授权登录
- 当授权访问的虚拟用户登录系统后,其登录目录为服务器为其指定的目录。
- 通常情况下,虚拟用户既可以下载又可以上传
匿名用户
vsftp服务简介
- 是一个安全、高速、稳定的FTP服务器
- 可设定多个基于IP的虚拟FTP服务器
- 匿名FTP服务更是十分容易
- 不执行任何外部程序,从而减少了安全隐患
- 支持虚拟用户,且支持每个虚拟用户具有独立的配置
- 可以设置为从xinetd启动,或者是独立ftp服务器两种运行方式
- 支持PAM或xinetd/tcp_wrappers的认证方式
- 支持带宽限制等
- vsftp服务概述
- 安装vsftpd服务:
yum install vsftpd ‐y
- 服务包:vsftp
- 服务类型:由Systemd启动的守护进程
- 配置单元:/usr/lib/systemd/system/vsftpd.service
- 守护进程:/usr/sbin/vsftpd
- 端口:21(ftp) 20(ftp‐data)
- 主配置文件:/etc/vsftpd.conf
- 用户访问控制配置文件:
- /etc/vsftpd/ftpusers
- /etc/vsftpd/user_list
- 日志文件:/etc/logrotate.d/vsftpd
- 主配置文件
默认配置:[root@node1 ~]# cat /etc/vsftpd/vsftpd.conf | grep ‐Ev "^#|^$"anonymous_enable=YES #是否允许匿名用户可以登录local_enable=YES #是否允许本地用户可以登录write_enable=YES #是否对登录用户可写local_umask=022 #本地用户上传文件默认权限修改dirmessage_enable=YES #是否激活目录欢迎信息功能xferlog_enable=YES #是否让系统自动维护上传和下载的日志connect_from_port_20=YES #是否设定FTP服务器将启用FTP数据端口的连接请求xferlog_std_format=YES #是否以标准的xferlog的格式书写传输日志文件listen=NO #是否允许监听,以独立模式运行listen_ipv6=YES #设定是否支持IPv6pam_service_name=vsftpd #设置PAM模式提供的认证服务所使用的配置文件名:/etc/pam.d/vsftpd文件userlist_enable=YES #是否允许ftpusers文件中的用户登录FTP服务器tcp_wrappers=YES #是否使用tcp_wrappers作为主机访问控制方式
- 案例1,匿名用户访问
1. 修改配置文件添加如下参数:anonymous_enable=YESanon_umask=022anon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES2.修改/var/ftp/pub权限chown ‐Rf ftp /var/ftp/pub3. 使用anonymous登录测试
- 案例2,使用本地用户访问FTP
如果遇到本地用户登录保存:1. firewalld and selinux2. 检查配置文件:/etc/vsftpd/vsftpd.conflocal_enable=YESpam_service_name=vsftpduserlist_enable=YES3. 检查/etc/pam.d/vsftpd文件:auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusersonerr=succeed4. 检查user_list文件和ftpusers文件:需要登录的用户是否被注释:#root
- 案例3,使用虚拟用户登录
1. 创建用于FTP认证的用户数据库文件mkdir /etc/vsftpd/vconfcat > /etc/vsftpd/vconf/vftpuser.txt <<EOFxiaohongxiaohongxiaomingxiaomingEOF1.1 将明文信息转换成数据库文件db_load ‐T ‐t hash ‐f /etc/vsftpd/vconf/vftpuser.txt /etc/vsftpd/vconf/vftpuser.db2. 创建vsftpd服务程序用于存储文件的根目录以及虚拟用户映射的系统本地用户useradd ‐d /var/ftproot ‐s /sbin/nologin virtualchmod ‐Rf 755 /var/ftproot/3. 建立用户支持虚拟用户的PAM文件echo "auth required pam_userdb.so db=/etc/vsftpd/vconf/vftpuser" >>/etc/pam.d/vsftpdecho "account required pam_userdb.so db=/etc/vsftpd/vconf/vftpuser" >> /etc/pam.d/vsftpd4.修改配置文件添加如下参数配置:guest_enable=YESguest_username=virtualallow_writeable_chroot=YESuser_config_dir=/etc/vsftpd/vconf/5.为不同虚拟用户设置不同的权限touch /etc/vsftpd/vconf/xiaohongcat > /etc/vsftpd/vconf/xiaoming << EOFlocal_root=/var/ftproot/write_enable=YESanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YESEOF6.重启vsftpd服务测试:分别用xiaohong和xiaoming登录并创建目录
