热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

用SRP建立安全的LinuxTelnet服务器一

文章标题:用SRP建立安全的LinuxTelnet服务器一。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  在中小型异构网络中,很多用户选择Linux作为网络操作系统,利用其简单的配置和用户熟悉的图形界面提供Internet服务,Telnet便是其提供的服务之一。Telnet最基本应用就是 用于Internet的远程登录,共享远程系统中的资源。
  
  它可以使用户坐在已上网的电脑键盘前通过网络进入的另一台已上网的电脑,并负责把用户输入的每个 字符传递给主机,再将主机输出的每个信息回显在屏幕上。这种连通可以发生在同一房间里面的电脑或是在世界各范围内已上网的电脑。
  
  Telnet服务与其他网络应用一样属于客户机/服务器模型,一旦连通后,客户机可以享有服务器所提供的一切服务。
  
  但是传统的网络服务程序telnet在本质上都是不安全的,因为它在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到"中间人"(man-in-the-middle)这种方式的攻击。
  
  所谓"中间人"的攻击方式,就是"中间人"冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被"中间人"转手后做了手脚之后,就会出现很严重的问题。
  
  SSH(Secure Shell)是以远程联机服务方式操作服务器时的较为安全的解决方案。它最初由芬兰的一家公司开发,但由于受版权和加密算法的限制,很多人转而使用免费的替代软件OpenSSH。Openssh是由OpenBSD Project开发和维护的、捆绑有SSH协议的软件套件。
  
  用户通过OpenSSH可以把所有传输的数据进行加密,使"中间人"的攻击方式不可能实现,但是OpenSSH目前存在两个安全遗患:口令、密匙破解(利用字典文件去解密码)和OpenSSH中可能被安放木马.
  
  一、SRP简介
  
  SRP全称:Secure Remote Password(安全远程密码),它是一个开放源代码认证协议。使用SRP的客户机/服务器不会在网络上以明文或加密的方式传送密码,这样可以完全消除密码欺骗行为。保证口令可以安全地在网络上面传送。基本的思想是,防止有被动或主动网络入侵者使用字典攻击。
  
  Standford大学计算机系开发了SRP软件包,提供基于口令认证和会话加密的安全机制,而不需要用户或者是网管参与密钥的管理或分发。SRP为每一个人提供透明的密码安全,而没有其他昂贵的起始开销,比如阻止其他安全套件软件的使用等。
  
  不像其他的安全软件,SRP套件是一个完全的实现密码认证的软件包,不是临时的解决方案。和标准的/etc/shadow-style 安全比较,SRP在每一个方面都是比较好的。使用SRP对用户和管理者都有以下的好处:
  
  SRP抵制"password sniffing"(口令监听)攻击。在一个使用SRP认证的会话中,监听者不会监视到任何在网络中传送的口令。在远程登陆软件中,明文的密码传送是最大的安全漏洞。任何人可以用一个简单的嗅探器(sniffer)工具得到你登陆到远程系统的密钥。
  
  SRP抵制字典攻击。一个系统保护简单的密码监听是不够的。如果攻击者使用强力攻击,例如字典攻击等,他们不是简单的直接监听密码,而是跟踪整个的会话过程,然后把整个的信息和字典中的普通密码对照。
  
  甚至有的Kerberos系统对这样的攻击也是脆弱的。SRP在抵制字典攻击的前,就进行口令的安全处理了。使用的算法就是在攻击者进行强力攻击前就要求攻击者必须执行一次不可能的的大的计算。SRP甚至保护针对口令的"active"攻击。
  
  因此,即使入侵者有能力和网络接触,也不能攻破SRP。所以即使是用户使用的是很脆弱的口令,也不会让入侵者很容易地破解的。SRP对于终端用户是完全透明的。因为没有所谓的"密钥链"(keyrings)以及"证书"(certificates),或者"票据"(ticket)。你的口令就是密钥。SRP简单地保护这个密钥,但要比老的、弱的密钥保护机制要好。
  
  SRP从管理者的角度来说也是容易实施的。没有所谓的"密钥服务器"、"证书认证",以及"认证服务器"等这样的概念。SRP口令文件在标准的Unix口令文件的旁边,软件本身协同这两个系统口令和SRP口令文件的一致性,没有多余的维护系统的机制。SRP在认证一个用户的时候交换一个加密的密钥。这就意味着一个登陆会话是可以被加密,而抵制所谓的网络监听和恶意地篡改。
  
  用户在远程阅读他们的信笺,是使用128-bit加密后的信息,这是当用户登陆后自动处理的,而用户本身不必关心到底需要不需要加密。系统完成加密,然后送到用户的这里。另外SRP不使用加密进行认证,这使得它比基于公用/私用密匙的认证方式速度更快捷、安全。
  
  SRP缺省使用的128-bit的CAST加密算法。CAST-128在RFC2144(http://srp.stanford.edu/srp/rfc2144.txt)中有定义。标准的SRP也支持56-bit的DES以及48位的DES。高级的支持Triple-DES加密手段。本文将介绍如何建立基于SRP的Telnet服务器。操作环境Redhat Linux 9.0。
  
  二、软件下载和编译
  
  SRP软件主页是:http://srp.stanford.edu 最新版本2.1.1,安装SRP前先要安装OpenSSL。
  
  #wget http://srp.stanford.edu/source/srp-2.1.1.tar.gz
  #cp /usr/src/redhat/SOURCES
  #./configure --with-openssl=/usr/src/redhat/SOURCES/openssl-0.9.6 --with-pam
  #make;make install
  
  三、建立指数密码系统EPS
  
  EPS全称:Exponential Password System(指数密码系统),SRP软件包中已经包括EPS源代码。
  
  1.安装PAM模块
  
  PAM简介:
  
  PAM全称:Pluggable Authentication Module (嵌入式认证模块)。它最初有SUN公司开发;很快被Linux社区的接受,并且开发了更多的模块。其目标是提供一套可用于验证用户身份的函数库,从而将认证从应用程序开发中独立出来。Linux-PAM处理四种独立的(管理)工作。它们是: 认证管理; 帐号管理; 会话期间管理;和密码管理。
  
  PAM工作方式:
  
  (1)调用某个应用程序,以得到该程序的服务。
  
  (2)PAM应用程序调用后台的PAM库进行认证工作。
  
  (3)PAM库在/etc/pam.d/目录中查找有关应用程序细节的配置文件,该文件告诉PAM,本应用程序使用何种认证机制。
  
  (4)PAM库装载所需的认证模块。
  
  (5)这些模块可以让PAM与应用程序中的会话函数进行通信。
  
  (6)会话函数向用户要求有关信息。
  
  (7)用户对这些要求做出回应,提供所需信息。
推荐阅读
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 实现Win10与Linux服务器的SSH无密码登录
    本文介绍了如何在Windows 10环境下使用Git工具,通过配置SSH密钥对,实现与Linux服务器的无密码登录。主要步骤包括生成本地公钥、上传至服务器以及配置服务器端的信任关系。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • Node.js在服务器上的多种部署策略
    本文探讨了Node.js应用程序在服务器上部署的几种有效方法,包括使用Screen、PM2以及通过宝塔面板进行简易管理。 ... [详细]
  • 对于初学者而言,搭建一个高效稳定的 Python 开发环境是入门的关键一步。本文将详细介绍如何利用 Anaconda 和 Jupyter Notebook 来构建一个既易于管理又功能强大的开发环境。 ... [详细]
  • 本文介绍了SELinux的两种主要工作模式——强制模式和宽容模式,并提供了如何在CentOS 7中正确启用和配置SELinux的方法,以及在遇到登录问题时的解决策略。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • 春季职场跃迁指南:如何高效利用金三银四跳槽季
    随着每年的‘金三银四’跳槽高峰期的到来,许多职场人士都开始考虑是否应该寻找新的职业机会。本文将探讨如何制定有效的职业规划、撰写吸引人的简历以及掌握面试技巧,助您在这关键时期成功实现职场跃迁。 ... [详细]
  • 服务器虚拟化存储设计,完美规划储存与资源,部署高性能虚拟化桌面
    规划部署虚拟桌面环境前,必须先估算目前所使用实体桌面环境的工作负载与IOPS性能,并慎选储存设备。唯有谨慎估算贴近实际的IOPS性能,才能 ... [详细]
  • 本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ... [详细]
author-avatar
小情冒_256
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有