В
этой статье будут расмотрены основные шаги, которые необходимо предпринять для защиты от хакерских атак и других нелигитимных действий с вашим сайтом и FTP-доступом к нему.

Ни для кого не секрет, что для обеспечения должной защищенности своего сайта, построенного на Joomla!, недостаточно отделаться установкой компонента типа Defender, RS Firewall, X-Defender или аналогичных. Подобного рода компоненты не способны защитить ваш сайт от всех видов посягательств и имеют ряд ограничений, хотя при некоторых атаках (SQL и PHP-инъекции, флуд и т.п.) они показывают достаточно хорошие результаты.

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

1. Защита с помощью файла .htaccess

Добавляем в файл .htaccess в корне сайта следующее:<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>

Эти строки указывают серверу, что необходимо запретить выполнение каких-либо скриптов в корне, кроме файла index.php. И если злоумышленику удастся загрузить в корень сайта какой-нибудь бэкдор, он все равно не сможет его выполнить на сервере.

Однако, хакер может попытаться загрузить бэкдор с именем index.php в какой-нибудь подкаталог в корне сервера, где он будет успешно выполняться. Поэтому во все подкаталоги первого уровня от корня необходимо поместить файл .htaccess следующего содержания:<Files ~ ".(php)$">
Deny from all
</Files>

Данная мера позволит запретить запуск php-скриптов напрямую.

В каталоге "administrator" необходимо поместить файл .htaccess следующего содержания:<Filesmatch ".(php)$">
order deny,allow
deny from all
</Filesmatch>
<Files index.php>
order deny,allow
deny from all
allow from 11.11.11.11
allow from 22.22.22.22
allow from 33.33.33.33
</Files>
<Files index2.php>
order deny,allow
deny from all
allow from 11.11.11.11
allow from 22.22.22.22
allow from 33.33.33.33
</Files>
<Files index3.php>
order deny,allow
deny from all
allow from 11.11.11.11
allow from 22.22.22.22
allow from 33.33.33.33
</Files>

Где IP-адреса вида 11.22.33.44 -- это IP-адреса, с которых вы администрируете Joomla!. Эта мера поможет, когда хакер каким-то образом смог получить пароль администратора. В этом случае он все равно не сможет залогиниться в административной панели.

В папке "administrator" во все каталоги первого уровня поместите файл .htaccess следующего содержания:<Files ~ ".(php)$">
Deny from all
</Files>

На этом настройку безопасности с помощью файла .htaccess можна завершить.

2. Защита доступа по FTP

Извесно, что Joomla! хранит реквизиты вашего FTP-сервера в файле "configuration.php". И это дает хакеру лишнюю возможность получить FTP-доступ к вашему серверу, прочитав данный файл. Поэтому нам необходимо так настроить FTP-защиту, чтобы разрешить FTP-доступ только с определенных IP-адресов. Таким образом, даже если злоумышленник получит FTP-реквизиты, он не сможет залогиниться на ваш FTP-сервер. Если вы имеете доступ к файлу "/etc/proftpd.conf " на сервере, то добавьте в него следующие строки:<Limit LOGIN>
Order allow,deny
Allow from 11.22.33.44
Allow from 127.0.0.1
Deny from all
</Limit>

где IP-адрес 11.22.33.44 -- это IP-адрес, с которого вы заходите на ваш FTP-сервер. Не забудьте добавить также IP-адрес 127.0.0.1, чтобы Joomla! могла заходить на FTP-сервер через PHP для управления файлами.

Если же вы не имеете доступа к файлу "/etc/proftpd.conf ", то скорее всего в панели управления вашей площадкой на хостинге присутствует возможность ограничения доступа по FTP-протоколу. Обязательно узнайте об этом у своего хостера и воспользуйтесь такой настройкой.

3. Блокирование доступа к сайту с определенных IP-адресов.

Далее мы заблокируем доступ к сайту с определенных IP-адресов или даже для конкретных стран.

Заблокировать доступ для диапазонов адресов можно с помощью IP-таблиц. Для этого вам понадобится SSH-доступ к вашему серверу. Если вы не знаете SSH-реквизитов, обратитесь за ними к службе техподдержки вашего хостера.

Войдя в оболочку, введите в коммандной строке:/sbin/iptables -I INPUT -s 88.147.196.0/88.147.253.255 -j DROP


где: -I – ключ вставки. Также вы можете использовать ключ –A для добавления IP-адресов к уже существующим записям. Вы можете блокировать как отдельные IP-адреса, так и диапазоны, разделяя начальный и конечный адреса символом "/". Заблокируйте плохих парней из Ирана, Ирака и т.п.

4. Файлы и каталоги

Следующий шаг состоит в том, чтобы присвоить безопасные атрибуты файлам и каталогам на сервере. Основная идея состоит в том, что владельцем всех файлов и папок должны быть вы как FTP-пользователь. Кроме того, каталоги должны иметь атрибут 755, а файлы 644. Если вы имеете доступ по SSH, то команда, выполненная из корня сайта, будет следующая:chown -R user:group ./
chmod -R 0644 ./
find . -type d -exec chmod 755 {} ;


После этого все папки и файлы нельзя будет изменить через PHP.

Но скорее всего вам придется вручную задать атрибуты доступа 777 для каталогов с кешем и резервного копирования. Не забудьте сделать это.

5. Установка компонента безопасности.

Установите какой-либо компонент безопасности типа Defender, RS Firewall, X-Defender или аналогичный. Этот компонент позаботится обо всем остальном, т.к. мы запретили запуск любых скриптов, кроме index.php.