Защита сайтов на WordPress

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

Защита сайтов на WordPress

Первая и самая простая защита, это отсутствие мотивации у взломщика. Большинство сайтов просто не имеет смысла взламывать. Какой смысл от взлома сайта пресловутого Васи Пупкина, пишущего о выращивании фикусов? Разве что ради того, чтобы попробовать свои силы и умения. Но и этого вполне достаточно для беспокойства

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

Заметил, что с некоторых IP-адресов идёт аномальное количество запросов. Интересным является и распределение запросов по страницам сайтов. Эту статистику вы не найдёте в тех же рейтингах, т.к. там не всё можно увидеть, многое фильтруется и т.д. Понятно, что я не спешил с выводами и проверил подозрительные IP-адреса, что можно сделать через тот же WebNames.ru. Они не относились ни к одному из поисковиков или чему-то в этом роде. Основной же напор шёл на страницу wp-login.php, по крайне мере у сайтов на WordPress. Вы поняли?

Лично мой вывод сводится к тому, что кто-то планомерно подбирает пароль. Благо есть вероятность, что владелец сайта установит простенький, вроде: 12345, qwerty или типа того. Эта ошибка всё ещё очень распространена. Ну да при желании и настойчивости, можно подобрать и сложный пароль. Так что решил принять хоть какие-то меры по защите своих сайтов на WordPress, которыми и хочу поделиться с вами в данном посте./p>

Защита сайтов на WordPress через .htaccess

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

И так. Первый способ заключается в закрытии доступа к проблемному файлу wp-login.php. В тоже время, доступ должен остаться у вас, как автора блога. Набор требующихся нам директив выглядит следующим образом:

<Files wp-login.php>
order deny,allow
deny from all
allow from 127.0.0.1
</Files>

Их нужно добавить в конец файла .htaccess, который располагается в корневой директории вашего блога. Обращаю ваше внимание на то, что вместо 127.0.0.1 нужно подставить свой IP-адрес и или пространство IP-адресов. Как вы видите, у способа есть недостаток. В идеале он подойдёт тем у кого, как и у меня, статичный IP-адрес. Конечно, можно указать и пространство IP-адресов, например: 127.0.0.1/127.0.0.10 - или перечислить их через запятую, или в нескольких директивах allow from.

Можно пойти и от обратного, т. е. защитить сайт на Wordpress от конкретных IP-адресов. В этом случае я рекомендовал бы создавать запрет для блога в целом, а не для конкретного файла. С учётом сказанного, набор требуемых директив выглядит следующим образом:

<Limit GET POST PUT>
order allow,deny
allow from all
deny from 127.0.0.1
</Limiy>

Обращаю ваше внимание на то, что в данном случае директива order имеет значение allow,deny, т.е. обратную по сравнению с первым способ сортировку приоритетов. В начале директива allow, потом deny. Последнее слово остаётся именно за директивой deny (запрет).

Блокировка по IP-адресу очень хороша, но имеет и ещё один недостаток. Злоумышленник может использовать тот или иной прокси сервер, меня IP-адрес. Так что второй предложенный мной способ защиты сайта не слишком эффективен. Понятно и то, что человек может использовать того же Интернет провайдера, что и вы. Поэтому первый способ наиболее эффективен, если у вас статический IP-адрес.

Как вы видите, даже тут много условий. Чего уж говорить о полноценной защите сайта. Лично для меня, это выглядит чем-то из разряда фантастики. Тем не менее, возможно, что данная заметка вам поможет. Мне же остаётся только продолжать бороться за живучесть своего сервера и надеяться на лучшее. По крайней мере, я буду знать, что сделал всё возможное из того, что мог и умел по исправлению ситуации. В крайнем случае, планирую переехать на Reg.ru. Там хоть и чуть дороже, но и лимиты не такие драконовские как у SpaceWeb. Впрочем, я уже ни в чём не уверен. Везде свои заморочки, а переезд это всегда ещё тот геморрой. Удачи!

Короткая ссылка: http://goo.gl/CFHTSx

Twitter Facebook ВКонтакте Одноклассники Google+

15 комментариев:

Надежда Хачатурова
Написала Вам такой комментарий! А ноут взял и отключился. Вот и попробовала в блог через хостинг войти. :)
Хотела спросить, как создать пространственный зазор в IP, если у меня только 7 цифр статичные, а в остальных даже количество меняется. Вписала очередной новой строчкой. Но пусть так, чем как было.
Спасибо огромное!
Константин Кирилюк
У меня тоже хоть IP-адрес и статичный, но иногда меняется и приходится вносить изменения в .htaccess. Хотя, в принципе, как вы и писали у себя, можно же указать не полный IP, например:

deny from 127.0.0.
Надежда Хачатурова
Пока пусть будет целый. На хостинге пароль сделала ух какой, а зайти туда раз-два в день - это даже хорошо, заодно посмотреть нагрузку. Выросла за сутки в три раза, но до критической еще есть где погулять. Ребята в курсе. Предложила им сегодня заблокировать аккаунт на денек. Отказались - преждевременно. Правда, устала очень. Есть же и другие дела. Вам спасибо еще раз и много раз!
Насчет файла htaccess пока до конца не поняла ничего,потому что вставляю коды один за другим, и выдает ошибку сервера. Вероятно, что-то противоречит одно другому.
Какой-то опять доброжелатель появился с комментарием, но я его в папку спам пока заслала. Спрашивает, что же я такого сделала Игорю, что у него так крышу снесло. Вежливые такие, сволочи.
Константин Кирилюк
Ну, тут давайте всё таки уточним. Как следую из вашей стать вы вставили строки:

Order Allow,Deny
Allow from all
Deny from 213.87.240.227 213.87.241.187

Не буду что-то утверждать, но так оно работать вроде как не сможет. Во первых надо определить секцию (Files или Limit) и каждый IP-адрес в отдельную строку, т.е. лучше сделать так:

<Limit GET POST PUT>
order allow,deny
allow from all
deny from 213.87.240.227
deny from 213.87.241.187
</Limiy>

Это то, что должно быть в вашем .htaccess вместо тех строк, что есть сейчас (т.е. указанных выше). Не знаю как сказать ещё более понятней.
Надежда Хачатурова
Вообще удалила запрет - бесполезно с ботами спорить. Там за сегодня их сотни, причем, статистика показывает, что это США, а наши сервисы определение - Россию. Даже нашла сайт с черными списками IP, где их тоже нет ни одного.
Оставила только разрешение себе. Не об этом хотела спросить. Где-то прочитала, что "вам нужно создать НОВЫЙ файл" для того, чтобы ввести какие-то другие переадресации, например. Вот и думаю: он же один в папке, значит, все коды (если вдруг дальше пойду крушить науку) просто новыми абзацами вставлять? Или хватит уже? А то понравится экспериментировать.
Константин Кирилюк
Ну если нужно оставить доступ только себе, то это надо делать только для отдельных файлов или заблокируете всем доступ к своему блогу... логично?

На счет переадресации не понял... зачем вам что-то куда-то переадресовывать. Надежда, определитесь с задачей, я читать мысли не умею.
Надежда Хачатурова
Все, хватит мучить Вас на сегодня. Пошла смотреть сейчас в блокнот, что вставлено было, а он, зараза, не сохранился при отключении ноутбука. До утра доживу, наверное. Мне нужно именно запретить доступ к wp-admin, куда они рвались. То, что Вы мне писали в комментарии (полномасштабный запрет). Хотела убедиться, что все сделала правильно. У себя уже не могу эти технические тонкости обсуждать. :) Мания преследования!
Константин Кирилюк
Ну, теперь стало понятней. В принципе, я не знаю чего они рвутся к папке wp-admin/ ведь полюбому надо авторизоваться через wp-login.php... ну да ладно. Для того чтобы закрыть доступ к папке wp-admin/ можно установить пароль на папку из панели управления хостингом в файловом менеджере (хотя, такое есть не у всех). Есть и более простой способ блокировки. Для этого нужно создать файл .htaccess в папке wp-admin/ и прописать то, что вы и предлагали или что-то типа такого:

Order Allow,Deny
Deny from all
Allow from xxx.xxx.xxx.xxx

В данном случае в Allow from прописываем свой IP-адрес.
Константин Кирилюк
P.S. приведённый пример запретит доступ к папке wp-admin/ для всех, кроме указанного IP. Оно?
Надежда Хачатурова

order deny,allow
deny from all
allow from 217.xx.xxx.xx (здесь цифры)
Удалила буковку. Иначе нельзя же код ставить в комментарий?
Так это не то?
Вы мне не ответили: если он есть, этот htaccess, писать же туда же? После последнего слова wordpress? Сейчас у меня именно это с несколькими моими ip. Даже не попробовала, пустит ли меня такой код, тупая.
Надежда Хачатурова
Костя, у меня просветление! Поняла, что файл можно создать в отдельно взятой папке.
Надежда Хачатурова
Вероятно, я где-то описалась. Рвутся в wp-login.php
Константин Кирилюк
Разбираемся по ходу публикации.

1. В allow from не надо оставлять крестики, это просто общий формат IP-адреса. Там надо прописать ваш IP-адрес или его часть. Если вы хотите указать несколько IP-адресов, в данном случае доступ которым будет разрешен надо прописывать из отдельными строками, например:

allow from 127.0.0.1
allow from 127.0.0.2

2. Да, для защиты отдельной папки, например wp-admin/, понадобится создать файл .htaccess (с точкой в начале) в самой папке, которую нужно защитить и прописать соответствующие правила.

3. Если нужно сделать запрет на доступ к файл wp-login.php нужно открыть файл .htaccess в корневой папке сайта и дописать в конец:

<Files wp-login.php>
order deny,allow
deny from all
allow from 127.0.0.1
</Files>

Вместо 127.0.0.1 прописать свой IP-адрес.
Надежда Хачатурова
Костя, начну с пункта 3. Все так и сделано - все прописано. Это в комментарии намудрила. Никаких крестиков. Самое главное, что код правильный. Это уже хорошо.
Пункт 2 усвоила. 1 - тоже.
Сижу тут спокойно общаюсь, а опять бросок был просмотров на 500 из трех посетителей. Скачала access_log. Что там делается, блин! Любуюсь! Если бы еще все понимала, что смотреть. IP вижу, браузеры и прочую хрень понимаю, а всякие цифры еще придется постигать.
Константин Кирилюк
Ну про access_log тоже уже много раз написано... надо поискать просто о тамошней структуре данных :)
Отправить комментарий