• Уменьшение отступа

    Обратная связь

    (info@ru-sfera.pw)

На заметку Защита на дурака против хакеров, ддосеров и бруттеров


X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 068
Репутация
8 174
Всем привет !

Предлагаю вариант защиты от XSS, защиты от SQL injection, а также от ботов с кривыми загаловками, при помощи .htaccess:

Код:
#Блокировка XSS
    RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
    RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})

Код:
# Block MySQL injections, RFI, base64, etc.

    RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
    RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
    RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC,OR]
    RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC,OR]
    RewriteCond %{QUERY_STRING} (\.\./|\.\.) [OR]
    RewriteCond %{QUERY_STRING} ftp\: [NC,OR]
    RewriteCond %{QUERY_STRING} http\: [NC,OR]
    RewriteCond %{QUERY_STRING} https\: [NC,OR]
    RewriteCond %{QUERY_STRING} \=\|w\| [NC,OR]
    RewriteCond %{QUERY_STRING} ^(.*)/self/(.*)$ [NC,OR]
    RewriteCond %{QUERY_STRING} ^(.*)cPath=http://(.*)$ [NC,OR]
    RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} (\<|%3C).*iframe.*(\>|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} (<|%3C)([^i]*i)+frame.*(>|%3E) [NC,OR]
    RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]
    RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]*\([^)]*\) [NC,OR]
    RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
    RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [OR]
    RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>).* [NC,OR]
    RewriteCond %{QUERY_STRING} (NULL|OUTFILE|LOAD_FILE) [OR]
    RewriteCond %{QUERY_STRING} (\./|\../|\.../)+(motd|etc|bin) [NC,OR]
    RewriteCond %{QUERY_STRING} (localhost|loopback|127\.0\.0\.1) [NC,OR]
    RewriteCond %{QUERY_STRING} (<|>|'|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
    RewriteCond %{QUERY_STRING} concat[^\(]*\( [NC,OR]
    RewriteCond %{QUERY_STRING} union([^s]*s)+elect [NC,OR]
    RewriteCond %{QUERY_STRING} union([^a]*a)+ll([^s]*s)+elect [NC,OR]
    RewriteCond %{QUERY_STRING} (;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|drop|delete|update|cast|create|char|convert|alter|declare|order|script|set|md5|benchmark|encode) [NC,OR]
    RewriteCond %{QUERY_STRING} (sp_executesql) [NC]
    RewriteRule ^(.*)$ - [F,L]

А также фильтрация URL на служебные символы:
Код:
RewriteCond %{QUERY_STRING} (<|>|'|\+|%2B|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]

Если вас атакуют боты, с кривыми (или пустыми загаловками), можно их также запретить, лучше сделать это в nginx и отдавать 444 ошибку (Пустая страница и разрыв коннекта):
Код:
if ($http_user_agent = "") { return 444; }
if ($http_user_agent = "-") { return 444; }
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 068
Репутация
8 174
Пусть будет здесь, небезопасные функции php, которые можно отключить:

  • exec - вызов внешней программы
  • ini_get - получает значение опции конфигурации
  • ini_get_all - получает все опции конфигурации
  • parse_ini_file - разбирает файл конфигурации
  • passthru - вызов внешней программы и вывод "сырых" результата на дисплей
  • php_uname - возвращает информацию об ОС, на которой php был построен
  • popen - открывает файловый указатель процесса
  • proc_open - выполняет команду и открывает файловый указатель для ввода/вывода
  • shell_exec - выполняет команду в оболочке/shell и возвращает полный вывод в виде строки
  • show_source - вывод исходного текста текущей веб страницы
  • system - вызов внешней программы и вывод результата на дисплей
Также стоит подумать над отключением таких функций:
  • diskfreespace - псевдоним функции disk_free_space
  • disk_free_space - получить размер доступного пространства в каталоге
  • disk_total_space - возвращает общий размер диска
  • eval - вычисляет строку, заданную в code_str, как код PHP (eval ( string code_str))
  • fileperms - получить информацию о правах на файл
  • fopen - открывает файл или URL
  • opendir - возвращает дескриптор каталога для последующего использования с функциями closedir(), readdir() и rewinddir()
  • phpinfo - выводит всю информацию об php, Ос
  • phpversion - выводит версию php
  • posix_getpwuid - возвращает информацию о пользователе по его user id
  • posix_getgrgid - возвращает информацию о группе по её group id
  • posix_uname - получает системное имя, возвращает хэш строк с информацией о системе.
Но некоторые сайты/плагины требуют эти функции, я у себя пока отключил эти:

Для отключения в php.ini, нужно добавить:

disable_functions = exec,parse_ini_file,passthru,php_uname,popen,proc_open,shell_exec,show_source,system,opendir,eval

Пока тестирую, если что отвалится, отпишу здесь...;)
 

X-Shar

:)
Администрация
Регистрация
03.06.2012
Сообщения
6 068
Репутация
8 174
Как защитить WordPress при помощи .htaccess:

Возможные угрозы:

● SQL-injection — добавление к запросу SQL-кода, обеспечивающего доступ к базе данных (так можно получить информацию, содержащуюся в таблицах, изменить или удалить ее);
● RFI (Remote File Inclusion), в нашем случае — PHP-инъекция, становится возможной в том случае, если не осуществляется проверка входных параметров;
● XSS (межсайтовый скриптинг) — его суть заключается во внедрении потенциально опасных команд непосредственно в страницу сайта. Код выполняется на компьютере пользователя при открытии соответствующего веб-документа;
● Подмена глобальных переменных — позволяет изменять php-сценарии на стороне пользователя;
● Атаки с использованием base64 — обратимое кодирование, позволяющее передавать данные между любыми устройствами, а в случае с хакерами — обходить многие фильтры;
● iFrame-инъекции — атаки с использованием фреймов.


Представленный набор правил htaccess позволяет отбиваться от перечисленных выше напастей. Принцип его действия основан на сканировании передаваемых значений в строке запроса. При обнаружении подозрительной последовательности символов, сервер вернет ошибку 403 — доступ запрещен:

Код:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC,OR]
RewriteCond %{QUERY_STRING} \=PHP[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12} [NC,OR]
RewriteCond %{QUERY_STRING} (\.\./|\.\.) [OR]
RewriteCond %{QUERY_STRING} ftp\: [NC,OR]
RewriteCond %{QUERY_STRING} http\: [NC,OR]
RewriteCond %{QUERY_STRING} https\: [NC,OR]
RewriteCond %{QUERY_STRING} \=\|w\| [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)/self/(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} ^(.*)cPath=http://(.*)$ [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (\<|%3C).*iframe.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^i]*i)+frame.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [NC,OR]
RewriteCond %{QUERY_STRING} base64_(en|de)code[^(]*\([^)]*\) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} ^.*(\[|\]|\(|\)|<|>).* [NC,OR]
RewriteCond %{QUERY_STRING} (NULL|OUTFILE|LOAD_FILE) [OR]
RewriteCond %{QUERY_STRING} (\./|\../|\.../)+(motd|etc|bin) [NC,OR]
RewriteCond %{QUERY_STRING} (localhost|loopback|127\.0\.0\.1) [NC,OR]
RewriteCond %{QUERY_STRING} (<|>|'|%0A|%0D|%27|%3C|%3E|%00) [NC,OR]
RewriteCond %{QUERY_STRING} concat[^\(]*\( [NC,OR]
RewriteCond %{QUERY_STRING} union([^s]*s)+elect [NC,OR]
RewriteCond %{QUERY_STRING} union([^a]*a)+ll([^s]*s)+elect [NC,OR]
RewriteCond %{QUERY_STRING} (;|<|>|'|"|\)|%0A|%0D|%22|%27|%3C|%3E|%00).*(/\*|union|select|insert|drop|delete|update|cast|create|char|convert|alter|declare|order|script|set|md5|benchmark|encode) [NC,OR]
RewriteCond %{QUERY_STRING} (sp_executesql) [NC]
RewriteRule ^(.*)$ - [F,L]
</IfModule>
Предотвращаем использование эксплоита timthumb
Скрипт timthumb.php является составной частью многих шаблонов WordPress. Он необходим для изменения размера изображений, но также может быть использован злоумышленниками в качестве средства загрузки на веб-ресурс произвольного php-кода. Предотвратить это поможет следующее правило:
Код:
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} (timthumb\.php|phpthumb\.php|thumb\.php|thumbs\.php) [NC]
RewriteRule . - [S=1]
</IfModule>

Также хорошо помогают плагины Secure Wordpress и Protected wp-login, в комплексе с указанными правками, если ничего не посыпется, то будет не плохая защита !like itlike itlike it
 
Верх Низ