Vsftpd服务器的安装以及三种(匿名、本地、虚拟)用户模式的配置和使用
1.安装
命令行基于yum源安装,搭建本地yum源可参考利用镜像文件搭建本地yum源
yum install vsftpd* -y
安装完成后启动Vsftpd服务查看进程是否启动,使用服务控制命令systemctl,启动start,重启restart,查看状态status;使用ps命令查看进程状态并过滤出vsftpd进程状态。
systemctl restart vsftpd.service
ps -ef | grep vsftpd
2.vsftpd主配置文件的详解(/etc/vsftpd/vsftpd.conf)
anonymous_enable=YES 开启匿名用户访问;
local_enable=YES 启用本地系统用户访问;
write_enable=YES 本地系统用户写入权限;
local_umask=022 本地用户创建文件及目录默认权限掩码;
dirmessage_enable=YES 打印目录显示信息,用户第一次访问目录时提示信息;
xferlog_enable=YES 启用上传/下载日志记录;
connect_from_port_20=YES FTP使用20端口进行数据传输;
xferlog_std_format=YES 日志文件将根据xferlog的标准格式写入;
listen=NO Vsftpd不以独立的服务启动,通过Xinetd服务管理;
listen_ipv6=YES 启用IPV6监听;
pam_service_name=vsftpd 登录FTP服务器,根据/etc/pam.d/vsftpd中的内容进行认证;
userlist_enable=YES 在vsftpd.user_list和ftpusers配置文件里用户禁止访问FTP;
tcp_wrappers=YES 设置vsftpd与tcp wrapper结合进行主机的访问控制,
Vsftpd服务器检查/etc/hosts.allow和/etc/hosts.deny中设置,
来请求连接的主机,是否允许访问该FTP服务器。
启动Vsftpd服务后,通过浏览器访问Vsftpd服务器端 ftp://vsftpd服务器IP地址
或者通过Windows客户端资源管理器访问Vsftp服务器端
(一)匿名用户
Vsftpd默认以匿名用户访问,匿名用户默认访问FTP服务器端路径为:/var/ftp/pub,匿名用户默认只有查看权限,无法创建、删除、修改。如需关闭FTP匿名用户访问,需修改配置文件/etc/vsftpd/vsftpd.conf,将anonymous_enable=YES修改为anonymous_enable=NO,重启Vsftpd服务即可。
如果允许匿名用户能够上传、下载、删除文件,需要修改配置文件/etc/vsftpd/vsftpd.conf添加以下内容。
anon_upload_enable=YES 允许匿名用户上传文件;
anon_mkdir_write_enable=YES 允许匿名用户创建目录;
anon_other_write_enable=YES 允许匿名用户其他写入权限;
配置修改完成后重启vsftp服务
systemctl restart vsftpd
如想要用匿名用户进行文件的上传,还需要进行以下的操作
systemctl stop firewalld.service 关闭防火墙;
setenforce 0 关闭selinux;
还需要对ftp登录后的目录的权限进行修改,匿名登录anonymous对于服务端而言属于其他用户,而默认登陆后的目录为/var/ftp在此路径下创建一个目录对其进行赋权添加写权限:
chmod -R o+w /var/ftp/pub 其他用户添加写权限
首先进行连通性测试
windows命令行下进行测试
ftp +服务器IP地址 进行登录
用户名anonymous 无密码
对文件进行下载使用get命令 get + 文件名
匿名用户上传文件 put + 文件名
(二)本地用户
首先在Linux系统上创建两个系统用户lzx和wjn,分别对其设置密码。
useradd lzx
useradd wjn
echo 123456 | passwd --stdin lzx
echo 123456 | passwd --stdin wjn
在wjn的家目录中添加一些文件
本地用户配置修改如下:
anonymous_enable=NO
local_enable=YES
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
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
在浏览器中访问登录系统中创建的本地用户名和密码
登录成功后即可看到wjn用户家目录下的内容。
在文件资源管理器中进行访问,输入用户名和密码登录成功后可对其路径下的文件进行增删查改。
如果想要将用户限制在某一目录下,不允许其用户随意访问,可以进行如下配置:
chroot_local_user=YES 将所有用户限制在主目录;
local_root=/home/wjn/test 让用户登录vsftp服务时到此目录下;
chroot_local_user为是否将所有用户限制在主目录。
local_root为使用本地用户登陆到ftp时的默认目录。
anon_root为使用匿名用户登陆到ftp时的默认目录。
(三)虚拟用户
当使用本地用访问FTP服务器时,本地用户越多就越不利于管理,而且不利于系统的安全管理,所以需要使用Vsftpd虚拟用户的方式。
虚拟用户就是没有实际的系统上的用户存在,而是通过映射到一个真实的用户上,设置相应的权限来实现验证,并且虚拟用户不能够登录Linux系统这样就更加安全。
1.安装Vsftpd虚拟用户需要用到的软件及认证模块:
yum install pam* libdb-utils libdb* -y
2.创建虚拟用户临时文件/etc/vsftpd/ftpusers.txt,新建虚拟用户和密码,jianan1和jianan2为用户名123456为密码一行用户名接着下一行为密码,依次往下排:
jianan1
123456
jianan2
123456
3.生成Vsftpd虚拟用户数据库认证文件,设置其权限为700:
db_load -T -t hash -f /etc/vsftpd/ftpusers.txt /etc/vsftpd/vsftpd_login.db
chmod 700 /etc/vsftpd/vsftpd_login.db
4.配置PAM认证文件,/etc/pam.d/vsftpd行首加入如下两行:
auth sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login
5.所有的Vsftpd虚拟用户需要映射到一个系统用户,该系统用户不需要密码,也不需要登录,主要用于虚拟用户映射使用,创建命令如下:
useradd -s /sbin/nologin ftpuser 创建一个不需要进行登录的用户ftpuser
6.vsftpd配置文件内容如下:
anonymous_enable=YES
local_enable=YES
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
tcp_wrappers=YES
pam_service_name=vsftpd 虚拟用户启用pam认证;
guest_enable=YES 启用虚拟用户;
guest_username=ftpuser 映射虚拟用户至系统用户ftpuser;
user_config_dir=/etc/vsftpd/vsftpd_user_conf 设置虚拟用户配置文件所在目录;
virtual_use_local_privs=YES 虚拟用户使用本地用户相同的权限;
7.到目前为止所有虚拟用户共同基于/home/ftpuser主目录实现文件的上传与下载,可以在/etc/vsftpd/vsftpd_user_conf目录创建虚拟用户各自的配置文件,创建虚拟用户配置文件主目录。
mkdir -p /etc/vsftpd/vsftpd_user_conf/
8.可分别为jianan1和jianan2两个虚拟用户创建虚拟目录:
vim /etc/vsftpd/vsftpd_user_conf/jianan1
local_root=/home/ftpuser/jianan1 jianan1虚拟用户配置文件路径;
write_enable=YES 允许登录用户有写权限;
anon_world_readable_only=YES 允许匿名用户下载,然后读取文件;
anon_upload_enable=YES 允许上传文件,只有在write_enable=YES是生效;
anon_mkdir_write_enable=YES 允许匿名用户创建目录,同上生效;
anon_other_write_enable=YES 允许匿名用户其他权限,删除、重命名等。
9.创建虚拟用户各自虚拟目录:
mkdir -p /home/ftpuser/jianan1
chown -R ftpuser:ftpuser /home/ftpuser
最后重启Vsftpd服务即可。
10.测试
先在jianan1目录中创建三个文件
文件资源管理器进行访问输入虚拟用户的用户名和密码
如上两张测试图片在进行登录后根据虚拟用户的配置文件定义的内容,将虚拟用户登录后锁定在/home/ftpuser/jianan1目录下。