亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

php實現Linux服務器木馬排查及加固功能

2024-05-04 23:29:37
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了php實現Linux服務器木馬排查及加固功能,本文給出了根據特征碼查找、搜索最近被修改的文件、修改php.ini、修改nginx.conf等方法,需要的朋友可以參考下
 
 

網站頻繁被掛馬?做一些改進,基本上能把這個問題解決,因為discuz x等程序存在漏洞,被上傳了websehll,每次被刪除過段時間又出來了,最終查到所有的木馬。

 

從以下幾個方面查找并加強(如果能不開啟會員功能,不給任何上傳入口,保護好后臺密碼,加固好PHP,一般就沒什么問題了)。

 

1.根據特征碼查找:

 

php木馬一般含有

復制代碼代碼如下:

<?php eval($_POST[cmd]);?>

或者
復制代碼代碼如下:

<?php assert($_POST[cmd]);?>

 

find /wwwroot/* -type f -name "*.php" |xargs grep "eval(" > /wwwroot/scan.txt

 

結果就查出很多明顯的webshell,并且發現都藏在attachment等目錄下

 

2.利用網上的一個php代碼,搜索最近被修改的文件

 

scandir.php
內容如下:

復制代碼代碼如下:

<?php 
set_time_limit(0);//防止超時 
/** 

* php目錄掃描監控增強版 

* @author lssbing (lssbing#gmail.com) 
* @date 2010-1-18 
* @license BSD 
* @version 1.0 

下面幾個變量使用前需要手動設置 

**/ 
/*===================== 程序配置 =====================*/ 
$pass="12345";//設置密碼 
$jkdir="."; //設置監控掃描的目錄,當前目錄為'.',上一級目錄為'..',也可以設置絕對路徑,后面不要加斜杠,默認為當前目錄 
$logfilename="./m.log";//設置存儲log的路徑,可以放置在任意位置 
$exclude=array('data','images');//排除目錄 
$danger='eval|cmd|passthru|gzuncompress';//設置要查找的危險的函數 以確定是否木馬文件 
$suffix='php|inc';//設置要掃描文件的后綴 
/*===================== 配置結束 =====================*/ 
 
$filename=$_GET['filename']; 
$check=$_GET['check']; 
$jumpoff=false; 
$url = $_SERVER['PHP_SELF']; 
$thisfile = end(explode('/',$url)); 
$jump="{$thisfile}|".implode('|',$exclude); 
$jkdir_num=$file_num=$danger_num=0; 
define('M_PATH',$jkdir); 
define('M_LOG',$logfilename); 
if ($check=='check') 

$safearr = explode("|",$jump); 
$start_time=microtime(true); 
safe_check($jkdir); 
$end_time=microtime(true); 
$total=$end_time-$start_time; 
$file_num=$file_num-$jkdir_num; 
$message= " 文件數:".$file_num; 
$message.= " 文件夾數:".$jkdir_num; 
$message.= " 可疑文件數:".$danger_num; 
$message.= " 執行時間:".$total; 
echo $message; 
}else{ 
if ($_GET['m']=="del") Delete();//處理文件刪除 
//讀取文件內容 
if(isset($_GET['readfile'])){ 
//輸出查看密碼,密碼校驗正確以后輸出文件內容 
if(emptyempty($_POST['passchack'])){ 
   echo"<form id=/"form1/" name=/"form1/" method=/"post/">" 
    . " <label>pass" 
    . " <input type=/"text/" name=/"passchack/" />" 
    . " </label>" 
    . " <input type=/"submit/" name=/"Submit/" value=/"提交/" />" 
    . "</form>" 
   .""; 
   exit; 
}elseif(isset($_POST['passchack'])&&$_POST['passchack']==$pass){ 
   $code=file_get_contents($_GET['readfile']); 
   echo"<textarea name=/"code/" cols=/"150/" rows=/"30/" id=/"code/" style='width:100%;height:450px;background:#cccccc;'>{$code}</textarea>"; 
   exit; 
}else{ 
   exit; 

 
}else{ 
record_md5(M_PATH); 
if(file_exists(M_LOG)){ 
        $log = unserialize(file_get_contents(M_LOG)); 
}else{ 
        $log = array(); 

 
if($_GET['savethis']==1){ 
//保存當前文件md5到日志文件 
@unlink(M_LOG); 
file_put_contents(M_LOG,serialize($file_list)); 
echo "<a href='scandir.php'>保存成功!點擊返回</a>"; 
exit; 

if(emptyempty($log)){ 
echo "當前還沒有創建日志文件!點擊[保存當前]創建日志文件!"; 
}else{ 
if($file_list==$log){ 
   echo "本文件夾沒有做過任何改動!"; 
}else{ 
   if(count($file_list) > 0 ){ 
    foreach($file_list as $file => $md5){ 
    if(!isset($log[$file])){ 
     echo "新增文件:<a href={$file} target='_blank'>".$file."</a>"." 創建時間:".date("Y-m-d H:i:s",filectime($file))." 修改時間:".date("Y-m-d H:i:s",filemtime($file))." <a href=?readfile={$file} target='_blank'>源碼</a><a href='?m=del&filename={$file}' target='_blank'>刪除</u></a><br />"; 
    }else{ 
     if($log[$file] != $md5){ 
     echo "修改文件:<a href={$file} target='_blank'>".$file."</a>"." 創建時間:".date("Y-m-d H:i:s",filectime($file))." 修改時間:".date("Y-m-d H:i:s",filemtime($file))." <a href=?readfile={$file} target='_blank'>源碼</a><br />"; 
 
     unset($log[$file]); 
     }else{ 
     unset($log[$file]); 
     } 
    } 
    } 
   } 
   if(count($log)>0){ 
    foreach($log as $file => $md5){ 
    echo "刪除文件:<a href={$file} target='_blank'>".$file."</a><br />"; 
    } 
   } 
    } 



 
//計算md5 
function record_md5($jkdir){ 
        global $file_list,$exclude; 
        if(is_dir($jkdir)){ 
                $file=scandir($jkdir); 
                foreach($file as $f){ 
                        if($f!='.' && $f!='..' && !in_array($f, $exclude)){ 
                                $path = $jkdir.'/'.$f; 
                                if(is_dir($path)){ 
                                        record_md5($path); 
                                }else{ 
                                        $file_list[$path]=md5_file($path); 
                                } 
                        } 
                } 
        } 

 
function Safe_Check($jkdir)//遍歷文件 

global $danger ,$suffix ,$jkdir_num ,$file_num ,$danger_num; 
 
$hand=@dir($jkdir) or die('文件夾不存在') ; 
while ($file=$hand->read()) 

    $filename=$jkdir.'/'.$file; 
    if (!$jumpoff) { 
   if(Jump($filename))continue; 
    } 
    if(@is_dir($filename) && $file != '.' && $file!= '..'&& $file!='./..') 
    {   $jkdir_num++; 
    Safe_Check($filename); 
    } 
    if (preg_match_all ("//.($suffix)/i",$filename,$out)) 
    { 
 
   $str=''; 
   $fp = @fopen($filename,'r')or die('沒有權限'); 
   while(!feof($fp)) 
   { 
   $str .= fgets($fp,1024); 
   } 
   fclose($fp); 
   if( preg_match_all ("/($danger)[ /r/n/t]{0,}([/[/(])/i",$str,$out)) 
   { 
   echo "<font color='green' style='font-size:14px'>可疑文件:{$filename}</font>"." 創建時間:".date("Y-m-d H:i:s",filectime($filename))." 修改時間:".date("Y-m-d H:i:s",filemtime($filename))." <a href='?readfile={$filename}' target='_blank'><u>查看代碼</u></a> <a href='?m=del&filename=$filename' target='_blank'>刪除</u></a><br>"; 
   $danger_num++; 
   } 
    } 
    $file_num++; 


function Edit()//查看可疑文件 

global $filename; 
$filename = str_replace("..","",$filename); 
$file = $filename; 
$content = ""; 
if(is_file($file)) 

    $fp = fopen($file,"r")or die('沒有權限'); 
    $content = fread($fp,filesize($file)); 
    fclose($fp); 
    $content = htmlspecialchars($content); 
 

echo "<textarea name='str' style='width:100%;height:450px;background:#cccccc;'>$content</textarea>/r/n"; 
exit(); 

function Delete()//刪除文件 
{ global $filename,$pass; 
if(emptyempty($_POST['passchack'])){ 
    echo"<form id=/"form1/" name=/"form1/" method=/"post/">" 
   . " <label>pass" 
   . " <input type=/"text/" name=/"passchack/" />" 
   . " </label>" 
   . " <input type=/"submit/" name=/"Submit/" value=/"提交/" />" 
   . "</form>" 
    .""; 
    exit; 
}elseif(isset($_POST['passchack'])&&$_POST['passchack']==$pass){ 
   (is_file($filename))?($mes=unlink($filename)?'刪除成功':'刪除失敗 查看權限'):''; 
   echo $mes; 
   exit(); 
}else{ 
   echo '密碼錯誤!'; 
   exit; 


function Jump($file)//跳過文件 

global $jump,$safearr; 
if($jump != '') 

    foreach($safearr as $v) 
    { 
   if($v=='') continue; 
   if( eregi($v,$file) ) return true ; 
    } 

return false; 

?> 
<a href="scandir.php">[查看文件改動]</a>|<a href="scandir.php?savethis=1">[保存當前文件指紋]</a>|<a href="scandir.php?check=check">[掃描可疑文件]</a> 

 

 

執行后能看到最近被修改的文件,具有參加價值

 

3.修改php.ini,限制以下函數

 

 

復制代碼代碼如下:

disable_functions =  phpinfo,passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_alter,ini_restore,dl,pfsockopen,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocke,popen,proc_close,curl_exec,curl_multi_exec,parse_ini_file,show_source,dl,escapeshellarg,escapeshellcmd 

 

 

4.修改nginx.conf ,限制一些目錄執行php文件

 

 

復制代碼代碼如下:

server 

    listen       80; 
    server_name  www.***.com; 
    index   index.htm index.html index.php; 
    root  /wwwroot/; 
     
 
       
    rewrite ^([^/.]*)/topic-(.+)/.html$ $1/portal.php?mod=topic&topic=$2 last; 
    rewrite ^([^/.]*)/article-([0-9]+)-([0-9]+)/.html$ $1/portal.php?mod=view&aid=$2&page=$3 last; 
    rewrite ^([^/.]*)/forum-(/w+)-([0-9]+)/.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last; 
    rewrite ^([^/.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)/.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last; 
    rewrite ^([^/.]*)/group-([0-9]+)-([0-9]+)/.html$ $1/forum.php?mod=group&fid=$2&page=$3 last; 
    rewrite ^([^/.]*)/space-(username|uid)-(.+)/.html$ $1/home.php?mod=space&$2=$3 last; 
    rewrite ^([^/.]*)/([a-z]+)-(.+)/.html$ $1/$2.php?rewrite=$3 last; 
    rewrite ^([^/.]*)/topic-(.+)/.html$ $1/portal.php?mod=topic&topic=$2 last; 
         
 
        location ~ ^/images/.*/.(php|php5)$ 
                { 
              deny all; 
                } 
 
        location ~ ^/static/.*/.(php|php5)$ 
                { 
               deny all; 
                } 
 
        location ~* ^/data/(attachment|avatar)/.*/.(php|php5)$ 
            { 
                deny all; 
            } 
 
    location ~ .*/.(php|php5)?$ 
    {       
      fastcgi_pass  127.0.0.1:9000; 
      fastcgi_index index.php; 
      include fcgi.conf; 
    } 
     
         
 
error_page  400 /404.html; 
error_page  403 /404.html; 
error_page  404 /404.html; 
error_page  405 /404.html; 
error_page  408 /404.html; 
error_page  410 /404.html; 
error_page  411 /404.html; 
error_page  412 /404.html; 
error_page  413 /404.html; 
error_page  414 /404.html; 
error_page  415 /404.html; 
error_page  500 /404.html; 
error_page  501 /404.html; 
error_page  502 /404.html; 
error_page  503 /404.html; 
error_page  506 /404.html; 
 
 
log_format  acclog    "$remote_addr $request_time $http_x_readtime [$time_local] /"$request_method http://$host$request_uri/" $status $body_bytes_sent /"$http_referer/" /"$http_user_agent/""; 
        access_log  /logs/access.log  acclog; 

 

 

此處需要注意的是

 

 

復制代碼代碼如下:

location ~ ^/images/.*/.(php|php5)$ 

  deny all; 

 

 

這些目錄的限制必須寫在

 

 

復制代碼代碼如下:

location ~ .*/.(php|php5)?$ 
{       
  fastcgi_pass  127.0.0.1:9000; 
  fastcgi_index index.php; 
  include fcgi.conf; 

 

的前面,否則限制不生效。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品免费看久久久香蕉| 一本一本久久a久久精品综合小说| 不卡av日日日| 亚洲欧美综合区自拍另类| 国产精品十八以下禁看| 欧美在线性爱视频| 欧美最近摘花xxxx摘花| 丝袜美腿亚洲一区二区| 色噜噜久久综合伊人一本| 国产精品久久av| 亚洲成avwww人| 精品福利视频导航| 亚洲福利精品在线| 九九热视频这里只有精品| 懂色aⅴ精品一区二区三区蜜月| 午夜精品99久久免费| 亚洲精品videossex少妇| 清纯唯美日韩制服另类| 俺去亚洲欧洲欧美日韩| 亚洲第一页中文字幕| 久久久久久亚洲精品不卡| 狠狠躁天天躁日日躁欧美| 欧美激情视频一区二区| 亚洲综合在线中文字幕| 欧美国产精品日韩| 精品久久久中文| 久久中文字幕在线视频| 色婷婷av一区二区三区在线观看| 91禁外国网站| 亚洲片在线资源| 日韩高清免费在线| 国产精品久久久久久久app| 国产精品网红福利| 国产欧美日韩丝袜精品一区| 亚洲一区999| 成人免费直播live| 久久久91精品国产| 欧美另类极品videosbestfree| 国产精品视频网址| 国产精品欧美日韩一区二区| 久久福利视频网| 亚洲国内高清视频| 久久久久九九九九| 久久久久久久亚洲精品| 欧美成年人视频网站欧美| 国产精品欧美一区二区三区奶水| 国a精品视频大全| 亚洲美女性生活视频| 亚洲视频在线视频| 欧美精品中文字幕一区| 亚洲欧洲美洲在线综合| 精品久久久久久中文字幕一区奶水| 一本一道久久a久久精品逆3p| 日韩精品免费在线观看| 久久精品一偷一偷国产| 日韩精品极品视频| 久久香蕉国产线看观看av| 中文字幕视频一区二区在线有码| 北条麻妃在线一区二区| 日韩精品一区二区视频| 成人性生交大片免费观看嘿嘿视频| 青青久久av北条麻妃黑人| 亚洲精品久久久久久久久久久久| 日本成熟性欧美| 成人网在线免费看| 久久久久久一区二区三区| 精品欧美国产一区二区三区| 欧美性xxxxxx| 久久久久北条麻妃免费看| 亚洲男人天堂手机在线| 精品福利在线观看| www.亚洲男人天堂| 亚洲人成77777在线观看网| 欧美日韩一区二区三区在线免费观看| 在线电影中文日韩| 国内精品久久久久| 日韩极品精品视频免费观看| 亚洲福利视频在线| 中文字幕亚洲色图| 国产成人精彩在线视频九色| 国产成人精品久久亚洲高清不卡| 国产精品久久久久久网站| 992tv成人免费影院| 国产视频综合在线| 日韩av手机在线看| 国产ts人妖一区二区三区| 日韩av中文字幕在线| 国产欧美日韩中文字幕| 国产一区二区久久精品| 国产精品久久久久久av福利| 久久久久久噜噜噜久久久精品| 久久亚洲精品小早川怜子66| 欧美亚洲另类激情另类| 久久影院资源站| 亚洲成年人在线| 亚洲精品一区二区网址| 欧美日韩国产综合视频在线观看中文| 成人精品一区二区三区电影黑人| 久久久久久中文| 91av在线国产| 欧美国产日韩二区| 亚洲男人天堂久| 免费91在线视频| 黑人欧美xxxx| 亚洲免费高清视频| 欧美性jizz18性欧美| 欧美一区二区三区免费视| 91亚洲国产成人久久精品网站| 亚洲综合一区二区不卡| 一级做a爰片久久毛片美女图片| 欧美日韩亚洲视频一区| 亚洲精品久久久久久久久久久久| 色综合五月天导航| 91精品国产综合久久男男| 亚洲国产精品中文| 国产91亚洲精品| 国产在线高清精品| 亚洲精品乱码久久久久久金桔影视| 久久精品色欧美aⅴ一区二区| 亚洲深夜福利在线| 国产成人免费91av在线| 欧美日韩一区二区三区| 国产亚洲欧洲在线| 日本电影亚洲天堂| 欧美日韩国产成人在线观看| 国产精品天天狠天天看| 91av免费观看91av精品在线| 中文字幕精品在线视频| 亚洲激情在线观看| 91久久夜色精品国产网站| 亚洲肉体裸体xxxx137| 欧美贵妇videos办公室| 亚洲自拍欧美色图| 欧美疯狂xxxx大交乱88av| 亚洲国产一区二区三区在线观看| 国产精品爽爽ⅴa在线观看| 中文字幕在线视频日韩| 欧美猛男性生活免费| 亚洲色图13p| 国产成人av在线播放| 精品欧美国产一区二区三区| 国产一区二区三区中文| 奇米影视亚洲狠狠色| 日本一区二区不卡| 中文字幕亚洲欧美日韩在线不卡| 91理论片午午论夜理片久久| 国产精品久久9| 国产精品女人久久久久久| 综合网日日天干夜夜久久| 亚洲国产97在线精品一区| 国产免费一区二区三区在线能观看| 久久福利视频导航| 国产精品久久久久久影视| 97精品国产97久久久久久| 国产精品美女www爽爽爽视频| 国产精品免费观看在线| 4438全国成人免费| 日韩精品视频免费在线观看| 国产一区欧美二区三区| 97免费视频在线| 红桃视频成人在线观看| 国产美女91呻吟求| 久久国产精品久久久久久| 丰满岳妇乱一区二区三区|