vsftpd服务器/
1.简介:
-
FTP:文件传输协议,工作模式[客户端/服务器],FTP服务端口号:tcp/21、tcp/20。是一个客户机/服务器系统。使用FTP用户需要经过验证后才能登陆,FTP服务的用户可分位3类。
-
系统用户:
- 系统本机用户,linux一般不会针对实体用户进行限制,因此实体用户可以针对整个文件系统进行工作。但通常不希望他们通过FTP方式远程访问系统
-
虚拟用户:
- 只能采用FTP方式使用系统的用户,不能直接使用shell登录系统,即虚拟用户,访问服务器时需要验证。大多数FTP用户是这类用户。
-
匿名用户:
- 对公共性质的服务器可以提供匿名用户访问,用户名anonymous.但在使用匿名用户时,应对其进行尽可能多的限制,权限较低,如:
- 同时连接的用户数量受限,访问的文件数目受限
- 不能上传文件,允许操作的指令较少
- 设置匿名用户同时登入的最大联机数量等
- 对公共性质的服务器可以提供匿名用户访问,用户名anonymous.但在使用匿名用户时,应对其进行尽可能多的限制,权限较低,如:
-
FTP主动模式:从服务器主动发送链接tcp21
-
FTP被动模式:从客户端发送链接请求tcp20
2.服务器安装
- 使用yum安装
- 安装原理:自动到软件仓库云下载相应软件包进行自动安装
- 软件存放位置(软件仓库):
- 网络源:http:// 或 https://
- FTP源:ftp://
- 本地:file://
- yum源文件存放位置(只能再这个位置):cd /etc/yum.repos.d/
-
yum安装命令:
-
查看软件是否已经安装:
# rpm -qa | grep 软件名称 例:# rpm -qa | grep vsftpd
-
列出仓库的所有软件包:
# yum list | grep vsftpd
-
安装软件:
# yum install 软件包名称
-
卸载软件:
# yum remove 软件包名称
-
清除yum缓存:
# yum clean all
-
生成缓存:
# yum makecache
-
-
使用默认yum源安装vsftpd软件包:
# yum install vsftpd ftp
-
启动服务并设置开机自启:
# systemctl start vsftpd # systemctl enable vsftpd
-
设置防火墙与selinux机制:
# firewall-cmd --permanent --zone=public --add-service=ftp # firewall-cmd --reload :重启防火墙 # setenforce 0 :关闭selinux安全机制 --permanent(永久生效的状态):设置后不会立即启动,需要重启防火墙才会立即生效 public:防火墙public区域
-
访问ftp服务器验证:
-
linux中验证:匿名用户anonymous或者ftp,密码直接回车就可以
[root@localhost ~]# ftp 192.168.88.130 Connected to 192.168.88.130 (192.168.88.130). 220 welcome is dog!!!!!!!!!! Name (192.168.88.130:root): ftp 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp>
-
windows中验证:
- ftp软件:
- 浏览器:
ftp://192.168.88.130
- 电脑文件搜索:
ftp://192.168.88.130
-
默认访问目录为:/var/ftp/
-
3.匿名用户访问配置
- 默认ftp用户只有上传权限
-
修改配置文件:
# vim /etc/vsftpd/vsftpd.conf
-
找到并修改为:
# anonymous_enable=YES
-
修改配置文件:
no_anon_password=YES :表示匿名用户不输入密码 ftpd_banner=welcome to our home!!!! :设置的提示信息
anon…开头的:是针对匿名用户的设置
-
修改配置文件使win等可以上传文件:
# vim /etc/vsftpd/vsftpd.conf 找到:anon_upload_enable=YES :YES允许上传,匿名用户可以上传文件 找到:anon_makdir_write_enable=YES :匿名用户可以新建,写入文件 添加:anon_other_write_enable=YES :匿名用户具有删除权限 添加:anon_root=/var/public :修改匿名用户的默认访问目录为/var/public 目录不可以设置为其他用户的家目录
# systemctl restart vsftpd
如果权限修改后,任然不能进行相应操作,可能是文件本身没有权限
- 修改文件权限
# setfacl -m u:ftp:rwx pub :给文件添加一个acl
- 关闭selinux安全机制
# setenforce 0
-
设置匿名用户上传或新建文件夹的默认权限
- umask值:决定了新建文件或文件夹时的默认权限
- umask值的表示方法:0022
如果使用vsftpd的是本地用户,则需要修改配置文件中的
local_umask
如果使用vsftpd的是虚拟用户,则需要修改配置文件中的
anon_umask
umask=022 时,新建的目录权限是755,文件的权限是644
umask=077时,新建的目录权限是700,文件的权限是600
umask计算方法:777-022=755 文件夹
umask计算方法:666-022=644 文件
4.系统用户访问配置
- 系统用户FTP相关知识:
- 系统用户默认访问主目录,具有上传,下载,新建,删除的权限,还可以切换到系统的其他目录。
-
关闭匿名用户访问,只允许系统用户访问:
修改:anonymous_enable=no :关闭匿名用户访问 默认:local_enable=YES :允许系统用户访问 默认:local_umask=022 :默认系统用户新建文件的权限
-
设置系统用户的权限:
修改或添加:chroot_local_user=YES :控制用户访问路径访问自己的主目录,不能切换到其他目录 修改或添加:allow_writeable_chroot=YES :允许写入 修改或添加:max_clients=30 :设置最大连接数为30 修改或添加:idle_session_timeout=600 :设置超时时间
-
设置系统用户访问指定目录,不允许切换到系统的其他目录,并且上传、下载、新建、删除权限。
修改或添加:local_root=/mnt/public/ :设置系统用户访问ftp默认目录 修改或添加:write_enable=YES :允许写入 修改或添加:chroot_local_user=YES :控制用户访问路径访问指定目录,不能切换到其他目录 修改或添加:allow_writeable_chroot=YES :允许写入
修改了系统用户默认访问目录后,要给用户添加目录的acl访问控制权限
-
基于本地用户的访问控制:
-
默认情况下,ftp服务器中所有系统用户都可以访问ftp,如果来限定只有指定的系统用户可以访问,vsftpd中提供了两个系统用户相关的配置文件:
- /etc/vsftpd/ftpusers:提供了一份用于禁止登录的ftp用户列表(黑名单),此文件中包含的用户被禁止登录vsftpd服务器,不管该用户是否在/etc/vsftpd/user_list中出现。
- /etc/vsftpd/user_list:提供提供了一份用于允许登录的ftp用户列表(白名单) 此文件中包含的用户可能被禁止登录,可能被允许登录
-
具体在主配置文件vsftpd.conf中决定:
-
当存在userlist_enable=YES时,user_list文件生效。
当存在userlist_deny=YES时,则仅禁止列表中的帐户登录。
当存在userlist_deny=NO时,则允许列表中用户登录。
其中:ftpusers文件的优先级要高于user_list文件,即如果一个用户同时存在
于两个文件中,则被拒绝访问ftp。
-
-
例:只允许ftpuser用户访问ftp:
# vim /etc/vsftpd/vsftpd.conf userlist_enable=YES 启用userlist用户列表(系统默认设置) userlist_deny=NO 只允许列表中的用户登录
-
修改文件:/etc/vsftpd/user_list
# vim /etc/vsftpd/user_list 添加: stu1
-
重启服务,登录验证
# systemctl restart vsftpd
-
5.虚拟用户访问
-
安装vsftpd虚拟用户需要用到的软件及认证模块
#yum install pam* libdb-utils libdb* --skip-broken -y
-
创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,用户名密码格式如下:
# vim /etc/vsftpd/ftpusers.txt Techftp 用户名 123456 密码 netftp 123456 admftp 123456 markftp 123456
-
生成Vsftpd虚拟用户数据库认证文件,设置权限为600
#db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftp_login.db #chmod 600 /etc/vsftpd/vsftp_login.db
-
配置PAM认证文件:vim /etc/pam.d/vsftpd.vu
# vim /etc/pam.d/vsftpd.vu auth required pam_userdb.so db=/etc/vsftpd/vsftp_login account required pam_userdb.so db=/etc/vsftpd/vsftp_login
-
创建一个系统用户,用于虚拟用户映射
#useradd -s /sbin/nologin ftpuser
-
修改配置文件: /etc/vsftpd/vsftpd.conf
# vim /etc/vsftpd/vsftpd.conf 注释掉原来的 # pam_service_name=vsftpd 添加: pam_service_name=vsftpd.vu guest_enable=YES :开启系统虚拟用户访问 guest_username=ftpuser :指定系统虚拟用户 user_config_dir=/etc/vsftpd/vsftpd_user_conf 指定虚拟用户的配置文件目录 virtual_use_local_privs=YES 允许虚拟用户访问
-
分别为虚拟用户创建私有的虚拟目录与独立的配置文件:
#mkdir /home/ftpuser/techftp #mkdir /etc/vsftpd/vsftpd_user_conf #vim techftp 写入如下内容: local_root=/home/ftpuser/techftp 默认访问的目录 write_enable=YES 允许写入 anon_world_readable_only=YES 允许浏览 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
#mkdir /home/ftpuser/netftp #vim netftp local_root=/home/ftpuser/netftp write_enable=YES virtual_use_local_privs=NO #不具有可登录用户的权限 anon_world_readable_only=YES #可浏览目录 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
-
登录验证: