ftps linux 服务器,linux下ftps服务器的搭建总结

不简单的s,增加ftp的安全性 ----ftps

ftp的简介和工作模式

FTP(File Transfer Protocol, FTP)是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一,它属于网络协议组的应用层。FTP客户机可以给服务器发出命令来下载文件,上载文件,创建或改变服务器上的目录。

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,然后在两个端口之间进行数据传输。

注意:被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。

实验环境

1操作系统 linux redhat enterprise 5 版本号2.6.18-164.el5

案例一:

需求分析:通过为自己企业的ftp增加ssl的功能,有效提高ftp服务器的安全性。

一:搭建自己的证书服务器(CA服务器,我们使用linux 自带的openssl 来进行搭建即可)

1:安装openssl 的rpm包

[root@zzu ~]# mount /dev/cdrom /mnt/cdrom/ 将自己的光盘进行挂载

[root@zzu Server]# ll openssl*

-r--r--r-- 319 root root 845408 2008-12-23 openssl097a-0.9.7a-9.el5_2.1.i386.rpm

-r--r--r-- 108 root root 1513450 2009-07-20 openssl-0.9.8e-12.el5.i386.rpm

-r--r--r-- 130 root root 1499080 2009-07-20 openssl-0.9.8e-12.el5.i686.rpm

-r--r--r-- 125 root root 1955524 2009-07-20 openssl-devel-0.9.8e-12.el5.i386.rpm

-r--r--r-- 108 root root 34568 2009-07-20 openssl-perl-0.9.8e-12.el5.i386.rpm

[root@zzu Server]# rpm -ivh openssl-0.9.8e-12.el5.i386.rpm

[root@zzu Server]# rpm -ivh openssl-devel-0.9.8e-12.el5.i386.rpm

[root@zzu Server]# rpm -ivh openssl-devel-0.9.8e-12.el5.i386.rpm

2:修改ca服务器的配置文件

[root@zzu ~]# cd /etc/pki/

[root@zzu pki]# ll

drwx------ 3 root root 4096 2012-02-08 CA

drwxr-xr-x 2 root root 4096 2012-02-08 nssdb

drwxr-xr-x 2 root root 4096 2012-02-08 rpm-gpg

drwxr-xr-x 5 root root 4096 2012-02-08 tls

[root@zzu pki]# vim tls/openssl.cnf

45 dir = /etc/pki/CA/    更改第45行

88—90行将match 改为optional ,允许ca服务器为其他部门的服务器颁发证书

88 countryName = optional

89 stateOrProvinceName = optional

90 organizationName = optional

3:切换到CA 目录下面,建立3个目录和2个文件

[root@zzu pki]# pwd

/etc/pki

[root@zzu pki]# cd CA

[root@zzu CA]# mkdir certs newcerts crl 证书目录 ,证书的吊销列表目录

[root@zzu CA]# touch index.txt index.txt文件

[root@zzu CA]# echo "01" >serial serial文件

[root@zzu CA]# ll

drwxr-xr-x 2 root root 4096 Feb 7 19:47 certs

drwxr-xr-x 2 root root 4096 Feb 7 19:47 crl

-rw-r--r-- 1 root root 0 Feb 7 19:47 index.txt

drwxr-xr-x 2 root root 4096 Feb 7 19:47 newcerts

drwx------ 2 root root 4096 Jun 30 2009 private

-rw-r--r-- 1 root root 3 Feb 7 19:47 serial

4:为ca服务器建立自己的钥匙和证书文件

[root@zzu CA]# openssl genrsa 1024 >private/cakey.pem 产生钥匙文件

Generating RSA private key, 1024 bit long modulus

.....................++++++

..++++++

e is 65537 (0x10001)

[root@zzu CA]# chmod 600 private/cakey.pem 改变私钥的相应的权限,增加安全性

[root@zzu CA]# ll private/cakey.pem

-rw------- 1 root root 891 Feb 7 19:49 private/cakey.pem

##这里我们可以指明证书的格式为-x509,有效日期10年

[root@zzu CA]# 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]:BEIJING

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

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

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

Common Name (eg, your name or your server's hostname) []:rootca.net.net

Email Address []:

[root@zzu CA]# ll

total 28

-rw-r--r-- 1 root root 1147 Feb 7 19:54 cacert.pem

drwxr-xr-x 2 root root 4096 Feb 7 19:47 certs

drwxr-xr-x 2 root root 4096 Feb 7 19:47 crl

-rw-r--r-- 1 root root 0 Feb 7 19:47 index.txt

drwxr-xr-x 2 root root 4096 Feb 7 19:47 newcerts

drwx------ 2 root root 4096 Feb 7 19:49 private

-rw-r--r-- 1 root root 3 Feb 7 19:47 serial

这样我们的CA服务器就搭建好啦,接下来我们就来搭建自己的ftp服务器

二: 搭建自己企业的ftp服务器

1: 安装vsftp的rpm包

[root@zzu ~]# cd /mnt/cdrom/Server/

[root@zzu Server]# rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm

warning: vsftpd-2.0.5-16.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186

Preparing... ########################################### [100%]

1:vsftpd ########################################### [100%]

[root@zzu Server]#

2:创建一个自己的certs目录存放自己的ftp的证书的钥匙、请求文件、证书文件。

[root@zzu ~]# cd /var/ftp/

[root@zzu ftp]# ll

total 4

drwxr-xr-x 2 root root 4096 May 13 2009 pub

[root@zzu ftp]# mkdir certs

[root@zzu ftp]# ll

total 8

drwxr-xr-x 2 root root 4096 Feb 7 20:00 certs

drwxr-xr-x 2 root root 4096 May 13 2009 pub

[root@zzu ftp]# cd certs/

[root@zzu certs]# openssl genrsa 1024 >ftp.key 产生钥匙文件

Generating RSA private key, 1024 bit long modulus

................++++++

.....++++++

e is 65537 (0x10001)

[root@zzu certs]# openssl req -new -key ftp.key -out ftp.csr 产生请求的文件

You are about to be asked to enter information that will be incorporated

into your certificate request.

What you are about to enter is what is called a Distinguished Name or a DN.

There are quite a few fields but you can leave some blank

For some fields there will be a default value,

If you enter '.', the field will be left blank.

-----请求的相关信息

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

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

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

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

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

Common Name (eg, your name or your server's hostname) []:www.zzu.com

Email Address []:

Please enter the following 'extra' attributes

to be sent with your certificate request

A challenge password []:

An optional company name []:

[root@zzu certs]# openssl ca -in ftp.csr -out ftp.crt请求CA服务器为自己的ftp服务器签发证书

Using configuration from /etc/pki/tls/openssl.cnf

Check that the request matches the signature

Signature ok

Certificate Details:

Serial Number: 1 (0x1)

Validity

Not Before: Feb 7 12:04:20 2012 GMT

Not After : Feb 6 12:04:20 2013 GMT

Subject:

countryName = CN

stateOrProvinceName = HENAN

organizationName = ZZU

organizationalUnitName = ZZU

commonName = www.zzu.com

X509v3 extensions:

X509v3 Basic Constraints:

CA:FALSE

Netscape Comment:

OpenSSL Generated Certificate

X509v3 Subject Key Identifier:

E6:E2:BD:31:F6:4A:3C:9A:FB:E4:6F:75:71:87:65:BD:99:5E:49:94

X509v3 Authority Key Identifier:

keyid:11:03:59:C8:3D:8E:B0:59:8D:BF:EF:7A:7F:C7:47:5C:D9:7A:0E:66

Certificate is to be certified until Feb 6 12:04:20 2013 GMT (365 days)

Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y

Write out database with 1 new entries

Data Base Updated

[root@zzu certs]# ll 我们已经有啦自己的证书和钥匙文件

-rw-r--r-- 1 root root 3068 Feb 7 20:04 ftp.crt

-rw-r--r-- 1 root root 639 Feb 7 20:02 ftp.csr

-rw-r--r-- 1 root root 891 Feb 7 20:00 ftp.key

3:更改文件的权限为600,提高ftp的安全性

[root@zzu certs]# chmod 600 *

[root@zzu certs]# ll

total 12

-rw------- 1 root root 3068 Feb 7 20:04 ftp.crt

-rw------- 1 root root 639 Feb 7 20:02 ftp.csr

-rw------- 1 root root 891 Feb 7 20:00 ftp.key

4:将ftp服务器设置为自动启动

[root@zzu certs]# service vsftpd start

Starting vsftpd for vsftpd: [ OK ]

You have mail in /var/spool/mail/root

[root@zzu certs]# chkconfig vsftpd on

[root@zzu certs]# netstat -tupln|grep ftp

tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 4172/vsftpd

三:在客户端进行验证

1:安装wireshark的抓包工具 wireshark-1.0.8-1.el5_3.1.i386.rpm

[root@zzu ~]# cd /mnt/cdrom/Server/

[root@zzu Server]# yum install wireshark

2:增加一个本地账户

[root@zzu Server]# useradd user1

[root@zzu Server]# echo "123"|passwd --stdin user1

Changing password for user user1.

passwd: all authentication tokens updated successfully.

3:登录

5b9dc2990fd1fe43d72601027a9ef4fa.png

4:查看抓到的包

[root@zzu certs]# tshark -ni eth0 -R "tcp.dstport eq 21"

Running as user "root" and group "root". This could be dangerous.

18.103720 192.168.10.10 -> 192.168.10.100 FTP Request:USER user1

18.360719 192.168.10.10 -> 192.168.10.100 TCP 3560 > 21 [ACK] Seq=13 Ack=55 Win=65481 Len=0

20.532824 192.168.10.10 -> 192.168.10.100 FTP Request: PASS 123

20.674152 192.168.10.10 -> 192.168.10.100 TCP 3560 > 21 [ACK] Seq=23 Ack=78 Win=65458 Len=0 这样的话我们的密码就泄露啦

5:将ftp服务器与自己的钥匙和证书进行捆绑

[root@zzu ftp]# man 5 vsftpd.conf 我们可以参考vsftpd的配置手册进行帮助

在这里我们需要使用以下的参数

force_local_logins_ssl=YES 对本地用户进行ssl的加密验证

force_local_data_ssl=YES 对本地用户所传输的数据进行ssl的加密

ssl_enable=yes 开启ssl的验证功能

ssl_tlsv1=YES 支持ssl的v1版本 (由于被标准化组织给收购啦,前身叫tls,所以仍然保留该名称)

ssl_sslv2=YES 支持ssl的v2版本

ssl_sslv3=YES 支持ssl的v3版本

rsa_cert_file=/var/ftp/cert/ftp.crs 指出ftp的证书文件的所在的位置

rsa_private_key_file=/var/ftp/certs/ftp.key 指出ftp的私钥文件的所在的位置

6:修改ftp的配置文件

[root@zzu certs]# vim /etc/vsftpd/vsftpd.conf

be2f95a529ba47a7bd5eaf74c26ddf20.png

7:重新启动vsftpd的服务

[root@zzu ~]# service vsftpd restart

Shutting down vsftpd: [ OK ]

Starting vsftpd for vsftpd: [ OK ]

8:由于在命令行的提示符下我们无法看到相应的提示,所以在这里我们使用专用的客户的软件进行测试

软件的名称 FlashFXP-v4.0.154 你只要一路向下即可完成相应的安装,软件的主页面

21578e5c3de3d5dda72f9c8c612dcefd.png

9:在站点管理器增加自己的ftp的地址

b8e00b9c6482c66cdef171434dc14385.png

83adf8ec18552c3fbac411f57ff08995.png

10.我们已经登录上了郑州大学的ftp服务器啦

4c66bcb4d561a1069bf892af68af6106.png

11:我们再次来观察我们抓到的ip包,我们看到我们的用户名和密码已经被加密啦

4761.621409 192.168.10.10 -> 192.168.10.100 FTP Request: AUTH SSL

4761.710102 192.168.10.10 -> 192.168.10.100 FTP Request: \200\310\001\003\001\000\237\000\000\000 \000\300\024\000\300

4761.712400 192.168.10.10 -> 192.168.10.100 FTP Request: \026\003\001\000\206\020\000\000\202\000\200\210go\216\027`\314\374\360\217A\302\351\207aMp\316\017\216\031tp@\tcJ\005\350F\001\240\375\302t\223\b\316q\350

4761.817309 192.168.10.10 -> 192.168.10.100 TCP 1122 > 21 [ACK] Seq=403 Ack=893 Win=64643 Len=0

4796.023936 192.168.10.10 -> 192.168.10.100 FTP Request: \027\003\001\000\030\023\336\036\3609\245u\205\004\210\232\270B\212\214O\257\303,\257h\004\244\231\027\003\001\000 \223\024

4796.026042 192.168.10.10 -> 192.168.10.100 FTP Request: \027\003\001\000\030T.\3445P\263\372\353\370\337\240\305U\023r}\315\372L\214\376\360\256\002\027\003\001\000(\317h\3406\356"9\367\312\360\270kZ\361C\226:\220\356`!\335Q$\366\264\346\205\213u^\241\017NQ\373\f\241\342\231

6e\330`J\027\003\001\000 5\346\026\230*\200\225Y\360

4970.008940 192.168.10.10 -> 192.168.10.100 TCP 1122 > 21 [ACK] Seq=10785 Ack=10641 Win=65281 Len=0

4970.009087 192.168.10.10 -> 192.168.10.100 TCP 1122 > 21 [ACK] Seq=10785 Ack=10660 Win=65262 Len=0

4970.009707 192.168.10.10 -> 192.168.10.100 TCP 1122 > 21 [ACK] Seq=10785 Ack=10680 Win=65242 Len=0

4970.009985 192.168.10.10 -> 192.168.10.100 FTP Request: \025\003\001\000\030{\340\217\327\023\242\202\312t/tQW\374\255\367\321F`\246E\352v\241

4970.010162 192.168.10.10 -> 192.168.10.100 TCP 1122 > 21 [FIN, ACK] Seq=10814 Ack=10682 Win=65240 Len=0

4970.010164 192.168.10.10 -> 192.168.10.100 TCP 1122 > 21 [RST, ACK] Seq=10815 Ack=10682 Win=0 Len=0

小结:

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

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页