Linux环境搭建vsftpd服务
vsftpd(very secure FTP daemon)是一个广泛使用的、开源的FTP服务器软件,以其高性能、高安全性和稳定性著称,支持多种FTP相关协议,包括FTP、SFTP(通过SSH)、TLS/SSL加密的FTP等。
一:安装vsftpd
#安装vsftpd服务 yum install vsftpd -y #启动FTP服务,并设置开机自启动 systemctl enable vsftpd systemctl restart vsftpd #查看FTP服务监听的端口 netstat -anpt |grep ftp
二:配置vsftpd
创建一个Linux用户并设置密码。
FTP支持以下三种认证模式:
-
匿名用户模式:任何人无需密码验证就可以直接登录到FTP服务器。这种模式最不安全,一般只用来保存不重要的公开文件,不推荐在生产环境中使用。
-
本地用户模式:通过Linux系统本地账号进行验证的模式,相较于匿名用户模式更安全。
-
虚拟用户模式:FTP服务器的专有用户。虚拟用户只能访问Linux系统为其提供的FTP服务,而不能访问Linux系统的其他资源,进一步增强了FTP服务器的安全性。
本文介绍为FTP服务创建一个Linux系统本地账号
运行以下命令,为FTP服务创建一个Linux用户。
adduser ftptest
passwd ftptest
修改vsftpd.conf
配置文件。
运行以下命令,打开vsftpd的配置文件
[root@localhostvsftpd]# cat vsftpd.conf #禁止匿名登录FTP服务器 anonymous_enable=NO #允许本地用户登录FTP服务器 local_enable=YES #可以上传文件全局控制 write_enable=YES #本地用户上传的文件权限 local_umask=077 #监听IPv4 sockets listen=YES pam_service_name=vsftpd tcp_wrappers=YES allow_writeable_chroot=YES #启用例外用户名单 chroot_list_enable=YES #全部用户被限制在主目录 chroot_local_user=YES #指定例外用户列表文件,列表中用户不被锁定在主目录 chroot_list_file=/etc/vsftpd/chroot_list #开启被动模式。 pasv_enable=YES [root@localhostvsftpd]#
本文配置的为用户登录后在自己家目录中进行操作的实例
配置讲解:
chroot_local_user=YES #设置是否锁定本地用户在自己的主目录中,(登录后无法cd到父目录或同级目录中) chroot_list_enable=YES #设置是否将用户锁定在自己的主目录中 chroot_list_file=/etc/vsftpd/chroot_list #定义哪些用户将会锁定在自己的主目录中 vsftp配置文件及参数说明 /etc/vsftpd目录下文件说明如下: /etc/vsftpd/vsftpd.conf是vsftpd的核心配置文件。 /etc/vsftpd/ftpusers是黑名单文件,此文件中的用户不允许访问FTP服务器。 /etc/vsftpd/user_list是白名单文件,此文件中的用户允许访问FTP服务器。
二、vsftpd配置虚拟用户访问
1、安装vsftpd
#yum install vsftpd -y
2、创建vsftpd系统用户:
#建立Vsftpd服务的宿主用户 useradd vsftpd -M -s /sbin/nologin #建立Vsftpd虚拟宿主用户 # useradd -d /data/ftp -M -s /sbin/nologin vftpuser
3.配置vsftpd
备份源文件
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.back
3.1修改vsftpd.conf配置文件
vim /etc/vsftpd/vsftpd.conf [root@localhost vsftpd]# cat /etc/vsftpd/vsftpd.conf #禁止匿名登录FTP服务器 anonymous_enable=NO #允许本地用户登录FTP服务器 local_enable=YES #可以上传文件全局控制 write_enable=YES #本地用户上传的文件权限 local_umask=077 #监听IPv4 sockets listen=YES #设定支持TCP Wrappers tcp_wrappers=YES allow_writeable_chroot=YES #启用例外用户名单 chroot_list_enable=YES #全部用户被限制在主目录 chroot_local_user=YES #指定例外用户列表文件,列表中用户不被锁定在主目录 chroot_list_file=/etc/vsftpd/chroot_list #开启被动模式。 pasv_enable=YES #设定Vsftpd的服务日志保存路径.注意,该文件默认不存在,必须要手动touch出来,注意给与该用户对日志的写入权限 xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES #下面是关于虚拟用户的配置 #打开虚拟用户功能 guest_enable=YES #将所有虚拟用户映射成vftpuser这个本地用户,此用户是之前新建的用户 guest_username=vftpuser #设定PAM服务下Vsftpd的验证配置文件名,默认是vsftpd文件,因此PAM验证将参考/etc/pam.d/下的vsftpd文件配置. pam_service_name=vsftpd #设定虚拟用户个人Vsftp的配置文件存放路径.这个被指定的目录里,将存放每个Vsftp虚拟用户的配置文件,一个需要注意的地方就是这些配置文件名必须和虚拟用户名相同 user_config_dir=/etc/vsftpd/vconf [root@localhost vsftpd]#
4、建立Vsftpd的日志文件,并更该属主为Vsftpd的服务宿主用户:
touch /var/log/vsftpd.log chown vsftpd.vsftpd /var/log/vsftpd.log
5、 虚拟用户配置
5.1 创建虚拟用户配置文件存放路径 mkdir -pv /etc/vsftpd/vconf/ 5.2制作虚拟用户数据库文件 touch /etc/vsftpd/virtusers 新建一个测试用虚拟用户 vim /etc/vsftpd/virtusers 编辑这个虚拟用户名单文件,在其中加入用户的用户名和口令信息。格式很简单:“奇数行用户名,偶数行口令”。 virtusers文件格式如下: test #用户名 test1234 #用户密码 生成虚拟用户数据文件: db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db 需要特别注意的是,以后再要添加虚拟用户的时候,只需要按照“一行用户名,一行口令”的格式将新用户名和口令添加进虚拟用户名单文件。但是光这样做还不够,这样是不会生效的!还要再执行一遍“ db_load -T -t hash -f 虚拟用户名单文件 虚拟用户数据库文件.db ”的命令使其生效才可以!
6、设置认证文件PAM
在编辑前做好备份: cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup 编辑Vsftpd的PAM验证配置文件,把原来的配置文件全部注释掉(不注释掉虚拟用户会登录不上),添加如下行 # vim /etc/pam.d/vsftpd auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers #以上两条是手动添加的,内容是对虚拟用户的安全和帐户权限进行验证。 这里的auth是指对用户的用户名口令进行验证。 这里的accout是指对用户的帐户有哪些权限哪些限制进行验证。 其后的sufficient表示充分条件,也就是说,一旦在这里通过了验证,那么也就不用经过下面剩下的验证步骤了。相反,如果没有通过的话,也不会被系统立即挡之门外,因为sufficient的失败不决定整个验证的失败,意味着用户还必须将经历剩下来的验证审核。 再后面的/lib/security/pam_userdb.so表示该条审核将调用pam_userdb.so这个库函数进行。 最后的db=/etc/vsftpd/virtusers则指定了验证库函数将到这个指定的数据库中调用数据进行验证。
7、虚拟用户配置
7.1规划好虚拟用户的主路径: /data/ftp/virtual 建立测试用户的FTP用户目录: mkdir /data/ftp/virtual/test 更改虚拟用户的主目录的属主为虚拟宿主用户: chown -R vftpuser.vftpuser /data/ftp/virtual/ 7.2建立虚拟用户模板文件: # vconf.tmp内容如下: local_root=/data/ftp/virtual/username #指定虚拟用户的具体主路径 anonymous_enable=NO #设定不允许匿名用户访问 write_enable=YES #设定允许写操作 local_umask=022 #设定上传文件权限掩码 anon_upload_enable=NO #设定不允许匿名用户上传 anon_mkdir_write_enable=NO #设定不允许匿名用户建立目录 idle_session_timeout=600 #设定空闲连接超时时间 data_connection_timeout=120 #设定单次连续传输最大时间 max_clients=10 #设定并发客户端访问个数 max_per_ip=5 #设定单个客户端的最大线程数,这个配置主要来照顾Flashget、迅雷等多线程下载软件 local_max_rate=50000 #设定该用户的最大传输速率,单位b/s test用户复制配置模板 cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/test vim /etc/vsftpd/vconf/test 修改内容 local_root=/data/ftp/virtual/test 重启服务: # systemctl restart vsftpd.service # ftp 10.0.1.2
##################################################
添加虚拟用户:
vim /etc/vsftpd/virtusers test test1234 ftpuser D0903123 生成虚拟用户数据文件: db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db 编辑虚拟用户配置文件 [root@dlpsafeftp vconf]# cat ftpuser local_root=/data/ftp/virtual/ftpuser anonymous_enable=NO write_enable=YES local_umask=022 anon_upload_enable=NO anon_mkdir_write_enable=NO idle_session_timeout=600 data_connection_timeout=120 max_clients=10 max_per_ip=5 local_max_rate=50000 # 建立ftp的用户目录 mkdir /data/ftp/virtual/ftpuser chown -R vftpuser.vftpuser /data/ftp/virtual/ 重启服务: # systemctl restart vsftpd.service # ftp 10.0.1.2
号外:虚拟用户如果需要上传、下载、删除等权限,还需要开通如下参数.
virtual_use_local_privs=YES #虚拟用户具有写权限(上传、下载、删除、重命名)
参考文档:在Linux实例中搭建FTP服务器_云服务器 ECS(ECS)-阿里云帮助中心 (aliyun.com)
https://www.cnblogs.com/UG9527/p/11409703.html