起因
在公司進行整理服務器列表時,發現一個問題,有些服務器是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 root@10.0.0.102 -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地址段
感謝博主諸子流,知識開源萬歲!!!
