NGINX -- нетривиальная защита админки WP / любой CMS -- делюсь

1 2345 6
K5
На сайте с 21.07.2010
Offline
209
#31
404, конечно.

тогда чтобы стартпост не был половинчатым, остальные реврайты/редиректы в студию, ибо сказал что боты не поймут про вордпресс, а в коде только /wp-admin и wp-login.php "спрятал"...

аська 45два48499два записки на работе (http://memoryhigh.ru) помогу с сайтом, удалю вирусы, настрою впс -> отзывы ТУТ (/ru/forum/836248) и ТАМ (http://www.maultalk.com/topic140187.html) !!!всегда проверяйте данные людей, которые сами пишут вам в аську или скайп!!!
G
На сайте с 06.08.2012
Offline
59
#32

Ребята, я уже второй день смотрю за вами запасясь попкорном :)

ну, а если серьезно, то Jovian - молодец! но действительно нашёл выход в лично его ситуации, который не всегда подойдёт остальным и может не идеальный, но большую часть пунктов, которые были поставлены - решены не так уж и плохо. вот только одно мне непонятно, что WapGraf может предложить? он только критикует, но реальных предложений, заменить что-то на что-то я не услышал.

были задачи :

[выполнено] 1. Отсечь ботов.

[спорно] 2. Снизить нагрузку на сервер -- отдавать 404 средствами NGINX, а не CMS, не пропуская к PHP.

[спорно] 3. Скрыть использование/админку WP и для обычных юзеров, а не только ботов.

[выполнено] 4. Не модифицировать исходник WP (не переименовывать wp-login.php и прочее).

[выполнено] 5. Возможность без проблем юзать свой сайт с динамического IP. Тупо "allow $myip" тут совсем не подходит.

[выполнено] 6. Удобство.

[выполнено] 7. Никаких плагинов WP -- смерть им всем, ибо жутко кривые часто и тормозят всю систему.

WapGraf привязался к двум спорным моментам, но не предложил чего-то иного!

по мне так, если в п.3 хочется скрыть использование CMS, то тогда это сделать очень сложно, даже для пользователей, т.к. любой маломальский плагин пробивается по базе или в хедере видно где расположен css.

по поводу нагрузки (п.2) я ничего сказать не могу, но, по логике вещей, закрытие через NGINX всё же менее ресурсоёмкое, чем проходя через NGINX отбивать ботов или пользователей средствами PHP.

Jovian, ты можешь собрать все изменения и снова выложить код в одном сообщении?

J
На сайте с 21.08.2011
Offline
78
#33
kgtu5:
тогда чтобы стартпост не был половинчатым, остальные реврайты/редиректы в студию, ибо сказал что боты не поймут про вордпресс, а в коде только /wp-admin и wp-login.php "спрятал"...

Нет уж, простите, я в преподы и бесплатные работники не нанимался. ;)

Тем более, что никто спасибо даже не хочет сказать.

Ну, не надо, так не надо.

Однако, простейшее закрытие wp-content делается так:

location ~ ^/wp-content { return 404; }

И не забывайте правильный порядок location использовать -- это очень важно. ;)

---------- Добавлено 18.02.2014 в 14:15 ----------

gkir:
[спорно] 2. Снизить нагрузку на сервер -- отдавать 404 средствами NGINX, а не CMS, не пропуская к PHP.

Чего тут спорного? :) Ни один бот не пройдёт дальше NGINX, при этом php вообще им не трогается. И это (проверка на наличие файла) быстрее, чем проверка куков.

gkir:
по мне так, если в п.3 хочется скрыть использование CMS, то тогда это сделать очень сложно, даже для пользователей, т.к. любой маломальский плагин пробивается по базе или в хедере видно где расположен css.

Решаемо:

1. Не юзать тупые плагины, которые не дают использовать свой CSS/JS. Я всегда делаю так, чтобы грузилось максимум 2 CSS и 2 JS (один основной, а другой страница-зависимый). Делать по-другому -- дурной тон. Если я вижу в хеде сайта запрос сразу на 5 CSS-сок, то для меня этот сайт сразу становится ГС-ом. :) Ну, да, перфекционист я.

2. Почти все загрузки решаемы вородпрессовскими хуками и простейшими рерайтами NGINX.

Так что, не вижу тут проблем. Но это для меня. А для других, да -- большая проблема может быть. Ведь 99.9% юзеров WP совсем не разбираются в PHP и самом WP...

gkir:
Jovian, ты можешь собрать все изменения и снова выложить код в одном сообщении?

Изменений совсем чуток -- достаточно просто почитать тему (4 страницы -- это на 10 минут).

Тот, кто не умеет читать, пускай идёт лесом.

---------- Добавлено 18.02.2014 в 14:18 ----------

gkir:
по поводу нагрузки (п.2) я ничего сказать не могу, но, по логике вещей, закрытие через NGINX всё же менее ресурсоёмкое, чем проходя через NGINX отбивать ботов или пользователей средствами PHP.

Для отбивания ботов тут не используется PHP.

PHP тут используется лишь для внесения вашего IP в white-list и только.

Этой банальности не смог понять WapGraf -- представитель хостинга... Печалька.

G
На сайте с 06.08.2012
Offline
59
#34
Jovian:
Изменений совсем чуток -- достаточно просто почитать тему (4 страницы -- это на 10 минут).

я имел в виду вообще весь список изменений, т.к. тема затронута интересная, решение тоже не банальное, а, как заметил kgtu5, не все рерайты и редиректы были упомянуты и хотелось бы посмотреть на "полную" версию защиты от Jovian`a ;)

Jovian:
Для отбивания ботов тут не используется PHP.

это понятно, но боты лезут не только в wp-admin... так что это делалось, только чтобы скрыть от них админку, а как скрыть от них WP целиком? регистрация пользователей же происходит скриптами WP без замены скриптов...

меня, например, всегда интересовало как закрыться от ботов-комментаторов не закрыв комментарии обычным людям ;) а один раз засветившись, что блог на WP, я теперь всю жизнь буду этот хлам собирать :(

Jovian:
PHP тут используется лишь для внесения вашего IP в white-list и только.

а вот тут тоже проблема... это будет список из одного адреса, и я не предлагаю обсуждать вариант, если админов несколько и они одновременно захотят что-то править, но если в процессе работы сменился айпишник на модеме? тебя сразу выкинет из админки и попытки сохранить сделанное/написанное/исправленное не завенчаются успехом :(

---------- Добавлено 18.02.2014 в 12:08 ----------

хотя я очень долго смеялся, пытаясь представить как два админа выпихивают друг друга из админки, не давая другому сделать хоть малейшее изменение на сайте :)

J
На сайте с 21.08.2011
Offline
78
#35
gkir:
а вот тут тоже проблема... это будет список из одного адреса, и я не предлагаю обсуждать вариант, если админов несколько и они одновременно захотят что-то править, но если в процессе работы сменился айпишник на модеме? тебя сразу выкинет из админки и попытки сохранить сделанное/написанное/исправленное не завенчаются успехом

Тут нет никакой проблемы. И ещё раз: внимательно читайте первый пост -- я расписал, как работает PHP код весьма подробно. ;)

Нет проблемы потому, что PHP создаёт файл с именем равным IP обратившемуся к этому PHP. Хоть 1000 IP можно создать -- никто и никому мешать не будет. Учитывая, что файлы создаются пустыми, можно не беспокоиться за место и скорость. По крону можно чистить папку раз в неделю/месяц/год/никогда -- как вам угодно!

И хоть миллион будет файлов -- на скорости NGINX это никак не отразится, ибо идёт проверка "в лоб": есть ли файл с именем IP=IP_обратившегося в папке. Элементарно и быстро.

---------- Добавлено 18.02.2014 в 15:27 ----------

gkir:
"полную" версию защиты от Jovian`a

То, что выложено, уже закроет админку для ботов и разгрузит сервер.

Именно это и было представлено.

А как закрыть весь WP -- много писать и объяснять. Я, конечно, немного альтруист, но не настолько. :) Итак уже немало идей написал и примеров, от чего можно оттолкнуться. При этом, многие люди даже внимательно первый пост не могут прочитать...

virtuozo
На сайте с 05.04.2012
Offline
34
#36
Jovian:

А как закрыть весь WP -- много писать и объяснять.

Я таких людей не понимаю (не вас, а которые требуют такого - закрыть CMS)

Это, по-моему, уже чистая незамутненная паранойя. Если админка будет недоступна, что еще нужно?

Если хочешь, чтобы никто не узнал, на какой CMS работает свой сайт - пиши самопис! Маразм!

Что касается вашего способа, он не подойдет 90 процентам пользователей, ведь, насколько я понял, требуется доступа к настройкам сервера?

Лично мне вполне достаточно htaccess с allow/deny, и не понимаю чем это способ плох.

G
На сайте с 06.08.2012
Offline
59
#37
Jovian:
Нет проблемы потому, что PHP создаёт файл с именем равным IP обратившемуся к этому PHP. Хоть 1000 IP можно создать -- никто и никому мешать не будет

ок-ок.. я про разное имя файла пропустил в коде. придумал, что в один и тот же пишет. моя ошибка. но крон настроить надобно, т.к. новый день = новый IP.

J
На сайте с 21.08.2011
Offline
78
#38
virtuozo:
Что касается вашего способа, он не подойдет 90 процентам пользователей, ведь, насколько я понял, требуется доступа к настройкам сервера?

Лично мне вполне достаточно htaccess с allow/deny, и не понимаю чем это способ плох.

Мой пост не для этих пользователей и не для вас -- можете проходить мимо. ;)

Но забегайте обратно, когда перерастёте из маленького сайтика на шареде во что-то стоящее, где htaccess, скорее всего, попросту не будет места.

И не подумайте, что я хотел вас обидеть.

---------- Добавлено 18.02.2014 в 16:09 ----------

virtuozo:
Я таких людей не понимаю (не вас, а которые требуют такого - закрыть CMS)
Это, по-моему, уже чистая незамутненная паранойя. Если админка будет недоступна, что еще нужно?
Если хочешь, чтобы никто не узнал, на какой CMS работает свой сайт - пиши самопис! Маразм!

Обфускация -- ещё один уровень пассивной защиты от юзеров/идиотов и огромная стена для тупых (стандартных) ботов. Если есть возможность это использовать, то почему бы и нет?

Называть это маразмом, по меньшей мере, неразумно.

---------- Добавлено 18.02.2014 в 16:13 ----------

gkir:
но крон настроить надобно, т.к. новый день = новый IP.

Ну, почему же сразу новый IP? Вполне может быть и старый, если коннект к Интернету не терялся (у роутера, к примеру).

И даже если каждый день + 1 IP, то это всего 365 файлов -- пшик и только. ;)

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

Хотя, настроить крон на недельную очистку -- как два пальца *. ;)

---------- Добавлено 18.02.2014 в 16:25 ----------

Кстати, для удобства можно дополнить PHP.

Поставить в нём редирект на wp-admin.

И ходить в админку по адресу файла PHP.

Каждый раз будет либо создаваться новый файл с IP вашим, либо, если он уже есть, просто ничего не делаться.

Итог один -- вы сразу будете попадать в админку.

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

Этому народу надо будет просто сообщить новую страницу входа и всё.

Андрей
На сайте с 30.09.2009
Offline
482
#39
Jovian:
1. Простейший модификация с редиректом поможет и в случае с аккаунтами пользователей. Урл страницы отдавать средствами JS, используя хитрую функцию компоновки, да ещё и задействуя jQuery -- из 10000000 ботов пробьётся только один -- тот, который полностью кушает и исполняет даже сложный JS. Элементарно. Однако не это здесь важно, а следующих два пункта.
2. Обсуждаем мы тут защиту именно админки. Не больше. Причем тут пользователи и остальное? Админам/модерам/постерам дать/посетить нужный урл -- ерунда.
3. Вы так и не поняли, что боты отшиваются средствами только NGINX и не доходят до бэкэнда.

Как я уже говорил, но вы мне не верите, это все я понял сразу.

1. как говорил выше именно эту задачу можно решить на уровне nginx, без всего прочего.

2. нелюблю такого. Потому что каждый день такое наблюдаю. Костыль на то, костыль на се, на пятое, десятое. По отдельности все идеальное, но в совокупности получается нечто ужасное. А после ежнедельно всплывают баги от конфликтов. Решения должны быть комплекными. Использование отдельных решений не только создает конфликты, зависимости которых сразу не видно, но и в итоге создает "лабиринты", "велосипеды" которые жестоко тормозят проект. Возьмите ту же соцсеть, почему она популярна? Потому что там все собрали, но не поставили ссылки на каждую часть отдельно, а создали единое решение, которое включает и "а" и "б" и "в".

3. А разве в п.1 вы не написали что бот попадает на бэкенд и там кушает JS? :)

Так теперь понятно?

---------- Добавлено 18.02.2014 в 16:42 ----------

Jovian:
Этому народу надо будет просто сообщить новую страницу входа и всё.

А какой смысл в вашем рещение если просто урл будет другой? В этом случае в нем нету никакого смысла.

EuroHoster.org ( https://eurohoster.org/ru/ ) - территория быстрых серверов. Выделенные серверы, VPS, SSL, домены и VPN.
J
На сайте с 21.08.2011
Offline
78
#40

WapGraf, скажу просто: хорошо, что я не ваш клиент. Бедные ваши клиенты.

Вы элементарного не понимаете -- что решается на уровне NGINX и для чего здесь PHP.

Совсем не понимаете.

Надеюсь, таки кто-нибудь вам здесь объяснит, как и что работает. У меня уже нет ни сил, ни желания, ибо как об стенку горохом.

1 2345 6

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий