Защита сайта

Защита Joomla (часть 1). Безопасный пароль

 

На определённом этапе некоторые владельцы сайтов и веб-мастера задаются вопросом безопасности. Согласитесь, защита сайта - это важный этап в его проектировании и эксплуатации. Кто-то делает это ещё на этапе формирования технического задания, кто-то на конечной стадии создания сайта, а кто-то после взлома его ресурса. Защищать или не защищать, а также какие меры применять для защиты сайта и сколько на это можно потратить, каждый решает сам для себя. Это зависит от многих факторов. Но, я думаю, основной это то - на сколько большие потери от взлома сайта будут для владельца. Если это личный блог в котором вы рассказываете о своём походе на рыбалку, то тратить тысячи гривен на его защиту, вероятно, будет лишним. Если это сайт фирмы, которая предоставляет услуги по информационной безопасности или же это сайт, от работы которого зависит непосредственная прибыль фирмы (например, интернет-магазин), то безопасность такого сайта играет первоочередную роль и на её организацию можно потратить достаточно большую сумму денег. В данном случае защита сайта - первоочередная задача.

В интернете существует большое количество ресурсов, на которых можно найти информацию о том, как защитить свой сайт от взлома. При написании этой статьи я буду руководствоваться этой информацией, а также личным опытом применения её в своей практике. В предыдущих статьях я уже затрагивал тему безопасности, например, «Обзор jSecure Authentication. Защита админки Joomla», «Обзор Siteguard. Проверка сайта на вирусы», «Безопасный пароль». Я постараюсь рассмотреть этот вопрос с различных позиций. Разделяя внутренние, внешние, локальные и сетевые угрозы (это лично моя обобщённая «классификация» угроз, для облегчения написания статьи). Под внутренними угрозами я понимаю человеческий фактор (случайно написал пароль доступа к административной зоне сайта на бумажке на мониторе, случайно забыл сменить права доступа к файлам после обновления компонентов сайта и так далее) и недобросовестность людей, работающих над сайтом (специально отдал пароль от административной зоны сайта конкурентам, специально установил вредоносное расширение и так далее). Под локальными угрозами я понимаю опасность, идущую от заражённого вирусом компьютера, с которого Вы работаете с FTP и административной зоной сайта. Под сетевой – SQL, PHP инъекции, межсайтовый скриптинг (XSS), атаки типа «Shell», «Upload File», «URL», «Form», «Cookie», «Address Bar», «Live Script» и так далее.

Сейчас очень многие предпочитают системы управления контентом в качестве «платформы» для создания сайта. Помимо удобства и функциональности это несёт массу проблем (база данных, сторонние расширения (компоненты, модули, плагины) и так далее) касательно обеспечения безопасности. При создании статических сайтов, немного легче обеспечить более надёжную защиту. Но хочу сразу отметить, что ни статические ни динамические сайты не защищены от взлома на 100%. Описанные в этой и других статьях способы повышения защищённости сайта от взлома не дают 100% гарантии того, что Ваш сайт никто и никогда не взломает. Эти способы всего лишь уменьшают процент вероятности взлома. Вспомните о LulzSec и Anonymous, вспомните какие ресурсы были ими скомпрометированы! А у этих организаций, наверняка, есть деньги, оборудование и высококвалифицированные специалисты для обеспечения защиты своего сайта.

Рассмотренные мною способы защиты могут быть реализованы как бесплатными, так и платными средствами. Некоторые из методов защиты будут просты в реализации и дальнейшей эксплуатации, а некоторые доставят массу хлопот как при реализации, так и при дальнейшем использовании и модернизации сайта. Различные способы будут давать различную степень защищённости для разных типов угроз (внутренние, внешние, локальные, сетевые). В основном я буду рассматривать защиту сайтов на примере системы управления сайтами с открытым кодом Joomla 1.7. Могу сказать, что однозначного ответа, что лучше, платные системы с закрытым исходным кодом или бесплатные с открытым, нет. Вероятно, что самым безопасным будет создание собственной системы управления контентом, расположенной на собственном хостинге… Но это может быть дорого и долго.

Многие способы и советы будут применимы как для любой системы управления контентом, так и для статических сайтов.

Под негативными последствиями взлома сайта я понимаю: модификацию контента сайта, внедрение вредоносного кода, внедрение ссылки, перенаправляющей на заражённый ресурс и так далее. То есть всё, что влечёт за собой вредоносные последствия для Вас и Ваших пользователей в результате модификации кода сайта со стороны.

Ниже приведу список того, что я рекомендую делать для повышения безопасности Вашего сайта на Joomla.

  • Выбирайте надёжный хостинг с хорошей технической поддержкой и репутацией.
  • Организуйте надёжное и постоянное создание резервных копий сайта.
  • По максимуму ограничьте права доступа к файлам и папкам пользователям.
  • Используйте возможности настройки сервера при помощи .htaccess файла для повышения безопасности сайта.
  • Отключите Register Globals и Safe Mode.
  • Используйте выделенный IP адрес для Вашего сайта.
  • Уберите файл конфигурации Joomla (configuration.php) за пределы папки public_html.
  • Используйте SSH-доступ к сайту.
  • Используйте SSL-сертификаты.
  • Делайте «зеркало» сайта на другом хостинге.
  • Настройте ведение логов.
  • Обновляйте Joomla и сторонние расширения до самых последних версий.
  • Скройте стандартный путь доступа к панели управления сайтом на Joomla.
  • Ограничьте доступ по IP адресу к административной панели сайта, FTP и панели управления хостингом.
  • Уберите «следы» того, что сайт сделан на Joomla.
  • Используйте расширения для защиты сайта Joomla от взлома.
  • Используйте безопасные пароли. Храните их в зашифрованном виде.
  • Используйте токен для аутентификации на сайте.
  • Используйте уникальный префикс для базы данных сайта.
  • Используйте ЧПУ.
  • Обеспечьте круглосуточную поддержку и модерацию Вашего сайта.
  • Чётко разграничьте права доступа для всех пользователей и групп.
  • Организуйте оповещения администратора сайта на электронную почту и телефон о важных (с точки зрения безопасности) событиях на сайте.
  • Не устанавливайте ненужные Вам расширения. Пользуйтесь «надёжными» расширениями и шаблонами сайта, загруженных с официальных ресурсов их разработчиков.
  • Используйте капчи и «системы автоматической фильтрации спама».
  • Необходимо обеспечить безопасность загружаемых пользователями файлов с\на сайт.
  • Не допускайте заражение вирусами Вашего локального компьютера, с которого Вы работаете с сайтом.
  • Проведите аудит безопасности Вашего сайта, включающий анализ кода.
  • Постоянно тестируйте свой сайт.
  • Проверяйте свой сайт на наличие вредоносного кода.
  • Отслеживайте рейтинг своего сайта в «репутационных системах».
  • Храните в тайне информацию о системе управления контентом, её версии и о сторонних расширениях.
  • Информируйте пользователей о том, что сайт был взломан.
  • Читайте новости по безопасности.
  • Решите, нужна ли Вам регистрация пользователей.

Защита компьютера от вирусов

Безусловно, защищённость Вашего персонального компьютера (ноутбука, нетбука, планшета и так далее), с которого Вы работаете с сайтом (получаете доступ к FTP, базе данных, административной зоны сайта) не влияет напрямую на безопасность Joomla. Но не стоит забывать, что некоторые вирусы нацелены специально на кражу паролей от FTP, базы данных и административной зоны сайта (или вообще на кражу любой связки логин\пароль). Также злоумышленник может получить возможность удалённого управления Вашим компьютером и в этом случае ни безопасные пароли, ни ограничения по IP, ни сертификаты шифрования, ни даже токены, не помешают ему сделать с Вашим сайтом абсолютно любые действия.

Если же Ваш персональный компьютер заражён не описанным выше вирусом, а например, вирусом заражающим *.EXE файлы, то он может заразить файл, который Вы выкладываете на сайт для загрузки Вашими пользователями. А это удар по репутации сайта и, возможно не прямое, но всё равно «заражение» Вашего ресурса. Ведь пользователь, скачавший файл может легко заразить свой компьютер. Более того! Современные антивирусные средства (например, Norton Internet Security, Kaspersky Internet Security и так далее) обладают весьма эффективными средствами обнаружения уязвимостей нулевого дня (0day) и средствами блокировки вредоносных сайтов. Например, Ваш компьютер заражён вирусом. Вы выкладываете на свой сайт, не подозревая ни о чём, заражённый файл. Пользователи начинают скачивание Вашего файла. Если их антивирусные средства (например, Norton Internet Security, Kaspersky Internet Security и так далее) обнаруживают заражённый объект, то они обнаруживают и источник, с которого был получен этот объект, то есть адрес Вашего сайта. Антивирусные средства моментально передают эти сведения в репутационные антивирусные базы (например, Norton Community Watch, Kaspersky Security Network (KSN)) своих разработчиков. При этом не только о непосредственно обнаруженном объекте, но и об источнике. То есть адрес Вашего сайта. А из этих баз сведения поступают на сотни тысяч других компьютеров с установленым антивирусным программным обеспечением. И вот Ваш сайт в чёрном списке. Репутация подорвана. Несмотря на то, что факта непосредственного взлома не было – негативные последствия на лицо.

Не стоит оставлять пароли к сайтам в FTP клиентах, браузерах и не защищённых документах (например, *.DOCX). Если для доступа к FTP сайту Вы используете, например FileZilla FTP Client или Total Commander, то убедитесь в том, что хотя бы пароль хранится в зашифрованном виде. Лучше вовсе не оставлять параметры доступа, логин и пароль сохранёнными в подобных программах. Так как есть вирусы, которые могут находить и извлекать учётные данные и настройки доступа к сайту и передавать их злоумышленнику. То же самое относится к сохранению паролей доступа к базе данных, панели управления хостингом и административной зоне сайта. Не стоит сохранять их в браузерах. Или хотя бы побеспокойтесь об их защите.

Безопасный пароль и доверенные люди

Но как бы хорошо, в «программно-аппаратном смысле», Ваш компьютер не был защищён от вирусов, ворующих пароли, всегда есть вероятность того, что кто-то из администраторов (если их несколько) или модераторов с повышенными правами доступа к административной панели попросту отдаст учётные сведения Вашим конкурентам. Или же один из сотрудников, занимающийся администрированием сайта использует одну и ту же связку логин\пароль на всех сайтах. В этом случае существует вероятность выяснить логин\пароль на одном из сайтов и применить для доступа к Вашему (к административной зоне). От этого тоже можно принять некоторые меры, о которых поговорим в дальнейшем. Я настоятельно рекомендую максимально чётко разграничивать права доступа каждого модератора и администратора к административной зоне сайта, FTP, базе данных и так далее. Тем более, что Joomla позволяет это делать штатными средствами. Не стоит давать людям прав больше, чем это им необходимо для нормальной работы с сайтом. Если Вы владелец сайта и над ним работает целая команда, то, желательно, иметь доверенное лицо, которому можно доверить все логины и пароли от всех учётных записей (административной зоне сайта, FTP, базе данных и так далее), а всем остальным выдать минимальные права. Желательно, чтобы этот человек был «основным создателем» сайта. Но это сложный «кадровый» вопрос.

Отмечу, что защита сайта Joomla и безопасный пароль это неразделимые понятия. Так как попав в административную зону сайта, злоумышленник может сделать очень многое.

Более подробно о защите и лечении своего персонального компьютера Вы можете прочитать в моих предыдущих статьях: «Бесплатная защита компьютера от вирусов. Методы защиты компьютера от вирусов», «Лицензионные антивирусы бесплатно», «Обзор Malwarebytes Anti Malware 1.50. Бесплатный антивирус», «Зоркий глаз. Антивирус для флэшки».

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

  • Пароль должен быть длинный. Желательно от 8 символов и более. Лучше от 16.
  • Для каждого аккаунта пароль должен быть уникальный. Не используйте один и тот же пароль несколько раз.
  • Используйте строчные и прописные буквы.
  • Используйте цифры.
  • Используйте символы.
  • Не используйте словарные слова. Например: «сайт», «книга», «монитор». Лучше что-то типа такого: «ыврвне», «гфажкшр» и так далее.
  • Не используйте пустые пароли.
  • Используйте (по возможности) сочетание нескольких алфавитов. Например русского, украинского, английского.
  • Особо важные пароли периодически меняйте. Например, раз в месяц.
  • При создании нового пароля следите за тем, чтобы он отличался от всех остальных. При чём это отличие должно быть существенным.
  • Не используйте в качестве пароля любые данные (или их сочетания), которые легко сопоставить с Вами. Например: Ваше имя, фамилия, дата рождения, адрес электронной почты и так далее.

Пример безопасного пароля: GG67ej4*j4b%d2vHyq8.

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

Но помните, что самый безопасный пароль это не только самый сложный пароль, тот пароль, о котором знаете только Вы.

Считаю, что надёжность паролей (их «секретность») и добросовестность всех людей, отвечающих за проект очень важный контур в защите любого сайта.

Чем квалифицированней и опытней каждый участник проекта, тем лучше. Однако, даже очень опытный Java программист может не знать некоторых банальных вещей касательно безопасности. Поэтому, не лишним будет провести некий «урок по безопасности», на котором опытный и знающий человек, предварительно подготовившись, расскажет остальным меры по повышению безопасности сайта. Особенно, это относиться к тем, кто имеет доступ как минимум к административной зоне сайта. Не стоит забывать, что если проект большой и серьёзный, если он приносит деньги и над ним работают несколько людей, то каждый должен заниматься своей частью работы.

Не выкладывайте в общий доступ файлы с паролями, конфигурацией и резервными копиями Вашего сайта! Это может крайне пагубно сказаться на его защите. Так как, например, при анализе базы данных можно узнать много «интересного» и конфиденциального о Вашем сайте, чтобы в дальнейшем совершить на него успешную атаку.

Защита сайта - сложный и важный вопрос. Защита сайта Joomla имеет свои особенности, как в прочем в случае с любой другой системой управления содержимым. Отмечу, что безопасный пароль является самым простым (в плане реализации) средством повышения безопасности. Но даже самый безопасный пароль не гарантирует высокий уровень защиты.

В следующей статье «Защита Joomla (часть 2). Безопасный хостинг» я рассмотрю более подробно вопрос создания, хранения и использования паролей для доступа к панели управления сайтом, хостингом, базе данных и так далее. Так же будет рассмотрена тема хостинга с точки зрения его стоимости и функциональных возможностей, повышающих защищённость Joomla.

Похожие материалы
Автор статьи – Хорошевский Алексей

Хорошевский Алексей Примерно с 2008 года и по сегодняшний день создаю сайты «под ключ» на Joomla и WebSite X5. Также занимаюсь их доработкой, SEO-продвижением, контекстной рекламой, защитой от взлома и оптимизацией скорости загрузки сайта.

Кандидат технических наук по специальности «Информационные технологии».

На этом сайте есть контакты и информация обо мне. На нём Вы найдёте примеры моих работ, а также перечень и цены предоставляемых услуг.

 

Полезные ссылки: