CentOS7下使用vsftpd搭建FTP服务器

一、环境准备

FTP 是目前最常用的一种上传及下载文件的协议,因其通信内容没有加密考虑其安全性而产生了 SCPSFPT 等协议。我们也可以使用 FTPS(FTP Over SSL/TLS) 来更加安全的上传及下载文件。在这里介绍如何基于 vsftpd 实现 FTPS 服务。

1、Centos系统:CentOS7系统安装

2、Nginx软件: Nginx基本配置

3、FTp软件: vsftpd在github项目

4、OpenSSL: OpenSSL在github项目

二、 软件安装

2.1 安装openssl

OpenSSL 是一个安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL协议,并提供丰富的应用程序供测试或其它目的使用.

1、安装OpenSSL,可以使用 yum 方式和 编译 方式安装。这里使用 yum 方式安装。(ps:大多数情况下,安装系统时已经安装最新版本的OpenSSL了)

yum install openssl

2、使用 easy-rsa 生成服务器证书。

yum install easy-rsa

2.2 安装Vsftpd软件

vsftpdvery secure FTP daemon 的缩写,安全性是它的一个最大的特点。vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、 HP-UNIX 等系统上面,是一个完全免费的、开放源代码的ftp服务器软件,支持很多其他的 FTP 服务器所不支持的特征。比如:非常高的安全性需求、带宽限制、良好的可伸缩性、可创建虚拟用户、支持IPv6、速率高等。

1、使用yum方式安装

yum install vsftpd

2、服务启动并加入自启动项,可以待修改配置后执行。

systemctl start vsftpd #服务启动
systemctl enable vsftpd #加入启动项
systemctl stop vsftpd #服务关闭
systemctl disable vsftpd #删除启动项
systemctl status vsftpd  #查看服务状态

3、添加ftp用户

useradd -s /sbin/nologin ftpuser # 添加不能登录SHELL的用户,保证安全。
passwd ftpuser # 修改用户密码

软件配置

证书配置

使用 easy-rsa 生成服务端证书

1、复制 esay-rsa 的文件到指定目录,并进入目录;

cp -a /usr/share/easy-rsa/3.0.3 /etc/vsftpd/easyrsa
cd /etc/vsftpd/easyrsa

2、添加 vars 文件

cp /usr/share/doc/easy-rsa-3.0.3/vars.example /etc/vsftpd/easyrsa/vars

3、初始化 pki 目录

./easyrsa init-pki

pki目录初始化

4、以无密码方式,创建 服务端CA文件

./easyrsa build-ca nopass

创建CA证书文件

5、、以无密码方式,创建 服务端key 文件

./easyrsa gen-req longserver nopass

创建服务端key

6、注册服务端CN名,生成服务端crt文件

./easyrsa sign server longhserver

创建服务端crt文件

7、生成dh.pem文件

./easyrsa gen-dh

创建dh2048文件

查看证书目录下的文件

证书目录树

使用 easy-rsa 生成客户端证书

1、复制esay-rsa的文件到指定目录,并进入目录;

cp -a /usr/share/easy-rsa/3.0.3 /etc/vsftpd/clientrsa
cd clientrsa

2、添加 vars 文件

cp /usr/share/doc/easy-rsa-3.0.3/vars.example /etc/vsftpd/easyrsa/vars

3、初始化 pki 目录

./easyrsa init-pki

4、以无密码方式,创建 客户端req 文件

./easyrsa gen-req longclient nopass

创建客户端req

5、进入 服务端 key 目录,关联客户端req,使之向服务端注册

cd /etc/vsftpd/easyrsa/
./easyrsa import-req /etc/vsftpd/clientrsa/pki/reqs/longclient.req  longclient

服务端关联客户端req

6、注册客户端CN名,生成客户端key文件

./easyrsa sign client longclient

 生成客户端key

vsftpd配置

1、修改配置文件

cp -a /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak # 备份原始配置文件
vi /etc/vsftpd/vsftpd.conf

修改成如下内容:

anonymous_enable=NO          #不允许匿名用户登录
local_enable=YES             #vsftpd所在系统的用户可以登录ftp
write_enable=YES             #允许使用任何可以修改文件系统的FTP指令
local_umask=022              #匿名用户新增文件的umask数值
anon_upload_enable=NO        #匿名用户不可以上传文件
anon_mkdir_write_enable=NO   #匿名用户不可以修改文件
dirmessage_enable=YES        #信息显示
xferlog_enable=YES           #开启数据传输端口,默认为20
xferlog_file=/var/log/xferlog #日志保存位置
xferlog_std_format=YES       #日志使用标准格式
idle_session_timeout=600     #登录超时时间60秒,不操作,即断开。
data_connection_timeout=7200 #传输超时时间
ftpd_banner=Welcome to blah FTP service . #登录欢迎语
chroot_local_user=YES        #锁定用户目录
allow_writeable_chroot=YES   #允许对家目录的写权限
listen=YES                   #开启IPV4监听
listen_ipv6=NO               #关闭IPV6监听

pam_service_name=vsftpd      #验证文件名字
userlist_enable=YES          #允许userlist_file文件中的用户访问FTP.
userlist_deny=NO             #如果为NO,则将需要登录的用户添加到/etc/vsftpd/user_list。
tcp_wrappers=YES             #支持tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny 

rsa_cert_file=/etc/vsftpd/easyrsa/pki/issued/longclient.crt  #SSL/Tls证书保存位置(可以是默认位置,路径写对就行)
rsa_private_key_file=/etc/vsftpd/clientrsa/pki/private/longclient.key  #私钥文件
allow_anon_ssl=NO           #不允许匿名用户登录
force_local_data_ssl=YES    #对数据加密
force_local_logins_ssl=YES  #使用SSL登录
ssl_sslv2=YES               #开启SSLv2
ssl_sslv3=YES               #开启SSLv2
ssl_tlsv1=YES               #开启Tls

pasv_promiscuous=YES        #开启被动上传模式
pasv_min_port=65000         #被动上传模式最小端口
pasv_max_port=65001         #被动上传模式最大端口
pasv_addr_resolve=YES       #被动上传模式地址转换

保存退出

2、将用户添加允许登录列表

vim /etc/vsftpd/user_list

ftpuser1 # 每个用户一行
ftpuser2

3、关闭pam认证

# auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed

pam认证

3、启动或重启vsftp服务

systemctl restart vsftpd
systemctl status vsftpd

vsftpd服务状态

通过防火墙

1、Centos7以来,默认使用firewalld 防火墙,这里我们以此为例修改防火墙规则。

firewall-cmd --permanent --zone=public --add-service=ftp  #添加FTP端口规则到防火墙
firewall-cmd --reload   #重新加载防火墙
firewall-cmd --list-all #查看防火墙规则

vsftpd防火墙规则1

2、现在这种状态,如果不添加SSL认证就能够正常使用FTP了,但是如果启用了SSL认证(FTP to SSL)会出现不能读取列表。

vsftpd防火墙规则2

3、因为动态端口的规则和ftp pasv模式,我们找到vsftpd.conf这个文件,可以看到已经定义`ftp pasv’端口,但是在防火墙没有打开(测试停用防火墙可以正常使用)

firewall-cmd --permanent --zone=public --add-port=65001/tcp
firewall-cmd --permanent --zone=public --add-port=65000/tcp
firewall-cmd --reload

4、现在看一下完成的状态

vsftpd 服务状态

文章引用

http://blog.csdn.net/pojun_gufeiyang/article/details/70158074 Linux中FTP安装与配置

http://www.linuxidc.com/Linux/2012-09/71129p2.htm Linux下ftp+SSL实现ftps

https://www.olinux.org.cn/linux/1000.html Centos下vsftpd提示:连接超时,读取目录列表失败


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 long@longger.xin

文章标题:CentOS7下使用vsftpd搭建FTP服务器

字数:1.6k

本文作者:Longger

发布时间:2018-02-03, 22:58:10

最后更新:2024-11-13, 22:23:14

原始链接:https://www.longger.xin/article/36020.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

×

喜欢就点赞,疼爱就打赏

github