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