(모호함을 통한 보안은 권장되지 않음을 알고 있습니다).
WordPress를 사용하고 있다는 사실을 숨기려고합니다. 이 게시물 은 도움이되지만 내용 만 다룹니다. 다음과 같은 일에 관심이 있습니다.
-
사용자는
wp*
브라우저를 통해 하위 문자열로 URL에 액세스하려고 합니다.결과 : 404 페이지로 리디렉션되었습니다.
-
블로그 사용자 / 관리자는 로그인하려면로 이동해야한다는 것을 알고
http://example.com/blogin/
있습니다.결과 : 아파치가로 리디렉션합니다
http://example.com/wp-admin/
. -
사용자가
wp-admin
브라우저에서 직접 액세스하려고 하면 # 1로 전송됩니다.결과 : 404 페이지로 리디렉션되었습니다.
내가 지금까지 한 것들
-
wp*
WP 설치의 (상대) 루트 디렉토리에있는 파일에 액세스 할 수있는 WordPress의 기본 설치에 대해 알았습니다 . 특히wp-settings.php
내 설정에 대한 정보를 제공했기 때문에 문제가있었습니다. 사용자가 액세스하면 PHP 오류가 발생하고 디렉토리 구조의 일부가 나타납니다. php.ini 파일을 편집하여display_errors
끕니다. 액세스http://example.com/wp-settngs.php
하면 빈 페이지가 나타납니다. -
이것은 그 자체가
wp-settings.php
존재 하기 때문에 이상적이지 않습니다 . 실제로 모든 다른wp*
파일에 액세스 할 수 있습니다 (결과가 다름). 그런 다음 htaccess 파일에 다음을 넣습니다.RewriteEngine On RewriteBase / RewriteCond %{PATH_INFO} wp* [NC] RewriteRule .* - [F]
이것은 훌륭하게 작동했습니다! 가있는
wp*
것은 내 맞춤 404 페이지로 라우팅되었습니다. 하지만 이제는 관리자 페이지에 액세스 할 수 없습니다. -
이 코드를 위 코드에 삽입하려고했습니다
RewriteRule ^blogin wp-admin [NC,R,L]
. 그것은 바로 끝나기로되어RewriteBase
있었지만 이것은 효과가 없었습니다. -
나는 시도했다 :
<Directory /home/example/wp*> Order Allow, Deny Allow from example.com Deny from all </Directory>
내 사이트의 추천자가 (규칙을 다시 작성하여) wp-admin에 액세스 할 수 있지만 외부 사용자는 액세스 할 수 없기를 바라고 있습니다. 이것은 작동하지 않았습니다. 아파치는 htaccess 에서이 지시문을 사용할 수 없다고 불평했습니다.
아파치 문서를 읽었습니다. 이론적으로 개념을 이해하지만 실질적인 도움이 필요합니다.
편집 : 특정 설정이 httpd.conf를 사용하여 일관성이 없기 때문에 httpd.conf 대신 .htaccess를 사용하는 솔루션을 찾고 있습니다.
답변
TLDR; .htaccess 파일에 지시문 만 사용하여 WordPress를 가리는 것은 불가능합니다.
이제 화와 공포에 대한 이야기가 왔습니다. 우리 친구 인 fbh는 WordPress를 숨기는 데 어려움이 있었지만 겁쟁이가 아니 었습니다. 아아! 이 (미스) 모험의 세부 사항은 다음과 같습니다. 경고해야합니다!
자극
나는 일을 좋아하는 사람 중 하나입니다. 나는 할 것이다 ‘올바른 길’이되기 위해 무언가를 과도하게 엔지니어링하는 데 낭비하는 시간을 보낼 입니다. 기본 WordPress 설정에 대해 마음에 들지 않는 것 중 하나는 사용자가 http://ex.com/wp-settings.php를 입력 하면이 모든 PHP 전문 용어가 모든 곳에서 퍼져 나올 수 있다는 것입니다. 결국 PHP를 통해 오류를 끌 수 있었지만 서버에서 찾을 수있는 리소스 만 가지고 있고 다른 모든 것이 사용자 정의 검색 페이지에 404/3로 통합되기를 원했습니다. 그 후 나는 기본 프레임 워크 (예 : WP)를 완전히 숨기고 싶다는 아이디어를 얻었습니다 … 어쨌든 … WP를 숨기려면 가능합니다. 그러나 정말 어렵다.
당신의 운명에 단계
-
PHP ini 설정을 적절히 수정하십시오. (즉, 디스플레이 오류 끄기) 우리가 .htaccess를 사용하여 경로를 변경하면 자원을 유발하는 오류에 액세스 할 수 없기 때문에 오류가 표시되지 않기 때문에 이것이 불필요하다고 생각할 수 있습니다 (당신을보고 있습니다
wp-settings.php
). 그러나 표시된 페이지에서 오류가 발생할 수 있으므로 반드시 오류를 제거하십시오. 그냥 때문에WP_*
지침이 반드시 일을 당신은 그들이 생각하는 방식으로 작동되는 것은 아닙니다 집합입니다. WP_DISPLAY_ERRORS가 기본 설정이 false라고 가정했기 때문에 서버에서 display_errors를 false FIRST로 설정해야한다는 것을 알았습니다.PHP ini 설정을 제어하는 것은 .htaccess 파일에 지시문을 넣는 것만 큼 간단 할 수 있습니다. 또는 제 경우에는 CGI 핸들러를 만들고 php.ini 파일을 넣는 것처럼 복잡합니다. 설정에 따라 YMMV.
-
wp-
접두사 가있는 파일 / 디렉토리에 대한 모든 액세스 권한을 제거하십시오 . 아이디어는 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]
-
mordor 를 통과하는 방법 알아보기 모든 액세스 권한을 제거하여
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]
따라서 http://ex.com/mordor URL 은 로그인 페이지로 이동해야합니다.
REDIRECT
위의 단계에서 우리가 한 줄을 가진 이유는 이 URL이 URL로 다시 쓰여지기wp-*
때문에 첫 번째 다시 쓰기 규칙 이 URL을 가져 오기를 원하지 않기 때문입니다. 내부적으로 리디렉션되므로REDIRECT_STATUS
올바르게 설정되며 403/4 토지로 이동하지 않습니다. -
wp-content 제거 WordPress.stackexchange 에는 wp-content 제거에 대한 훌륭한 기사가 있습니다. WP 상수를 재정의해야하며 거의 작동합니다. 또한 모든 액세스
wp-content
를 ‘무엇이든’ 으로 리디렉션해야합니다 . 이것이 깨끗한 배포라면 문제가되지 않을 것입니다. 기존 배포를 수정하는 경우 몇 가지 추가 작업을 수행해야합니다. -
URL을 wp-content 선택 사항으로 다시 작성하십시오
RewriteRule (.*)(wp-content)(.*) $1whatever-content$3 [NC,R,L]
. 이것은 .htaccess 파일에 들어갑니다. 사용자가wp-content
URL을 통해 일부 오래된 콘텐츠에 액세스하려고하면 여기로 리디렉션됩니다. -
DB 옵션 에서 wp-content에 대한 모든 참조를 grep하고 바꿉니다 . 여전히
wp-content
데이터베이스에 있습니다. 당신이 무료로 WP하려는 경우 그 물건을 제거해야합니다. 내 데이터베이스를 내보내거나 mysql을 덤프하고 검색을 수행하여wp-content
문자열을 새 문자열로 바꿨습니다. 아파치가 내 URL을 다시 쓰려면 왜 이렇게해야합니까? 문제는 소스 코드에 이러한 참조가 포함되어 있기 때문에 WordPress를 가리는 데 정말로 관심이있는 경우이를 수행해야합니다. 참고 :이 시점에서 나는 이것이 멈추지 않을 것이라는 현실을 멈추고 받아 들여야했습니다. 그러나 나는 T 씨가 나를 동정하기를 원했습니다. -
에 대한 모든 참조를 교체
wp-includes
하고wp-admin
소스에서. 워드 프레스 기능의 많은이 두 디렉토리에 따라 달라집니다wp-includes
및wp-admin
. 이는이 디렉토리 이름이 소스 코드에 하드 코드되어 있음을 의미합니다. 이것은 (PHP가 아파치가 아닌 기본 OS 파일 시스템을 사용하기 때문에) 새로운 디렉토리를 생성하여이 디렉토리에 접근 한 다음 방출 된 HTML로 작성해야한다는 것을 의미합니다. 이것은 너무 많은 문제입니다. 나는 빨리 포기하고 똥을 먹기 위해 화장실에 갔다.
교훈
물론 http://codex.wordpress.org/Hardening_WordPress를 읽고 그 단계를 따랐습니다. 그러나 나는 완벽한 사이트를 원했다. 이제 나는 그 모든 시간을 다시 원합니다. 나를 막을 수 없었던 가장 큰 것은 인터넷의 어느 곳에서도 이것이 많은 작업이었고 거의 불가능하다는 것을 읽지 않았다는 것입니다. 대신 나는 사람들이 성공했는지 아닌지 모르게 그것을 시도하는 사람들을 읽었습니다. 따라서 Apple Time Machine을 통해이를 보낼 과거의 자아에게 WordPress를 숨기지 마십시오. 그것은 가치가 없어.
답변
크래커 때문에 워드 프레스를 사용하고 있다는 것을 숨기려고한다면 실제로해야 할 일이 있습니다. wp * 트릭을 수행하는 경우 wp-content 및 wp-includes는 어떻습니까? 그에 도달하지 못하면 페이지가 깨져서 끔찍하게 보일 것입니다.
또한 WordPress에는 많은 작업이 필요하므로 업그레이드가 설치되면 다시 많은 작업을 수행해야합니다. (Apache의 일부 리디렉션은 트릭을 수행하지 않기 때문에)
Mr.와 Mrs. 모두에게 그것을 숨기려고한다면 물론 모호하게도 할 수 있어야합니다.
“경화 WordPress”안내서를 읽었습니까? 그렇지 않은 경우 http://codex.wordpress.org/Hardening_WordPress를 확인하십시오 . 그것은 당신이 할 수있는 많은 것들에 대한 훌륭한 소개를 제공합니다.
또한 WordPress를 사용한다는 사실을 숨기려는 열망이라면 왜 사용합니까?
답변
아파치 구성에서 구성을 시도하십시오. 이것은 같은 파일을 포함 할 수 있습니다 /etc/wordpress/htaccess
. 이것은 당신이 사용할 수 있습니다Directory
구성 지시문 . 그러나 변경 사항을로드하려면 아파치를 다시 시작해야합니다. 서비스 중단을 원하지 않으면 정상적으로 다시 시작하십시오.
.htaccess
파일로 디렉토리 액세스를 제한하려면 해당 디렉토리에 있어야합니다. 그것들은 Directory
설정 지시어 의 내용과 매우 유사합니다 . .htaccess
아파치 구성에서 필요한 옵션 을 활성화해야 할 수도 있습니다. 이 방법은 자주 재분석해야하는 아파치 구성에서 명령을 사용하는 것보다 효율적이지 않습니다.