ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > ИНФО > Статьи > Авторские статьи
   
 
 
Опции темы Поиск в этой теме Опции просмотра

FAQ:Безопасность web сервера
  #1  
Старый 17.03.2007, 21:11
Аватар для zl0ba
zl0ba
Banned
Регистрация: 10.10.2006
Сообщений: 596
Провел на форуме:
2132613

Репутация: 1365


Arrow 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>

    # On or Off движка фильтра
    SecFilterEngine On

    # Включения проверки правильности кодирования URL
    SecFilterCheckURLEncoding On

    # Использования байтов их этого диапазона
    SecFilterForceByteRange 32 126

    # Ведения логов для подозрительных запросов
    SecAuditEngine RelevantOnly

    # Имя файла лога
    SecAuditLog logs/audit_log

    # Вывод отладочной информации
    SecFilterDebugLog logs/modsec_debug_log
    SecFilterDebugLevel 0

    # Проверка POST запросов
    SecFilterScanPOST On

    # Запись подозрительных запросов (по дефолту пишет в лог)
    # возрат http ответа с кодом 406 
    SecFilterDefaultAction "deny,log,status:406"

    # Redirect user on filter match
    SecFilter xxx redirect:http://www.webkreator.com

    # Execute the external script on filter match
    SecFilter yyy log,exec:/home/ivanr/apache/bin/report-attack.pl

    # Simple filter
    SecFilter 111
    
    # Only check the QUERY_STRING variable
    SecFilterSelective QUERY_STRING 222

    # Only check the body of the POST request
    SecFilterSelective POST_PAYLOAD 333

    # Only check arguments (will work for GET and POST)
    SecFilterSelective ARGS 444

    # Test filter
    SecFilter "/cgi-bin/keyword"

    # Another test filter, will be denied with 404 but not logged
    # action supplied as a parameter overrides the default action
    SecFilter 999 "deny,nolog,status:404"

    # Раскритие конфигов
    SecFilter /etc/password

    # Чтения выше корня
    SecFilter "\.\./"

    # Межсайтовый скриптинг
    SecFilter "<( |\n)*script"
    SecFilter "<(.|\n)+>"

    # Защита от sql inj
    SecFilter "delete[[:space:]]+from"
    SecFilter "insert[[:space:]]+into"
    SecFilter "select.+from"

    # Атаки с использованием cookie
    SecFilterSelective "HTTP_USER_AGENT|HTTP_HOST" "^$"

    # Forbid file upload
    SecFilterSelective "HTTP_CONTENT_TYPE" multipart/form-data

    # Only watch argument p1
    SecFilterSelective "ARG_p1" 555

    # Watch all arguments except p1
    SecFilterSelective "ARGS|!ARG_p2" 666

    # Only allow our own test utility to send requests (or Mozilla)
    SecFilterSelective HTTP_USER_AGENT "!(mod_security|mozilla)"

    # Do not allow variables with this name
    SecFilterSelective ARGS_NAMES 777

    # Do now allow this variable value (names are ok)
    SecFilterSelective ARGS_VALUES 888

    # Скажи спаму нет!
    <Location /cgi-bin/FormMail>
        SecFilterSelective "ARG_recipient" "!@webkreator.com$"
    </Location>

    # Фильтрация форматов изображения 
    <Location /fileupload.php>
        SecFilterInheritance Off
        SecFilterSelective POST_PAYLOAD "!image/(jpeg|bmp|gif)"
    </Location>

</IfModule>

Также ставим модуль 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>
            DOSHashTableSize 3097
            DOSPageCount 2
            DOSSiteCount 50
            DOSPageInterval 1
            DOSSiteInterval 1
            DOSBlockingPeriod 10
        </IfModule>

Как мне запретить запуск программ в /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_BASEREVISION "7.7.7"
На :

Код:
# define SERVER_BASEPRODUCT "Tamagochi"
# define SERVER_BASEREVISION "1.1.1"
Для второй ветки Apache, идём в httpd.conf и добавляем:

Header set Server "version not listed"

При этом отключаем службу индексации каталогов в
/etc/httpd/conf/httpd.conf :

Код:
ServerSignature Off

Надо поменять системные переменные sysctl:

Код:
# sysctl net.inet.ip.random_id=1
# sysctl net.inet.tcp.blackhole=2 
# sysctl net.inet.udp.blackhole=1
# sysctl -w net.inet.icmp.maskrepl=1
Далее в /etc/pf.conf вносим директивы:

Код:
scrub in all fragment reassemble
pass in quick proto tcp from to
$my_ip port $ports flags S/SA
synproxy state block quick all
Я слышал о модуле "mod_rewrite". Зачем же нужен этот модуль?
//материал взят с 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]*) означает, что в данном месте может находиться
последовательность из цифр и букв любой длины. [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
Options +FollowSymlinks
RewriteBase /
RewriteRule ^.htaccess$ - [F]
Например, чтобы нам подменить адрес http://mysite.ru/blabla.html на http://mysite.ru/xek.html необходимо написать:

Код:
RewriteRule http://mysite.ru/blabla.html  http://mysite.ru/xek.html

Последний раз редактировалось zl0ba; 17.03.2007 в 21:45.. Причина: Копирайт =\
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Hacking IIS Tutorial bxN5 Forum for discussion of ANTICHAT 1 14.03.2007 23:44
абузостойкие дедикейтед сервера / Bullet Proof dedicated servers Webhosting Хостинг, Dedicated, VDS, Сервера - Покупка, продажа 4 08.03.2007 19:49
Коды состояния HTTP - Коды ошибок http сервера D=P=CH= MOD= *nix 6 15.10.2006 20:47
Web Services Secure Connection Dracula4ever Forum for discussion of ANTICHAT 0 13.06.2006 18:54



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ