Сейчас на сайте
Пользователей : 3
Статей : 40
Просмотрено статей : 128684

Защита сайта.

Угроза зарожения сайта какой-нибудь заразой существовала постоянно. Сейчас с развитием популярности различных Web-технологий она только возрастает. Вместе с заразой на свой сайт вы можете поймать "бан" от таких поисковых систем как Яндекс, Google и прочее. И хотя он будет не вечным, он все же сможет заметно снизить популярность вашего сайта, или даже "уронить" его в рейтенге на десяток другой строчек. Для работающего сайта это достаточно ощутимая потеря рейтинга, достаточная для того что бы потеряться среди сайтов конкурентов. Как же избежать заражения или хотябы держать все под контролем?

Как и все неприятное, зараза на сайте появляется внезапно. Как показала практика вычислить ее бывает достаточно сложно, даже используя такие сервисы как Яндес.Вебмастар. Приходится обращаться к специалистам и тут то же кроется подвох: если сервис уважаемый и дорожит своим именем, то он ответит на ваш запрос в течение суток, максимум двух (Яндекс.Вебмастер); если нет -- может "протормозить" пару недель (Ucoz). В любом случае бана вам не не избежать. Продолжительность бана зависит от вашей реакции, умения читать код сайта и сравнивать его с оригиналом, расторопности сервиса, услугами которого вы пользуетесь и скорости работы антивирусних ботов поисковых систем.

Как выгладит бан?

В поисковой системе Яндекс ваш сайт будет выделен серым цветом и под ним будет надпись "Этот сайт может угрожать безопасности вашего компьютера"

Если бан от Яндекса хоть и достаточно неприятная вещь, но достаточно гибкая и скоротечная (все зависит опять же от реакции администратора сайта и от скорости работы бота, проверяющего сайты на вирусы), то другой вид бана достаточно консервативен и убрать его достаточно сложно -- это бан различных Интернет-сообществ таких как Firefox или Google-Chrom

Такие сообщения могут появляться непосредственно в самом браузере при переходе на зараженный сайт. Формируют их либо те же боты, либо пользователи, неравнодушные к "здоровью" сети Интернет.

В любом случае ведется особая база данных зараженных сайтов. И если Яндекс оперирует информацией о 10 - 100 тыс. сайтов, кроме того в системе Яндекс.Вебмастер можно указать боту, что вы исправили код своей странички, то тот же Firefox обладает базой о десятках миллионов сайтов и сообщить ему об устранении заражения сайта гораздо сложнее.

Другая сторона бана -- это имеджевые и финансовые потери сайта и его хозяина. Появление таких табличек означает что сайт будет посещать гораздо меньшее число народа, а значит и продавать он будет гораздо меньшее количество товара.

Кроме того некоторые виды вируса хоть и безобидны на первый взгляд (30 - 40 строк кода на языке PHP) могут достаточно быстро превратить ваш сайт в фабрику по распространению СПАМа или порнографии, заразить все страницы вашего сайта или "зомбировать" компьютер того кто вошел на виш сайт и использовать его в итересах хозяина вируса.

Как же с этим бороться?

Выхода два: ждать кагда ваш сайт все-таки "заболеет", а потом лечить его, или просто не допустить заражения путем нехитрых "профикактических"  процедур.

В первом случае вы потратите время на тестирование сайта в нескольких антивирусах, поиск вируса, его выведение и вам останется просто ждать когда бот пройдется по вашему сайту и снимет бан. Если тестирование сайта в трех, четырех и даже пяти специализированных антивирусах может занять у вас не больше часа (некоторые виды вирусов они все равно не найдут), поиск и выведение вируса может занять от 15 минут до двух дней (катастофическое заражение всего что можно на сайте -- бывает крайне редко), то бота на сайте можно ждать и 6 месяцев и год и два. Кроме того один бот проблемы не решит, у каждой уважающей себя поисковой системы есть собственный бот-антивирус и период опроса вашего сайта у каждого бота свой.

Во втором случае достаточно поменять права на доступ к файлмам и папкам особым образом, так что-бы их можно было только читать. Механизм заражения сайта чаще всего основан на использовании лазейки, которую оставляют неопытные администраторы, а именно прав доступа к файлам страниц или шаблону страниц (в этом случае достаточно один раз прописать код вируса, чтобы заразить все страницы сайта).

Сменить настройки доступа чаще всего можно только с использованием FTP доступа на сайт или через файловый менеджер панели управления хостингом. Достаточно установить всем файлам права "только чтение" даже для владельца файла. В системах работающих под ОС Linux, Unix и FreeBSD восмиричный код прав будет "0444".

Данный метод проверен на нескольких десаках сайтах. Ни один из них не подвергся повторному заражению.

Остается только несколько вопросов:

1. Как администрировать сайт если  вся информация на нем доступна только для чтения?
2. Как автоматизировать этот процесс если на сайте несколько десятков папок и несколько сотен файлов?

Ответы на данные вопросы то же изветны:

1.

Для администрирования можно оставить некоторые папки с правами "чтение и запись" для владельца файлов.

Возникает резонный вопрос: а какие папки можно оставить открытыми для записи и кто такой владелец файла?

Владелец файла это тот сервис, который записал файл. Как ни странно, но для любых файлов на вашем сайте владельцем является сам сайт (точнее программа сервер, которая собственно и выполняет ваши скрипты, формируя страницы сайта).

Что касается ответа на вторую половину вопроса: Большенство современных сайтов широко используют базы данных, основная информация отображаемая на страницах сайта хранится в ее таблицах. Доступ к базе данных возможен только определенному пользователю, как правило никак не связанному с вами (вам как администратору сайта может выдаваться имя пользователя и пароль). За работоспособностью базы данных обычно следит хозяин хостинга хотя могут быть и исключения.

В виде файлов обычно хранят только графическую информацию сайта и файлы, которые сайт может "отдать" поситителю -- так называемое media. Отсюда вывод: оставлять "открытыми" можно только каталоги, в которых хранится медийная составляющая сайта. К сожалению в каждой CMS эти каталоги имеют разные имена, так что более полного ответа дать невозможно.

Необходимо так же помнить, что оставляя открытыми какие-то каталоги вы добавляете себе работы по обеспечению безопасности сайта -- надо переодически проверять файлы в каталогах на предмет появления новых (особенно с расширением .php и .js). Если же в данных каталогах хранятся и ваши файлы с такими расширениями, которые сервер может выполнить или отдать поситителю, то надо проверять и их на предмет совпадения с оригиналом. 

Маленькая подсказка: для того что бы понять, что файл был измененен или в каталоге появился новый файл достаточно взглянуть на дату его изменения. Если она разительно отличается от остальных в этом каталоге, то надо делать более глубокую проверку, если нет то можно быть спокойным -- это ваш файл и его никто не трогал. 

2.

Автоматизировать процесс можно только созданием процедуры которая будет работать непосредственно на вашем сайте ибо другими методами изменить права всех файлов достаточно сложно.

Я пользуюсь процедурой chmod.php. Скачать скрипт можно по этой ссылке. В архиве находится скрипт chmode.php, который надо переписать в корневой каталог вашего сайта.

Далее необходимо в браузере ввести команду "http://www.my-sait.com/chmod.php", где "my-site.com" -- имя вашего сайта. Вы увидите примерно следующее:

Что может этот скрипт? Открывать и закрывать любые каталоги на вашем сайте.

Работать с программой очень просто:

- в таблице "File" установите флажки в соответствии с правами, которые мы хотите дать для файлов,
- в таблице "Folder" установите флажки в соответствии с правами, которые мы хотите дать для папок (обычно для файлов устанавливается только чтение [Read] для всех, а для каталогов чтение и выполнение [Read, Execute], запись [Write] для всех должна быть запрещена),
- в поле "Начать с каталога" необходимо указать с какого каталога необходимо начать алгоритм (если оставить поле как есть -- ".", то скрипт начнет с того каталога в котором он находится обычно это корень сайта), если необходимо "подняться" на однин каталог вверх, то строка должна начинаться с символов "../" если на два то "../../" и т. д. далее необходимо указать точное имя каталога, начиная с которого надо изменить настройки доступа к файлам и папкам.

- для начала работы надо нажать кнопку "CHMODE".

Через какое-то время скрипт закончит работать (зависит от количества файлов и папок на сайте), а всем файлам и папкам будут установлены указанные права.

После завершения работы файл со скриптом необходимо удалить с сайта. В противном случае им может воспользоваться кто-то другой. Тогда все ваши труды будут напрасными.

Алгоритм работы программы прост до безобразия: Программа формирует у себя список файлов и папок которые находятся в указанной папке и глубже. Потом всем папкам и файлам присваиваются указанные права.

В общем-то все...

Остается только разобрать как вручную изменить тот или иной файл после такой защиты.

Допустим вы захотели изменить алгоритм анализа полученных от пользователя данных, а файл с алгоритмом защищен от изменения (права доступа 0444). Просто так изменить его не получится. Необходимо сначала разрешить владельцу запись файла, а после этого вносить изменения (можно даже перезалить файл скажем с домашнего ПК). Не забудьте только после изменения вернуть права в прежнее состояние (0444).

Следующая ситуация: вам необходимо добавить файл в каталог который защищен от записи. Для этого нет необходимости изменять права у всех файлов и каталогов этого каталога (это в общем-то и бесполезно). Необходимо подняться на один каталог вверх и отрыть на запись изменяемый каталог. Потом зайти обратно в каталог и добавить хоть новый каталог, хоть отдельный файл. После добавления информации не забудьте сменить права этого коталога в исходные (0555 - чтение и выполнение для всех), а для новых файлов 0444 - только чтение для всех.

Эффективность защиты.

Данный метод был проверен на 20 или 25 сайтах. После их обработки повторных заражений зафиксировано не было. Наиболее эфективна данная система на серверах по управлением UNIX-подобных систем. Windows в последних версиях пытается демонстрировать подобные результаты, но разработанная в Microsoft система UAC на голову ниже по росту и возможностям чем у UNIX-систем.