Надежная защита веб-сайта от большинства видов атак
Когда создаётся новый сайт на любом языке программирования, фреймворке или CMS (система управления контентом), его устойчивость к атакам из-вне полностью и целиком зависит от разработчиков всех компонентов кода для этого сайта.
Особенно это опасно, когда Вы доверяете разработку непроверенному или неопытному разработчику с фриланса!
Не всегда программистам удаётся предотвратить использование опасных запросов со стороны клиента, позволяющие злоумышленникам (или сетевым вирусам) проникать в систему управления сайтом и получать полный контроль над управлением всем сайтом (или его части) или даже, целым сервером, на котором этот сайт находится.
После установки "чужого" кода на Ваш сайт (кроме обычных действий с копированием и/или изменением данных на сайте), он может стать частью бот-net'а (сеть из нескольких, таких же, "зомбированных" хост-площадок) и управляться командами из-вне.
После этого, с сайта могут похитить всю базу данных (включая аккаунты пользователей и всю их личную конфиденциальную информацию), провести спам-рассылку от имени вашего сайта, отредактировать/заменить/удалить любые файлы, разместить рекламу на вашем сайте и т.д.
Минимальные и универсальные правила помогут предотвратить понизить риск проникновения. Для максимальной уверенности - необходимо заказывать услугу профессионального полного аудита кода на возможность проникновения со всеми необходимыми исправлениями.
Итак, начнём!
Это правило №0 и оно самое главное для всего в логике!
Правило №0: При переходе от одной технологии, процесса, этапу к любому другому,
ВСЕГДА ПРОВЕРЯЙТЕ ВХОДНЫЕ ДАННЫЕ!,
т.к. вероятность выхода из строя разнородных узлов без видимой ошибки - близка к 100%.
Правила защиты веб-сайта:
1. Права на папки и файлы (устанавливаются сразу после распаковки архива веб-сайта на хостинг):
- все папки: 755;
для папок кэша, медиа, бэкапа: 777 (все могут создавать и изменять файлы): здесь мы запретим выполнение скриптов веб-сервером, чтобы исключить возможный запуск "чужих" скриптов в этих папках (имена папок - заменить на свои!). Делаем так (в .htaccess):
1
2RewriteCond %{REQUEST_URI} /(media|tmp|cache|images|assets|upload)/($|(.*\..?(php|cgi|exe|asp|pl|.html|py|jsp|do))) [NC]
RewriteRule ^.*$ - [R=404,L] - все файлы: 644;
для файлов-конфигураций: 444 (все могут только читать);
для файлов-баз-данных: 666 (все могут читать и изменять);
Пример выполнения команды chmod из под root-пользователя в консоли хостинга (например, через putty) для установки прав 755 на все вложенные папки в директории www и все её подпапки:
1 | chmod -R go=rX,u=rwX /home/www |
2. Настройка фильтрации опасных запросов со стороны веб-сервера.
Добавляем следующий код в начало файла .htaccess в корневой web-директории (веб-сервер Apache):
1 | ServerSignature Off |
3. Настраиваем доступ к админ-панели только с доверенных IP-адресов. Можно указать или полный адрес, или подсеть (не забыв точку в конце!), или DNS-имя хоста.
Добавляем следующий код в начало файла .htaccess в директории Admin-панели (веб-сервер Apache) и заменяем нужную запись на свой IP/хост (# - символ комментария):
1 | deny from all |
4. Не забывайте создавать резервную копию сразу после настройки нового сайта, а также настроить систему автоматического создания резервных копий на хостинге в определенную папку (не внутри www-root, а вне её!) и периодически синхронизируйте содержимое этой папки с хостинга к себе в локальное хранилище (на диск ПК, USB-флешку и т.д.).
5. Периодически просматривайте отчеты нагрузки и логи для выявления проблем на ранних стадиях.
Эти простые правила помогут максимально уберечь Ваш сайт от большинства возможных атак. Также, существуют различные системы предварительной проверки настроек хостинга и периодического мониторинга изменения файловой структуры.