Ломанули несколько сайтов на оджном аккаунте. Начал искать способы избежать подобных неприятностей в будущем.
Вот мой вариант (он не полный, так как в конце моего топика у меня есть вопросы)
1. Обновить CMS до последней версии
2. Обновить все расширения до актуальных версий
3. Создать файл .htaccess
Отличается от стандартного. Добавлены строки 69-88
4. Включить стандартный SEF, либо стороннее ЧПУ
5. ---
6. Удалить признаки Joomla:
В версии 2.5 идем по пути: ВАШ_САЙТ/libraries/ Joomla /document/html/renderer/ и в файле head.php находим 99 стр.:
$buffer .= $tab . '<meta name="generator" content="' . htmlspecialchars($generator). '" />' . $lnEnd; комментируем или удаляем.
7. Сменить префиксы в БД и файле configuration.php
8. Удалить не нужные шаблоны, модули, компоненты и плагины (а также их папки и языковые файлы в админке и корне, ну и оставшиеся таблицы в БД, если остались)
9. Заменить JCE (плагины, компоненты), удалить папки и файлы (admin/languages/Ru-ru – 5 файлов JCE +файлы шаблонов админики) и (languages – файлы JCE + файлы шаблонов)
10. Создать файл .htaccess (папка-2), запрещающий выполнение скриптов и добавить его во все папки в корне сайта (защита от Бекдора). Содержимое файла:
<Files ~ ".(php)$">
Deny from all
</Files>
11. Вынести файл configuration.php за пределы www-директории (у некоторых она называется public_html). Для этого копируем его за ее пределы, возможно рядом с ней, переименовываем например его в "joomla.conf" (это к примеру), а в том, что должен быть в корне Joomla (он будет называться все также - configuration.php) пишем нечто вроде этого:
require( dirname( __FILE__ ). '/../joomla.conf' );
?>
12. Установить компонент Admin Tools – сменить ID администратора, с его помощью или в ручную очистить содержимое папки tmp (в корне сайта). С его же помощью можно изменить префиксы таблиц и с помощью сервера закрыть прямой доступ к панели администратора.
13. Создать сложный логин и пароль доступа (Super User) в панели доступа администратора.
14. Если не на сайте используется модуль регистрации пользователей, то лучше удалить файлы, которые отвечают за восстановление пароля и его сброс. Можно удалить или всю папку com_user (которая находится по пути ВАШ_САЙТ/components) или отдельный файл, отвечающий за сброс - reset.php. Этот файл находится по пути ВАШ_САЙТ/components/com_user/models.
15. Установить права на файлы и папки: на файлы, которые находятся в корневой директории 444, на папки в корневой директории ставят 755, на папки tmp и logs ставят 705, на папку своего шаблона поставьте 555, на папку image/stories можно поставить 755, на папку Cache 777.
16. В настройках PHP вашего хостинга нужно запретить работать с удаленными файлами как с ссылками (allow_url_fopen = Off), содержимое файла которое пытались загрузить ни что иное как Shell при помощи которого взломщики получают доступ к вашему сайту через удаленный шелл, даже не загружая его на ваш сайт.
17. Читал, что есть вариант запрета выполнения скриптов в корне сайта (но у меня не работает тогда админка). Добавить в файл .htaccess код:
<IfModule mod_php5.c>
php_flag engine 0
</IfModule>
18. Еще есть вопросы по защите таких директорий как images, media и templates.
Что еще я упустил?