![]() |
FAQ:Безопасность web сервера
У меня есть хостинг (Free BSD) и на нём хоститься несколько маленьких проектов.
На них постоянно идут (D)Dos,sql inl,xss,php-include атаки, могу ли я обезопасить сервер от этих атак? Многие из нас знакомы с распределенной атакой отказа в доступе (Distributed Denial of Servece Attack). Как говориться, от этой собаки спасенье нет. Или эффективной sql inj, а также xss и межсайтового скриптинга. К решению этой проблемы на помощь к нам приходит, знаменитый модуль mod_security! Download : http://www.modsecurity.org/download/modsecurity-apache-1.9.2.tar.gz Код:
<IfModule mod_security.c>Также ставим модуль mod_evasive, который поможет уменьшить активность (D)Dos атаки. Download: http://www.nuclearelephant.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz Конфигурируем модуль: /etc/apache2/modules.d/mod_evasive20.conf Код:
<IfModule mod_evasive20.c>Как мне запретить запуск программ в /tmp, на тот случай если взломщик проник на мой сервер? Для этого Вам надо вынести /var/tmp в отдельную файловую систему, при этом /tmp сделаем симлинком на /var/tmp. Идём в /etc/fstab ищем строчку для /var/tmp и в опциях добавляем noexex. После проделанной операции , запуск программ из /tmp будет не возможна. Как мне можно скрыть названия ОС и Apache от всяких (x-toolz) сканеров? Apache 1.3.x and 2.x : Для Apache 1.3.x мы лезем в src/include/httpd.h и меняем: Код:
# define SERVER_BASEPRODUCT "Apache"Код:
# define SERVER_BASEPRODUCT "Tamagochi"Header set Server "version not listed" При этом отключаем службу индексации каталогов в /etc/httpd/conf/httpd.conf : Код:
ServerSignature OffНадо поменять системные переменные sysctl: Код:
# sysctl net.inet.ip.random_id=1Код:
scrub in all fragment reassemble//материал взят с http://blog.excode.ru/post13-protect_site_sql_injection_mod_rewrite.html Этот модуль используется в Apache и используется для разных вещей. Кто то делает ссылки более красивыми, но использовать его можно для разных целей. А одни используют для защиты своего сайта от sql inj. Рассмотрим пример с паролем администратора. Пускай переменная $idmd передаёт GET запрос http://mysite.ru/script.php?idmd=4k55hk34ghkdf6kh7khf5 Нам нужно заменить адрес http://mysite.ru/script_4k55hk34ghkdf6kh7khf5.html на адрес http://mysite.ru/script.php?idmd=4k55hk34ghkdf6kh7khf5 Делается это следующей строкой: Код:
RewriteRule http://mysite.ru/script_([a-z0-9]*).html http://mysite.ru/script.php?idmd=$1последовательность из цифр и букв любой длины. [a-z0-9] - перечисление допустимых символов (в данном примере заданы диапазоны), знак * означает что таких символов может быть несколько. Выражение которое соответствует маске находящейся в скобках присваивается переменной $1 (цифра обозначает номер скобок) и вставляется в адрес на который будем заменять входящий адрес.В результате этой манипуляции после того как пользователь введет в строке адреса http://mysite.ru/script_4k55hk34ghkdf6kh7khf5.html он автоматически попадет на страницу http://mysite.ru/script.php?idmd=4k55hk34ghkdf6kh7khf5. И конечно же переменная $idmd будет содержать значение "4k55hk34ghkdf6kh7khf5".Теперь давайте рассмотрим, что же произойдет если пользователь попытается ввести http://mysite.ru/script_'%20or%20login='admin'#.html (%20 - тоже самое что и пробел). В результате этого запроса адрес попадет модулю mod_rewrite, который проанализирует его, т.к. выражение '%20or%20login='admin'# не подходит под маску ([a-z0-9]*), т.к. содержит недопустимые символы, то mod_rewrite ничего не сделает, так как будто его вообще нет, очевидно, что в этом случае пользователю будет возвращена ошибка 404 Page not found (404 страница не найдена). Это и есть защита. Она не идеальна и имеет минусы, но есть и плюсы. Главный минус - это то, что в скрипты, все же можно передать вредоносную информацию, но для этого придется воспользоваться методом POST, а не GET. Второй минус - mod_rewrite немного нагружает сервер, как и любые регулярные выражения. Главный плюс - пользователь не видит, как называются ваши переменные. Теперь с помощью mod_rewrite мы сделаем адрес на более красивый, а заодно и реализуем проверку на входные данные. Для того чтобы использовать модуль mod_rewrite вам необходимо создать файл .htaccess в корневом каталоге: Код:
RewriteEngine onКод:
RewriteRule http://mysite.ru/blabla.html http://mysite.ru/xek.html |
Незнаю как начало, но mod_rewrite сдут с http://webscript.ru/stories/07/02/01/2099269 (просто узнал), причем линков на источники и списка используемых матерьялов нет
А как остальное? |
Согласен, не было времени писать свои мысли по поводу mod_rewrite. Но что же писать когда я напишу тоже самое, прость другими словами.
|
4k55hk34ghkdf6kh7khf5
4k2jhk34jhkjh6kh7kh33 не сильно отличаются, неправда? :)) ЗЫ: неуказание источников наказывается, а вот сбор инфы и ее переработка - приветствуется, хотябы поиск по ачату поюзал: http://forum.antichat.ru/thread27498.html - тут лучше про мод реврайт написано. ИМХО. |
От народ ранимый пошел,ненужно писать чегото в чем неуверен,а если уже написал тогда слушай поправки другх и исправляйся.
|
Цитата:
|
Это одно и тоже, просто "аффтор", видимо, этот кусок перепечатывал своими словами
|
Маленькое дополнение
Установка mod_security на apache22
переходим в каталог [root@gw-server]cd /usr/ports/www/mod_security2 набираем make install clean возможно у вас появиться такая ошибка как появилась у меня Код:
[root@gw-server /usr/ports/www/mod_security2]# make install cleanпереходим в /usr/ports/devel/pcre и набираем make install clean после того как соберёться сможем собрать наконец наш mod_security |
Цитата:
Также, не понятно, зачем Цитата:
Ещё хороший метод защиты сервера: использование chroot-окружения. Статья так се, если честно... |
Во-первых.
Цитата:
Во-вторых, методов котороые здесь описаны, недостаточно для нормальной безопасности веб-сервера. имхо, на faq не тянет \= |
| Время: 22:49 |