sshd服務的白名單和黑名單
目錄
起因
在公司進行整理伺服器列表時,發現一個問題,有些伺服器是ping不通的;
有些伺服器可以ping通,但是ssh是沒法遠端的;
但是他們都可以在jumpserver上進行管理。干擾的因素:
總監給我的伺服器列表文件,是有出入的,不是很正確,對這個文件感覺不可靠。
現象如下:
ssh_exchange_identification: read: Connection reset by peer
[root@docker02 ~]# ping 10.0.0.102 PING 10.0.0.102 (10.0.0.102) 56(84) bytes of data. 64 bytes from 10.0.0.102: icmp_seq=1 ttl=64 time=0.875 ms ^C --- 10.0.0.102 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.875/0.875/0.875/0.000 ms [root@docker02 ~]# ssh [email protected] -p22 ssh_exchange_identification: read: Connection reset by peer
可以ping通 但是無法ssh遠端,並且jumpserver雖說可以遠端管理,但是使用jumpserver進行遠端獲取硬體配置,會報錯,無法獲取(懷疑密碼問題)。
經過百度的搜尋,得到啟發,去檢視sshd的配置。
文件借鑑於諸子流的《通過配置hosts.allow和hosts.deny檔案允許或禁止ssh或telnet操作》
過程
1、登入主機,如果是普通使用者先切換root賬號
su root
2、編輯/etc/hosts.allow檔案
vi /etc/hosts.allow
允許內容 | 書寫格式(改成自己需要的IP地址或者IP地址段) |
---|---|
ssh允許訪問單個ip | sshd:192.168.220.1 |
ssh允許ip段 | sshd:192.168.220. |
telnet允許單個ip | in.telnetd:192.168.220.1 |
telnet允許ip段 | in.telnetd:192.168.221. |
以ssh允許192.168.220.1和telnet允許192.168.220網段為例,具體在/etc/hosts.allow加入內容如下:
3、編輯/etc/hosts.deny檔案
vi /etc/hosts.deny
在檔案中加入:
sshd:ALL
in.telnetd:ALL
具體在/etc/hosts.deny加入內容如下:
4、報存檔案退出編輯後,重ssh服務和Telnet服務
service sshd restart
service xinetd restart
說明:
1.一個IP請求連入,linux的檢查策略是先看/etc/hosts.allow中是否允許,如果允許直接放行;如果沒有,則再看/etc/hosts.deny中是否禁止,如果禁止那麼就禁止連入。
2.實驗發現對/etc/hosts.allow和/etc/hosts.deny的配置不用重啟就立即生效,但不管重啟不重啟當前已有會話都不會受影響;也就是說對之前已經連入的,即便IP已配置為禁止登入會話仍不會強制斷開。不過不知是否所有linux都一樣,由此第四步標為可選。
3.網上發現有些教程寫成不是sshd而是in.sshd不是in.telnetd而是telnetd的,個人覺得應該是獨立啟的不用加in.託管於xinetd的需要加in.
總結
1、通過設定sshd的白名單與黑名單可以實現遠端訪問控制,設定為只有公司的網路可以訪問,再結合統一機器管理的jumpserver服務(我們公司暫時還是公網訪問),實現安全控制,防止黑客入侵。
2、/etc/hosts.allow和/etc/hosts.deny的配置不需要重啟,即刻生效(對於新開的shell視窗而言)
3、如果是想設定為白名單,則首先將白名單IP地址或者IP地址段 寫入/etc/hosts.allow檔案中,並在/etc/hosts.deny檔案中設定為sshd:ALL
如果是想設定為黑名單,則/etc/hosts.allow檔案中可以不設定,只在/etc/hosts.deny新增sshd:黑名單IP地址或者IP地址段
感謝博主的部落格,知識開源萬歲!!!