все о заработке в интернете
инфо-бизнесе с нуля, электронной коммерции
Мой профиль Вконтакте

30 способов защитить свой блог от любой хакерской атаки с помощью плагина iThemes Security

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

защита блога с помощью ithemes security

Про различные способы защиты блога вы можете ознакомиться в серии моих статей:

  1. 5 способов защиты блога на WordPress
  2. Отбей любую хакерскую атаку

И так, узнал я об атаке благодаря Яндекс Метрике, которая стоит на сайте. От них я получил вот такое письмо:

dostupnost

 

Начал все проверять. Зашел в админ-панель своего хостинга и увидел такую картинку:

site-attack

Как вы видите, нагрузка на мой блог составила почти 200%. Красным отмечены пиковые значения. Я связался со службой поддержки, чтобы выяснить, что происходит. Они мне сказали, что на сайт идет атака ботов. Это можно посмотреть по логам сайта. Делается это так: заходите через фтп (я пользуюсь FileZilla) к себе на блог, там будет папка с логами (называется logs), открываете ее и скачиваете на рабочий стол файл с логами. Открываете его с помощью notepad++ и смотрите, кто и с каких адресов заходил к вам. Я увидел вот такую картинку:

log-file

Здесь видно, что идут атаки с одного IP и маскируются под боты Гугла. И еще атака идет через xml-rpc. Как от этого всего избавиться я расскажу дальше.

Служба поддержки МакХост посоветовала мне установить плагин iThemes Security (бывший Better WP Security).

Настройка плагина iThemes Security

Писать о том, что он может делать и для чего нужен, не буду. Просто скажу, что там более 30 настроек, которые помогут обезопасить блог.

Скачать плагин можно либо здесь, либо через админ-панель блога: плагины > добавить новый > в поиске вводите iThemes Security, и устанавливаете плагин и активируете его.

Когда вы зайдете в настройки, вы увидите следующую панель:

dashboard

Ниже будут рекомендации, что нужно исправить. Они поделены по степени важности. Красным выделено то, что нужно обязательно исправить, желтым – рекомендуется исправить, синим – то, что можно не исправлять. Напротив каждого пункта будет кнопка «fix it». Нажимать её не рекомендую. Мы все сделаем с вами вручную.

Переходим во вкладку Settings. Здесь вы можете для удобства вашей работы добавить свой IP в белый список. Жмете на кнопке и всё.

whitelist-ip

Глобальные настройки

global-settings

Прежде чем что-либо делать, сделайте резервную копию базы данных и скопируйте на компьютер все изменяемые файлы!!!

После настройки каждой секции обязательно сохраняемся > жмем > save changes.

Write to Files – ставим здесь обязательно галочку, тем самым разрешая плагину вносить изменения в файлы wp-config и htaccess.

Notification Email – на данный адрес будут высылаться уведомления.

Backup Delivery Email – на этот адрес будут приходить резервные копии баз данных.

hostlockout

Host Lockout Message – здесь отображается сообщение, которое будет выводиться, когда будет блокироваться хост или компьютер.

User Lockout Message – сообщение, которое выводится заблокированному пользователю.

blacklist

Дальше идут наиболее важные настройки.

Blacklist Repeat Offender – ставим галочку. IP адрес пользователя будет добавлен в бан, если он сделал несколько попыток войти в вашу админ-панель блога, путем подбора имени пользователя, либо пароля.

Blacklist Threshold – количество попыток, после которого IP-адрес будет блокирован. Я поставил 3 попытки. Меньше не рекомендую.

Blacklist Lookback Period – насколько дней IP добавляется в черный список.

Lockout Period – время в минутах, на которое пользователь или хост блокируются при первичных нарушениях (без добавления в черный список). Т.е. если кто-то неудачно подбирает пароль к админ-панели, то он временно блокируется на 15 минут. Если после этого он продолжает попытки и получает еще 2 временных бана, то после этого хост или пользователь отправляются в черный список.

Lockout White List – добавление IP адресов в белый список. Например, если у вас статический адрес, то вы его можете добавить в белый список.

emaillockout

Email Lockout Notifications – если галочка стоит, то вам на почту будут приходить уведомления с адресом заблокированного хоста.

sitelockout

картинка кликабельна

Log Type – здесь ставим File Only, чтобы не перегружать базу данных.

Path to Log Files – путь к файлом логов. Здесь все ставится автоматически.

Остальные пункты не отмечаем.

Hide Security Menu in Admin Bar – у вас в админ-панели вверху будет вкладка Security. Если вы не хотите её видеть, то ставите в этом пункте галочку.

С глобальными настройками разобрались. Двигаемся дальше.

 404 Detection – Обнаружение ошибок 404

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

aboutlockouts

Здесь приведена базовая информация по блокировке, которую мы указали в глобальных настройках.

404-detection

404 Detection – ставим галочку, т.е. активируем функцию определения таких ошибок.

Minutes to Remember 404 – количество минут, в течение которого записываются лоакуты. Я поставил 10. Т.е., если какой-то бот начинает сканировать ваш сайт в поиске уязвимостей в течение одной минуты и получает ошибки 404, потом делает перерыв и через минуту начинает снова, то скоро он получит бан.

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

Error Threshold – количество ошибок, после которого хост блокируется. Стоит 20.

404 File/Folder White List – плагин сюда записал по умолчанию файлы и папки, которые обычно могут выводить ошибку 404, тем самым он не будет их учитывать. Если вы знаете, что у вас на блоге какая-то папка выдает ошибку 404, то вы можете занести её сюда. Я оставил все по умолчанию

Ignored File Type – типы файлов, которые будут игнорироваться.

Away Mode

awaymode

Данная функция позволяет вам закрывать доступ к админ-панели блога в определенное время суток. Например, вы знаете, что никогда не заходите в админ-панель по ночам или уехали в отпуск. Таким образом, вы можете выставить время, когда вход в админку будет заблокирован. Здесь можно выставить daily – т.е. каждый день активировать функцию, либо one time – одноразово. Обратите внимание на временную зону.

Banned Users – заблокированные пользователи

 

bannedusers1

Default Blacklist – данная функция позволяет запретить доступ хостам и User Agent с определенных сайтов, которые были уличены в спамных атаках. Он разработан порталом HackRepair. Я его пока что не стал включать, т.к. там в списках обнаружил User Agent, который называется Yandex. Экспериментировать не стал.

Ban Users – активировав данную функцию, вы увидите еще две строки: Ban Hosts и Ban User Agents. В строку Ban Hosts вы вносите IP-адреса, с которых идет атака на ваш сайт. Как их находить, я описал в начале статьи.

Brute Force Protection – защита от мощных атак

bruteforce

Обязательно отмечаем пункт Enable Local Brute Force Protection!!!

Max Login Attempts Per Host – максимальное число раз доступа к сайту для одного хоста. Я выставил 5 раз. Если кто-то пытается ввести 5 раз кряду неверные логин или пароль, то такой человек блокируется.

Max Login Attempts Per User – попытки для отдельного пользователя.

Minutes to Remember Bad Login – какое количество времени плагин будет помнить неудачные попытки зайти на ваш блог.

Automatically ban «admin» user – плагин будет автоматически блокировать пользователей, которые вводят дефолтное имя admin.

!!! Обязательно удалите ваше имя пользователя как admin, т.к. этот логин дается вам по умолчанию, когда вы заводите блог. Это знают все хакеры!!!

Как это сделать. Заходите в админ-панель блога. Выбираете > пользователи > добавить нового. Придумываете логин и пароль. Выставляете роль администратора. Заходите на блог под новым именем. Идете во вкладку пользователи > все пользователи. Жмете удалить пользователя с именем admin. Обязательно поставьте галочку там, где вам предложат связать все опубликованные статьи с новым именем. Таким образом, опубликованные записи будут перенесены в новый профиль.

Database Backups – резервные копии базы данных

database-backups

Backup Full Database – ставим галочку на полную резервную копию базы данных.

Backup Method – я поставил присылать мне её на e-mail. Сохранять на хостинге не рекомендую, т.к. это может занять слишком много пространства.

Backup Location – здесь будут храниться копии баз данных, если вы выбрали способ Save Locally.

Обязательно поставьте галочку напротив Compress Backup Files. Файлы базы данных будут приходить к вам на почту в сжатом виде.

database-tables

Exclude Tables – здесь вы можете указать таблицы, которые не будут сохраняться в базе данных. Это могут быть таблицы, создаваемые какими-либо плагинами. По умолчанию здесь внесены таблицы, создаваемые самим плагином iThemes Security. Я сюда больше ничего не стал добавлять. Если вы наверняка знаете, что какие-то таблицы не нужны для сохранения, можете их внести сюда.

Schedule Database Backups – активируем функцию создания резервных копий по расписанию.

Backup Interval – интервал. Я поставил каждые 3 дня. Вы можете поставить каждый день.

File Change Detection – определение изменения файлов

filechange

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

Split File Scanning – данная функция позволяет разбить сканирования на 7 частей, т.е. по папочкам. Таким образом будет проведено равномерное распределение сканирования в течение дня, что позволит снизить нагрузку на блог.

Include/Exclude Files and Folders – добавление/исключение папок и файлов для сканирования. Например, если у вас стоит плагин кеширования, то папку, куда сохраняются файлы лучше исключить из сканирования, т.к. плагин будет постоянно определять изменения и вашу почту засыплет сообщениями. При наведении на файл или папку в пункте Files and Folders List, у вас появится знак минуса в красном кружочке. Выбираете папку cache и нажимаете на него. У меня просто не оказалось такой папки.

ingnorefiles

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

Email File Change Notifications – вам на почту будут присылаться уведомления о вносимых изменениях. Если их делали не вы, то нужно будет проверять.

Display File Change Admin Warning – в админ-панели блога будет отображаться предупреждение о том, что какие-то файлы были изменены.

 Hide Login Area – скрываем адрес для входа в админ-панель

Очень важный пункт. Здесь вы меняете стандартный адрес входа в админ-панель site.ru/wp-login.php, на произвольный.

loginarea

Hide Backend – активируем функцию.

Login Slug – латинскими буквами вводим новый адрес для входа. Используйте что-то нестандартное, но запоминающееся.

Enable Theme Compatibility – включаем данную функцию, если у вас возникли проблемы с доступом в админку, после изменения ее адреса. Причиной может быть несовместимость с темой. Я сразу включил данную функцию.

Остальное оставляем по умолчанию.

Malware Scanning – поиск вредоносного ПО

malewarescan

Данная функция позволяет сканировать вашу тему на предмет наличия вредоносного программного обеспечения. Вам нужно будет получить API ключ по ссылке. Регистрируетесь на сайте virustotal.com, и получаете ключ. Эту функцию я не активировал, т.е. можно самому вручную проверить на специализированных сайтах. Кроме того, у меня стоит отдельный плагин.

Шифрование SSL

Данную функцию я не включал, так как у меня нет протокола SSL. Уверен, что и у вас его нет, поэтому ни в коем случае не включайте данную функцию. Про этот протокол можете почитать в моей статье.

 Strong Passwords – надежные пароли

Как придумывать надежные пароли, вы можете узнать из моей статьи: как придумать надежный пароль.

strong-password

Активируем функцию принудительного создания надежных паролей. Указываем минимальную роль, для которой должен быть придуман хороший пароль. Я поставил Администратор (пароли хранить можно в keepass, или roboform).

 System Tweaks – тонкая настройка системы

Это дополнительные настройки для еще более надежной защиты. Здесь я сильно расписывать все не буду. Просто сделайте, как показано на рисунке.

systemtweaks

systemtweaks1

WordPress Tweaks — Твики WordPress

Это также дополнительные настройки.

wordpresstweaks

Generator Meta Tag – удаляет мета тег generator из файла header.php, т.е. хакер не будет знать вашу версию WordPress.

Windows Live Writer Header – удаляет заголовок редактора Windows Live Writer. Если вы им не пользуетесь, то эту функцию не нужно активировать.

EditURI Header – удаляет заголовок RSD (Really Simple Discovery). Если вы не интегрировали блог с удаленными сервисами XML-RPC, такими как Flickr, то эта функция не нужна. Я, на всякий случай, активировал ее.

Comment Spam – комментарии от ботов, у которых не указан user agent, будут блокироваться. Я не активировал, т.к. у меня стоит специальный код, который блокирует такие комментарии.

randomversion

Display Random Version – данная функция, там где должна отображаться версия WordPress, будет заменять ее на произвольную. А там, где ее можно удалить, то она будет удалена.

File Editor – данная функция отключает файловый редактор, который расположен в админ-панели вашего блога. Т.е., если вы не редактируете файлы блога через встроенный в Вордпресс редактор, то можете активировать эту функцию. Я делать это не стал.

XML-RPC – на этой функции хотел бы остановиться подробнее. Я выставил в настройках полное отключение этой функции, т.к. не пользуюсь средствами удаленной публикации. Что касается RSS, то здесь ничего сказать не могу, влияет ли она на публикацию RSS. А отключил я её, потому что именно через эту функцию и шла атака на мой блог. Это я увидел из файлов логов. Это показано на рисунке.

xmlrpc

Replace jQuery With a Safe Version – замена версии jQuery на безопасную. Здесь я ничего делать не стал, т.к. не совсем понял зачем она нужна. У меня плагин вообще не смог определить версию jQuery. В общем, оставил без изменений.

Login Error Messages – отключаем сообщения об ошибках, когда пользователь не может войти в систему.

Force Unique Nickname – заставляет пользователей придумывать уникальные имена, чтобы они не совпадали с теми, которые обычно используют боты или хакеры.

Disable Extra User Archives – отключает архивы пользователей, если там 0 записей.

Основные настройки сделаны. В пункте Advanced рекомендую сделать вам только следующее. Смените WordPress Salts. Поставьте галочку и нажмите «сменить». Про них вы можете подробно почитать в интернете.

И еще один пункт. Обязательно смените префикс у таблиц базы данных. По умолчанию они имеют вот такой префикс wp_. Обязательно сделайте резервную копию базы данных. Отмечаете галочку и жмене «сменить префикс».

wpprefix

Наша настройка практически завершена. Перейдите на главную страницу плагина и посмотрите, что у вас получилось. После всех настроек у меня остался лишь один пункт, отмеченный красным. Это поиск вредоносного ПО. Нажимать кнопку Fix it я не рекомендую.

И последний момент. В конце страницы вы можете увидеть вот такую картину.

filepemission

Здесь показаны права доступа к определенным файлам и папкам блога. Здесь вы видите рекомендуемы и текущие значения. Желтый – это предупреждение. Т.е. большинство указанных файлов и папок нужно закрыть для записи.

Через FileZilla заходите в корено блога, выбираете папку или файл и изменить права доступа. Ставите рекомендуемые плагином.

pravadostupa

И еще одна фишка, которая поможет отбить атаки ботов с определенных IP адресов. Вы помните, что мы вносили их в плагин в одном из пунктов. Но сделать это можно и вручную. Для этого открываем файл .htaccess в notepad++ и прямо сверху пишем следующую команду:

Order allow,deny
Allow from All
Deny from 172.16.32.64
Deny from 172.16.32.64

Если несколько IP, то пишем их с новой сроки, как указано в коде.

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

Если вам была полезна данная статья, то поделитесь ей в социальных сетях.

С уважением, Александр Пузатых

Понравилась статья? Поделитесь с друзьями!