CMS Joomla! — одна из наиболее популярных бесплатных систем управления содержимым сайта. И нет ничего удивительного в том, что хакеры постоянно пытаются её взломать.
Сама по себе, эта CMS обладает достаточно мощной защитой от взлома, и так просто эту защиту не обойти. По статистике, взламывают только 4,3% сайтов под управлением CMS Joomla. В то время как сайтов на Wordpress взламывают в разы больше — почти 90%.
Но есть факторы, которые могут повлиять на безопасность Joomla! И в большинстве случаев — это банальная невнимательность, или некомпетентность администратора сайта.
Эта тема будет полезна абсолютно всем веб-разработчикам (не только тем, кто создаёт сайты на Joomla), так как большинство способов взлома сайта применимы к любой CMS.
Этой статьёй я начинаю серию уроков по безопасности сайта. В этих уроках я буду не только рассказывать, а и показывать как злоумышленники ищут дыры в безопасности вашего сайта. Ну а пока общие рекомендации как обеспечить безопасность своего сайта, а также безопасность персональных данных своих работников и клиентов.
Как защитить сайт Joomla от взлома
- Всегда своевременно обновляйте CMS Joomla! По статистике, почти 90% сайтов на Joomla (из тех 4,3% взломанных сайтов) взламывали именно по тому, что они работали на устаревшей версии CMS. В каждой новой версии CMS Joomla дорабатываются и устраняются прежние недочёты. Поэтому вполне логично, что в самой новой версии CMS уязвимостей меньше.
- Используйте только проверенные и актуальные расширения для CMS Joomla! Во многих случаях Joomla, WordPress, и другие CMS взламывают именно через сторонние расширения (плагины, компоненты и т.д.). Всегда следите за тем, чтобы установленные расширения были самые свежие. И вообще постарайтесь использовать меньше сторонних расширений в Joomla. Ведь эта CMS изначально обладает достаточно большим функционалом, и очень много можно сделать, не прибегая к установке каких-то дополнений.
- Включите Двухэтапную (многофакторную) аутентификацию. Многофакторная аутентификация — это дополнительный уровень безопасности помимо вашего пароля. Таким образом, для входа в учетную запись потребуется что-то дополнительное для проверки личности пользователя — обычно это 6-значный код, отправляемый на электронную почту, в текстовом сообщении.
- Практикуйте принцип наименьших привилегий. То есть старайтесь давать другим пользователям сайта, те права, которые им нужны для выполнения определённых функций на сайте. Всё то, что этим пользователям не понадобится в работе — убирайте.
- Удаляйте неактивных пользователей. Здесь я подразумеваю администраторов, или модераторов сайта, которые уже не работают с вашим сайтом. Ведь очень часто разработкой сайта занимается несколько человек. Но со временем, кто-то уходит из проекта, а кто-то новый приходит. Или к разработке сайта могут временно привлекаться сторонние веб-разработчики. Так вот когда человек уходит их проекта, нужно сразу удалять его аккаунт. Ведь если хакер взломает этот аккаунт, то он получит все права доступные этому пользователю.
- Постоянно следите за своим сайтом. Это может помочь вам определить начальное проникновение, даже до того, как злоумышленник внедрил на сайт вредоносные данные. Обращайте внимание на то, кто входит в панель управления сайтом; должен ли был этот человек войти в систему; почему он изменил тот, или иной пост; почему он входит в систему, когда должен в это время спать; кто установил тот, или иной плагин; для чего он это сделал и многое другое.
- Регулярно делайте Backup (резервную копию) вашего сайта. Даже несмотря на то, что практически все современные хостинг-провайдеры делают резервные копии, установите для себя правило, с каким-нибудь определенным промежутком времени делать собственную резервную копию. Случится может всякое, и у вас всегда должна быть возможность восстановить свой сайт из резервной копии. Например, я ежемесячно делаю резервную копию своего сайта. Плюс перед каждым обновлением CMS, или какого-нибудь расширения, я тоже в обязательном порядке делаю Backup. Это делается на тот случай, если в ходе обновления, что-то пойдет не так и сайт перестанет работать.
- Используйте HTTPS (SSL-сертификат). С сертификатом SSL ваш веб-сайт будет использовать протокол HTTPS для безопасной передачи информации между точкой A (браузер) и точкой B (веб-сервер). Это очень важно при передаче конфиденциальной информации, такой как данные кредитной карты, на страницах оформления заказа, а также личная информация в формах входа и в контактных формах. Конечно же SSL не защитит ваш сайт от взлома, но он защитит ваши данные при их передаче. И в комплексе с другими мерами безопасности, выполнение данного условия однозначно даст результат.
- Ограничьте доступ к важным каталогам сайта. Например, можно полностью закрыть доступ к каталогу administrator, создав в нём файл .htaccess и прописав там строку Deny from ALL. А можно разрешить доступ к этому каталогу только с определённых IP, прописав в файле .htaccess строку Allow from [здесь пишем разрешённые IP-адреса]. Этот способ я использую, когда куда-нибудь уезжаю. Я администрирую сайт самостоятельно и кроме меня в панель управления сайтом никто не входит. Поэтому на время отпуска я полностью закрываю к ней доступ.
- Отключите в панели управления сайтом сообщения об ошибках. Конечно же делать это нужно уже после того, как вы полностью настроили сайт и убедились в том, что он работает корректно (то есть протестировали его какой-то период времени). Если не отключать сообщения об ошибках, то в случае их возникновения, хакер может увидеть важную информацию. И это поможет ему взломать ваш сайт.
- Закройте доступ к сайту по FTP (или ограничьте его). Я всегда закрываю доступ к сайту по FTP, и открываю доступ только тогда, когда мне нужно загрузить файлы на сайт именно по FTP. Это случается не так часто. А вот уровень безопасности сайта от такой меры предосторожности повышается в разы.
- Задайте уникальное имя пользователя и установите надежный пароль администратора сайта. Не используйте в качества логина слова admin, joomla, user, superuser, moder, moderator и т.д. Также не используйте простые пароли: пароль только из цифр, пароль в виде вашего дня рождения, пароль в виде вашего номера телефона. Пароль должен состоять из букв, цифр и специальных символов.
- Никому не показывайте структуру базы данных вашего сайта. Зная префикс базы данных, опытный хакер сможет найти лазейки и взломать ваш сайт. Раньше по умолчанию, система выставляла префикс базы данных jos и хакеры нашли способ это использовать в своих целях. Сейчас при установке Joomla этот префикс генерируется рандомно, что усложняет злоумышленникам взлом сайта на CMS Joomla.
- Не используйте в качестве логина и пароля базы данных слова root, или admin. Эти варианты в первую очередь будет пробовать хакер, который узнает имя базы данных вашего сайта. Немного позже я покажу вам какие наиболее частые запросы делают злоумышленники, когда пытаются найти уязвимости на вашем сайте.
- Не храните на сайте файлы с паролями и другой важной информацией. Поисковая система может проиндексировать эти файлы и тогда злоумышленнику не составит труда взломать ваш сайт. Всего лишь введя в поиске запрос «Пароли filetype:xls» мы можем получить проиндексированные поисковой системой файлы Excel в которых могут храниться пароли. Так можно найти и другие документы с личной информацией людей, и использовать её в своих целях. Поэтому я рекомендую вообще не хранить подобные файлы в корне сайта. А если уж очень сильно надо хранить такой файл на сайте, то позаботьтесь о том, чтобы этот файл не индексировался поисковой системой, и чтобы доступ к нему был ограничен паролем.
- Делайте сайт сначала на локальном сервере. И только когда уже всё готово и все ошибки исправлены, запускайте его на хостинге. Дело в том, что поисковая система может проиндексировать ваш сайт с ошибками и добавить эти страницы в свой кэш. Хакер, который нацелен на то, чтобы взломать ваш сайт, попытается достать такие страницы из кэша Google, или Яндекс. А если на этих страницах будут ошибки, то он конечно же их увидит. В сообщениях об ошибке может быть такая важная информация как имя базы данных, или список пользователей. Посмотреть страницу, которую добавил себе в кэш Google, можно нажав на иконку рядом с результатом поиска, и выбрав затем «Сохраненная копия».
- Никогда не оставляйте на сайте старые файлы с расширением bac, bak, или old. Также не оставляйте на сайте резервные копии сайта, и файлы, содержащие в своем имени old, bac, bak, или admin.
Видео по безопасности сайта на Joomla!
Ну что же. Мы рассмотрели все возможные на сегодняшний день способы защитить свой сайт Joomla от взлома (конечно же не прибегая к установке каких-нибудь специальных расширений).
Может кто-то скажет, что я излишне фанатично отношусь к безопасности сайта. Но согласитесь, что лучше перестраховаться, чем потерять важную информацию, или утратить свою репутацию в следствие мошеннических действий, произведённых злоумышленниками на вашем сайте. Ведь если через ваш сайт начнут распространять спам, или вредоносное программное обеспечение, то вы как программист, и ваша компания в целом прославитесь своей некомпетентностью и ненадежностью.