許多網絡程序,如telnet、rsh、rlogin或rexec,用明文(plain text)傳送口令和秘密的信息,所以就可利用任何連接到網絡上的計算機監聽這些程序和服務器之間的通信并獲取口令和秘密信息。現在,telnet程序對于日常的管理工作是必不可少的,但是它又是不安全的,那么用什么來替代它呢?OpenSSH就是那些過時的、不安全的遠程登錄程序,如:telnet、rlogin、rsh、rdist或rcp的替代品。
在OpenSSH的README文件中提到:ssh(Secure Shell)程序可以通過網絡登錄到遠程主機并執行命令。它提供了很強的安全驗證可以在不安全的網絡中進行安全的通信。
我們把OpenSSH配置成支持TCP-Wrappers(inetd超級服務器),這樣能夠進一步地提高安全性而且也沒有必要把OpenSSH作為守護進程(daemon)在后臺運行。當客戶端的程序提出連接請求的時候,TCP-Wrappers守護進程就會在把連接重定向到OpenSSH之前,對連接請求進行驗證和授權。OpenSSH是自由軟件而且使用不受專利保護的加密算法。因此,我建議你使用OpenSSH(免費而且修正了一些bug),而不使用SSH1(免費但是有bug)和SSH2(現在使用商用的許可協議)。
注意事項
下面所有的命令都是Unix兼容的命令。
源路徑都為“/var/tmp”(當然在實際情況中也可以用其它路徑)。
安裝在RedHat Linux 6.1和6.2下測試通過。
要用“root”用戶進行安裝。
OpenSSH的版本是1.2.3。
軟件包的來源
OpenSSH的主頁:http://violet.ibs.com.au/openssh/。
下載:openssh-1.2.3.tar.gz。
準備工作
編譯OpenSSH需要zlib-devel軟件包,這個軟件包包括頭文件和函數庫。編譯使用zlib的壓縮和解壓函數的程序,就要事先安裝這個軟件包。可以用RedHat 6.1或6.2的光盤安裝。
l 用下面的命令驗證一下在系統中是否已經安裝了zlib-devel軟件包:
[root@deep /]# rpm -qi zlib-devel
l 用下面命令在系統中安裝zlib-devel軟件包:
[root@deep /]# mount /dev/cdrom /mnt/cdrom/
[root@deep /]# cd /mnt/cdrom/RedHat/RPMS/
[root@deep RPMS]# rpm -Uvh zlib-devel-version.i386.rpm
gd ##################################################
[root@deep RPMS]# rpm -Uvh gd-devel-version.i386.rpm
zlib-devel ##################################################
[root@deep RPMS]# cd /; umount /mnt/cdrom/
在使用OpenSSH之前,還必須安裝OpenSSL。因為就算你不使用OpenSSL創建或保存加密文件,OpenSSH需要用OpenSSL的庫文件才能正常運行。
安裝軟件包需要注意的問題
最好在編譯前和編譯后都做一張系統中所有文件的列表,然后用“diff”命令去比較它們,找出其中的差別并知道到底把軟件安裝在哪里。只要簡單地在編譯之前運行一下命令“find /* >OpenSSH1”,在編譯和安裝完軟件之后運行命令“find /* > OpenSSH2”,最后用命令“diff OpenSSH1 OpenSSH2 > OpenSSH-Installed”找出變化。
編譯和安裝
把軟件包(tar.gz)解壓:
[root@deep /]# cp openssh-version.tar.gz /var/tmp
[root@deep /]# cd /var/tmp
[root@deep tmp]# tar xzpf openssh-version.tar.gz
編譯和優化
第一步
轉到OpenSSH的新目錄下,先設置編譯器的編譯參數:
CC="egcs" \
CFLAGS="-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-
pointer -fno-exceptions" \
./configure \
--prefix=/usr \
--sysconfdir=/etc/ssh \
--with-tcp-wrappers \
--with-ipv4-default \
--with-ssl-dir=/usr/include/openssl
這些設置告訴編譯器如何編譯OpenSSH:
l 鏈接上libwrap函數庫并且加上對TCP Wrappers的支持
l 禁止Linux/glibc-2.1.2中域名解析的延時,縮短建立連接的時間
l 設置OpenSSL函數庫的路徑,這樣OpenSSH才能正常運行
第二步
現在,編譯和安裝OpenSSH:
[root@deep openssh-1.2.3]# make
[root@deep openssh-1.2.3]# make install
[root@deep openssh-1.2.3]# make host-key
[root@deep openssh-1.2.3]# install -m644 contrib/redhat/sshd.pam /etc/pam.d/sshd
“make”命令把源文件編譯成可執行的二進制文件,“make install”把二進制文件和配置文件安裝在合適的目錄下。“make host-key”生成主機密匙,“install”命令在RedHat Linux上安裝對OpenSSH的PAM支持。
清除不必要的文件
用下面的命令刪除不必要的文件:
[root@deep /]# cd /var/tmp
[root@deep tmp]# rm -rf openssh-version/ openssh-version.tar.gz
“rm”命令刪除所有編譯和安裝OpenSSH所需要的源程序,并且把OpenSSH軟件的壓縮包刪除掉。
配置
可以到這去下載“floppy.tgz”文件:http://www.openna.com/books/floppy.tgz。把“floppy.tgz”文件解開之后,可以在相應的目錄下發現我們在這本書中介紹的所有軟件的配置文件。這樣就沒有必要手工重新生成這些文件,或者用拷貝粘貼的方法把它們粘貼到配置文件中去。不管是打算自己動手生成配置文件還是拷貝現成的,你都要學會自己修改配置文件并且把配置文件拷貝到正確的目錄下。下面將具體說明。
為了運行OpenSSH,必須創建或者把下面的文件拷貝到相應的目錄下:
l 把“sshd_config”文件拷貝到“/etc/ssh”目錄下
l 把“ssh_config”文件拷貝到“/etc/ssh”目錄下
l 把“ssh”文件拷貝到“/etc/pam.d/”目錄下
可以把“floppy.tgz”解壓之后,找到上面列出來的文件,并拷貝到合適的目錄下,或者用拷貝粘貼的方法從本書中直接粘貼出。
配置“/etc/ssh/ssh_config”文件
“/etc/ssh/ssh_config”文件是OpenSSH系統范圍的配置文件,允許你通過設置不同的選項來改變客戶端程序的運行方式。這個文件的每一行包含“關鍵詞-值”的匹配,其中“關鍵詞”是忽略大小寫的。下面列出來的是最重要的關鍵詞,用man命令查看幫助頁(ssh (1))可以得到詳細的列表。
編輯“ssh_config”文件(vi /etc/ssh/ssh_config),添加或改變下面的參數:
# Site-wide defaults for various options
Host *
ForwardAgent no
ForwardX11 no
RhostsAuthentication no
RhostsRSAAuthentication no
RSAAuthentication yes
PasswordAuthentication yes
FallBackToRsh no
UseRsh no
BatchMode no
CheckHostIP yes
StrictHostKeyChecking no
IdentityFile ~/.ssh/identity
Port 22
Cipher blowfish
EscapeChar ~
下面逐行說明上面的選項設置:
Host *
選項“Host”只對能夠匹配后面字串的計算機有效。“*”表示所有的計算機。
ForwardAgent no
“ForwardAgent”設置連接是否經過驗證代理(如果存在)轉發給遠程計算機。
ForwardX11 no
“ForwardX11”設置X11連接是否被自動重定向到安全的通道和顯示集(DISPLAY set)。
RhostsAuthentication no
“RhostsAuthentication”設置是否使用基于rhosts的安全驗證。
RhostsRSAAuthentication no
“RhostsRSAAuthentication”設置是否使用用RSA算法的基于rhosts的安全驗證。
RSAAuthentication yes
“RSAAuthentication”設置是否使用RSA算法進行安全驗證。
PasswordAuthentication yes
“PasswordAuthentication”設置是否使用口令驗證。
FallBackToRsh no
“FallBackToRsh”設置如果用ssh連接出現錯誤是否自動使用rsh。
UseRsh no
“UseRsh”設置是否在這臺計算機上使用“rlogin/rsh”。
BatchMode no
“BatchMode”如果設為“yes”,passphrase/password(交互式輸入口令)的提示將被禁止。當不能交互式輸入口令的時候,這個選項對腳本文件和批處理任務十分有用。
CheckHostIP yes
“CheckHostIP”設置ssh是否查看連接到服務器的主機的IP地址以防止DNS欺騙。建議設置為“yes”。
StrictHostKeyChecking no
“StrictHostKeyChecking”如果設置成“yes”,ssh就不會自動把計算機的密匙加入“$HOME/.ssh/known_hosts”文件,并且一旦計算機的密匙發生了變化,就拒絕連接。
IdentityFile ~/.ssh/identity
“IdentityFile”設置從哪個文件讀取用戶的RSA安全驗證標識。
Port 22
“Port”設置連接到遠程主機的端口。
Cipher blowfish
“Cipher”設置加密用的密碼。
EscapeChar ~
“EscapeChar”設置escape字符。
共2頁: 1 [2] 下一頁 | ||
|