Проверка целостности скриптов сайта

Автор: anon
15.10.2010 17:10

Как всем известно, интернет кишит гнусными мерзкими хакерами, взламывающих все, что может исполнять код. Поэтому контроль безопасности сайта нужен любому вебмастеру. Одним из элементов защиты является контроль целостности файлов сайта. Есть множество хороших Open Source продуктов, которые это делают, но проще всего задачу решить следующим способом.

Если скрипты сайта написаны на PHP, то надо время от времени проверять их хеш-суммы. Заодно желательно проверять .htaccess файлы, ибо с их помощью можно превратить любой файл в исполняемый. Вот скрипт на shell, который это делает, в случае изменения скриптов он высылает уведомление на указанную почту.

if [ -f contentmd5.txt ]
then
        mv contentmd5.txt contentmd5.old.txt
fi
 
for ext in cgi php htaccess
do
        find /path/to/site/directory -iname "*.$ext*" -exec md5sum "{}" \; >> contentmd5.txt
done
 
 
if [ -f  contentmd5.old.txt ]
then
        diff contentmd5.txt contentmd5.old.txt > contentmd5.diff
fi
 
if [ -s contentmd5.diff ]
then
        cat contentmd5.diff | mutt -s "file integrity check failed"\
 -a contentmd5.txt -a contentmd5.old.txt  integrity[@]mailforspam.com
fi
 

Также, если на вашем сервере исполняемыми считаются файлы и с другими расширениями, то скрипт надо модифицировать, чтобы он проверял и их. Проверьте расширения php3, php4, php5. Также полезно понимать, что в том случае если Apache не узнает расширение файла, он анализирует предыдущее, так что файл shell.php.olala тоже будет исполняемым.

В скрипте:

  • /path/to/site/directory - путь к корню сайта
  • integrity[@]mailforspam.com - почта куда слать уведомление

Директория, где лежит этот скрипт должна быть доступна для записи тому, с чьими правами он будет запускаться и недоступна для чтения всем другим.

Далее, надо настроить планировщик cron для запуска скрипта так часто как это нужно (например ежедневно).

После этих нехитрых процедур мало какой взломщик сумеет незаметно залить шелл на ваш сайт.

Обновлено 07.05.2011 23:38

 

Комментарии  

 
#1 benefis 10.10.2014 21:59
Вместо cat contentmd5.diff | mutt -s "file integrity check failed"\
-a contentmd5.txt -a contentmd5.old.txt integrity[@]mai lforspam.com

надо


cat contentmd5.diff | mutt -s "file integrity check failed"\
-a contentmd5.txt -a contentmd5.old.txt -- integrity[@]mai lforspam.com

Иначе mutt не прикрепляет файлы
Цитировать
 

Добавить комментарий


Защитный код
Обновить