Выберите Квалифицированные Хостинг-провайдер
Наиболее важное решение
Вероятно, решение не является более важным для безопасности сайта, чем выбор хостов и серверов. Однако из-за широкого спектра хостинга и конфигураций, это не представляется возможным предоставить полный список на все случаи жизни. Проверить это объективный список рекомендованных hostswho в полной мере отвечают требованиям безопасности типичный сайт Joomla. (FAQ)
Общие риски сервера
Если вы находитесь на жесткий бюджет, и ваш сайт не процесс высоко конфиденциальные данные, вероятно, можно обойтись и общий сервер, но вы должны понимать, неизбежных рисков. Большинство советов, перечисленные ниже, подходят для обеспечения участков на общих серверных сред.
Избегайте неаккуратно конфигурации сервера
Для реального откровением, прочитайте эту доклад на тысячах сайтов, которые позволили Google индексировать результаты phpinfo (). Не делайте эту ошибку на вашем сайте! В докладе содержатся тревожные статистические данные о процентах сайтов, которые используют обесценился настройки, такие как register_globals ON или которые не имеют open_basedir, установленных на всех: Кстати, если phpini и register_globals являются незнакомые термины вы, вероятно, не готовы надежно управлять своими собственными сайт.
Настройка Apache
Использование Apache. Htaccess
См. также. Htaccess примеры
Блок типичных использовать попытки с местными Apache. Htaccess файлов. Эта опция не включена на всех серверах. Проверьте с вашим хосте, если вы столкнетесь с проблемами. Использование. Htaccess, вы можете защитить паролем чувствительные каталогах, таких, как администратор, ограничить доступ к конфиденциальной каталоги, IP-адрес, и в зависимости от конфигурации вашего сервера, вы можете быть в состоянии повысить безопасность за счет перехода от PHP4 на PHP5.
Joomla поставляется с предварительно. Htaccess файл, но *вы* нужно выбрать, чтобы использовать его. Файл называется htaccess.txt; использовать его переименовать его в Htaccess и поместить его в корень вашего сайта..
Рассмотрим следующие "наименее Привилегия" принцип для запуска PHP с использованием инструментов, таких как PHPsuExec, php_suexec или suPHP. (Примечание: Эти передовые методы, которые требуют соглашения и координации с вашего хостинг-провайдера Такие варианты включена или отключена на сервере масштабе и не индивидуально регулируемыми на общих серверах..)
Использование Apache mod_security
Настройка Apache mod_security и mod_rewrite фильтры для блокирования атак PHP. См. Google поиск mod_security и Google Search для mod_rewrite. (Примечание: Эти передовые методы, которые обычно требуют соглашения и координации с вашего хостинг-провайдера Такие варианты включена или отключена на сервере масштабе и не индивидуально регулируемыми на общих серверах..)
Настройка MySQL
Безопасный базы данных
Будьте уверены, счета MySQL устанавливаются с ограниченным доступом. Начальной установки MySQL является небезопасным и тщательной настройки не требуется. (См. Руководство MySQL) Примечание: Этот пункт относится только к тем управляющим своих собственных серверах, таких как выделенные серверы. Пользователи общих серверах зависят от их хостинг-провайдера установить надлежащий уровень безопасности базы данных.)
Настройка PHP
Понять, как PHP работ
Понять, как работать с php.ini файл, и как PHP конфигурации находятся под контролем. Исследование официальный список php.ini директивы на http://www.php.net, и хорошо документированных файлов по умолчанию php.ini включен в каждую установку PHP. Вот последний файл по умолчанию php.ini на официальном сайте PHP.
Используйте PHP5
В настоящее время, как PHP4 и PHP5 ведутся, и как часто можно найти на серверах. Перед PHP4 устаревает, обновления пользовательских сценариев PHP5. Не волнуйтесь об основных код Joomla, все текущие версии PHP5 совместимы.
Использование локальных файлах php.ini
На общих серверах Вы не можете редактировать основной файл php.ini, но вы можете добавлять собственные, локальные файлы php.ini. Если да, то вам необходимо скопировать файлы php.ini для каждого суб-каталог, который требует настройки. К счастью, набор скриптов на B & T Сценарии и советы могут делать тяжелую работу за вас.
Есть несколько важных вещей, чтобы держать в уме.
1. Локальные файлы php.ini только силу, если ваш сервер настроен на их использование. Это включает в себя файл php.ini в http_root каталога. Вы можете проверить, является ли или нет эти файлы влияют на вашем сайте, установив очевидно директивы в локальный файл php.ini, чтобы увидеть, если он влияет на ваш сайт.
2. Местные php.ini файлов только эффект. PHP файлов, которые расположены в том же каталоге (или не включенные () или требуется () из этих файлов). Это означает, что Есть обычно только два Joomla! каталогов, в которых вы хотели бы разместить файл php.ini. Они ваши http_root (ваше реальное имя каталога может отличаться), который является, где Фронтальный index.php Joomla-файл находится, и Joomla! Администратор каталога, где и Back-конце файла index.php администратора находится. Другие каталоги, которые не имеют файлы "через Интернет не нужны локальные файлы php.ini.
3. Если у вас есть файл php.ini в каждом каталоге, некоторые сценарий, вероятно, сделал это за вас. Если вы не намерены, чтобы это произошло, вы, вероятно, должны корень их, но, учитывая # 2 выше, вы, вероятно, только паниковать по поводу php.ini файлов в http_root и администратором каталогах.
Используйте PHP disable_functions
Используйте disable_functions отключить опасные функции PHP, которые не требуются для вашего сайта. Вот типичный вариант для Joomla! сайт:
disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open
Используйте PHP open_basedir
open_basedir должен быть включен и правильно настроен. Эта директива пределы файлы, которые могут быть открыты в PHP для указанного дерева директорий. Эта директива не влияет ли безопасный режим включен или выключен.
Указанное значение является префиксом, а не названием директории. Это означает, что open_basedir = /dir/incl позволяет получить доступ к /dir/include и /dir/incls если они существуют. Чтобы ограничить доступ к конкретной директории, используйте завершающий слеш. Дополнительные сведения см. в разделе PHP Безопасность и защищенный режим конфигурационных директив.
open_basedir = /home/users/you/public_html
В некоторых конфигурациях, по крайней мере с PHP 4.4.8, использование слэш ограничить доступ только к указанной директории может привести к Joomla, чтобы предупредить JFolder:: создать: Бесконечный цикл обнаружен при сохранении Back-End глобальной конфигурации. Это предупреждение срабатывает, поскольку PHP file_exists () функция терпит неудачу, например, когда его спросили, если /home/user/public_html/joomla_demo существует и open_basedir установлен в / /home/user/public_html/joomla_demo/.
Кроме того, если установлен open_basedir может быть необходимо для установки PHP upload_tmp_dir конфигурации директиву путь, который входит в сферу open_basedir или, наоборот, добавить upload_tmp_dir путь к open_basedir использованием соответствующий разделитель пути для хост-системы.
open_basedir = /home/users/you/public_html:/tmp
PHP будет использовать временный каталог системы, когда upload_tmp_dir не установлен или когда он установлен, но каталог не существует, поэтому может возникнуть необходимость добавить его в open_basedir, как и выше, чтобы избежать загрузки ошибки в Joomla.
Отрегулируйте magic_quotes_gpc
Отрегулируйте директива magic_quotes_gpc, сколько необходимо для Вашего сайта. Рекомендуемое значение для Joomla! 1.0.x является ПО для защиты от плохо написанного сторонних расширений. Самый безопасный метод, чтобы включить magic_quotes_gpc от и избежать всех плохо написанного расширений, и точка.
Joomla! 1,5 игнорирует этот параметр и прекрасно работает в любом случае.
magic_quotes_gpc = 1
Не используйте PHP safe_mode
Избегайте использования safe_mode PHP. Это действительно, но неполное решение более глубокой проблемы и дает ложное чувство безопасности. См. официальный сайт PHP для объяснения этого вопроса.
safe_mode = 0
Не используйте PHP register_globals
Автоматическая регистрация глобальных переменных, вероятно, одним из тупой решения разработчиков PHP сделал. Эта директива определяет, будет ли или не регистрировать EGPCS (Environment, GET, POST, Cookie, Server) переменные, как глобальные переменные, когда они становятся немедленно доступны для всех PHP скрипты, и где они могут легко записать Вашу собственную переменную, если вы не будете осторожны . К счастью, разработчики PHP давно понял ошибку и амортизируются эта "особенность".
Если ваш сайт находится на общем сервере с хостинг-провайдера, что настаивает на том, надо включить register_globals, вы должны быть очень волновался. Хотя вы можете часто обращаются с register_globals для вашего собственного сайта с локального файла php.ini, это добавляет немного безопасности, другие сайты на том же сервере остаются уязвимыми для атак, которые могут совершать нападения на ваш сайт внутри сервера.
register_globals = 0
Не используйте PHP allow_url_fopen
Не используйте PHP allow_url_fopen. Эта опция позволяет URL-Aware FOPEN оболочки, которые позволяют доступ к URL объекта, такие как файлы. По умолчанию оболочки предназначены для доступа удаленных файлов с помощью FTP или HTTP-протокол, некоторые расширения, как Zlib может зарегистрировать дополнительные оболочки. Примечание: Это может быть установлена только в php.ini из соображений безопасности.
allow_url_fopen = 0
Установка резервного копирования и восстановления процесса
Самое важное правило:
Ты будешь все время быть в состоянии вернуться вашего сайта предыдущее рабочее состояние путем регулярного использования сильных, за пределы участка резервного копирования и восстановления. Будьте уверены, резервного копирования и восстановления на месте испытания до вы идете жить. Это самый лучший способ (и часто единственным способом), чтобы оправиться от таких неизбежных катастроф, как:
1. Скомпрометированы / трещины сайта.
2. Broken сайта из-за неисправного обновления.
3. Сбой оборудования, таких, как мертвые жестких дисков, сбои питания, сервер кражи и т.д.
4. Авторитарные вмешательства правительства. (Чаще, чем думают некоторые.)
5. Нуждаясь в быстро переехать в новый сервер или хостинг-провайдера.
