线上服务器中招木马是非常常见的一类安全问题,再遇到问题时,不要慌,先止损再排查,事后也要多总结,下面介绍一个个人具体的排查及防护方法
故障描述:
如果需要服务器数据进行备份,避免因为攻击影响导致备份异常,可以参考阿里云脚本(重启实效),终端对外某些端口访问(或者直接断外网,用VNC操作)
Window2008的批处理文件下载地址:http://oss.aliyuncs.com/aliyunecs/windows2008_drop_port.bat
Linux系统脚本:http://oss.aliyuncs.com/aliyunecs/linux_drop_port.sh
iptables -I OUTPUT 1 -p tcp -m multiport --dport 21,22,23,25,53,80,135,139,443,445 -j DROP
iptables -I OUTPUT 2 -p tcp -m multiport --dport 1433,1314,1521,2222,3306,3433,3389,4899,8080,18186 -j DROP
iptables -I OUTPUT 3 -p udp -j DROP
以下是处理过程:
步骤1:登录痕迹
1. 查看登录成功的IP:grep -i accept /var/log/secure* -n | grep -v 116.213.168.211
2. 查看登录失败的用户信息:lastb | awk {'print $1'} | sort -r |uniq -c | sort -rn
3. 查看账户登录信息:lastlog/last
4. 查看免密码登录authorized_key:stat /root/.ssh/authorized_keys,看时间创建和修改时间,然后cat看内容
步骤2:检查账户,包括:异常账户、新用户、特权账户、空口令账户
1. 查看配置文件修改时间:stat /etc/passwd
2. 查看是否有异常的系统用户:cat /etc/passwd 或 grep 'bash' /etc/passwd --color
3. 查看是否产生了新用户,UID和GID为0的用户:grep '0' /etc/passwd
4. 查看passwd的修改时间,判断是否在不知的情况下添加用户:ls -l /etc/passwd
1. file file_name
2. stat file_name
3. lsattr file_name
4. ll -a file_name
5. 查看是否存在特权用户:awk -F: '$3==0 {print $1}' /etc/passwd
6. 查看是否存在空口令帐户:awk -F: 'length($2)==0 {print $1}' /etc/shadow
步骤3:检查进程
1. 以进程树方式查看:ps -auxf
2. 查看当前用户的进程(检查是否有伪造进程):ps -ef | grep vps
3. 守护进程检查(inetd)
4. 1. ps -aef | grep inetd
2. 1. 输出了inetd –s /tmp/.xxx之类的进程,多数.xxx为后门进程
2. kill –9 pid 开杀死该进程
3. find / -name 程序名 -print #如果kill掉自动运行,则执行查找命令,找到所在目录
3. cat /etc/inetd.conf | grep -v "^#"
4. 1. 输出的信息就是这台机器所开启的远程服务。
2. CentOS:xinetd.conf
3. Ubuntu:inetd.conf
4. [http://blog.csdn.net/d_0xff/article/details/51521075](http://blog.csdn.net/d_0xff/article/details/51521075)
5. 查看该进程所打开的端口和文件:lsof -p pid
6. 隐藏进程
7. 1. ps -ef | awk '{print $2}' | sort -n | uniq > 1
2. ls /proc | sort -n | uniq > 2
3. diff 1 2
步骤4:查看history找操作痕迹
more .bash_history
步骤5:查找后门/异常文件: ls -alt
1. find / -uid 0 -perm -400 -print | less
2. find / -size +1000k -print | less
3. find / -name "..." -print | less
4. find / -name ".." -print | less
5. find / -name "." -print | less
6. find / -name "" -print | less
步骤6:检查系统守护进程
cat /etc/inetd.conf | grep -v "^#"
步骤7:检查RPM的完整性
1. rpm -Va
2. rpm –qf /bin/ls
3. rpm -qf /bin/login
4. md5sum –b 文件名
5. md5sum –t 文件名
#注意相关的/sbin,/bin,/usr/sbin,/usr/bin
步骤8:检查网络
1. ip link | grep PROMISC(正常网卡不该在promisc模式,可能存在sniffer)
2. lsof -i
3. netstat -nap(察看不正常打开的TCP/UDP端口) --> 查找非常规端口
4. netstat -rn
5. arp -a
步骤9:检查端口监听
1. 输入netstat -an,列出本机所有的连接和监听的端口,查看有没有非法连接。
2. 输入netstat –rn,查看本机的路由、网关设置是否正确。
3. 输入 ifconfig –a,查看网卡设置。
步骤10:检查定时任务
1. cat /etc/crontab
2. crontab -e
步骤11:检查后门
1. cat /etc/crontab
2. ls /var/spool/cron/
3. cat /etc/rc.d/rc.local
4. ls /etc/rc.d
5. ls /etc/rc3.d
6. find / -type f -perm 4000
步骤12:检查文件系统中的Core文件
find / -name core -exec ls -l {} \;
步骤13:检查系统服务
1. chkconfig --list
2. rpcinfo -p
步骤14:检查rootkit后门
chkrootkit -q
步骤15:检查后门文件
1. find / -name ".forward" -print
2. find / -name ".rhost" -print
3. 在某用户的$HOME下,.rhosts文件中仅包含两个+号是非常危险的,如果你的系统上开了513端口(rlogin端口,和telnet作用相同),那么任意是谁都可以用这个用户登录到你的系统上而不需要任何验证。
步骤16:文件权限检查
1. 查找系统中任何用户都拥有写入权限的文件或者目录,并保存在文件中用于检查
1. find / -type f -perm -2 -o -perm -20 > /tmp/wmodfiles.txt 2>/dev/null
2. find / -type d -perm -2 -o -perm -20 > /tmp/wmoddir.txt 2>/dev/null
2. 查找系统中没有属主的文件,这种无属主的文件对于系统的安全也能造成一定的威胁,有时候也会成为入侵者的工具,建议发现之后,要么修改其属主信息,要么删除,以免后患。
1. find / -nouser -o -nogroup > /tmp/orphan.txt 2>/dev/null
3. 查找系统中含有 S 位文件,S位权限的程序对系统的威胁很大,可以把某些没必要使用 S 位权限的应用程序去掉,以防用户权限的滥用。
1. find / -type f -perm -4000 -o -perm -2000 > /tmp/smod.txt 2>/dev/null
2. 如果查到一个文件-rwsr-xr-x 1 root root xxx .sh,则表明任何用户进来以后运行这个文件都可以获得一个rootshell,这就是setuid文件
步骤17:杀毒 推荐ClamAV
上面就讲完了如何排查木马。当系统被植入木马后,第一操作就是止损,最好在断网情况下进行排查。一旦系统中了木马,当前系统排查中招方式后,一定要重装系统,然后针对中招方式,进行加固,切记,当前不可再使用!!
———————————————— 防 护 ————————————————
下面讲下规避方法
系统外层规避:
1. 安全组是一种虚拟防火墙(云服务器都有具备),具备状态检测包过滤功能。安全组用于设置单台或多台云服务器的网络访问控制,它是重要的网络安全隔离手段,用于在云端划分安全域。安全组规则可以允许或者禁止与安全组相关联的云服务器 ECS 实>例的公网和内网的入出方向的访问
2. 云盾可以防护SYN Flood,UDP Flood,ACK Flood,ICMP Flood,DNS Flood,CC攻击等3到7层DDoS的攻击。DDoS基础防护免费为阿里云用户提供最高5G的默认DDoS防护能力。
3. Web应用防火墙(Web Application Firewall, 简称 WAF)基于云安全大数据能力实现,通过防御SQL注入、XSS跨站脚本、常见Web服务器插件漏洞、木马上传、非授权核心资源访问等OWASP常见攻击,过滤海量恶意CC攻击,避免您的网>站资产数据泄露,保障网站的安全与可用性
系统内层规避
1. 设置iptables,添加ACL规则
2. 使用强密码
3. 关闭不需要的端口,并及时安装应用补丁
4. 安全防护软件:fail2ban、hostdeny
5. 文件权限加固:这块阿里云写的非常好,可以参见连接[https://help.aliyun.com/knowledge_detail/41217.html?spm=5176.7841174.2.7.iqoxda](https://help.aliyun.com/knowledge_detail/41217.html?spm=5176.7841174.2.7.iqoxda)
系统自身规避,主要借助于云平台的快照和镜像功能,数据无价,防患于未然
1. 设置定时快照(系统快照和数据盘快照)
2. 定期做镜像