不简单的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:登录

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

7:重新启动vsftpd的服务

[root@zzu ~]# service vsftpd restart

Shutting down vsftpd: [ OK ]

Starting vsftpd for vsftpd: [ OK ]

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

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

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

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

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功能的服务器之间的安全连接中对数据进行加密和解密的协议。

ftps linux 服务器,linux下ftps服务器的搭建总结相关推荐

  1. Red Hat EnterPrise Linux 5.4下web服务器的综合使用(普通站点、虚拟主机、安全性、...

    在这篇博客中,小编我将详细的讲解一下linux下web服务器的使用,相信这对于web网站维护人员来说是非常有用的,在linux下实现web服务器的软件有很多,最常用的就是apache啦,小编这里使用的 ...

  2. linux aaa认证服务器,Windows下AAA服务器的搭建及身份认证!

    一 .Linux下的配置: 1.配ip [Quidway]int Vlan-interface 1 [Quidway-Vlan-interface1]ip add 192.168.101.28 255 ...

  3. Linux服务器IP下了,linux – DDOS攻击下的服务器 – 如何查找IP?

    tail -n 10000 yourweblog.log|cut -f 1 -d ' '|sort|uniq -c|sort -nr|more 看一下顶级IP地址.如果有人从其他人中脱颖而出,那些将成 ...

  4. deepin安装tftp服务器_ubuntu下tftp服务器搭建

    tftp服务器搭建步骤 1.安装tftp-server 使用 sudo apt-get install tftpd-hpa 命令下载tftp服务端 使用 sudo apt-get install tf ...

  5. Linux|UNIX下LAMP环境的搭建及常见问题[连载4]

     特别注意因为接下来要添加SSL认证,所以下面的操作请留到第四部分配置好SSL证书之后再行操作.把这部分内容放置在这里的目的是为了保持文章的逻辑性.关于数据库的启动 # cd /usr/local/m ...

  6. 红帽linux lnmp搭建,Linux(redhat5.4)下lnmp环境的搭建

    在前面我们已经实现了lamp架构的创建,今天就让我们来看一看lnmp架构是如何实现的.计划的实验步骤如下: 1. 数据库mysql的安装 2. Nginx的安装,libevent(编译库代码)的安装, ...

  7. Linux Ubuntu系统下Java开发环境搭建

    软件151田杰中 1. 前往ORACLE官网下载最新版本的Java JDK:http://www.oracle.com/technetwork/java/javase/downloads/index. ...

  8. 超详细,linux虚拟机的下的hadoop环境搭建

    一.虚拟机网络配置 1.查看ip地址 ifconfig 2.关闭系统防火墙命令 systemctl stop firewalld.service 3.关闭系统防火墙自启动命令 systemctl di ...

  9. Linux下不同服务器间数据传输

    因为工作原因,需要经常在不同的服务器见进行文件传输,特别是大文件的传输,因此对linux下不同服务器间数据传输命令和工具进行了研究和总结.主要是rcp,scp,rsync,ftp,sftp,lftp, ...

  10. linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl)

    因为工作原因,需要经常在不同的服务器见进行文件传输,特别是大文件的传输,因此对linux下不同服务器间数据传输命令和工具进行了研究和总结.主要是rcp,scp,rsync,ftp,sftp,lftp, ...

最新文章

  1. oracle选择语言设置,oracle本地语言变量设置
  2. When.js 1.8.0 发布,Promises/A 的实现
  3. 什么是Boot Loader
  4. 最受Linux程序员欢迎的7个代码编辑器的介绍及下载地址
  5. Sqlite 错误码
  6. [react] react的状态提升是什么?使用场景有哪些
  7. 手写tomcat监控工具---宕机重启
  8. 进程信号(信号、信号的注册与注销、信号的处理方式)
  9. 罗永浩担任“大局官”,小米双十一狂发补贴
  10. 微信小程序支付返回信息为空
  11. 该来的终于来了:“第一起”基于 IPv6 的 DDoS 攻击
  12. 苹果7系统更新12无服务器,别再为苹果手机无法更新系统犯难,这几种方式帮你解决!...
  13. idea将项目导出为jar包
  14. TrustedInstaller
  15. 人工智能算法(一)进化算法
  16. Unity5入门及进阶项目实战 星际迷航-肖师军-专题视频课程
  17. Redis入门总结(三):redis实现分布式锁的正确姿势
  18. 微信公众号简单接入springboot集成weixin4j
  19. MFC添加afx_msg点击事件
  20. Java截取视频生成Gif动图

热门文章

  1. mysql明文密码_MySQL明文密码备份解决
  2. 深入linux网络编程(四):使用asio搭建商用服务器
  3. Android,App 常用图标尺寸规范
  4. 利用ace.js编写一个JavaScript编辑器(带智能补全)
  5. 西门子PLC S7 200 SMART 没有触摸屏的仿真
  6. matlab贝塞尔函数零点,第一类贝塞尔函数零点求解matlab程序
  7. AlphaZero问世:8小时完爆围棋、国际象棋、日本将棋(转)
  8. 药一点医疗器械管理系统 药品管理软件
  9. 实战|朝阳医院药品销售分析案例
  10. php集成开发环境哪个最好,推荐几个好用的PHP集成开发环境