許多網(wǎng)絡(luò)程序,如telnet、rsh、rlogin或rexec,用明文(plain text)傳送口令和秘密的信息,所以就可利用任何連接到網(wǎng)絡(luò)上的計算機監(jiān)聽這些程序和服務(wù)器之間的通信并獲取口令和秘密信息。現(xiàn)在,telnet程序?qū)τ谌粘5墓芾砉ぷ魇潜夭豢缮俚模撬质遣话踩模敲从檬裁磥硖娲兀縊penSSH就是那些過時的、不安全的遠程登錄程序,如:telnet、rlogin、rsh、rdist或rcp的替代品。
在OpenSSH的README文件中提到:ssh(Secure Shell)程序可以通過網(wǎng)絡(luò)登錄到遠程主機并執(zhí)行命令。它提供了很強的安全驗證可以在不安全的網(wǎng)絡(luò)中進行安全的通信。
我們把OpenSSH配置成支持TCP-Wrappers(inetd超級服務(wù)器),這樣能夠進一步地提高安全性而且也沒有必要把OpenSSH作為守護進程(daemon)在后臺運行。當(dāng)客戶端的程序提出連接請求的時候,TCP-Wrappers守護進程就會在把連接重定向到OpenSSH之前,對連接請求進行驗證和授權(quán)。OpenSSH是自由軟件而且使用不受專利保護的加密算法。因此,我建議你使用OpenSSH(免費而且修正了一些bug),而不使用SSH1(免費但是有bug)和SSH2(現(xiàn)在使用商用的許可協(xié)議)。
注意事項
下面所有的命令都是Unix兼容的命令。
源路徑都為“/var/tmp”(當(dāng)然在實際情況中也可以用其它路徑)。
安裝在RedHat Linux 6.1和6.2下測試通過。
要用“root”用戶進行安裝。
OpenSSH的版本是1.2.3。
軟件包的來源
OpenSSH的主頁:http://violet.ibs.com.au/openssh/。
下載:openssh-1.2.3.tar.gz。
準(zhǔn)備工作
編譯OpenSSH需要zlib-devel軟件包,這個軟件包包括頭文件和函數(shù)庫。編譯使用zlib的壓縮和解壓函數(shù)的程序,就要事先安裝這個軟件包。可以用RedHat 6.1或6.2的光盤安裝。
l 用下面的命令驗證一下在系統(tǒng)中是否已經(jīng)安裝了zlib-devel軟件包:
[root@deep /]# rpm -qi zlib-devel
l 用下面命令在系統(tǒng)中安裝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創(chuàng)建或保存加密文件,OpenSSH需要用OpenSSL的庫文件才能正常運行。
安裝軟件包需要注意的問題
最好在編譯前和編譯后都做一張系統(tǒng)中所有文件的列表,然后用“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
編譯和優(yōu)化
第一步
轉(zhuǎn)到OpenSSH的新目錄下,先設(shè)置編譯器的編譯參數(shù):
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
這些設(shè)置告訴編譯器如何編譯OpenSSH:
l 鏈接上libwrap函數(shù)庫并且加上對TCP Wrappers的支持
l 禁止Linux/glibc-2.1.2中域名解析的延時,縮短建立連接的時間
l 設(shè)置OpenSSL函數(shù)庫的路徑,這樣OpenSSH才能正常運行
第二步
現(xiàn)在,編譯和安裝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”命令把源文件編譯成可執(zhí)行的二進制文件,“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”文件解開之后,可以在相應(yīng)的目錄下發(fā)現(xiàn)我們在這本書中介紹的所有軟件的配置文件。這樣就沒有必要手工重新生成這些文件,或者用拷貝粘貼的方法把它們粘貼到配置文件中去。不管是打算自己動手生成配置文件還是拷貝現(xiàn)成的,你都要學(xué)會自己修改配置文件并且把配置文件拷貝到正確的目錄下。下面將具體說明。
為了運行OpenSSH,必須創(chuàng)建或者把下面的文件拷貝到相應(yīng)的目錄下:
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系統(tǒng)范圍的配置文件,允許你通過設(shè)置不同的選項來改變客戶端程序的運行方式。這個文件的每一行包含“關(guān)鍵詞-值”的匹配,其中“關(guān)鍵詞”是忽略大小寫的。下面列出來的是最重要的關(guān)鍵詞,用man命令查看幫助頁(ssh (1))可以得到詳細的列表。
編輯“ssh_config”文件(vi /etc/ssh/ssh_config),添加或改變下面的參數(shù):
# 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 ~
下面逐行說明上面的選項設(shè)置:
Host *
選項“Host”只對能夠匹配后面字串的計算機有效。“*”表示所有的計算機。
ForwardAgent no
“ForwardAgent”設(shè)置連接是否經(jīng)過驗證代理(如果存在)轉(zhuǎn)發(fā)給遠程計算機。
ForwardX11 no
“ForwardX11”設(shè)置X11連接是否被自動重定向到安全的通道和顯示集(DISPLAY set)。
RhostsAuthentication no
“RhostsAuthentication”設(shè)置是否使用基于rhosts的安全驗證。
RhostsRSAAuthentication no
“RhostsRSAAuthentication”設(shè)置是否使用用RSA算法的基于rhosts的安全驗證。
RSAAuthentication yes
“RSAAuthentication”設(shè)置是否使用RSA算法進行安全驗證。
PasswordAuthentication yes
“PasswordAuthentication”設(shè)置是否使用口令驗證。
FallBackToRsh no
“FallBackToRsh”設(shè)置如果用ssh連接出現(xiàn)錯誤是否自動使用rsh。
UseRsh no
“UseRsh”設(shè)置是否在這臺計算機上使用“rlogin/rsh”。
BatchMode no
“BatchMode”如果設(shè)為“yes”,passphrase/password(交互式輸入口令)的提示將被禁止。當(dāng)不能交互式輸入口令的時候,這個選項對腳本文件和批處理任務(wù)十分有用。
CheckHostIP yes
“CheckHostIP”設(shè)置ssh是否查看連接到服務(wù)器的主機的IP地址以防止DNS欺騙。建議設(shè)置為“yes”。
StrictHostKeyChecking no
“StrictHostKeyChecking”如果設(shè)置成“yes”,ssh就不會自動把計算機的密匙加入“$HOME/.ssh/known_hosts”文件,并且一旦計算機的密匙發(fā)生了變化,就拒絕連接。
IdentityFile ~/.ssh/identity
“IdentityFile”設(shè)置從哪個文件讀取用戶的RSA安全驗證標(biāo)識。
Port 22
“Port”設(shè)置連接到遠程主機的端口。
Cipher blowfish
“Cipher”設(shè)置加密用的密碼。
EscapeChar ~
“EscapeChar”設(shè)置escape字符。
共2頁: 1 [2] 下一頁 | ||
|