配置 vsftpd 使用 SSL 证书加密数据传输


超帅与方盒
超帅与方盒 2022-09-27 09:46:55 53297
分类专栏: 资讯

FTP 与 HTTP 一样缺省状态都是基于明文传输,希望 FTP 服务器端与客户端传输保证安全,可以为 FTP 配置 SSL

TLS

安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性

该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。

传输层安全性协议(英语:Transport Layer Security,缩写TLS),及其前身安全套接层(Secure Sockets Layer,缩写作SSL)是一种安全协议,目的是为互联网通信提供安全及数据完整性保障。网景公司(Netscape)在1994年推出首版网页浏览器网景导航者时,推出HTTPS协议,以SSL进行加密,这是SSL的起源。IETF将SSL进行标准化,1999年公布第一版TLS标准文件。随后又公布RFC 5246 (2008年8月)与RFC 6176(2011年3月)。在浏览器邮箱即时通信VoIP网络传真等应用程序中,广泛支持这个协议。主要的网站,如GoogleFacebook等也以这个协议来创建安全连线,发送数据。目前已成为互联网上保密通信的工业标准。

SSL包含记录层(Record Layer)和传输层,记录层协议确定传输层数据的封装格式。传输层安全协议使用X.509认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密钥作为会谈密钥(Session key)。这个会谈密钥是用来将通信两方交换的数据做加密,保证两个应用间通信的保密性和可靠性,使客户与服务器应用之间的通信不被攻击者窃听。

TLS协议采用主从式架构模型,用于在两个应用程序间透过网络创建起安全的连线,防止在交换数据时受到窃听及篡改。

TLS协议的优势是与高层的应用层协议(如HTTPFTPTelnet等)无耦合。应用层协议能透明地运行在TLS协议之上,由TLS协议进行创建加密通道需要的协商和认证。应用层协议传送的数据在通过TLS协议时都会被加密,从而保证通信的私密性。

TLS协议是可选的,必须配置客户端和服务器才能使用。主要有两种方式实现这一目标:一个是使用统一的TLS协议通信端口(例如:用于HTTPS的端口443);另一个是客户端请求服务器连接到TLS时使用特定的协议机制(例如:邮件、新闻协议和STARTTLS)。一旦客户端和服务器都同意使用TLS协议,他们通过使用一个握手过程协商出一个有状态的连接以传输数据。通过握手,客户端和服务器协商各种参数用于创建安全连接:

  • 当客户端连接到支持TLS协议的服务器要求创建安全连接并列出了受支持的密码组合(加密密码算法和加密哈希函数),握手开始。

  • 服务器从该列表中决定加密和散列函数,并通知客户端。

  • 服务器发回其数字证书,此证书通常包含服务器的名称、受信任的证书颁发机构(CA)和服务器的公钥。

  • 客户端确认其颁发的证书的有效性。

  • 为了生成会话密钥用于安全连接,客户端使用服务器的公钥加密随机生成的密钥,并将其发送到服务器,只有服务器才能使用自己的私钥解密。

  • 利用随机数,双方生成用于加密和解密的对称密钥。这就是TLS协议的握手,握手完毕后的连接是安全的,直到连接(被)关闭。如果上述任何一个步骤失败,TLS握手过程就会失败,并且断开所有的连接。

SSL 1.0、2.0和3.0

SSL(Secure Sockets Layer)是网景公司(Netscape)设计的主要用于Web的安全传输协议,这种协议在Web上获得了广泛的应用。

基础算法由作为网景公司的首席科学家塔希尔·盖莫尔(Taher Elgamal)编写,所以他被人称为“SSL之父”。

2014年10月,Google发布在SSL 3.0中发现设计缺陷,建议禁用此一协议。攻击者可以向TLS发送虚假错误提示,然后将安全连接强行降级到过时且不安全的SSL 3.0,然后就可以利用其中的设计漏洞窃取敏感信息。Google在自己公司相关产品中陆续禁止回溯兼容,强制使用TLS协议。Mozilla也在11月25日发布的Firefox34中彻底禁用了SSL 3.0。微软同样发出了安全通告。

  • 1.0版本从未公开过,因为存在严重的安全漏洞。

  • 2.0版本在1995年2月发布,但因为存在数个严重的安全漏洞而被3.0版本替代。

  • 3.0版本在1996年发布,是由网景工程师Paul Kocher、Phil Karlton和Alan Freier完全重新设计的。较新版本的SSL/TLS基于SSL 3.0。SSL 3.0作为历史文献IETF通过RFC 6101发表。


  • cd /etc/vsftpd
  • 使用 OpenSSL 生成自签证书
    openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftpd.pem -days 3650
  • OpenSSL 简单参数解释:
    req 是 X.509 Certificate Signing Request (CSR,证书签名请求)管理的一个命令。
    x509 X.509 证书数据管理。
    days 定义证书的有效日期。
    newkey 指定证书密钥处理器。
    keyout 设置密钥存储文件。
    out 设置证书存储文件,注意证书和密钥都保存在一个相同的文件
  • mkdir .sslkey
    mv vsftpd.pem .sslkey/

  • 修改配置文件,支持 SSL
  • vim vsftpd.conf
  • ssl_enable=YES        启用 SSL 支持。
    allow_anon_ssl=NO
    force_local_data_ssl=YES 
    force_local_logins_ssl=YES
    force_anon_logins_ssl=YES
    force_anon_data_ssl=YES
    上面四行 force 表示强制匿名用户使用加密登陆和数据传输。
    ssl_tlsv1=YES       指定 vsftpd 支持 TLS v1。
    ssl_sslv2=YES      指定 vsftpd 支持 SSL v2。
    ssl_sslv3=YES      指定 vsftpd 支持 SSL v3。
    require_ssl_reuse=NO    不重用 SSL 会话,安全配置项 。
    ssl_ciphers=HIGH           允许用于加密 SSL 连接的 SSL 算法。这可以极大地限制那些尝试发现使用存在缺陷的特定算法的攻击者。
  • rsa_cert_file=/etc/vsftpd/.sslkey/vsftpd.pem
    rsa_private_key_file=/etc/vsftpd/.sslkey/vsftpd.pem     定义 SSL 证书和密钥文件的位置。

  • 注意:上面的配置项不要添加到 vsftpd.conf 文件最后也不要加注释,否则启动报错。而且配置后不能有多余的空格。
    修改完配置文件后,重启服务:
    systemctl restart vsftpd

  • 配置 FileZilla 客户端验证

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=10549
赞同 0
评论 0 条
超帅与方盒L0
粉丝 0 发表 7 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2950
【软件正版化】软件正版化工作要点  2872
统信UOS试玩黑神话:悟空  2833
信刻光盘安全隔离与信息交换系统  2728
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1261
grub引导程序无法找到指定设备和分区  1226
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  165
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  163
点击报名 | 京东2025校招进校行程预告  163
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  158
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
如何玩转信创开放社区—从小白进阶到专家 15
信创开放社区邀请他人注册的具体步骤如下 15
方德桌面操作系统 14
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
我有15积分有什么用? 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!