Защита

Лучшее лечение - это профилактика! 

Достаточно уделить совсем немного времени ДО того как ваш сайт пострадал от вирусных проблем, чем потом долго и нудно чистить его, двигаясь по пунктам бесконечной и мудреной инструкции. 

Для начала - простейшая фильтрация входящих данных, must have для любого сайта на php везде и всегда.

1. Узнайте абсолютный путь к папке сайта. Для этого положите в папку сайта файл с длиннейшим абракадаберным названием, например Ndjcwi-JDsw783hgS-QG_QGW.php, со следующим содержанием:

<?php
echo $_SERVER['DOCUMENT_ROOT'];
?>

Затем перейдите по ссылке http://ваш_сайт/Ndjcwi-JDsw783hgS-QG_QGW.php

Отобразится что-то вроде /var/www/vhosts/moysait/httpdocs/ - это и будет абсолютный путь к папке сайта. Запишите себе этот путь, и удалите наш абракадаберный файл.

2. Создайте папку filter на уровень выше чем папка сайта, она должна быть рядом с папкой сайта. И положите в эту папку файл prfilter.php следующего содержания:

<?php

$patt = "~\<\?~i";

if (is_array($_FILES)) {
foreach($_FILES as $anystring=>$file_data) {
if (preg_match($patt,file_get_contents($file_data['tmp_name']))) die("denied by antivirus-alarm 3");
}
}

$patt = "~\/\.\.\/\.\.\/\.\.\/|{0-9a-zA-Z}[80]|eval[^\(]*\(|include[^\(]*\(|base64_decode[^\(]*\(|stripslashes[^\(]*\(|strip_tags[^\(]*\(|fopen[^\(]*\(|chmod[^\(]*\(|chown[^\(]*\(|chgrp[^\(]*\(|unlink[^\(]*\(|unset[^\(]*\(|fgetc[^\(]*\(|fgets[^\(]*\(|file_get_contents[^\(]*\(|file_put_contents[^\(]*\(|fwrite[^\(]*\(|move_uploaded_file[^\(]*\(|is_uploaded_file[^\(]*\(|rmdir[^\(]*\(|fromCharCode[^\(]*\(|tmpfile[^\(]*\(|tempnam[^\(]*\(|phpinfo[^\(]*\(|basename[^\(]*\(|curl_init[^\(]*\(|socket_create[^\(]*\(|popen[^\(]*\(|exec[^\(]*\(|system[^\(]*\(|passthru[^\(]*\(|proc_open[^\(]*\(|gzuncompress[^\(]*\(|shell_exec[^\(]*\(|delete from|insert into~i";


foreach ($_REQUEST as $v1x1) prfilter_x1($v1x1,$patt);

function prfilter_x1($v1x1,$patt) {

ob_start();

if (is_array($v1x1)) {
foreach ($v1x1 as $vx) prfilter_x1($vx,$patt);
}
else {

if ( preg_match($patt, $v1x1) || preg_match($patt, stripslashes($v1x1) ) ) die("denied by antivirus-alarm 1");
if ( preg_match($patt, base64_decode($v1x1) ) || preg_match($patt, stripslashes(base64_decode($v1x1) ) ) ) die("denied by antivirus-alarm 2");

}

ob_end_clean();

}

?>

 

3. Откройте файл .htaccess лежащий у вас в корне сайта, и добавьте вверху строку:

php_value auto_prepend_file /var/www/vhosts/moysait/filter/prfilter.php

Вместо /var/www/vhosts/moysait/httpdocs/ надо конечно поставить свой абсолютный путь, который мы выясняли в п.1

4. Проверяем, теперь по адресу http://ваш_сайт/?x=eval() должно быть сообщение: denied_by antivirus-alarm 1. Также смотрим по http://ваш_сайт/ - всё должно работать по прежнему.

5. Если при работе в админке сайта вам не к месту выдается сообщение denied_by antivirus-alarm - обратитесь к своему вебмастеру или программисту, чтобы подкорректировать фильтр для вашего конкретного случая. Не отключайте фильтр, обзательно используйте его постоянно - он защищает ваш сайт не только от известных угроз, но и от тех что могут появиться в будущем.

Текже мы рекомендуем:

  • делать резервное копирование сайта самостоятельно, а также следить за тем что хостеры его тоже делают;
  • отказаться от использования FTP, использовать только SFTP;
  • если ваш хостер не предоставляет вам SSH доступ к сайту, и вы из-за этого не можете делать бэкапы самостоятельно, и не может использовать SFTP - поменяйте хостера;
  • используйте лицензионные и только лицензионные CMS для своего сайта. Не обязательно платные;
  • следите за выходом новостей и заплаток для вашей CMS на официальном сайте поддержки этой CMS;
  • скачивайте архив для установки CMS и любых плагинов только с официальных сайтов, и следите за новостями об уязвимости этих плагинов.
  • если у вас используются утилиты наподобие phpMyAdmin, помещайте их в папки с неочевидными, лучше всего длинными и абракадаберными названиями наподобие wfqmwkmuSKIwefuihDksdjf - это препятствует их нашариванию;
  • ограничивайте доступ к админке сайта, утилитам наподобие phpMyAdmin и другим инструментам управления сайтом по ip;
  • используте очень длинные, абракадаберные и полные кракозябликов пароли, наподобие 447duIDJfwIW0112ShdsQ_Q_WAED--^kasjG7QAQ
  • храните пароли в текстовом или вордовском файле, а не в "запоминалке" паролей вашего броузера или файловой программы.

Следите за публикациями на нашем сайте! Теперь он превращается в блог и новые посты с детальными рецептами от лучших специалистов будут добавляться всё время.

 

Уделите время безопасности сайта

1. Используйте бесплатные
либо лицензионные CMS

скупой платит дважды
и даже больше



2. Следите за новостями
об уязвимостях в коде

как в CMS
так и в плагинах




3. Сообщайте своему
вебмастеру или программисту

обо всех подозрениях и проблемах.
Помните, что лучше это сделать ДО!