在后端開發(fā)過程中锦秒,我們經(jīng)常會(huì)通過 SSH 遠(yuǎn)程登錄并連接到 服務(wù)器稼病,以便我們能對服務(wù)器進(jìn)行遠(yuǎn)程操作勉躺。雖說 SSH 是一種加密登錄協(xié)議运提, 但是我們在使用 SSH 中還需要注意一些安全技巧俯在。
{% asset_img wUy69HWRKIW0qTiUrzYQhnzR.jpg %}
SSH 服務(wù)器的配置文件位置/etc/ssh/sshd_conf
粒督,下述配置基本上都在配置文件中修改,配置文件修改后需要重新啟動(dòng) SSH 服務(wù)牙丽,否則配置不會(huì)立即生效简卧。
設(shè)置禁ping
攻擊者可能會(huì)通過端口掃面工具,而得出目標(biāo)服務(wù)器監(jiān)聽的端口號(hào)烤芦,從而進(jìn)行攻擊举娩。通過關(guān)閉 Linux 服務(wù)器的 ICMP 協(xié)議服務(wù)或者防火墻攔截 ICMP 協(xié)議包,可以達(dá)到禁用 ping 的目的构罗。
1) 關(guān)閉ICMP服務(wù)
$ echo "1" >/proc/sys/net/ipv4/icmp_echo_ignore_all
2) 防火墻攔截
$ iptables -A INPUT -p icmp -j DROP
檢查禁 ping 是否成功:
> ping www.fanhaobai.com
請求超時(shí)铜涉。
請求超時(shí)。
修改SSH監(jiān)聽端口
默認(rèn)情況下遂唧,SSH 監(jiān)聽 22 端口芙代,這也使得攻擊者可以輕松掃描到目標(biāo)服務(wù)器是否運(yùn)行 SSH 服務(wù)。所以建議將 SSH 端口號(hào)更改為大于 1024蠢箩。
在文件/etc/ssh/sshd_config
中,增加如下配置:
Port 22 # 保留22默認(rèn)端口事甜,防止端口配置失敗谬泌,無法連接SSH
Port 10086
重啟 SSH 服務(wù):
$ service sshd restart
$ netstat -tunpl | grep sshd
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:10086 0.0.0.0:* LISTEN 2462/sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2462/sshd
通過新端口 10086 連接 SSH,如果連接成功再刪除默認(rèn)端口 22 配置逻谦。
如果查看發(fā)現(xiàn) 10086 已被 sshd 監(jiān)聽掌实,而仍然無法連接 SSH,則需添加防火墻規(guī)則:
# -dport指操作端口號(hào)
$ iptables -A INPUT -p tcp --dport 10086 -j ACCEPT
# 永久保存iptables規(guī)則
$ /etc/rc.d/init.d/iptables save
# 重啟iptables
$ /etc/rc.d/init.d/iptables restart
僅允許SSH協(xié)議版本2
SSH 協(xié)議存在兩個(gè)版本邦马,版本 2 相對于版本 1 更加安全贱鼻,默認(rèn)配置只使用協(xié)議版本 2。
Protocol 2
公鑰登錄
使用密碼登錄 SSH滋将,每次登錄都需要頻繁輸入密碼邻悬,所以比較麻煩,使用 SSH 的公鑰登錄随闽,可以免去輸入密碼的步驟父丰。
1) 在本地主機(jī)上生成自己的公鑰
$ ssh-keygen
執(zhí)行命令后出現(xiàn)一系列提示,直接回車即可掘宪。會(huì)在$HOME/.ssh
目錄生成公鑰和私鑰文件蛾扇,其中id_rsa.pub
為你的公鑰攘烛,id_rsa
為你的私鑰。
2) 配置公鑰到遠(yuǎn)程主機(jī)
遠(yuǎn)程主機(jī)將用戶的公鑰保存在$HOME/.ssh/authorized_keys文件
镀首,所以這里需要將上步生成的 公鑰 文件id_rsa.pub
的內(nèi)容 追加 到authorized_keys
文件中坟漱。
如果authorized_keys
文件不存在,創(chuàng)建即可:
$ mkdir ~/.ssh
$ touch ~/.ssh/authorized_keys
配置 sshd 服務(wù)更哄,配置文件為/etc/ssh/sshd_config
芋齿,將下面內(nèi)容關(guān)閉注釋。
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
然后竖瘾,重啟 sshd 服務(wù)沟突。
$ service sshd restart
3) 免密登錄測試
這里通過配置 識(shí)別名 ,連接時(shí)只需指定連接識(shí)別名即可捕传,簡單方便惠拭。
在$HOME/.ssh
目錄下創(chuàng)建config
文件,并作如下配置:
Host fhb
HostName www.fanhaobai.com
Port 10086
User fhb
使用識(shí)別名連接 SSH 登錄遠(yuǎn)程主機(jī)庸论,出現(xiàn)如下內(nèi)容表示公鑰登錄成功职辅。
$ ssh fhb
Last login: Mon Feb 20 17:09:00 2017 from 103.233.131.130
Welcome to aliyun Elastic Compute Service!