OpenSSH
一、 前言
使用SSH可以在本地主機和遠程服務器之間進行加密地傳輸數據,實現數據的安全。而OpenSSH是SSH協議的免費開源實現,它采用安全、加密的網絡連接工具代替了telnet、ftp等古老明文傳輸工具。
SSH(Secure Shell)是建立在應用層和傳輸層基礎上的安全協議。SSH是目前較可靠,專為遠程登陸會話和其他網絡服務提供安全性的協議。利用SSH協議可以有效防止遠程管理過程中的信息泄露問題。
SSH可以將所有的傳輸數據加密,這樣“中間人”這種攻擊方式就不可能實現了,而且也可以防止DNS和IP欺騙。還有一個額外的好處就是傳輸的數據經過壓縮的,可以加快傳輸的速度。
二、 SSH工作原理
SSH是由服務端和客戶端的軟件組成,服務端是一個守護進程,它在后臺運行并響應來自客戶端的連接請求。
SSH的工作機制大體是:本地客戶端發送一個連接請求到遠程的服務端,服務端檢查申請的包和IP地址再發送密鑰給SSH客戶端,本地再將密鑰發回給服務端,到此為止,連接建立。
啟動SSH服務器后,sshd進程運行并在默認的22端口進行監聽。安全驗證方式:
基于口令的安全驗證(賬號密碼),也有可能受到中間人攻擊 基于密鑰的安全驗證,就是提供一對密鑰,把公鑰放在需要訪問的服務器上,如果連接到SSH服務器上,客戶端就會向服務器發出請求,請求用密鑰進行安全驗證,服務器收到請求之后,先在改服務器的主目錄下尋找公鑰,然后把它和發送過來的公鑰進行比較。如果兩個密鑰一致,服務器就用公鑰加密“質詢”并把它發送給客戶端??蛻舳耸盏健百|詢”之后就可以用私鑰解密再把它發給服務器端?;谶@種方式,相對比較安全。
三、OpenSSH服務器安裝和配置,客戶端一般都有
先查看Linux系統中openssh-server、openssh、openssh-clients、openssh-askpass軟件包是否已經安裝,如果沒有則安裝。
依賴關系太多了,固用yum方式安裝:yum install openssh-askpass -y
好了,都裝好了。
四、客戶端配置
ssh: 配置文件 /etc/ssh/ssh_config
1、客戶端程序
ssh [options] [user@]host [COMMAND] ssh [-l user] [options] host [COMMAND] 常用選項: -l user:以指定的用戶登錄遠程主機; -p port:用于指明遠程服務器的端口;遠程服務器端口可變。 -X:支持 X11 轉發; -Y:支持信任的 X11 轉發; X:協議; x-window, C/S X11 轉發的作用:在本地顯示遠程主機上的圖形窗口; 前提:本地是 X 圖形界面,或者提供了 x service; -o StrictHostKeyChecking=no 是不是要對主機嚴格檢查,建議no。 ssh 支持的用戶認證方式: 基于口令的認證; 基于密鑰的認證; (1) 在本地主機生成一對兒密鑰: ssh-keygen [-q] [-b bits] [-t type] [-f output_keyfile] [-P passphrase] -t {rsa|ecdsa|dsa}:公鑰加密算法類型; -b bits:指明密鑰長度; -P passphrase:私鑰加密密碼; -f output_keyfile:生成密鑰的保存位置; (2) 在本地主機上,將公鑰復制到要登錄的遠程主機的某用戶的家目錄下的特定文件中(~/.ssh/authorized_keys) ssh-copy-id [-i [identity_file]] [-p port] [-o ssh_option][user@]hostname (3) 測試 ssh user@host
例子:客戶端ip:192.168.1.120 服務端ip:192.168.1.109
生成公鑰:
測試:
刪除密鑰 :rm -rf .ssh/id_rsa*
2、scp命令,類似與cp
將本地的/etc/fstab 復制到服務端主機的/tmp目錄下
將遠程主機上的的/root/1.sh復制過來
3、sftp安全的文件傳輸程序,類似于ftp,它的所有操作都是加密ssh傳輸。
連接至遠程主機,可以get一些資源
五、服務器端配置
sshd:配置文件 /etc/ssh/sshd_config
幾個主要的配置如下:
Port 22 服務器監聽的端口,默認為22 ListenAddress 0.0.0.0 服務器端的ip地址 Protocol 2 ssh protocol有兩個版本,1不安全 PermitRootLogin yes 設置root用戶能否使用ssh登陸 建議用no UseDNS no 要不要反解用戶的主機名 限制可登錄的用戶(配置文件): AllowUsers user1 user2 user3 ... 白名單 AllowGroups grp1 grp2 ... DenyUsers user1 user2 ... DenyGroups grp1 grp2 ... 黑名單 CentOS 6: 服務腳本:/etc/rc.d/init.d/sshd CentOS 7: Systemd Unit File:/usr/lib/systemd/system/sshd.service
六、ssh 服務的最佳實踐:
1、不要使用默認端口;
2、禁止使用 protocol version 1;
3、限制可登錄的用戶;
4、設定空閑會話超時時長;
5、利用防火墻設置 ssh 訪問策略;
6、僅監聽特定的 IP 地址;
7、基于口令認證時,使用強密碼策略; tr -dc A-Za-z0-9_ < /dev/urandom | head -c 30 | xargs
8、使用基于密鑰的認證;
9、禁止使用空密碼;
10、禁止 root 用戶直接登錄;
11、限制 ssh 的訪問頻度和并發在線數;
12、做好日志,經常分析; /var/log/secure
原創文章,作者:N24_yezi,如若轉載,請注明出處:http://www.www58058.com/63909
贊,能將上面知識靈活運用于實戰會更好~~繼續加油~