Что нужно делать если сломали сайт на Joomla 2.5 ?

1.   Обновить CMS до последней версии
2.   Обновить все расширения до актуальных версий
3.   Создать файл .htaccess

##
# @version $Id: htaccess.txt 21064 2011-04-03 22:12:19Z dextercowley $
# @package Joomla RE
# @localized Авторские права (C) 2005 — 2011 Joom.Ru — Русский дом Joomla! Все права защищены.
# @copyright Copyright (C) 2005 — 2010 Open Source Matters. All rights reserved.
# @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
# Joomla! — свободное программное обеспечение.
# Последнее изменение этого файла — 09.04.2011
##
# Установка кодировки сайта по умолчанию. При необходимости, закомментируйте.
# Строка решает проблему с «крякозябрами» в редакторе TinyMCE и текста лицензии при установке
# на Денвере и некоторых серверах с жестко прописанной кодировкой. Это на 99,9% работающее решение.
# После переименования этого файла htaccess.txt в .htaccess проблема решится.
# Если проблема осталась — перечитайте предыдущее предложение (возможно неправильно переименовали).
AddDefaultCharset utf-8
# Следующие строки — попытка исправить настройки PHP
# для полного соответствия системным требованиям Joomla.
# Раскомментируйте (символ комментария — #) нужные строки,
# если настройки вашего хоста не соответствуют рекомендациям
# системных требований Joomla.
# При возникновении 500 ошибки сервера, закомментируйте строку, вызывающую
# ошибку, или все строки с php_flag.
# php_flag register_globals Off
# php_flag display_errors Off
# php_flag file_uploads On
# php_flag allow_url_fopen off
# php_flag magic_quotes_gpc On
# php_flag magic_quotes_runtime Off
# Пример явного указания каталога для записи сессий:
# Для Windows — c:/temp
# для UNIX — /tmp
# Указанный каталог должен физически существовать и быть доступен для записи
# При необходимости, раскомментируйте строку ниже этой
# php_value session.save_path c:/temp
#####################################################
# ПРОЧТИТЕ ПОЛНОСТЬЮ, ЕСЛИ БУДЕТЕ ИСПОЛЬЗОВАТЬ ЭТОТ ФАЙЛ
#
# Строка ниже этого раздела: ‘Options +FollowSymLinks’ может вызвать проблему
# при некоторых конфигурациях сервера. Она необходима для использования модуля
# Apache mod_rewrite, но может быть уже настроена администратором вашего
# сервера и изменение этого параметра в .htaccess может быть запрещено.
# Если эта директива вызывает ошибку сервера, то закомментируйте строку
# (добавьте символ # в начало строки), перезагрузите в браузере сайт и
# протестируйте работу SEF-ссылок. Если они работают, то вам не надо ничего
# менять здесь, т.к. всё уже настроено администратором сервера.
#
# Строки, которые можно раскомментирвать (и использовать) имеют только один #.
# Строки с двумя символами ## раскомментировать не надо. В разделах, которые вы
# не используете, все строки должны начинаться с символа #
#
#####################################################
## Может быть закомментировано, если вызывает ошибку сервера. Смотрите примечания выше.
Options +FollowSymLinks
#
# Включение mod_rewrite
RewriteEngine On
## Начало — Запрет на выполнение php-скриптов — не работает
#<IfModule mod_php5.c>
#php_flag engine 0
#</IfModule>
## Конец — Запрет на выполнение php-скриптов
## Начало — Запрет на выполнение php-скриптов в корне сайта
<Filesmatch «.(php)$»>
order deny,allow
deny from all
</Filesmatch>
<Filesmatch «^index.php»>
order allow,deny
allow from all
</Filesmatch>
<Filesmatch «^index2.php»>
order deny,allow
allow from all
</Filesmatch>
## Конец — Запрет на выполнение php-скриптов в корне сайта
########## Начало — Правила обработки запросов для блокировки распространенных эксплоитов
## Если у вас возникли проблемы с вашим сайтом, используйте ниже описанные операции
## Они пытаются заблокировать самые распространенные эксплоиты Joomla!
#
## Код запрета доступа к xml-файлам расширений (раскомментируйте для активации)
<Files ~ «\.xml$»>
Order allow,deny
Deny from all
Satisfy all
</Files>
## Конец кода запрета доступа к xml-файлам
# Блокировать любой запрос, пытающийся установить значение mosConfig через URL
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
# Блокировать любой запрос, пытающийся испортить base64_encode через URL
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Блокировать любой запрос, содержащий тег <script> в URL
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Блокировать любой запрос, пытающийся установить значение глобальных переменных PHP через URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Блокировать любой запрос, пытающийся изменить _REQUEST переменную через URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Перенаправлять заблокированные запросы на страницу 403 с запрещенными ошибками!
RewriteRule .* index.php [F]
#
########## Конец правил обработки для блокировки распространенных эксплоитов
# Раскомментируйте следующую строку, если URL вашего web-сервера
# не связаны напрямую с физическими путями файлов.
# Обновите ваш каталог Joomla (используйте «/» для обозначения корня сервера)
# RewriteBase /
########## Начало раздела SEF ядра Joomla!
#
RewriteRule .* — [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# Если запрошенный путь и файл не содержат /index.php и запрос еще
# не был перенаправлен на скрипт index.php
RewriteCond %{REQUEST_URI} !^/index\.php
# и запрашивается URL корня или расширения, или
# запрашиваемый URL оканчивается на одно из перечисленных расширений
RewriteCond %{REQUEST_URI} (/[^.]*|\.(php|html?|feed|pdf|raw))$ [NC]
# и запрошенный путь не соответствует пути к физическому файлу
RewriteCond %{REQUEST_FILENAME} !-f
# и запрошенный путь не соответствует пути к физической папке
RewriteCond %{REQUEST_FILENAME} !-d
# то перенаправить запрос на скрипт index.php
RewriteRule .* index.php [L]
#
########## Конец раздела SEF ядра Joomla!

Отличается от стандартного. Добавлены строки 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.