最近公司有台数据库服务器一直不停重启,导致业务访问不正常,最后查询下来发现是snmp设置的时候没有做好安全设置,导致黑客通过snmp来连接服务器进行重启了服务器的操作,所以研究了下snmp,特此写个文章提醒下大家注意下以后服务器的snmp设置。
我只是临时研究了下snmp,没有更深入的了解,不过大致的东西已经了解了。
首先snmp 分几个版本,v1 v2 v2c,V1的版本安全性很弱,容易被入侵,我们现在一般都用v2.
我们看下图,几个地方说明下:
正常我们snmp只要设置社区名称,和接受的主机ip即可。
在设置社区名称的时候,我们有只读和读写,我们应该只设置只读,设置了读写,就像我们上次一样,黑客通过snmp连入了我们的服务器,然后通过snmp发送重启命令,来远程重启我们的服务器。
默认的社区名称一般都是public,当然你可以为了安全修改下社区名称设置个自己公司特有的。
这个也需要配置下,只接受公司里特定的一台专门做监控的服务器的ip,否则别人可能会通过snmp来抓起你系统的其他信息。
默认像我们设置好了,我们的snmp已经可以正常使用了,也安全了,但是为什么要设置身份验证陷阱呢。
我们默认的snmp抓取是我们内部一台服务器每隔一段时间进行轮询抓取的,而这个陷阱的意思代表我们的主机会在系统出现异常时主动进行报警。
举个例子:正常你的领导会每个一个月开个会,然后你们各自汇报下自己的工作进度。
然后呢一个叫陷阱的员工比较积极,他会主动和领导汇报工作,不需要领导来进行询问,就是这个功能。
我们之前被攻击后,然后我前面一篇文章是写了如何查看windows防火墙日志,就是为了抓住这个黑客来写的,我们通过开启了防火墙日志,然后就查看到了有ip在连接udp 161的端口,默认snmp就是通过161的端口来进行连接,所以抓到了。
另外在说下,我们平时都说snmp抓取日志,很多人只是知道这个用处,但是有些朋友不太了解原理,所以我简单说下:
我们的硬件软件厂商会对自己的系统,比如CPU,内存这些信息给他们定义一个oid的值,然后把这些值汇总成一个mib包,我们的监控系统默认都是抓取这些oid值来进行监控,如果我们的监控系统里没有这些oid值就无法进行监控,所以像zabbix这些系统,他们就需要导入mib的包,有了这个包他们就能监控到了系统,所以我们去采购监控系统的时候要选择一些大的厂商的产品,他们系统会自带很多其他硬件软件厂商的mib包,而不需要你另外在去论坛什么的找,方便很多,否则太费时了。