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

感谢博主诸子流,知识开源万岁!!!

posted @ 2020-09-14 21:45  热气球!  阅读(1803)  评论(0编辑  收藏  举报