CentOS**7.6安装配置vsftpd服务器**

avatar
作者
筋斗云
阅读量:1

CentOS**7.6安装配置vsftpd服务器**

目 录

1. 安装vsftpd和Berkeley DB工具

2. 测试是否安装成功

3. 设置开机启动

4. 基于虚拟用户配置vsftpd

4.1 编辑vsftpd.conf

4.2 创建虚拟用户密码

4.3 生成虚拟用户认证的db文件

4.4 设置密码文件查看权限

4.5 编辑PAM认证文件

4.6 建立虚拟用户配置文件

5. 设置SELinux

5.1 查看selinux状态

5.2 设置selinux

5.2.1 修改selinux策略

5.2.2 关闭selinux

6. 设置虚拟用户ftp根目录及权限

7. 重启服务生效配置

8. 配置防火墙

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端口到公共区域并开放

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!