Suhosin — патч безопасности к PHP, является надежным и простым способом для защиты веб-сервера и PHP в частности, при этом он не потребляет дополнительно ресурсов сервера, будь то память или процессор.
Сайт разработчика – http://www.hardened-php.net/suhosin/
Настрока Suhosin: инструкция на английском
Для отключения Suhosin в .htaccess (Для PHP как модуль)
php_flag suhosin.simulation 1
Для отключения в php.ini (PHP как CGI)
suhosin.simulation on
Таблица параметров Suhosin
Опция | Значение по умолчанию | Возможные значения | Пояснение |
Опции протоколирования | |||
suhosin.log.syslog | S_ALL (511) | S_MEMORY, S_MISC, S_VARS, S_FILES, S_INCLUDE, S_SQL, S_EXECUTOR, S_MAIL, S_SESSION, S_ALL | Указывает, какие классы тревог регистрируются в syslog. Вне зависимости от настроек S_MEMORY регистрируется всегда |
suhosin.log.syslog.facility | LOG_USER (9) | LOG_KERN, LOG_USER, LOG_MAIL, LOG_DAEMON, LOG_AUTH LOG_SYSLOG, LOG_LPR, LOG_NEWS, LOG_UUCP, LOG_CRON, LOG_AUTHPRIV, LOG_LOCAL0 … LOG_LOCAL7 | Указывает на компонент, который будет заносить сообщения в syslog |
suhosin.log.syslog.priority | LOG_ALERT (1) | LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG, LOG_ERR | Приоритет сообщения |
suhosin.log.sapi | S_ALL | – | Определяет, какие классы тревог регистрируются через SAPI |
suhosin.log.script | 0 | – | Какие классы тревог будут регистрироваться через внешний скрипт, S_MEMORY не может регистрироваться, так как его появление означает, что процесс, возможно, в нестабильном состоянии |
suhosin.log.phpscript | – | – | Какие классы тревог будут регистрироваться через PHP-скрипт, S_MEMORY также не может регистрироваться |
suhosin.log.script.name | – | – | Полный путь к внешнему скрипту. Скрипту будет передано два параметра. Первый – класс тревоги в буквенной нотации, второй – сообщение |
suhosin.log.phpscript.name | – | – | Полный путь к внешнему php-скрипту. Ему будет передано два параметра: SUHOSIN_ERRORCLASS и SUHOSIN_ERROR, назначение которых аналогично предыдущему |
suhosin.log.use-x-forwarded-for | 0 (отключено) | – | Обычно IP-адрес атакующего извлекается из переменной REMOTE_ADDR, включение этой опции позволит использовать HTTP-заголовок X-Forwarded-For (например, используется прокси) |
Опции исполнения | |||
suhosin.executor.max_depth | 0 (отключено) | – | Задает максимально разрешенную глубину стека, после чего выполнение скрипта будет остановлено |
suhosin.executor.include.max_traversal | 0 | – | Определяет, сколько знаков ../ в запросе будет расценено как атака |
suhosin.executor.include.whitelist | – | – | Разделенный запятой список разрешенных или запрещенных URL, которые можно включить в скрипт. Если не указан белый список, используется только черный, если не указаны оба, то вставка URL запрещена |
suhosin.executor.include.blacklist | – | – | |
suhosin.executor.func.whitelist | – | – | Список разрешенных или запрещенных для вызова функций. Если белый список пуст, анализируется черный, если пусты оба, то функции запрещены |
suhosin.executor.func.blacklist | – | ||
suhosin.executor.eval.whitelist | – | – | Список функций, разделенных запятой, которые разрешено или запрещено запускать посредством eval(). Если белый список пуст, анализируется черный, если пусты оба, то вызов функции через eval() запрещено |
suhosin.executor.eval.blacklist | – | – | |
suhosin.executor.disable_eval | 0 | – | Глобальное отключение использования eval(). В журнале будут отображены все нарушения этого правила, поэтому можно отследить все случаи использования eval() |
suhosin.executor.disable_emodifier | 0 | – | Модификатор /e внутри функции preg_replace() позволяет выполнять код, разработчики рекомендуют отключить ее использование и применять preg_replace_callback() |
Дополнительные опции | |||
suhosin.simulation | 0 | – | Очень полезная опция, позволяет переводить систему в режим регистрации нарушений, то есть создав правила, вы можете некоторое время только регистрировать нарушения, чтобы затем комплексно оценить работу скриптов |
suhosin.mail.protect | 0 | 0, 1, 2 | Включает защиту функции mail(). 0 – отключена, 1 – контроль Subject:, To:, 2 – дополнительно To:, CC:, BCC: |
suhosin.memory_limit | 0 | – | Управление изменением memory_limit, при 0 – изменение запрещено, любое число показывает предел в Мб, при запросе скриптом большего значения его выполнение будет остановлено |
Опции прозрачного шифрования | |||
suhosin.session.encrypt | 1 (включено) | – | Разрешение/отключение шифрования сессии |
suhosin.session.cryptkey | – | – | Ключ для шифрования сессии |
suhosin.session.cryptua | 1 | Зависимость ключа шифрования от полей User-Agent, Documentroot | |
suhosin.session.cryptdocroot | – | – | |
suhosin.session.cryptraddr | 0 | 0-4 | Число октетов REMOTE_ADDR, от которых будет зависить ключ шифрования |
suhosin.cookie.encrypt | 1 | – | Шифрование Cookie. Значение остальных опций suhosin.cookie.cryptkey, suhosin.cookie.cryptua, suhosin.cookie.cryptdocroot, suhosin.cookie.cryptraddr аналогично |
Опции фильтрации | |||
suhosin.filter.action | – | – | Определяет реакцию Suhosin на нарушение фильтров. По умолчанию переменная блокируется, 402 – останавливает скрипт и возвращает код ответа HTTP 402; [302,]http://www.site.com – перенаправляет по указанному адресу, в квадратных скобках может стоять код ответа; [402,]/var/scripts/badguy.php – перенаправляет на указанный скрипт |
suhosin.cookie.max_array_depth | 100 | – | Максимальная глубина массива, зарегистрированного через cookie |
suhosin.cookie.max_array_index_length | 64 | – | Определяет максимальную длину индексов массива переменных, зарегистрированных через cookie |
suhosin.cookie.max_name_length | 64 | – | Определяет максимальную длину имени переменных, зарегистрированных через cookie. Для массивов это имя перед индексом |
suhosin.cookie.max_totalname_length | 256 | – | Определяет максимальную длину полного имени переменных, зарегистрированных через cookie |
suhosin.cookie.max_value_length | 10000 | – | Определяет максимальную длину переменной, зарегистрированную через cookie |
suhosin.cookie.max_vars | 100 | – | Определяет максимальное количество переменных, зарегистрированных через cookie |
suhosin.cookie.disallow_nul | 1 | – | Если 1, то символы ASCIIZ в переменных не разрешены |
suhosin.get.max_array_depth | 50 | – | Максимальная глубина массива, зарегистрированного через URL Значение остальных опций (suhosin.get.max_array_index_length, suhosin.get.max_name_length, suhosin.get.max_totalname_length, suhosin.get.max_value_length, suhosin.get.max_vars, suhosin.get.disallow_nul) сопоставимы с предыдущими |
suhosin.post.max_array_depth | 100 | – | Максимальная глубина массива, зарегистрированного через POST. Значение остальных опций (suhosin.post.max_array_index_length, suhosin.post.max_name_length, suhosin.post.max_totalname_length, suhosin.post.max_value_length, suhosin.post.max_vars, suhosin.post.disallow_nul) сопоставимы с предыдущими |
suhosin.request.max_array_depth | 100 | – | Максимальная глубина массива, зарегистрированного через все доступные методы URL, GET , POST или COOKIE. Может быть индивидуально переопределена предыдущими опциями. Также доступны параметры suhosin.request.max_array_index_length, suhosin.request.max_totalname_length, suhosin.request.max_value_length, suhosin.request.max_vars, suhosin.request.max_varname_length, suhosin.request.disallow_nul |
suhosin.upload.max_uploads | 25 | – | Максимальное число файлов, пересылаемых одним запросом |
suhosin.upload.disallow_elf | 1 | – | Установка запрета на загрузку ELF-файлов |
suhosin.upload.disallow_binary | 0 | – | Установка запрета на загрузку двоичных файлов |
suhosin.upload.remove_binary | 0 | – | Установка удаления двоичного контента из загружаемых файлов |
suhosin.upload.verification_script | – | – | Путь к скрипту, который проверяет загружаемый файл. В качестве параметра он получит имя файла, для продолжения загрузки скрипт должен вывести 1 в stdout |
suhosin.session.max_id_length | 128 | – | Максимальная длина идентификатора сессии, в случае превышения указанного значения будет создан новый идентификатор |