SSH可以爲遠程登錄的會話和其他網絡服務提供安全性的協議。它是目前較可靠,是專爲遠程登錄會話和其他網絡服務提供安全性的協議。利用SSH協議可以有效防止遠程管理過程中的信息泄露問題,透過SSH可以對所有傳輸的數據進行加密,也能夠防止DNS欺騙和IP欺騙。
在實際開發當中我們一般在PC端安裝客戶端軟件連接SSH服務,常用工具爲(MobaXterm,Xshell,SecureCRT等)。因爲SSH是加密傳輸數據的,所以可以有效的遠程管理過程中的信息泄露。當然前提是配置正確的SSH服務,在/etc/ssh/sshd_config上默認有些配置是不合理,因此需要我們手動配置。
在這個過程中,因爲有大量的主機需要修改,是否可以考慮寫個自動化腳本,減少重複工作。使用腳本自動化完成重複的工作任務,纔是提升生產效率的核心。這纔是我們需要寫腳本的根本目的。
配置sshd_config文件
Centos7 系統中SSH服務端的默認配置文件是/etc/ssh/ssh_config,通過跳轉該配置文件中的參數可以讓我們的SSH服務更安全。
我們都知道SSH端口是22端口,通過Port參數修改該端口可以有效防止網絡上的大量掃射類的攻擊。
默認SSH服務會監聽整個計算機所有網卡IP端口,我們可以通過ListenAddress 參數可以設置其僅監聽特定的IP地址,如僅監聽內網的IP地址,可以減少被攻擊的可能性。ListenAddress 默認監聽所有地址。
cat /etc/ssh/sshd_config
SSH是允許超級管理員root遠程登錄,這對於線上服務器來說是非常危險的事情,可以通過PermitRootLogin參數的值可以禁止root登錄。
SSH支持多種遠程連接的賬戶認證方式,如:密碼認證,祕鑰等等。爲了防止泄露,我們可以配置GSSAPIAuthentication。
找到 GSSAPIAuthentication選項,如果沒有註釋,將其註釋
#GSSAPIAuthentication yes
添加
GSSAPIAuthentication no
在實際使用中用祕鑰認證更安全。
默認SSH會對遠程主機進行DNS的反向解析,這會浪費大量的時間,我們可以通過UseDNS參數禁止其查詢DNS服務器。
找到 UseDNS選項,如果沒有註釋,將其註釋
#UseDNS yes
添加
UseDNS no
設置用戶和組的白名單,或者用戶和組的黑名單分別可以配置AllowUsers、AllowGroups和DenyUsers、DenyGroups。不管是白名單還是黑名單,在限制用戶的同時可以限制用戶的來源。
想要了解跟多SSH配置文件,可以查看相關文檔哈。
自動化修改SSH配置文件
下面我們開始編寫腳本實現自動化修改SSH配置文件,有再多的服務器只要執行腳本都可完成配置的初始化工作。
#!/bin/bash
#功能:修改SSHD配置文件,提升SSH安全性
config_file="/etc/ssh/sshd_config"
PORT=12345
#將默認端口號修改爲自定義端口號
if grep -q "^Port" $config_file;then
sed -i "/^Port/c Port $PORT" $config_file
else
echo "Port $PORT" >> $config_file
fi
#禁止root遠程登錄SSH服務器
if grep -q "^PermitRootLogin" $config_file;then
sed -i '/^PermitRootLogin/s/yes/no/' $config_file
else
sed -i '$a PermitRootLogin no' $config_file
fi
#禁止使用密碼遠程登錄SSH服務器
if grep -q "^PasswordAuthentication" $config_file;then
sed -i '/^PasswordAuthentication/s/yes/no/' $config_file
else
sed -i '$a PasswordAuthentication no' $config_file
fi
#禁止X11圖形轉發功能
if grep -q "^X11Forwarding" $config_file;then
sed -i '/^X11Forwarding/s/yes/no/' $config_file
else
sed -i '$a X11Forwarding no' $config_file
fi
#禁止DNS查詢
if grep -q "^UseDNS" $config_file;then
sed -i '/^UseDNS/s/yes/no/' $config_file
else
sed -i '$a UseDNS no' $config_file
fi
總結
使用腳本自動化完成重複的工作任務,纔是提升生產效率的核心。這纔是我們需要寫腳本的根本目的。有再多的服務器只要執行腳本都可完成配置的初始化工作。這也是爲什麼寫本篇文章的原因!
歡迎關注公衆號【程序猿編碼】,添加本人微信號(17865354792),回覆:領取學習資料。或者回復:進入技術交流羣。網盤資料有如下: