Назад | Перейти на главную страницу

Как скрыть установку Wordpress через htaccess?

(Я знаю, что безопасность через скрытность не рекомендуется).

Я пытаюсь скрыть тот факт, что использую Wordpress. это Почта полезно, но касается только содержания (вроде). Я заинтересован в том, чтобы произошло следующее:

  1. Пользователь пытается получить доступ к любому URL-адресу с wp* в виде подстроки через их браузер.

    Результат: Перенаправлен на 404 страницу.

  2. Пользователь / администратор блога знает, что для входа в систему им нужно перейти на http://example.com/blogin/.

    Результат: apache перенаправляет их на http://example.com/wp-admin/.

  3. Если пользователь пытается получить прямой доступ wp-admin из своего браузера они попадают в # 1.

    Результат: Перенаправлен на 404 страницу.

То, что я сделал до сих пор

  1. Я заметил, что при установке WordPress по умолчанию я мог получить доступ к любому из wp* файлы в (относительном) корневом каталоге установки WP. В частности wp-settings.php было проблематично, потому что давало информацию о моей настройке. Если бы к нему обратился пользователь, он выдал бы некоторые ошибки PHP и раскрыл бы часть структуры каталогов. Я отредактировал свой файл php.ini, чтобы включить display_errors выкл. Теперь доступ http://example.com/wp-settngs.php открывает пустую страницу.

  2. Само по себе это не идеально, поскольку показывает, что wp-settings.php существуют. Фактически, доступ ко всем разным wp* файлов можно (с разными результатами). Затем я помещаю в свой файл htaccess следующее:

          RewriteEngine On
          RewriteBase /
          RewriteCond %{PATH_INFO} wp* [NC]
          RewriteRule .* - [F]
    

    Это отлично сработало! Что-нибудь с wp* был перенаправлен на мою пользовательскую страницу 404. Но теперь я не могу получить доступ к своей странице администратора.

  3. Я попытался вставить эту строку в приведенный выше код: RewriteRule ^blogin wp-admin [NC,R,L]. Это должно было быть сразу после RewriteBase но это не сработало.

  4. Я попытался сделать:

    <Directory /home/example/wp*> 
     Order Allow, Deny 
     Allow from example.com 
     Deny from all 
    </Directory> 
    

    надеясь, что референт с моего сайта (путем переписывания правила) сможет получить доступ к wp-admin, но не кому-то извне. Это тоже не сработало. apache жаловался, что вы не можете использовать эту директиву из htaccess.

Я прочитал документацию по apache; Теоретически я разбираюсь в концепциях, но мне нужна практическая помощь.

РЕДАКТИРОВАТЬ: Я ищу решение, которое использует .htaccess вместо httpd.conf, поскольку моя конкретная настройка делает использование httpd.conf несовместимым.

TL; DR; Невозможно скрыть WordPress, используя только директивы в вашем файле .htaccess.

Теперь идет рассказ о горе и ужасе. Наш друг, fbh, был прав, говоря о сложности скрытия WordPress, не для желтобрюхих трусов. Arr! Вот подробности этого (не) приключения. Будьте осторожны!

Мотивация

Я один из тех парней, которые любят все идеально. я буду проводить тратить время на то, чтобы что-то было «правильным». Одна из вещей, которые мне не нравились в настройке WordPress по умолчанию, заключалась в том, что пользователь мог вводить http://ex.com/wp-settings.php и тогда весь этот php-жаргон будет извергаться повсюду. В конце концов я смог отключить ошибки с помощью PHP, но это привело к большему желанию иметь только те вещи, которые были созданы с помощью доступных ресурсов с сервера ... и что все остальное будет 404/3 привязано к нашей странице настраиваемого поиска. После этого у меня возникла идея, что я хотел бы полностью скрыть базовую структуру (например, WP) ... в любом случае ... если вы хотите скрыть WP, это возможно. Но это действительно сложно.

Шаги к твоей гибели

  1. Измените соответствующим образом настройки PHP ini. (т.е. отключить отображение ошибок) Вы можете подумать, что в этом нет необходимости, потому что если мы используем .htaccess для перенаправления вещей, люди не увидят ошибок, потому что они не могут получить доступ к ресурсам, вызывающим ошибку (я смотрю на вас wp-settings.php). Но на отображаемых страницах могут возникать ошибки, поэтому вы определенно хотите их отключить. Да просто так WP_* установка директив не обязательно означает, что все будет работать так, как вы думаете. Я обнаружил, что на моем сервере мне пришлось установить для display_errors значение false FIRST, потому что WP_DISPLAY_ERRORS предполагал, что настройка по умолчанию была false.

    Для управления настройками PHP ini достаточно просто добавить директиву в файл .htaccess. Или, в моем случае, так сложно, как создать обработчик CGI, а затем поместить туда файл php.ini. YMMV в зависимости от вашей настройки.

  2. Удалите весь доступ к файлам / каталогам с помощью wp- префикс. Идея состоит в том, что развертывание WP связано с вашим контентом, а не с WP (если только он специально не ориентирован на WP). Людям не имеет смысла смотреть, что есть на http; // ex.com/wp-cron.php ... если только они не задумали ничего плохого. Я добился этого с помощью этого:

     # If the resource requested is a `wp-*` file or directory, poop to a 403. 
     RewriteCond %{REQUEST_FILENAME} wp-.*$ [NC] 
     RewriteCond %{ENV:REDIRECT_STATUS} ^$ 
     RewriteCond %{REQUEST_FILENAME} -f [NC,OR] 
     RewriteCond %{REQUEST_FILENAME} -d [NC] 
     RewriteRule .* - [F,L] 
    
  3. Узнай, как просто пройти через мордор Удалив весь доступ к wp-* вы больше не можете получить доступ к административной части WP. Это действительно отстой. В дополнение к этому угнетающему, вы только что осознали, что не знаете, что RewriteCond %{ENV:REDIRECT_STATUS} ^$ действительно делает. Что ж, я попытался создать себе «секретный» бэкдор на странице администратора WP. Я использовал этот код:

     # If the resource requested is 'mordor' (with or without an ending
     # slash) do a URL rewrite to `wp-login.php`. 
     RewriteCond %{REQUEST_URI} mordor/?$ [NC]
     RewriteRule mordor/?$ /wp-login.php [NC,L]
    

    Итак, URL: http://ex.com/mordor должен привести нас на страницу входа. Причина, по которой у нас REDIRECT строка на шаге выше заключается в том, что, поскольку этот URL-адрес перезаписывается на wp-* URL, мы не хотим, чтобы первое правило перезаписи получило его. Поскольку он перенаправляется внутри, REDIRECT_STATUS будет настроен правильно, и он не подтолкнет нас к 403/4 земле.

  4. Удалить wp-content Wordpress.stackexchange есть отличная статья об удалении wp-content. Вам нужно переопределить некоторые константы WP, и это в значительной степени работает. Вы также должны перенаправить все обращения из wp-content в 'любой-контент'. Вероятно, это не будет проблемой, если это чистое развертывание. Если вы изменяете уже существующее развертывание, вам придется сделать некоторые дополнительные действия.

  5. Переписать URL в wp-content по желанию RewriteRule (.*)(wp-content)(.*) $1whatever-content$3 [NC,R,L]. Это входит в ваш файл .htaccess. Если ваш пользователь пытается получить доступ к старому контенту через wp-content URL, он будет перенаправлен сюда.

  6. Grep и замените все ссылки на wp-content в вашей БД по желанию. У тебя все еще есть wp-content в вашей базе данных. Если вы хотите использовать WP бесплатно, вам нужно избавиться от этого материала. Я экспортировал / mysql сбросил свою базу данных, выполнил поиск и заменил на wp-content строка в новую строку. Вы можете спросить ... зачем мне это делать, если apache перепишет мои URL-адреса? Проблема в том, что исходный код будет содержать эти ссылки, поэтому, если вы действительно хотите скрыть WordPress, вам нужно это сделать. Примечание: на этом этапе я должен был просто остановиться и принять тот факт, что это не сработает. Но я хотел, чтобы мистер Т. пожалел меня.

  7. Заменить все ссылки на wp-includes и wp-admin в источнике. Большая часть функциональности WordPress зависит от этих двух каталогов: wp-includes и wp-admin. Это означает, что эти имена каталогов жестко запрограммированы в исходном коде. Это означает, что вам нужно будет создать новые каталоги (поскольку PHP использует базовую файловую систему ОС, а не apache) для доступа к ним, а затем ЗАПИСЫВАЕТ ЭТИ в создаваемый HTML. Это слишком много проблем. Я быстро сдался и пошел в ванную покакать.

Урок

Конечно, я мог бы просто прочитать http://codex.wordpress.org/Harpting_WordPress и выполнил эти шаги. Но я хотел идеальный сайт. Теперь я просто хочу вернуть все эти часы. Самым большим, что мешало мне остановиться, было то, что я нигде в Интернете не читал, что это было много работы и ее почти невозможно сделать. Вместо этого я читал о людях, которые пытались это сделать, не зная, добились они успеха или нет. Итак, для себя в прошлом, которому я отправлю это через Apple Time Machine, пожалуйста, не пытайтесь скрыть WordPress. Это того не стоит.

Если вы пытаетесь скрыть, что используете wordpress из-за взломщиков, то вам действительно есть над чем поработать. Если вы проделаете трюк с wp *, как насчет wp-content и wp-includes? Не имея возможности добраться до них, вы сломаете страницу, и она будет выглядеть ужасно.

Кроме того, в Wordpress так много вещей, что это действительно требует некоторой работы - и вам, скорее всего, придется сделать много этого снова, когда будет установлено обновление. (Поскольку несколько редиректов в Apache не помогут)

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

Вы читали руководство по укреплению Wordpress? Если нет, вам следует проверить это: http://codex.wordpress.org/Harpting_WordPress Это отличное введение во многие вещи, которые вы можете сделать.

Кроме того, если вы так хотите скрыть тот факт, что используете Wordpress, зачем его использовать?

Попробуйте выполнить свою конфигурацию в конфигурации apache. Это может быть включение файла вроде /etc/wordpress/htaccess. Это позволит вам использовать Directory директива конфигурации. Однако вам нужно будет перезапустить apache, чтобы загрузить изменения. Используйте постепенный перезапуск, если вы не хотите прерывания обслуживания.

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