CentOS6下ssh简介及openssh的应用
1. ssh及openssl簡(jiǎn)介:
SSH:
ssh是secure shell,是用來(lái)通過(guò)網(wǎng)絡(luò)來(lái)提供安全的遠(yuǎn)程訪問(wèn)的工具,C/S結(jié)構(gòu),在ssh之前,最早的遠(yuǎn)程計(jì)算機(jī)連接工具是telnet
telnet是使用明文通信的,所以安全性很差,除非緊急情況,否則不要使用telnet。
ssh則比telnet安全許多,而openssl則是ssh的一種開(kāi)源實(shí)現(xiàn),
OPENSSH
它可以作為 rlogin、 rsh rcp 以及 telnet 的直接替代品使用。 更進(jìn)一步, 其他任何 TCP/IP 連接都可以通過(guò) SSH 安全地進(jìn)行隧道/轉(zhuǎn)發(fā)。 OpenSSH 對(duì)所有的傳輸進(jìn)行加密, 從而有效地阻止了竊聽(tīng)、 連接劫持, 以及其他網(wǎng)絡(luò)級(jí)的***。OpenSSH 由 OpenBSD project 維護(hù)。
登錄過(guò)程和使用 rlogin 或 telnet 建立的會(huì)話非常類似。 在連接時(shí), SSH 會(huì)利用一個(gè)密鑰指紋系統(tǒng)來(lái)驗(yàn)證服務(wù)器的真實(shí)性。 只有在第一次連接時(shí), 用戶會(huì)被要求輸入 yes。 之后的連接將會(huì)驗(yàn)證預(yù)先保存下來(lái)的密鑰指紋。 如果保存的指紋與登錄時(shí)接收到的不符, 則將會(huì)給出警告。 指紋保存在 ~/.ssh/known_hosts 中, 對(duì)于 SSH v2 指紋, 則是 ~/.ssh/known_hosts2。
默認(rèn)情況下, 較新版本的 OpenSSH 只接受 SSH v2 連接。 如果能用版本 2 則客戶程序會(huì)自動(dòng)使用, 否則它會(huì)返回使用版本 1 的模式。 此外, 也可以通過(guò)命令行參數(shù) -1 或 -2 來(lái)相應(yīng)地強(qiáng)制使用版本 1 或 2。 保持客戶端的版本 1 能力是為了考慮較早版本的兼容性。
SSH有兩個(gè)版本:
1. sshv1 ?
sshv1 基于CRC-32做MAC(完整性校驗(yàn)),無(wú)加密,只是校驗(yàn)碼,強(qiáng)烈建議不使用。非常不安全
2. sshv2
sshv2 基于雙方主機(jī)的協(xié)商選擇使用最安全的MAC方式
加密機(jī)制及MAC機(jī)制由雙方協(xié)商選定:
基于DH算法,實(shí)現(xiàn)密鑰交換,基于RSA或DSA實(shí)現(xiàn)身份認(rèn)證
客戶端通過(guò)檢查服務(wù)器端的主機(jī)密鑰來(lái)判斷是否能夠繼續(xù)通信
實(shí)際使用中,可以通過(guò)命令行參數(shù)Protocol 2,1 來(lái)相應(yīng)地強(qiáng)制使用版本 1 或 2。?
保持客戶端的版本 1 能力是為了考慮較早版本的兼容性。
也可以只寫2,而放棄兼容不安全的sshv1
2. OPENSSH客戶端:
openssh是C/S架構(gòu),所以就有服務(wù)端和客戶端兩部分組成,linux下常用的客戶端軟件ssh, windows下常用的有putty,xshell,secrecrt,sshshellclient等
2.1 openssh的客戶端組件:
2.1.1 ssh 配置文件是/etc/ssh/ssh_config
語(yǔ)法:
ssh?[username]@host?[COMMAND]??[-p?PORT] ssh?-l?username?host?[COMMAND]#若沒(méi)指定username,則使用本地當(dāng)前用戶嘗試登陸,如果遠(yuǎn)程主機(jī)不存在此用戶,會(huì)報(bào)錯(cuò)
#COMMAND,就是不遠(yuǎn)程登陸,只是在遠(yuǎn)程主機(jī)上執(zhí)行COMMAND,然后將結(jié)果返回給本機(jī)。
例如:
需要獲取192.168.229.202主機(jī)的ifconfig信息,ssh端口監(jiān)聽(tīng)在2222端口上:
#ssh?root@192.168.229.202?ifconfig?-p?77672.1.2 scp: 利用ssh協(xié)議在主機(jī)之間實(shí)現(xiàn)安全文件傳輸?shù)墓ぞ?/p>
語(yǔ)法:
scp SRC1...DEST
分兩種情況:
1. 原文件在本機(jī),目標(biāo)為遠(yuǎn)程
#scp?/path/to/somefile?...USERNAME@HOST:/path/to/somewhere是將本地/path/to/somefile文件,以USERNAME用戶登陸到遠(yuǎn)程主機(jī)HOST上,復(fù)制到遠(yuǎn)程主機(jī)的/path/to/somewhere
例如:?
將本地/etc/fstab文件復(fù)制到www.881027.com主機(jī)上/tmp下, 注意www.881027.com主機(jī)的ssh端口是2222
#scp?-P?2222?/etc/fstab?root@www.881027.com:/tmp #注意,?參數(shù)-P的位置一定要緊跟在scp命令后面,而且-P指定的是遠(yuǎn)程主機(jī)的ssh端口 #注意,?如果當(dāng)前本機(jī)登陸的用戶是root,則root@www.881027.com中的root@可以省略2. 源文件在遠(yuǎn)程,本地為目標(biāo)
#scp?USERNAME@HOST:/path/to/somewhere?/path/to/somewhere -r:?復(fù)制目錄時(shí)使用 -p:?保持源文件的元數(shù)據(jù)信息,包括屬主,屬組,mode,timestamp?(如果遠(yuǎn)程主機(jī)不存在這個(gè)用戶,也不行) -q:?靜默模式 -P?PORT:?指定ssh協(xié)議監(jiān)聽(tīng)的端口 例如: 將遠(yuǎn)程主機(jī)/tmp/fstab文件下載到本機(jī)/etc下 #scp?-P?2222?root@www.881027.com?/etc2.1.3 sftp: 基于ssh的ftp服務(wù)
sftp登陸進(jìn)去,可以使用很多bash的命令,例如ls,cd, mkdir, put, get等f(wàn)tp命令
用法: sftp USERNAME@HOST
例如:
sftp登陸到www.881027.com,ssh端口2222,并下載www.881027.com主機(jī)上/etc/fstab文件到本地
#sftp?-oPort=2222?sbi.881027.com #-oPort?來(lái)指定遠(yuǎn)程的端口,不指定默認(rèn)223. openssh的服務(wù)器端: sshd
配置文件: /etc/ssh/sshd_config
ssh端口,控制sshd服務(wù)的各種運(yùn)行參數(shù)等,下面最佳實(shí)踐里有很多應(yīng)用
這個(gè)命令可以通過(guò)
#man sshd_config
來(lái)查看每一個(gè)參數(shù)的詳細(xì)說(shuō)明和使用幫助
服務(wù)腳本: /etc/rc.d/init.d/sshd
控制sshd服務(wù)狀態(tài),啟動(dòng),停止,重啟,查看狀態(tài)等
腳本配置文件: /etc/sysconfig/sshd
3.1 經(jīng)常需要修改的參數(shù):
PORT:修改默認(rèn)監(jiān)聽(tīng)的端口 ListenAddress?0.0.0.0?;默認(rèn)表示監(jiān)聽(tīng)本地所有地址,也可以設(shè)定只監(jiān)聽(tīng)特定ip地址 Protocol?2,1?;優(yōu)先選擇2,向下兼容sshv1 HostKey?/etc/ssh/ssh_host_rsa_key;當(dāng)客戶端連接時(shí)候,發(fā)送的密鑰 HostKey?/etc/ssh/ssh_host_dsa_key;當(dāng)客戶端連接時(shí)候,發(fā)送的密鑰,?DSA只能做身份驗(yàn)證 KeyRegenerationInterval?1h;密鑰交換間隔,服務(wù)器自動(dòng)進(jìn)行的 LoginGraceTime?2m;登陸窗口寬限期,?就是彈出登陸窗口后,給你輸入賬號(hào)密碼的時(shí)間 PermitRootLogin?yes?yes:允許root用戶首次直接ssh登錄no:?不允許root用戶首次直接ssh登陸,但是根據(jù)需要,可以從普通用戶su?-?root MaxAuthTries?6;最多登陸失敗次數(shù) MaxSessions?10;最多可支持的session數(shù) RSAAuthentication?yes?;是否啟用RSA驗(yàn)證 PubkeyAuthentication?yes?;是否啟用公鑰驗(yàn)證(非對(duì)稱加密) AuthorizedKeysFile?.ssh/authorized_keys?;授權(quán)的密鑰文件,?我們可以通過(guò)追加公鑰信息到這個(gè)authorized_keys,來(lái)免密碼登陸 ClientAliveInterval?0?;服務(wù)器端向客戶端請(qǐng)求消息的時(shí)間間隔,0?為不發(fā)送 ClientAliveCountMax?300?;服務(wù)器發(fā)出請(qǐng)求后客戶端沒(méi)有響應(yīng)的次數(shù)達(dá)到一定值 等等我只列舉一些常用的選項(xiàng),還有很多選項(xiàng)沒(méi)有一一列舉,可以#man sshd_config去翻文檔吧。
4. sshd認(rèn)證方式:
1. 基于口令的認(rèn)證:
沒(méi)啥好說(shuō)的, 用戶名,密碼認(rèn)證
2. 基于密鑰(公鑰中的密鑰)的認(rèn)證:
邏輯:
a. 需要一對(duì)兒密鑰,本地保留private key,
b. 將public key放到遠(yuǎn)程主機(jī)上的用戶家目錄: ~/.ssh/
c. 將本地public key追加到 遠(yuǎn)程主機(jī)家目錄 ~/.ssh/authorized_users
步驟:
????????#ssh-keygen?-t?rsa??生成密鑰對(duì)默認(rèn)密鑰為id_rsa,?id_rsa.pub-f?path/to/somefile:?密鑰文件保存位置-p?''?指定oldpasswd也可以使用工具直接生成密鑰對(duì)兒,直接上傳到遠(yuǎn)程主機(jī):
????????#ssh-copy-id?-i?~/.ssh/id_rsa.pub?USERNAME@HOSTssh-copy-id?-i?id_rsa.pub?"-p?7767?root@sbi.881027.com"ssh?-p?222?hostname5. ssh服務(wù)的最佳實(shí)踐:
1. 不要使用默認(rèn)端口22
2. 不要使用protocol 1
3. 限制可登陸的用戶
白名單:
AllowUsers user1 user2 user3...
AllowGroups grp1 grp2 ....
黑名單:
DenyUsers user1 user2?
DenyGroups grp1 grp2
#黑白名單不能同時(shí)使用,只能使用一種
4. 設(shè)定空閑會(huì)話超時(shí)時(shí)長(zhǎng)
ClientAliveInterval 300 ?#秒數(shù)
ClientAliveCountMAX 0#空閑計(jì)數(shù)最大值為0
5. 利用防火墻設(shè)置ssh訪問(wèn)策略:
6. 僅監(jiān)聽(tīng)在特定的IP地址上,而非本機(jī)所有的IP地址
7. 使用強(qiáng)密碼策略
#tr -dc A-Za-z0-9 < /dev/urandom | head -c 20 | xargs
8. 使用基于密鑰的認(rèn)證
9, 禁止使用空密碼
10. 禁止管理員直接登錄
11. 顯示ssh的訪問(wèn)頻度
iptables可以做到
12. 做好日志,經(jīng)常分析
把服務(wù)器按照最佳實(shí)踐來(lái)優(yōu)化一番,在去對(duì)比下 lastb的ssh***,就會(huì)看到明顯的效果。等以后學(xué)到iptables,在做更進(jìn)一步的優(yōu)化吧。
另外,提一個(gè)小軟件dropbear,是嵌入式輕量級(jí)的shh客戶端工具,可以編譯安裝試試。比openssh小很多,但是功能卻很完整的ssh開(kāi)源工具。
轉(zhuǎn)載于:https://blog.51cto.com/richier/1670156
總結(jié)
以上是生活随笔為你收集整理的CentOS6下ssh简介及openssh的应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java 字符的验证
- 下一篇: 【RAC】 RAC For W2K8R2