PDA

Просмотр полной версии : Почему важно закрывать служебные файлы CMS — вопрос к участникам


CrazyWolf
06.07.2026, 07:10
Введение

Когда я начал заниматься администрированием сайта на CMS, быстро заметил одну вещь — многие забывают о служебных файлах и оставляют их доступными в публичной части сайта. Казалось бы, ну что в этом страшного? Зачем прятать какие-то внутренние файлы, если они вроде бы неинтересны никому? Но тут кроется серьезная опасность, которая может вылиться в большие проблемы и даже потерю данных или взлом. В этом топике хочу подробно обсудить, почему закрывать служебные файлы критично и какие шаги надо делать, чтобы не дать злоумышленникам никаких шансов.

Что такое служебные файлы и зачем их закрывать?

Служебные файлы — это разные файлы и каталоги, используемые CMS или форумом для работы, но при этом не предназначенные для просмотра обычными пользователями в браузере. Это могут быть:

- Конфигурационные файлы типа config.php, settings.ini, .env — там часто лежат пароли к базе данных, настройки шифрования, API ключи и т.п.
- Резервные копии баз данных или сайта, которые случайно оказались в папках, доступных снаружи
- Лог-файлы ошибок и отладочная информация, которые могут рассказать многое о внутренней структуре сайта
- Каталоги .git, .svn или другие системные папки из репозитория, которые содержат историю кода
- Скрипты обновления, дампы, временные файлы и прочее

Если у злоумышленника есть возможность просто открыть эти файлы через браузер, он сразу получает много информации — от паролей до пользовательских данных, что почти гарантирует взлом.

Где это встречается чаще всего?

Почти в каждой CMS и форуме есть подобные служебные элементы. Отличие лишь в том, как именно они организованы и где лежат в структуре файлов. Примеры:

- В WordPress это может быть файл wp-config.php, .htaccess, бэкап базы под wp-content/backup
- В Joomla — configuration.php с деталями базы и путями
- В форумах типа phpBB или SMF тоже есть config файлы и каталоги, которые не должны быть публичными
- Бэкапы, заброшенные в публичной папке FTP или публичном каталоге сайта — распространённая халатность

Если эти файлы попадают в публичную директорию (обычно это /public_html, /www и т.п.), они становятся легкой добычей.

Практические истории из жизни

1. На одном из форумов, которым я занимался, a participant случайно заметил, что файл конфигурации (config.php) открывается в браузере как обычный текст. Там лежали пароли к базе и секретные ключи шифрования. Я отписал админу, и было быстро принято решение переместить файл за корень сайта и настроить права доступа. Очень поучительный случай — казалось бы мелочь, а открыв этот файл, кто-то мог сразу получить полный контроль над сайтом.

2. В другом случае кто-то загрузил бэкап базы данных прямо в публичный каталог. Кто-то из участников форума скачал и увидел данные всех пользователей с уже хэшированными паролями. Хорошо, что хэши были защищены солью, но потенциальная атака была очень реальной. Админ сразу очистил папку и пересмотрел процесс хранения бэкапов.

3. На проекте с Joomla была проблема с открытой директорией .git, которую разработчики забросили вместе с кодом. В ней лежала вся история коммитов и пароли в открытом виде — это классическая ошибка, когда репозиторий загружают на продакшн без правильных .gitignore и настроек веб-сервера.

Типичные ошибки при работе с служебными файлами

- Оставлять конфиги и бэкапы в той же публичной папке, что и сайт — например, в /public_html
- Не защищать административные панели и скрипты — оставлять их на дефолтных адресах типа /admin или /administrator
- Игнорировать права доступа, выставлять 644 на конфиги, которые должны быть 600 или строже
- Загружать исходники и системные папки репозитория без фильтров и .gitignore на продакшн сервер
- Не проверять регулярно доступность служебных файлов снаружи, надеясь на удачу

Чек-лист по безопасности служебных файлов

- Уберите все конфигурационные файлы за пределы публичного каталога, если CMS это позволяет
- Используйте .htaccess или nginx конфиги, чтобы запретить доступ к файлам типа *.php и каталогам типа .git, .svn, backup
- Настройте права доступа на файлы конфигураций (600 или 640) и на каталоги без права записи для веб-сервиса
- Не кладите бэкапы и дампы в публичные папки. Храните их или на отдельном сервере, или в защищённой папке с паролем
- Настройте пароль на административную панель или используйте двухфакторную аутентификацию
- Переименуйте или смените дефолтные пути доступа к админке, чтобы минимизировать сканирование и автоматические атаки
- Используйте сканеры безопасности для проверки открытых URL (например, curl, wget, OWASP ZAP)
- Регулярно проверяйте логи и включите уведомления об подозрительной активности

Полезные инструменты и методы

- curl или wget позволяют быстро проверить доступность файла по URL, например: curl -I https://site.ru/config.php
- Онлайн-сканеры, вроде Sucuri SiteCheck, помогают выявить открытые служебные файлы и общие уязвимости
- Модули безопасности и плагины для CMS (например, Wordfence для WordPress) с автоматической блокировкой опасных путей
- Правила в .htaccess (Apache) или конфиг nginx, чтобы полностью запретить доступ к скрытым файлам и папкам
- Инструменты типа find (find /path -type f -name "config.php") для локального поиска и аудита файлов
- OWASP ZAP — для более продвинутого аудита безопасности, включая проверки, какие файлы доступны извне

FAQ по служебным файлам и их защите

Вопрос: Можно ли просто удалить конфигурационные файлы, если они доступны?
Ответ: Нет, их удалять нельзя, это приведет к падению сайта. Лучше найти способ переместить их вне корня сайта или настроить сервер так, чтобы они не открывались извне.

Вопрос: Что делать, если нет доступа к серверу, чтобы настроить права или .htaccess?
Ответ: Самый простой – обратиться в поддержку хостинга или администратора. Также можно попытаться закрыть доступ через настройки CMS, если есть такие.

Вопрос: Как понять, что служебные файлы доступны через интернет?
Ответ: Попробуйте в браузере зайти на типовые пути (например, site.ru/config.php, site.ru/.git/HEAD) или используйте curl или специальные сканеры.

Вопрос: Где хранить бэкапы, чтобы было безопасно?
Ответ: Лучше всего на удалённых серверах, с ограниченным доступом, или в каталогах, защищённых паролем и не публичных из веба. Не оставляйте их в папках с открытым доступом.

Вопрос: Как защитить административную часть сайта?
Ответ: Используйте смену дефолтных адресов, защиту паролем через .htpasswd, двухфакторную аутентификацию и IP-фильтрацию доступа, если возможно.

Заключение

В конечном итоге, безопасность сайта — это не только сложные пароли и плагины с защитой от ботов. Это ещё и банальная дисциплина в обращении со служебными файлами. Если вы оставите конфигурацию, бэкапы и системные каталоги на виду у всех, ждите проблем. Пусть закрытие таких файлов станет для вас обычной рутиной. Расскажите здесь, как у вас организована защита служебных файлов на ваших проектах! Кто что использует, какие есть фишки и лайфхаки? Очень интересно услышать опыт других админов и пользователей.