Защитить сайт
 
Безопасность сайтов и систем, открытых для всеобщего доступа через сеть интернет, уже далеко не один год является головной болью специалистов, отвечающих за их безопасность. Уже в начальный период существования интернета практика показала, что к существующим в этой сфере угрозам нельзя относиться спустя рукава. Так, ещё в 1994 г. в результате взлома через интернет американского СитиБанка, который приписывают русскому хакеру Владимиру Левину, было украдено более 12 млн. долларов. А вскоре были успешно взломаны и сайты НАТО, ЦРУ и Минюста США. Не чувствуют себя в безопасности владельцы сайтов и в наше время. Например, в прошлом (2007) году были взломаны сайты Газпрома, компании Nokia, сайты Утро.ру и РБК, сайты партии "Яблоко" и лаборатории Касперского и т. д.

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

Во-первых, наиболее устойчив к взлому сайт, состоящий из статичных html-страничек. Основная опасность для сайта исходит от установленных на нём серверных скриптов (таких, как скрипты, написанные на языках php, perl, asp и т. д.). К сожалению, в наше время многие люди, создающие себе даже простой сайт-визитку, часто не утруждают себя освоением элементарных умений редактирования html-страничек с помощью визуальных редакторов и предпочитают устанавливать сайт на CMS, чтобы иметь возможность вносить правки и администрировать сайт удалённо. Представляет ли опасность любой скрипт? Конечно, правильно написанный скрипт безопасен. Однако на практике, особенно в том случае, если скрипт является сложным, громоздким и создаётся не одним программистом, а несколькими людьми, весьма высока вероятность появления в этом скрипте тех или иных ошибок, которые могут быть использованы для взлома сайта. Кроме этого, использование громоздких скриптов делает ваш сайт более уязвимым к DDoS-атакам, о которых будет сказано ниже. Поэтому, если у вас есть возможность выбирать между html-страничками и сайтом на CMS, странички которого генерируются скриптом, выбирайте первый вариант.

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

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

Если вы пишете скрипт самостоятельно, следует также соблюдать предосторожность. Ключевым моментом, на который всегда нужно обращать повышенное внимание, является обработка получаемых скриптом данных. Это касается как данных, получаемых из форм, т. е. методом POST, так и в адресной строке, т. е. методом GET. Следует иметь в виду, что пользователь может ввести там всё, что угодно (и хакер как раз и будет пробовать это делать). Недостаточная фильтрация этих данных является, пожалуй, самой распространённой ошибкой в плане создания дыр в безопасности. Допустим, есть скрипт, который добавляет на страницу комментарий к какой-нибудь статье, вводимый пользователем через форму (подобный тому, как есть на этом сайте). Если в скрипте не предусмотреть фильтрацию вводимых данных, то хакер может ввести через форму код на javascript, который попадёт в код страницы и будет выполняться при её загрузке (подобный метод носит название XSS). С помощью такого фокуса легко сделать страницу неработоспособной или украсть, например, cookies администратора сайта, содержащие пароль, и получить, т. о., доступ к администраторским функциям. Семь раз нужно проверить скрипт, если на основе вводимых пользователем данных формируется запрос к базе данных (часто встречающиеся ошибки в реализации запроса к базе позволяют осуществить взлом с помощью т. н. SQL-инъекции), в код скрипта включаются какие-то файлы (напр., с помощью директивы include), или пользователю предоставляется право загружать какие-то файлы на ваш сервер (при отсутствии достаточной проверки хакер может загрузить на ваш сайт shell и сделать с ним всё, что угодно).

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

Даже если ваш сайт не имеет абсолютно никаких уязвимостей, существует способ всё равно вывести его из строя. Это - т. н. DDoS-атака. Сущность подобной атаки в том, что с большого числа компьютеров на ваш сайт начинает поступать громадное количество запросов, обслужить которые сервер просто не в состоянии. Хотя с помощью DDoS-атаки нельзя взломать сайт, можно добиться того, что он перестанет работать, и от подобного рода атаки не застрахованы даже очень крупные и известные сайты. Хотя полностью защититься от DDoS-атак нельзя, можно улучшить устойчивость вашего сайта к ним. Прежде всего нужно ограничить использование скриптов, потребляющих слишком много ресурсов, особенно, если при этом ещё осуществляется и подключение к базе данных. При наличии на вашем сайте громоздкого скрипта хакер может прервать его нормальное функционирование даже посылая запросы с одного единственного компьютера (напр., при использовании старых версий форума phpbb его можно было "подвесить" путём частого обращения к функции поиска по форуму, в новых версиях введена 15-секундная задержка). Ну и, конечно, если на ваш сайт будет проведена DDoS-атака, вам придётся полагаться на ответственность вашего хостера. К сожалению, не все компании выражают готовность в таких случаях принимать все необходимые меры и давать отпор, некоторые могут просто отключить ваш сайт.

 
Автор: Anton
 
Оригинал статьи: http://woweb.ru/publ/53-1-0-979