1. 程式人生 > 實用技巧 >sshd服務的白名單和黑名單

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地址段

感謝博主的部落格,知識開源萬歲!!!