FTP(File Transfer Protocol)文件传输协议,默认20端口传输 数据,21端口传输Ftp 指令
主动模式:FTP服务器主动向客户机发起连接
被动模式:FTP服务器等待客户机发起连接(默认)
Vsftpd(very secure ftp daemon)
yum -y install vsftpd ftp #安装vsftpd服务端程序,ftp客户端程序
/etc/vsftpd/vsftpd.conf
listen=[YES|NO] #是否以独立运行的方式监听服务 listen_address=ip #设置要监听的IP地址 listen_port=21 #设置FTP服务的监听端口 download_enable=[YES|NO] #是否允许下载文件 userlist_enable=[YES|NO]或者userlist_deny=[YES|NO] #设置用户列表为“允许”或者“禁止”操作 max_clients=0 #最大客户端连接数,0为不限制 max_per_ip=0 #同一IP地址的最大连接数,0为不限制 anonymous_enable=[YES|NO] #是否允许匿名用户访问 anony_upload_enable=[YES|NO] #是否允许匿名用户上传文件 anon_umask=022 #匿名用户上传文件的umask值 anon_root=/var/ftp #匿名用户的FTP根目录 anon_mkdir_write_enable=[YES|NO] #是否允许匿名用户创建目录 anon_other_write_enable=[YES|NO] #是否开放匿名用户的其他写入权限(重命名、删除等操作权限) anon_max_rate=0 #匿名用户的最大传输速率(B/s),0为不限制 local_enable=[YES|NO] #是否允许本地用户登录FTP local_umask=022 #本地用户的上传文件的umask值 local_root=/var/ftp #本地用户的FTP根目录 chroot_local_user=[YES|NO] #是否将用户权限禁锢在FTP目录,确保安全 local_max_rate=0 #本地用户最大传输速率(B/s),0为不限制三种认证模式
匿名开放模式1、匿名开放模式:不安全的认证模式,无须密码验证直接登录到FTP服务器
2、本地用户模式:本地的账户密码信息进行认证的模式,相对更加安全,配置较为简单
3、虚拟用户模式:单独建立用户数据库文件,虚拟出用来进行密码验证的账户信息,仅供FTP服务程序认证使用。
权限不足,需要更改/var/ftp/pub目录的所有者或者变更权限
chown -R ftp /var/ftp/pub #更改目录的所有者
chmod -R 777 /var/ftp/pub #变更权限
vsftpd服务自身带有安全保护机制,不能直接修改/var/ftp的权限,可能导致服务被安全锁定不能登录
默认访问该用户的家目录,默认所有者所属组都是该用户
/etc/vsftpd/user_list和/etc/vsftpd/ftpusers限制用户登录FTP服务器
userlist_deny=NO则user_list变成强制白名单(常用)
最安全的认证模式,专门创建一个账户登录FTP传输服务并且不能以SSH方式登录。
1、
vim vuser.list #创建用户文件,奇数为账户,偶数为密码
db_load -T -t hash -f vuser.list vuser.db #使用哈希算法将明文转换成数据库文件
chmod 600 vuser.db #降低数据库文件的权限
rm -f vuser.list #删除蛛丝马迹
linux系统中每一个文件都有所有者所属组属性,为避免找不到虚拟用户导致文件权限出现错误。虚拟用户默认登录到有映射关联的本地用户的家目录中,权限也归属于本地用户。
2、
useradd -d /var/vsftp -s /sbin/nologin virtual #创建存储文件的根目录和虚拟用户映射的系统本地用户
chmod -Rf 755 /var/vsftp/ #更改权限
PAM(可插拔认证模块)Pluggable Authentication Module 是一种认证机制,通过动态链接库和统一的API把提供的服务和认证方式分开。
PAM就是一组安全机制的模块,管理员可轻易调整服务程序的认证方式,不必对应用程序进行修改,采用了分层设计(应用程序层、应用接口层、鉴别模块层)
3、
vim /etc/pam.d/vsftpd.pam #新建用于虚拟用户认证的PAM文件 auth required pam_userdb.so db=/etc/vsftpd/vuser auth required pam_userdb.so db=/etc/vsftpd/vuser #db=填写账户密码数据库文件的路径,不用写后缀
4、
vim /etc/vsftpd/vsftpd.conf #修改配置文件 anonymous_enable=NO #禁止匿名模式 local_enable=YES #允许本地用户模式 guest_enable=YES #开启虚拟用户模式 guest_username=virtual #指定虚拟用户账户 pam_service_name=vsftpd.pam #指定PAM文件 allow_writeable_chroot=YES #允许对禁锢的FTP根目录写入,不拒绝用户的登录请求 write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES userlist_enable=YES
5、给用户赋予不同权限
在配置文件添加参数:
user_config_dir=/etc/vsftpd/vusers_dir
mkdir /etc/vsftpd/vusers_dir #创建用户目录
touch test1 #用户1权限
vim test2 #用户2权限如下
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
每次修改配置文件都需要运行systemctl restart vsftpd是服务生效



