PHP сайт взломан – имена директорий изменены

Вопрос или проблема

Я новичок в PHP и Apache. Я пришел из Node.js/JAVA бэкендов и сейчас изучаю этот технологический стек (PHP, CGI, Apache и т.д.). Мой сайт в настоящее время использует ckeditor для обработки загрузок пользователей и имеет высокий уровень трафика. Часто кто-то каким-то образом просто меняет названия моих директорий. Например, моя директория views вдруг становится views1, и тогда весь мой сайт перестает работать. У меня установлены права 775 на файлы, но, насколько я знаю, это не должно позволять случайным запросам просто записывать в мои директории.

Как я могу это предотвратить? Я понимаю, что трудно диагностировать с такой небольшой информацией, но я не совсем уверен, как решить эту ситуацию.

Я не позволяю загружать никакие сомнительные файлы через .htaccess

<FilesMatch "\.(inc|tpl|h|ihtml|ini|conf|class|bin|spd|theme|module|sql)$">
    deny from all
</FilesMatch>

<Files ~ "^\.ht">
    Order allow,deny
    Deny from all
</Files>

Какие есть способы, чтобы кто-то так легко мог изменить названия моих директорий?

Ответ или решение

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

1. Понимание проблемы

Наиболее вероятные причины изменения имен директорий включают:

  • Уязвимости в коде: Ваш скрипт может не защищать должным образом доступ к файловой системе. Например, если вы используете функции, которые манипулируют файловой системой (как rename, move_uploaded_file), но избегаете проверки подлинности или валидации входных данных, это может стать уязвимостью.
  • Недостаток прав доступа: Вы указали, что на файлы установлены права 775. Такие права обеспечивают запись для владельца и группы, что может создать возможность для злоумышленников, если сервер скомпрометирован или есть уязвимости в других скриптах, использующих эти права.
  • Уязвимости сервера: Это может быть следствием эксплойта уязвимостей веб-сервера Apache или даже настроек PHP.

2. Предотвращение атак

Для защиты вашего веб-сайта и предотвращения подобных инцидентов, вы можете предпринять следующие шаги:

2.1. Откорректируйте права доступа

  • Используйте более строгие права доступа. Установите права на файлы, такие как 644, а на директории – 755. Это ограничит возможность изменения файлов и директорий. Права 775 предоставляют права записи всем пользователям группы, что может быть рискованно.

2.2. Защита загрузки файлов

  • Разрешайте загрузку только необходимых типов файлов. Например, если вам нужны только изображения, укажите соответствующие MIME-типы для валидации загружаемых файлов.
  • Используйте систему контроля типов и размеров файлов. Это поможет предотвратить загрузку исполняемых скриптов или вредоносных файлов.
  • Антивирусная проверка загружаемых файлов может значительно повысить безопасность вашего приложения.

2.3. Защита кода

  • Проверяйте входные данные на стороне сервера. Убедитесь, что все данные, приходящие от пользователей, проходят валидацию и фильтрацию. Используйте функции, такие как filter_input, для защиты от инъекций и других типов атак.
  • Избегайте использования функций, которые могут изменить структуру файловой системы без контроля. Рассмотрите возможность включения аудита для изменений в файлах и директориях, чтобы отслеживать подозрительное поведение.

2.4. Настройки сервера

  • Настройте .htaccess более эффективно. Убедитесь, что вы ограничиваете доступ не только к .ht файлам, но и к любым чувствительным директориям и файлам, размещая в них правила для блокировки доступа.
  • Регулярно обновляйте серверное ПО, включая версии PHP, Apache и используемые библиотеки. Безопасные версии программного обеспечения закрывают известные уязвимости.

3. Мониторинг и аудит

Создание системы мониторинга для отслеживания изменений в файловой системе поможет заблаговременно выявлять необычную активность. Вы можете использовать такие инструменты, как inotify, для отслеживания изменений в важнейших директориях и отправки уведомлений администратору.

Заключение

Обеспечение безопасности веб-сайта – это непрерывный процесс, требующий комплексного подхода к защите данных и инфраструктуры. Следуя приведенным рекомендациям, вы сможете значительно уменьшить вероятность изменения имен директорий вашим злоумышленником. Не забывайте регулярно тестировать уязвимости вашего приложения и следить за актуальностью технологий.

Оцените материал
Добавить комментарий

Капча загружается...