Что такое взлом сайта и почему он происходит? План защиты Web-сервера.

Взлом сайта — это получение злоумышленником несанкционированного доступа к файлам сайта или к разделу администрирования системы управления сайтом.

Взломы сайтов бывают двух видов:

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

Массовый — в этом случае конкретный сайт значения не имеет. Злоумышленник пытается получить доступ к максимальному количеству произвольных сайтов, чтобы в дальнейшем использовать их в своих целях. Именно об этом типе взлома в дальнейшем пойдет речь.

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

Взломанные сайты могут также использоваться для осуществления атак DDoS, взлома других сайтов и для запуска любых других вредоносных программ, так как аккаунт хостинга, на котором размещается сайт, — это полноценный пользовательский аккаунт операционной системы на сервере хостинга, позволяющий запускать любые приложения.

Для взлома сайта злоумышленник может использовать любой способ, который позволяет ему производить модификацию файлов сайта.

Наиболее часто встречающиеся способы взлома таковы:

1. С помощью вируса на компьютере, с которого владелец или разработчик сайта подключается к сайту через FTP, злоумышленник крадет пароль от аккаунта FTP, после чего может подключаться к аккаунту и изменять или загружать произвольные файлы. Так как сайт часто располагается в папке, имя которой совпадает с именем сайта, для злоумышленника не составляет труда определить, проникновение на какой сайт он совершил. Также информация об имени сайта часто содержится в настройках подключения FTP, которые были украдены злоумышленником.

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

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

4. Узнать пароль от FTP, SSH или административной панели сайта злоумышленник может также перебором по словарю, если пароль недостаточно сложен.

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

6. Проникнув на сайт, злоумышленник через него может получить доступ к другим сайтам, размещенным на том же аккаунте хостинга. Таким образом, сайт может быть взломан даже если на нем нет уязвимостей и к нему невозможен доступ по FTP или SSH — только потому, что этот сайт находится на одном аккаунте с уязвимым сайтом.

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

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

Таким образом, нельзя считать, что сайт в безопасности только по той причине, что «никто про него не знает». Чтобы обеспечить безопасность сайта, необходимо предпринимать соответствующие меры: производить своевременное обновление CMS и ее расширений, работать с сайтами с компьютеров, защищенных антивирусным ПО, и предотвращать раскрытие паролей для доступа к сайту и к аккаунту хостинга.

Общие способы защиты Web-сервера

Можно выделить три уровня безопасности для сервера:

Уровень 1. Минимальный уровень безопасности.

1. Модернизация имеющегося программного обеспечения и установка патчей.

2. Использование единых настроек (политик) для всех серверов.

3. Удаление лишних приложений.

Уровень 2. Сопротивление вторжению.

1. Установка внешнего межсетевого экрана.

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

3. Ограничения на использование скриптов.

4. Защита Web-серверов, используя фильтрацию пакетов.

5. Обучение персонала и разграничение прав доступа.

6. Использование решений, перечисленных в уровне 1.

Уровень 3. Обнаружение атак и ослабление их воздействия.

1. Разделение привилегий.

2. Аппаратные системы защиты.

3. Внутренний межсетевой экран.

4. Сетевые системы обнаружения вторжений.

5. Системы обнаружения вторжений, размещаемые на серверах (хостах).

6. Использование решений, перечисленных в уровне 2.

Варианты обеспечения безопасности Web-серверов Можно выделить следующие, наиболее общие способы защиты Web-серверов:

· удаление лишнего программного обеспечения (приложений);

· обнаружение попыток нарушения защиты Web-серверов;

· исправление изъянов в установленном программном обеспечении;

· уменьшение последствий атак на сеть;

· защита остальной части сети, в случае если Web-сервер был скомпрометирован.

Модернизация программного обеспечения/Установка патчей

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

Требование обновления программного обеспечения вызвано тем, что любое программное обеспечение, установленное на Web-сервере, может быть использовано хакером для проникновения в систему. Это операционные системы, программное обеспечение, работающее с сетевыми пакетами или используемое администраторами сети и системы безопасности.

Проверка программного обеспечения должна производиться по следующему алгоритму:

- составьте перечень программного обеспечения с указанием номеров версий;

- убедитесь в том, что на вашем сервере установлены последние версии программных продуктов;

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

- проверьте, что патчи работают нормально.

Использование узкоспециализированных серверов

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

Удаление лишних приложений

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

Внешний Firewall

Установка межсетевого экрана между корпоративной (внутренней) сетью и Web-серверами общего доступа позволяет предотвратить проникновение "левых" пакетов в сеть организации: если злоумышленник проникает на внешний Web-сервер, то попасть в корпоративную сеть организации через firewall ему будет затруднительно. Если же Web-сервер находится внутри корпоративной сети, то хакер, проникнув на него, может, используя захваченный ресурс в качестве плацдарма, нарушить работоспособность всей сети и получить полный контроль над ней.

Удаленное администрирование

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

В тех случаях, когда удаленное администрирование неизбежно, его необходимо сопровождать следующими действиями:

· шифровать трафик удаленного администрирования (чтобы злоумышленник не смог перехватить управление трафиком сети, получить пароли или внедрить "вредные" команды);

· использовать фильтрацию пакетов (см. описание ниже) при удаленном администрировании из предназначенной для этого конфигурации хоста;

· поддерживать для этой конфигурации более высокий уровень безопасности;

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

Ограничение использования скриптов

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

Маршрутизаторы с фильтрацией пакетов

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

Обучение персонала

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

Разделение привилегий

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

Аппаратные решения

Аппаратура, в плане разделения привилегий, имеет более высокий уровень безопасности, так как в отличие от программного обеспечения не так легко модифицируется. Но через уязвимости в программном обеспечении хакер может получить доступ и к аппаратным средствам. Одним из наиболее доступных способов защиты от этой угрозы является запрет режима записи на внешние жесткие диски, магнитооптические диски и т. д. Обычно для предотвращения атак Web-сервер конфигурируют на режим "только чтение".

Внутренние межсетевые экраны

Современные Web-серверы часто работают с распределенными системами, они могут взаимодействовать с другими хостами, получать или передавать данные. В этом случае существует большой соблазн разместить эти компьютеры за межсетевым экраном внутри сети организации, обеспечив тем самым безопасность хранимых на них данных. Однако если злоумышленнику удастся скомпрометировать Web-сервер, он может быть использован в качестве стартовой площадки для атаки на эти системы. Для исключения такой ситуации необходимо отделить системы, общающиеся с Web-сервером, от остальной сети внутренним межсетевым экраном. Тогда проникновение на Web-сервер и оттуда на общающиеся с ним системы не приведет к компрометации всей корпоративной сети.

Сетевые системы обнаружения вторжений

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

Системы обнаружения вторжений, размещаемые на серверах (хостах)

Системы обнаружения вторжений, размещаемые на серверах, лучше справляются с задачей определения состояния сети, чем сетевые IDS. Обладая всеми возможностями сетевых IDS, во многих случаях серверные IDS лучше выявляют попытки нарушения защиты, так как обладают более высоким уровнем доступа к состоянию Web-сервера.

Однако и этот способ не лишен своих недостатков. Если хакер проникнет на Web-сервер, он сможет отключить серверные IDS, блокировав тем самым получение сообщений об атаке администратором. Удаленные атаки на отказ сервиса (DoS атаки) также часто блокируют IDS на время выхода из строя сервера. А так как DoS-атаки позволяют злоумышленникам блокировать сервер без проникновения на него, то IDS, расположенный на сервере, должен быть дополнен сетевой системой обнаружения вторжений.

Ограничения существующих решений и дополнительные меры

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

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

При составлении материалов служба KZ-CERT использовала информацию из открытых источников.