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


