Содержание
Повышение защищенности CMS
Существует ряд стандартных мер применяемых для повышения защищенности систем управления содержимым сайта (CMS), рекомендованных для выполнения сразу после инсталляции.
- избавиться от всех файлов инсталляции CMS из основной директории сайта;
- изменить имя главного администратора с использованием пароля повышенной сложности;
- желательно при создании пароля использовать более 12 символов, цифры, прописные и строчные буквы, или же по возможности воспользоваться генератором случайных паролей;
- откажитесь от хранения логинов/паролей доступа в незащищенных местах.
Если вы используете CMS Wordpress
- Не используйте учетную запись с именем admin. Рекомендуем создать нового пользователя, наделить его правами администратора и новым никнеймом, после чего удалить первоначальную учетную запись admin.
- После распаковки архива с файлами WordPress, переименуйте папку под названием wordpress в менее распознаваемое имя (например w0rdpress_test), но не забудьте после этого должным образом настроить файл wp-config.php, находящийся в корневой директории. Данное действие затруднит идентификацию административной зоны сайта.
- Внесите рекомендованные изменения в файл wp-config.php1):
- Префиксы таблиц в вашей базе данных не должны оставаться стандартными wp_. замените их на более сложные.
- Переместите файл wp-config.php на высший уровень. Безопаснее хранить этот файл не в той же директории, где и все остальные файлы Wordpress.
- Добавьте ключи безопасности:
- Уникальные ключи и соли для аутентификации. - Смените значение каждой константы на уникальную фразу. - Можно сгенирировать их с помощью {@link https://api.wordpress.org/secret-key/1.1/salt/ сервиса ключей на WordPress.org} - Можно изменить их, чтобы сделать существующие файлы cookies недействительными - Пользователям потребуется снова авторизоваться. @since 2.6.0 define('AUTH_KEY', 'поместите сюда уникальный ключ'); define('SECURE_AUTH_KEY', 'поместите сюда уникальный ключ'); define('LOGGED_IN_KEY', 'поместите сюда уникальный ключ'); define('NONCE_KEY', 'поместите сюда уникальный ключ');
- Повысьте защищенность административной папки wp-admin. Для этого убедитесь в наличии файла .htaccess, он должен быть размещен в папке wp-admin вместе с файлом .htpasswd, предназначенным для хранения логина и пароля администратора. В этом случае, при обращении к папке wp-admin, будет необходимо ввести логин и пароль, но в этом случае авторизация контролируется на стороне сервера, а не средствами WordPress. Для быстрого генерирования файлов .htaccess и .htpasswd, воспользуйтесь следующим сервисом.
Если вы используете CMS MODx
- Для MODx рекомендовано изменить адрес административной панели, имеющей изначальный вид yordomain.name/manager, на любой другой, придуманный вами (например modxadmin). Для этого необходимо:
- Изменить название папки manager в корневой директории вашего сайта.
- Отредактировать файл config.inc.php который можно найти по следующему пути: /core/config/. Заменив manager на придуманный вами вариант:
if (!defined('MODX_MANAGER_PATH')) { $modx_manager_path= '/home/youruser/public_html/modxadmin/'; $modx_manager_url= '/modxadmin/';
После чего обязательно произведите очистку кеша, удалив все файлы из файлы из /core/cache.
- По аналогии с предыдущим пунктом, изменить имя директории connectors, после чего внести соответствующие изменения в конфигурационный файл core/config/config.inc.php:
$modx_connectors_path = '/home/youruser/public_html/0therp4th/'; $modx_connectors_url = '/0therp4th/';
Для остальных, наиболее распространенных CMS, таких как Joomla или Drupal так же применимы изложенные ниже методы:
Для CMS Joomla
Allow from YOUR.IP.ADD.RESS
Так же следует помнить, что файл htaccess, всегда должен иметь вид .htaccess в корневой директории сайта. Перемещение файла настройки за пределы основной директории, способствует увеличению его безопасности.
Общие рекомендации
- Измените префиксы таблиц в базе данных, которые задаются по умолчанию для большинства CMS (например «wp_» у Wordpress'a или «jos_» у Joomla). Это позволит предостеречь от получения паролей из баз данных при помощи так называемых SQL-инъекций. Для этого следует сначала заменить существующий префикс в файле настроек вида config.php вашего сайта.
К примеру в файле wp-config в WordPress в строчке $table_prefix = 'wp_'; вместо 'wp_' можно задать любой другой вариант префикса, а затем, соответственно, изменить префиксы в базе данных. Удобнее всего это делать, получив дамп базы в формате sql, а затем отредактировать в обычном текстовом редакторе, пользуясь функцией поиска и замены.
- Защита файла настройки конфигураций вашего сайта (config.php) так же является немаловажным этапом повышения защищенности. Для этого рекомендовано добавить в файл .htaccess строки вида:
order allow,deny deny from all
А строка вида:
Options -Indexes
запретит просмотр папок через браузер.
- При необходимости в .htaccess можно указать ряд IP-адресов, с которых будет осуществляться вход в административную часть сайта, вход с посторонних IP-адресов будет запрещен. Например для WordPress, разрешающая конструкция в .htaccess (в зависимости от режима работы web-сервера):
<FilesMatch wp-login.php> Order deny,allow Allow from YOUR.IP.ADD.RESS Deny from all </FilesMatch>
- Немаловажным действием будет запрет на выполнение определенных PHP сценариев, в директориях, использующихся для загрузки контента (/uploads/) методом создания в них .htaccess файла со следующим содержанием:
<Files *.php> Deny from All </Files>
- В случае mod_php более удачной конструкцией будет:
php_flag engine off.
Или же использовать оператор RemoveHandler в директориях с правами на запись, поместив в .htaccess файл строку вида:
RemoveHandler .htm .html .php .phtml .php3
- Помимо прочего следует уделять внимание правам доступа основных директорий и файлов. Для файлов рекомендовано использовать права доступа 640, а для директорий 710. К примеру, эти параметры можно изменить вводом команд в корневой директории сайта:
find . -type f -exec chmod 640 {} \; find . -type d -exec chmod 710 {} \;
- Значительно облегчит задачу по повышению защиты, использование плагинов безопасности, скрывающих потенциально опасную информацию, такую как номер версии системы, ошибки со страницы входа, информацию об обновлении ядра пользователей, плагинов осуществляющих блокировку запросов, способных нанести потенциальный вред вашему сайту (например Acunetix Secure WordPress для WordPress, Securitycheck и Admin Tools для Joomla).
- Не стоит забывать следить за своевременным обновлением вашей CMS и плагинов отвечающих за безопасность до актуальных версий. Регулярно производите резервные копирования, как баз данных так и самого сайта.