CentOS**7.6安装配置vsftpd服务器**
目 录
1.*安装**vsftpd和Berkeley DB工具***
先检查系统是否已经安装vsftpd和Berkeley DB工具
#rpm -qa | grep vsftpd
#rpm -qa | grep libdb-utils-5.3.21-24.el7.x86_64 (CentOS7后用这个代替db4-utils)
如果没有安装,将rpm包上传到/home目录并安装(一般Berkeley DB工具系统会默认安装)
2.*测试**是否安装成功***
启动vsftpd服务,查看端口是否打开
#systemctl start vsftpd.service
#netstat -tlunp |grep ftp
可以看到服务已经启动,再在同一个网络的Windows系统的DOS窗口测试能否连接上
默认的匿名用户为'ftp',密码为空,上面表明ftp服务器已经安装成功
3.*设置**开机启动***
systemctl enable vsftpd.service
4.*基于虚拟用户配置vsftpd*
基于虚拟用户的配置,所谓虚拟用户就是没有使用真实的帐户,只是通过映射到真实帐户和设置权限的目的。虚拟用户不能登录CentOS系统。
*4.1**编辑vsftpd.conf*
vim /etc/vsftpd/vsftpd.conf
将内容修改
anonymous_enable=NO //设定不允许匿名访问
local_enable=YES //设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问
write_enable=YES //全局设置,是否容许写入(无论是匿名用户还是本地用户,若要启用上传权限的话,就要开启它)
chroot_local_user=YES //所有用户不能离开主目录
chroot_list_enable=YES //启动限制用户的名单
chroot_list_file=/etc/vsftpd/vsftpd_passwd.txt //前面两个设置为Yes时,只有指定文件里的用户例外
ascii_upload_enable=YES //设定支持ASCII模式的上传功能
ascii_download_enable=YES //设定支持ASCII模式的下载功能
pam_service_name=vsftpd //PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证
以下这些是关于vsftpd虚拟用户支持的重要配置项,默认vsftpd.conf中不包含这些设定项目,需要自己手动添加
guest_enable=YES //设定启用虚拟用户功能
guest_username=ftp //指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户
user_config_dir=/etc/vsftpd/user_config //设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名)
guest_enable=YES //设定启用虚拟用户功能
guest_username=ftp //指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户
user_config_dir=/etc/vsftpd/user_config //设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名)
download_enable=YES //限制用户的下载权限
allow_writeable_chroot=YES //允许chroot用户具备写权限
anon_mkdir_write_enable=YES //控制匿名用户对文件夹的创建权限
tcp_wrappers=YES //设置vsftpd是否与tcp wrapper相结合来进行主机的访问控制,*默认开启*;如果启用,则vsftpd服务器会检查/etc/hosts.allow 和/etc/hosts.deny 中的设置,来决定请求连接的主机,是否允许访问该FTP服务器
max_clients=0 //允许连接客户端并发数,0为不限制
max_per_ip=0 //同一个 IP 同一时间可允许多少联机,0为不限制
reverse_lookup_enable=NO //禁用域名反解析,*VSFTP连接时很慢,因为默认开启了reverse_lookup(反向解析),需要关闭*
userlist_enable=YES //YES时userlist_deny项的配置才有效,user_list文件才会被使用;当其为NO时,无论userlist_deny项为何值都是无效的,本地全体用户(除去ftpusers中的用户)都可以登入FTP
listen_port=2121 //设置FTP服务监听端口,默认为21端口
tcp_wrappers=YES
connect_from_port_20=yes //同意服务器主动模式从20端口建立数据连接,默认是YES,若设置为NO,则进行数据连接时,所使用的端口由ftp_data_port指定
ftp_data_port=20 //设置在PORT方式下,FTP数据连接使用的端口,默认值为20
pasv_enable=yes //同意被动模式连接,使用被动模式才要启动些选项
注意:配置文件的每行末尾不能有空格,要不出现**500 OOPS: bad bool value in config file for:** *错误;例如就代表配置文件的**guest_enable=YES后面有空格**
*4.2 创建虚拟用户**密码***
创建虚拟用户密码文本/etc/vsftpd/vsftpd_passwd.txt(名字要和配置文件里指定认证文件名字要一致,名字可以自定义)
#vim /etc/vsftpd/vsftpd_passwd.txt
在里面加入登录ftp服务器的用户名和密码保存并退出,注意奇行是用户名,偶行是密码
*4.3 生成虚拟用户认证的db文件*
# db_load -T -t hash -f /etc/vsftpd/vsftpd_passwd.txt /etc/vsftpd/vsftpd_passwd.db
*4.4 设置密码**文件查看权限***
由于vsftpd的认证文件vsftpd_passwd.db里保存了所有虚拟用户的用户名和密码,为了增强其安全性,设置只有root才可以查看。
#cd /etc/vsftpd
#chmod 600 vsftpd_passwd.*
*4.5 编辑PAM认证文件*
#vim /etc/pam.d/vsftpd
注释掉原来语句,再增加以下两句
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_passwd
account required pam_userdb.so db=/etc/vsftpd/vsftpd_passwd
*4.6 建立**虚拟用户配置文件***
#mkdir /etc/vsftpd/user_config
#vim /etc/vsftpd/user_config/admin
注意*:**文件名等于v****sftpd****r_passwd.txt里面的账户名,否则下面设置无效***
增加以下内容
local_root=/home/admin //虚拟用户根目录,根据实际情况修改
write_enable=YES //用户可上传、下载、删除和改名
anon_umask=022 //掩码
anon_world_readable_only=NO //用户可上传、下载、不能删除、不能重命名
anon_upload_enable=YES //控制匿名用户对文件(非目录)上传权限
anon_mkdir_write_enable=YES //控制匿名用户对文件夹的创建权限
anon_other_write_enable=YES //控制匿名用户对文件和文件夹的删除和重命名
注意**:配置文件的每行末尾不能有空格,要不出现500 OOPS:bad bool value in config file for:*错误**
5.*设置**SEL****inux***
*5.1 查看selinux状态*
# getenforce
Enforcing //强制模式,代表 SELinux 运行中,没有通过策略,强制限制操作生效
Permissive //宽容模式:代表 SELinux 运行中, 相当于Debug模式,没有通过策略时,可以继续操作生效并将警告提示错误,大部份用户于开发策略调试
Disabled //关闭,SELinux 并没有实际运行
*5.2 设置selinux*
有两种方式设置,关闭selinux或修改selinux强制模式策略,建议通过修改selinux强制模式策略方式设置
5.2.1*修改selinux**策略***
查看selinux ftp策略
#getsebool -a |grep ftp
将allow_ftpd_full_access-->off和ftp_home_dir-->off修改成on状态
#setsebool -P tftp_home_dir=1 //设置ftp用户可以使用home目录
#setsebool -P allow_ftpd_full_access=1 //设置ftp用户可以有所有权限
5.2.2*关闭selinux*
三种方式关闭selinux
1) 修改/etc/selinux/config文件中的SELINUX="" 为 disabled ,然后重启生效
#vim /etc/selinux/config
2) 用命令setenforce 0,修改为Permissive宽容模式,无需重启
# setenforce 0
3) 在grub的启动参数中增加selinux=0,也可以关闭selinux
# vim /boot/grub/grub.conf
在内核启动后加上selinux=0
6.*设置虚拟**用户ftp****根目录及权限***
建立虚拟用户ftp根目录
#mkdir /home/admin //目录必需和虚拟用户根目录一致
分配权限
#chmod -R 777 /home/admin //vsftpd要求对主目录不能有写的权限所以home为755,主目录下面的子目录admin再设置777权限
7.*重启**服务生效配置***
#systemctl restart vsftpd.service
8.*配置**防火墙***
在有开启防火墙情况下,需要编辑防火墙配置文件/etc/sysconfig/iptables,在防火墙策略里增加ftp的20和21端口通过,如果只需要上传下载功能,只要增加21端口通过即可
增加规则
firewall-cmd --zone=public --add-port=20/tcp --perman //添加20端口到公共区域并开放
firewall-cmd --add-port=20/tcp --perman //添加20端口到公共区域并开放
firewall-cmd --reload //重新加载防火墙规则
firewall-cmd --complete-reload //重新加载防火墙规则并重启服务
firewall-cmd --zone=public --list-ports //查看所有打开的端口
firewall-cmd --zone=public --add-port=61000-62000/tcp --perman //添加61000至62000端口到公共区域并开放