歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux資訊 >> 更多Linux >> 用SRP建立安全的Linux Telnet服務器

用SRP建立安全的Linux Telnet服務器

日期:2017/2/27 9:49:41   编辑:更多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)用戶對這些要求做出回應,提供所需信息。

  (8)PAM認證模塊通過PAM庫將認證信息提供給應用程序。

  (9)認證完成後,應用程序做出兩種選擇:

  將所需權限賦予用戶,並通知用戶。

  認證失敗,並通知用戶。

  PAM工作流程見圖1。

圖1 PAM工作流程

  PAM具體使用方法:

#cd /usr/src/redhat/SOURCES
/srp-2.1.1/base/pam_eps.
#install -m 644 pam_eps_auth.
so pam_eps_passwd.so /lib/security


  上面命令會在/lib/security 目錄下安裝PAM模塊。然後使用命令:"/usr/local/bin/tconf"創建/etc/tpasswd 和 /etc/tpasswd.conf文件。

  2.使用EPS PAM模塊進行密碼驗證

  (1)首先備份 /etc/pam.d/system-auth文件

  (2)修改 /etc/pam.d/system-auth文件如下形式:

auth required /lib/security/pam_unix.so likeauth
nullok md5 shadow
auth sufficient /lib/security/pam_eps_auth.so
auth required /lib/security/pam_deny.so
account sufficient /lib/security/pam_unix.so
account required /lib/security/pam_deny.so
password required /lib/security/pam_cracklib.so retry=3
password required /lib/security/pam_eps_passwd.so
password sufficient /lib/security/pam_unix.so
nullok use_authtok md5 shadow
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so




  注意上面第一行黑體字表示PAM的eps_auth模塊可以滿足認證需求。第二行黑體字表示PAM的pam_eps_passwd.so 模塊用來進行密碼管理。

  (3)將標准密碼轉換為EPS格式

  (4)/etc/pam.d/system-auth 配置文件的模塊pam_eps_passwd.so 將EPS版本的密碼驗證字符串寫入/etc/tpasswd 文件中。 修改 /etc/pam.dpasswd文件如下形式:

auth required /lib/security/pam_stack.so
service=system-auth
account required /lib/security/pam_stack.so
service=system-auth
password required /lib/security/pam_stack.so
service=system-auth



四、啟動SRP版本下的Telnet服務器

  (1)進入SRP源代碼telnet子目錄,分別建立Telnet服務器文件和Telnet客戶端文件:

#cd /usr/src/redhat/SOURCES/srp-2.2.1/telnet
#make;make install



  (2)建立超級訪問程序/etc/xinetd.d/srp-telnetd 內容如下:

# description: The SRP Telnet server
serves Telnet connections.
# It uses SRP for authentication.
service telnet {
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/telnetd
log_on_sUCcess += DURATION USERID
log_on_failure += USERID
nice = 10
disable = no }



  (3)使用命令從新啟動xinetd

#killall -USR1 xinetd



  (4)建立/etc/pam.d/telnet 文件,內容如下:

auth required /lib/security/pam_listfile.so item=user \
sense=deny file=/etc/telnetusers onerr=succeed
auth required /lib/security/pam_stack.so service=srp-telnet
auth required /lib/security/pam_shells.so
account required /lib/security/pam_stack.so service=srp-telnet
session required /lib/security/pam_stack.so service=srp-telnet


  到此為止現在就建立了一個使用SRP服務的Telnet服務器。首先在本地進行試驗。下面是一個典型會話:

$/usr/local/bin/telnet localhost 23
Trying 127.0.0.1...
Connected to localhost.intevo.com (127.0.0.1).
Escape character is '^]'.
[ Trying SRP ... ]
SRP Username (root): cao
[ Using 1024-bit modulus for 'cao' ]
SRP Password:
[ SRP authentication successful ]
[ Input is now decrypted with type CAST128_CFB64 ]
[ Output is now encrypted with type CAST128_CFB64 ]
Last login: Tue Dec 21 09:30:08 from cao.net


  如果希望在其他Linux計算機使用telnet到SRP服務器,需要安裝SRP服務支持和SRP客戶機軟件。方法是和在SRP服務器端相同的。

五、在非Linux平台上使用SRP客戶機

  SRP同樣支持其他流行的操作系統(Unix、BSD、Winodws、MacOS)。只要安裝Java插件浏覽器即可。詳細情況前查看相關網址:http://srp.stanford.edu/demo/ 。

總結

  以上提供了相對OPENSSH更加安全快捷的Telnet遠程Linux服務器的方法,基於SRP服務 Telnet應用與其他網絡應用一樣屬於客戶機/服務器模型,一旦連通後,客戶機可以享有服務器所提供的一切服務。SRP軟件包是Telnet的安全軟件。



[ Trying SRP ... ]
SRP Username (root): cao
[ Using 1024-bit modulus for 'cao' ]
SRP Password:
[ SRP authentication successful ]
[ Input is now decrypted with type CAST128_CFB64 ]
[ Output is now encrypted with type CAST128_CFB64 ]
Last login: Tue Dec 21 09:30:08 from cao.net


  如果希望在其他Linux計算機使用telnet到SRP服務器,需要安裝SRP服務支持和SRP客戶機軟件。方法是和在SRP服務器端相同的。

五、在非Linux平台上使用SRP客戶機

  SRP同樣支持其他流行的操作系統(Unix、BSD、Winodws、MacOS)。只要安裝Java插件浏覽器即可。詳細情況前查看相關網址:http://srp.stanford.edu/demo/ 。

總結

  以上提供了相對OPENSSH更加安全快捷的Telnet遠程Linux服務器的方法,基於SRP服務 Telnet應用與其他網絡應用一樣屬於客戶機/服務器模型,一旦連通後,客戶機可以享有服務器所提供的一切服務。SRP軟件包是Telnet的安全軟件。



Copyright © Linux教程網 All Rights Reserved