0%

Linux下安装FTP

1.什么是vsftpd

vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。
vsftpd 的名字代表”very secure FTP daemon”, 安全是它的开发者 Chris Evans 考虑的首要问题之一。在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标。

2.查看当前服务器是否安装过

1
$ rpm -qa|grep vsftp

如果显示版本号,说明安装成功,如果没有安装文件,什么都不显示,说明没有安装或者其他情况。也可以通过which vsftp检查是否有ftp的安装文件。

3.安装FTP

1
$ yum -y install vsftpd

安装完后,有/etc/vsftpd/vsftpd.conf 文件,是vsftp的配置文件。还新建了一个ftp用户和ftp的组,指向home目录为/var/ftp,默认是nologin(不能登录系统)。可以用cat /etc/passwd 命令查看用户。

4.启动ftp,执行命令

1
$ service vsftpd start

5.查看ftp的状态

1
$ service vsftpd status

6.安装ftp客户端组件(用来验证登录vsftpd)

1
# yum -y install ftp

执行命令尝试登录

1
# ftp localhost

输入用户名ftp,密码随便(因为默认是允许匿名的)
登录成功,就代表ftp服务可用了。
但是,外网是访问不了的,所以还要继续配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost ~]# ftp localhost
Trying ::1...
ftp: connect to address ::1拒绝连接
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (localhost:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,177,184).
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 4096 Mar 22 2017 pub
226 Directory send OK.
ftp>

7.添加一个ftp用户

1
# useradd ftpuser

此用户就是用来登录ftp服务器用的。
这样一个用户建完,可以用这个登录,记得用普通登录不要用匿名了。登录后默认的路径为 /home/ftpuser.

8.给ftp用户添加密码

1
# passwd ftpuser

输入两次密码后修改密码。

9.关闭匿名登录

1
# vim /etc/vsftpd/vsftpd.conf

设置anonymous_enable=NO。

10.重启ftp服务

1
# service vsftpd restart

11.开启passive模式

默认是开启的,但是要指定一个端口范围,打开vsftpd.conf文件,在后面加上

1
2
pasv_min_port=30000   
pasv_max_port=30999

表示端口范围为30000~30999,这个可以随意改。改完重启一下vsftpd。

12.修改ftp默认的端口号

常规下21端口容易遭到别人的扫描、带来了一定程度的不安全。所以,最好的就是把21端口修改掉。默认修改为6069。

12.1 修改vsftp的配置文件

1
$ vi /etc/vsftpd/vsftpd.conf

在原来的基础上加上:

1
2
3
4
5
6
7
8
9
10
11
listen_port=6069

pasv_enable=YES

pasv_min_port=30000

pasv_max_port=30999

pasv_promiscuous=YES

ftpd_banner=Welcome to Wander FTP service

12.2 修改/etc/services

1
$ vi /etc/services

修改成:

1
2
ftp             6069/tcp
ftp             6069/udp

12.3 修改防火墙规则

如果防火墙开启、并且做了端口限制、请添加相应的规则

1
2
3
4
5
$ vi /etc/sysconfig/iptables

-A INPUT -p tcp -m state --state NEW -m tcp --dport 30000:30999 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 6069 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6069 -j ACCEPT

12.4 重启服务

1
2
# service iptables restart
# service vsftpd restart

然后就可以通过客户端6069端口连接ftp(选择被动模式连接)。

13.配置 vsftpd 使用 SSL / TLS

13.1 检查 vsftpd 是否支持 ssl 模块

1
# ldd $(which vsftpd) | grep ssl

13.2 建立专门给vsftpd使用的凭证数据。CentOS有一个建立凭证的地方/etc/pki/tls/certs/。

1
# cd /etc/pki/tls/certs

生成密钥文件

1
# make vsftpd.pem

复制证书到vsftpd目录

1
2
# cp -a vsftpd.pem /etc/vsftpd/
# ll /etc/vsftpd/vsftpd.pem

证书配置解析:

1
2
3
4
5
6
7
Country Name (2 letter code) [XX]:CN                            国家名称(2个字母代码)[XX]:CN
State or Province Name (full name) []:CHINA 国家或省名(全称)[]:中国
Locality Name (eg, city) [Default City]:CHINA 地名(如城市)[默认城市]:中国
Organization Name (eg, company) [Default Company Ltd]:ORG 组织名称(如公司)[默认公司有限公司]:ORG
Organizational Unit Name (eg, section) []:ORG 组织单元名称(例如,节)[]:ORG
Common Name (eg, your name or your server's hostname) []:NAME 常用名称(例如,您的名称或服务器的主机名)[]:Name
Email Address []:EMAIL@163.com 电子邮件地址[]:EMAIL@163.com

13.3 修改 vsftpd.conf 配置文件

停止服务

1
# service vsftpd stop

在最后加上以下配置

1
2
3
4
5
6
7
8
ssl_enable=YES
allow_anon_ssl=YES
force_anon_data_ssl=YES
force_anon_logins_ssl=YES
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_tlsv1=YES
rsa_cert_file=/etc/vsftpd/vsftpd.pem

配置解析:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
###SSL#####
# 是否启用SSL,默认值:NO
ssl_enable=YES
#
# 仅适用于 ssl_enable 活动。如果设置为YES,匿名用户将被允许使用安全的SSL连接
默认值:NO
allow_anon_ssl=YES
#
# 仅适用于 ssl_enable 激活。如果激活,所有匿名登录将被强制使用安全的SSL连接,以便在数据连接上发送和接收数据。默认值:NO
force_anon_data_ssl=YES
#
# 仅适用于 ssl_enable 激活。如果激活,所有匿名登录将被强制使用安全的SSL连接以发送密码。默认值:NO
force_anon_logins_ssl=YES
#
# 仅适用于 ssl_enable 激活。如果激活,所有非匿名登录将被强制使用安全的SSL连接,以便在数据连接上发送和接收数据。默认值:YES
force_local_data_ssl=YES
#
# 仅适用于 ssl_enable 激活。如果激活,所有非匿名登录将被强制使用安全的SSL连接以发送密码。默认值:YES
force_local_logins_ssl=YES
#
# 仅适用于 ssl_enable 激活。如果启用,此选项将允许TLS v1协议连接。TLS v1连接是首选。默认值:YES
ssl_tlsv1=YES
#
# 仅适用于 ssl_enable 激活。如果启用,此选项将允许SSL v2协议连接。TLS v1连接是首选。默认值:NO
#ssl_sslv2=NO
#
# 仅适用于 ssl_enable 激活。如果启用,此选项将允许SSL v3协议连接。TLS v1连接是首选。默认值:NO
#ssl_sslv3=NO
#
# 选项指定用于SSL加密连接的RSA证书的位置。默认值:/usr/share/ssl/certs/vsftpd.pem
rsa_cert_file=/etc/vsftpd/vsftpd.pem

13.4 最后保存,重启服务就OK了

启动服务

1
service vsftpd start

重启服务

1
service vsftpd restart

13.5 连接 Vsftpd

在连接的时候勾选信任证书就行。

参考链接:

Linux安装ftp组件(8步完成)
小白教程:linux下安装FTP的过程和使用的整体过程
Linux 搭建FTP服务器
centos启用ftp功能
修改ftp默认端口
”不安全的服务器,不支持 FTP over TLS“ 配置 vsftpd 使用 SSL / TLS