VSFTP服务器搭建(CentOS7版)

1.简介

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全。

安全性是编写VSFTP的初衷,除了这与生俱来的安全特性以外,高速与高稳定性也是VSFTP的两个重要特点。

在速度方面,使用ASCII代码的模式下载数据时,VSFTP的速度是Wu-FTP的两倍,如果Linux主机使用2.4.*的内核,在千兆以太网上的下载速度可达86MB/S。

在稳定方面,VSFTP就更加的出色,VSFTP在单机(非集群)上支持4000个以上的并发用户同时连接,根据Red Hat的Ftp服务器的数据,VSFTP服务器可以支持15000个并发用户。

2.安装

2.1 查看是否已经安装vsftp

rpm -qa vsftpd|grep vsftpd

2.2 yum安装vsftp

yum install -y vsftpd

2.3 设置开机自启

systemctl enable vsftpd.service
systemctl start vsftpd.service

2.4 查看安装目录及端口号

查看安装目录:

cd /etc/vsftpd
[root@lee000 vsftpd]# ll
total 20
-rw-------. 1 root root  125 Oct 31  2018 ftpusers
-rw-------. 1 root root  361 Oct 31  2018 user_list
-rw-------. 1 root root 5116 Oct 31  2018 vsftpd.conf
-rwxr--r--. 1 root root  338 Oct 31  2018 vsftpd_conf_migrate.sh

vsftpd.conf:配置文件
ftpusers:黑名单,不允许访问FTP服务器的用户
user_list:白名单,允许访问FTP服务器的用户

查看端口:

netstat -antup | grep ftp
[root@lee000 vsftpd]# netstat -antup | grep ftp
tcp6       0      0 :::21                   :::*                    LISTEN      73277/vsftpd

2.5 创建用户

useradd -s /sbin/nologin -d /home/test test

"-s /sbin/nologin":指定该用户无法使用bash或其他shell来登陆系统,仅用于ftp连接
"-d /home/test":指定该用户的ftp目录

2.6 设置selinux

SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。

需要设置selinux后才能访问FTP服务器:

setsebool -P ftp_home_dir 1
setsebool -P allow_ftpd_full_access 1

-P表示设定该项目永久套用

查看selinux的ftp配置是否成功:

getsebool -a |grep ftp

"ftp_home_dir""ftpd_full_access"参数都为"on"表示配置成功

[root@lee000 vsftpd]# setsebool -P ftp_home_dir 1
[root@lee000 vsftpd]# setsebool -P allow_ftpd_full_access 1
[root@lee000 vsftpd]# getsebool -a |grep ftp
ftp_home_dir --> on
ftpd_anon_write --> off
ftpd_connect_all_unreserved --> off
ftpd_connect_db --> off
ftpd_full_access --> on
ftpd_use_cifs --> off
ftpd_use_fusefs --> off
ftpd_use_nfs --> off
ftpd_use_passive_mode --> off
httpd_can_connect_ftp --> off
httpd_enable_ftp_server --> off
sftpd_anon_write --> off
sftpd_enable_homedirs --> off
sftpd_full_access --> off
sftpd_write_ssh_home --> off
tftp_anon_write --> off
tftp_home_dir --> off

配置完成后重启vsftp服务:

systemctl restart vsftpd.service

2.7 防火墙配置

方法1:放开"20""21"端口,配置"iptables"
vim /etc/sysconfig/iptables

追加配置:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT

重启防火墙:

service iptables restart
方法2:直接关闭防火墙
systemctl stop firewalld
systemctl disable firewalld

默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。

2.8 vsftpd.conf文件常用配置说明

用户登陆控制:

参数 说明
anonymous_enable=YES 接受匿名用户
no_anon_password=YES 匿名用户login时不询问口令
anon_root=(none) 匿名用户主目录
local_enable=YES 接受本地用户
local_root=(none) 本地用户主目录

用户权限控制:

参数 说明
write_enable=YES 可以上传(全局控制)
local_umask=022 本地用户上传文件的umask
file_open_mode=0666 上传文件的权限配合umask使用
anon_upload_enable=NO 匿名用户可以上传
anon_mkdir_write_enable=NO 匿名用户可以建目录
anon_other_write_enable=NO 匿名用户修改删除
chown_username=lightwiter 匿名上传文件所属用户名

更多vsftpd.conf配置详细说明可参考:
https://www.cnblogs.com/halberd-lee/p/11734363.html
https://www.cnblogs.com/kuliuheng/p/3209674.html

你可能感兴趣的:(FTP)