前一个礼拜,突然被互联网和技术群中strut2漏洞惊醒,伴随着就是阿里云短信与监控报警,端口被恶意扫描和上传木马文件,出自apache的strut2,简直是运维界的血洗。
来一段当时官方说明
http://0day5.com/archives/4334/
https://cwiki.apache.org/confluence/display/WW/S2-045
Apache Struts2存在S2-045远程代码执行漏洞。远程攻击者利用该漏洞可直接取得网站服务器控制权。
因为我不是开发,strut存在于web/WEB-INF/lib,属于程序中低版本的jar包,开发包引起的,可以上传木马文件,一开始时候,我还懒得看,因为第一遍想到的是什么,我做的了ssh策略,只接受来自跳板的ssh登录,并且在nginx上加模块,nginx的http_limit_conn和http_limit_req模块来防御,但是小瞧了,他是漏洞上传,并非流量+ddos+cc攻击,歇菜。
根据官方说明,来试图升级struct模块来弥补,晚矣。。。
至今已经发现了流量攀高和可疑的进程。
开始一波挫折吧
怎么办,来一波系统处理入侵吧
1、发现查看一下tcp链接
netstat -nat
tcp 0 0 *.*.*.*:22 122.11.33.247:6300 ESTABLISHED
怎么发现我的外网卡这么多ip链接着我,都是什么德国,新加坡的IP,完蛋,ssh被人植入脚本了, 感觉,赶紧先改root密码(但是,做了ssh免秘钥的可能性很大)
2、ssh的处理与修改策略
netstat -anp|grep :22
每一个ssh链接都会有个 sshd进程,查到就kill吊,现在,我的22端口从防火墙上改策略了
修改/etc/sysconfig/iptables
-A INPUT -s 10.0.0.0/255.0.0.0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j DROP
一定要先aceept,匹配了第一条,下面就不再匹配了。如果DROP放在前面,就要GG了,ssh连不上很麻烦。
防火墙书写规则-http://www.cnblogs.com/alimac/p/5848372.html
3、检查我的/bin/ /usr/bin /sbin /etc/rc.d...
下面的系统命令,不用想了,一定被篡改了,大小都不一样,都在1.2M差不多,正常的都是84K左 右,这黑客还是用touch命令,修改了命令的上传时间,只能和正常的系统比对,然后重新一个个改了
我的系统被篡改的命令是 netstat ps lsof ss 网友们有些还被篡改了 lsattr、chattr命令,没办法,只能一个个替换吧,找同一版本的系统,植入进去,下面是遇到的,大伙儿是怎么处理的
51cto.com/bbs/archiver/tid-37766.html
51cto.com/bbs/viewthread.php?tid=37766&rpid=65689&ordertype=0&page=1#pid65689
http://www.server110.com/linux_sec/201410/10927.html
3、查可疑进程
可以通过去/proc/进程号来去找启动脚本
找到就杀,一般是流量比较高的,或者cpu占用比较高的,和正常的系统比对。
根据以上网页来找木马文件,
http://www.bubuko.com/infodetail-1010815.html
这篇文章比较好。可以根据来判断,是dpkgd漏洞。
4、加固系统,按照上面uptables书写规则,ssh端口只允许跳板机来登录,其余开放的端口,则按照第一条来对外,其余的tomcat、数据库,中间件端口,只对内10.0.0.0/8网段,避免了直接绕过nginx,来攻击我内网程序找漏洞。(防火墙必须开启,要不就是裸奔)
5、总结,还是冷静为先,在处理系统时候,建议,将业务(数据库+程序+系统配置文件profile nginx.conf fstab 等备份至安全的服务器)
在修改防火墙时候,一定演练,尤其22端口,我是通过阿里云的终端进来的。没办法做到退路的孩纸,可以简单写个脚本,半小时后还原iptables和重启防火墙
来一个关于跳板机安全的变态加固策略
1、做用户审计
已完成,此后,用户登录IP和操作会记录在此 more /var/log/usermonitor/usermonitor.log
例如: [ 2017-01-21 21:53:42 #### root pts/2 (121.237.177.160) ] #### /root #### rm -rf hell_test
2、使root用户,普通用户,无效用户登录失败5次,锁定5分钟.
开启管理员密码复杂度
每90天更新一次密码,最小长度8位数
已删除不必要普通用户,检查root密钥文件
3、登陆操作时间锁定
4、添加白名单
vi /etc/hosts.allow
ALL:127.0.0.1
ALL:192.168.1.0/255.255.255.0
sshd:
sshd:
sshd:
sshd
这是我自己做的关于ssh问题的笔记,可以使用。