• База знаний
  • /
  • Блог
  • /
  • Wiki
  • /
+380 (44) 364 05 71

Обчно о безопасности сайта начинают задумыватся уже после взлома. По статистике Яндекса за прошлый год из 10000 самых популярных по запросам взломаных сайтов 19% выпадают на cms Joomla!.

Брутфорс админки.

От этого страдают чаще всего любители «qwerty» паролей. Логичным путем будет изменить пароль администратора на более сложный. Меняется это просто из админки Джумлы в разделе "Сайт" – "Мой профиль". Не лишним будет изменить и логин, вместо обычного admin. При выборе пароля можно воспользоватся случайными генераторами на подобие onlinepasswordgenerator.ru или  generator-paroley.ru, но при придумывании пароля самостоятельно следует помнить о том что желательно в нем использовать строчные буквы, прописные и цифры. Так же можно запретить доступ к самой админки из вне. Например ограничить доступ по IP. Создаем в директории /administrator файлик .htaccess либо прописываем в уже существующем:

Order allow,deny
Deny from all
Allow from 10.32.0.5

Вместо 10.32.0.5 вписываем свой IP, строчек Allow from можно вписать несколько, таким образом разрешив доступ нескольким IP адресам, так же можно указать первые 1-3 бита IP чтобы разрешить доступ из всей подсети. 
Если же вы не обладаете статичным IP либо не уверены какую подсеть использует ваш провайдер, можно запаролить эту директорию используя тот же .htaccess в ней:

AuthType Basic
AuthName «Secured area»
AuthUserFile /path/to/folder/administrator/.htpasswd
require valid-user

 Вместо Secured area можно вписать любой текст, он будет отображен в диалоговом окне. /path/to/folder/ - тут необходимо указать полный путь к папке сайта. Далее нужно создать файл .htpasswd воспользовавшись утилитой
http://www.htaccesstools.com/htpasswd-generator/ и закачать этот файл в папку administrator. Теперь окно аунтификации в админке будет доступно только после  аунтификации в диалоговом окне «Secured area». Еще одним способом скрыть админку является переименование файла index.php в папке /administrator, переименуем этот файл в RandomText.php и теперь админ панель будет доступна только по адресу example.com/administrator/RandomText.php Все эти методы можно совмещать. В принципе защитить админ панель можно так же используя различные защитные плагины, например Ksecure, jSecure
Authentication, AdminExile.

Уязвимость в коде Joomla

Своевременное обновление Joomla и используемых компонентов и плагинов до актуальных версий обычно достаточно для пресечения использования эксплоитов. Но иногда обновление не возможно по каким-либо причинам, либо заплатку для текущей версии еще не выпустили. В таком случае можно попробовать скрыть факт использования Joomla. Для этого удаляем ненужные информационные файлы, например COPYRIGHT.php, CREDITS.php, LICENSE.php, LICENSES.php, INSTALL.php, README.TXT папку installation так же необходимо удалить если вы этого не сделали после установки Joomla. 
Скрыть факт использования Joomla поможет так же редактирование метатегов, т. к. стандартные метатеги Джумлы могут выглядеть в виде :

<meta name="description" content="Joomla! - the dynamic portal engine and content management system" /> Изменить тэги можно из админки в разделе Настройка метаданных и убрав строку
<?php $this->setGenerator(''); ?> в индексном файле шаблона, так же убрать метатег generator можно закоментировав в скрипте /libraries/joomla/document/html/renderer/head.php этот кусок кода:

$strHtml .= $tab.'<meta name="generator" content="'.$document->getGenerator().'" />'.$lnEnd;  

Во все папки желательно положить пустой файл index.html, при включенном Options -Indexes запросы вида example.com/components/ будут выдавать пустую страницу вместо списка каталога. Использование ЧПУ(SEF) поможет не только скрыть стандартные ссылки Joomla, но и сделает страницы более привлекательными для поисковых ботов. Можно пользоватся стандартной Джумловской настройкой в админке в разделе Сайт -> Общие настройки так и сторонними плагинами, например ARTIO JoomSEF или Sh404sef.

Загрузка сторонних скриптов.

Общие рекомендации для всех пользователей администрирующих сайты, такие как использование сложных паролей для доступа по FTP и проверка на наличие вирусов компьютеров с которых производится этот доступ, описывать смысла нет. Большинство сайтов располагаются на серверах под управлением семейства UNIX подобных ОС. В них используется система прав на файлы и директории. В общем случае права должны быть назначены следующим образом:
На файлы — 644(на некоторые можно выставить 444)
На директории — 755
Подобные права можно выставить через FTP(кроме 444, эти права выставляются только через SSH доступ). 
В Joomla на папки cache, tmp и images скорее всего потребуют доступ на запись, т. е. права 777. Это потенциально опасно, т. к. в эти папки могут быть
загружены вредоносные скрипты.
Можно заблокировать возможность выполнять скрипты в этих папках. Для этого
необходимо в каждой из них создать файл .htaccess и прописать там:

 AddType "text/html" .php .pl .py .jsp .asp .htm .shtml .sh .cgi

SQL — иньекции

Чтобы предотвратить иньекции в базу необходимо сменить стандартный префик таблиц базы. Это делается при установке Джумлы. Если она уже установлена, то можно изменить префиксы следующим образом. Экспортировать базу данных через PhpMyAdmin. На всякий случай скопировать файл базы. Открыть полученный дамп базы данных текстовым редактором. С помощью функции Поиск и замена префиксы jos_ изменить на любой другой, например edrg_ после этого в админке Джумлы в разделе «Общие настройки»->«Сервер»->«Установки базы данных» указать этот префикс. Импортировать новый дамп базы в PhpMyAdmin. 
Так же можно ограничить доступ к базе не стандартным запросам скриптов сайта. Для этого в файле .htaccess в корневой папке сайта нужно прописать следующее:

 RewriteCond %{query_string} concat.*\( [NC,OR]
 RewriteCond %{query_string} union.*select.*\( [NC,OR]
RewriteCond %{query_string} union.*all.*select [NC]
RewriteRule ^(.*)$ index.php [F,L]
 
Но это может пагубно повлиять на работу плагинов, которые используют не стандартные SQL команды Джумлы.

Бэкапы

Использование всех методов по обеспечению безопастности не дает 100% гарантии что сайт не будет подвержен взлому. Так же нет никаких гарантий сохранности данных от других факторов. По этому необходимо периодически сохранять резервные копии сайта. Можно вручную копировать файлы с сервера и импортировать базы или воспользоватся какой-либо панелью управления. Для Joomla существует масса плагинов с помощью которых можно бэкапировать сайт, например Akeeba BackUp, DataSafe, Simple Joomla Backup.

Дата: 31.01.2014
Автор: scoob
Голосование

Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:

comments powered by Disqus
Спасибо, что выбираете FREEhost.UA