centos和ubuntu安装ftps

  • Post author:
  • Post category:其他


FTPS是在安全套接层使用标准的FTP协议和指令的一种增强型TFP协议,为FTP协议和数据通道增加了SSL安全功能。FTPS也称作“FTP-SSL”和“FTP-over-SSL”。SSL是一个在客户机和具有SSL功能的服务器之间的安全连接中对数据进行加密和解密的协议。

FTP两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)

主动模式:FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。

被动模式:FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。



1.ubuntu 安装ftps

1)安装 vsftpd

apt-get install vsftpd

2)创建用户并在/home 目录下建立一个用户目录username

useradd -m test

passwd test

若是想更改用户登录目录,则执行命令

usermod -d /newpath test

3)更改配置文件

vi /etc/vsftpd.conf

listen=YES
listen_ipv6=NO
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
#主动式连接使用的数据通道
connect_from_port_20=NO
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
 #启用被动连接模式
pasv_enable=Yes
pasv_min_port=10000
pasv_max_port=10100
allow_writeable_chroot=YES
ssl_enable=YES
ssl_sslv2=YES
ssl_sslv3=YES
ssl_tlsv1=YES

4)重启ftps

service vsftpd restart

5)FTP服务被动模式命令端口默认是21号端口,这里我们开放21号端口和数据端口范围

ufw allow from any to any port 21,10000:10100 proto tcp

或者直接关闭防火墙

ufw disable

6)测试能否连接

apt install lftp

lftp ftp://username@ip:21

安装自己的openssl证书

$ sudo openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem -days 365 -newkey rsa:2048

上面的命令用于生成证书和 key 并保存在 vsftpd.pem

运行后会提示你输入相关组织名称、常用名称等信息(可以随便填写,不要留空):

将上面的配置文件vsftpd.conf中的rsa_cert_file和rsa_private_key_file的值改成

/etc/ssl/private/vsftpd.pem



2.centos 安装ftps

首先安装openssl。这里不提。

1)设置防火墙

systemctl stop firewalld.service #停止firewall(防火墙)

systemctl disable firewalld.service #禁止firewall开机启动

vi /etc/sysconfig/selinux

SELINUX=disabled

然后执行:setenforce 0

2)安装vsftpd

yum install -y vsftpd

3)创建用户名和密码

useradd user1

echo “123” |passwd –stdin user1

4)启动

service vsftpd start

5).配置本地CA证书服务器,修改配置文件:

这里默认openssl安装在/etc/pki/tls/目录下,openssl.cnf默认路径是/usr/local/openssl/ssl

注意证书有效日期设置 default_days = 3650

vi /etc/pki/tls/openssl.cnf

42 dir = /etc/pki/CA # Where everything is kept

85 countryName = optional

86 stateOrProvinceName = optional

87 organizationName = optional

cd /etc/pki/CA/

mkdir certs newcerts crl

touch index.txt serial

echo “01” >serial

openssl genrsa 1024 > private/cakey.pem

chmod 600 private/cakey.pem

ll private/cakey.pem

openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3650

会打印

Country Name (2 letter code) [GB]:cn

State or Province Name (full name) [Berkshire]:shandong

Locality Name (eg, city) [Newbury]:jinan

Organization Name (eg, company) [My Company Ltd]:hello

Organizational Unit Name (eg, section) []:soft

Common Name (eg, your name or your server’s hostname) []:ca.hello.com

Email Address []:hello@hello.com

6)为ftp服务器创建证书

mkdir /etc/vsftpd/certs

cd /etc/vsftpd/certs

openssl genrsa 1024 >vsftpd.key

openssl req -new -key vsftpd.key -out vsftpd.csr

依次输入地区单位等信息

openssl ca -in vsftpd.csr -out vsftpd.cert

选择y

chmod 600 *

7)ftp服务应用证书

vim /etc/vsftpd/vsftpd.conf

rsa_cert_file=/etc/vsftpd/certs/vsftpd.crt
rsa_private_key_file=/etc/vsftpd/certs/vsftpd.key
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_enable=YES
ssl_sslv2=YES
ssl_sslv3=YES
ssl_tlsv1=YES
force_anon_logins_ssl=YES
force_anon_data_ssl=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
require_ssl_reuse=NO
ssl_ciphers=HIGH

anonymous_enable=NO
ascii_upload_enable=YES
ascii_download_enable=YES
#锁定用户到各自的根目录
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
listen_port=21        #端口号自己定义
listen_ipv6=NO
pam_service_name=vsftpd
#local_root=/ftpdata/ #用户路径
user_config_dir=/etc/vsftpd/userconfig #用户配置文件目录,里面以用户名创建文件,并输入local_root=/path
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=59000
pasv_max_port=60000
reverse_lookup_enable=NO
max_clients=1000
max_per_ip=1000

8)重启服务

systemctl restart vsftpd.service

9)测试

yum -y install lftp

lftp ftp://username@ip:21

注意openssl的有效时间设置长一些。否则修改比较麻烦。

查看openssl的有效时间方法:

openssl x509 -in /etc/ssl/private/vsftpd.pem -noout -dates

特别注意:linux使用命令连接ftps(基于SSL的FTP),以下是ChatGPT的回答

非常抱歉,我之前的回答有误。实际上,lftp命令不直接支持FTPS(基于SSL的FTP)连接。它只支持普通FTP和SFTP(SSH File Transfer Protocol)连接。

如果您需要使用SSL加密与FTPS服务器进行连接,并且希望在命令行中执行操作,可以考虑使用curl命令。下面是使用curl命令进行FTPS连接的示例:

首先,请确保系统上已安装curl工具包。如果没有安装,可以使用以下命令进行安装:

sudo apt-get update

sudo apt-get install curl

然后,使用以下命令连接到FTPS服务器:

curl –ftp-ssl -u : ftp://

在这个命令中,和是您的FTP凭据,是FTPS服务器的主机名或IP地址。

这样,curl命令将使用SSL加密与FTPS服务器进行连接。

不得不说,在网上自己很难找到类似的答案



版权声明:本文为lz20120808原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。