Làm cách nào để che khuất cài đặt Wordpress của tôi qua htaccess?


9

(Tôi biết rằng bảo mật thông qua che khuất không được khuyến khích).

Tôi đang cố gắng che giấu sự thật rằng tôi đang sử dụng Wordpress. Bài đăng này là hữu ích, nhưng nó chỉ giải quyết nội dung (loại). Tôi quan tâm đến việc có những điều sau đây xảy ra:

  1. Người dùng cố gắng truy cập bất kỳ url nào wp*dưới dạng chuỗi con thông qua trình duyệt của họ.

    Kết quả: Chuyển hướng đến trang 404.

  2. Người dùng / quản trị viên blog biết để đăng nhập họ nên truy cập http://example.com/blogin/.

    Kết quả: apache chuyển hướng họ đếnhttp://example.com/wp-admin/.

  3. Nếu người dùng cố gắng truy cập trực tiếp wp-admintừ trình duyệt của họ, họ sẽ được gửi đến # 1.

    Kết quả: Chuyển hướng đến trang 404.

Những điều tôi đã làm cho đến nay

  1. Tôi nhận thấy một cài đặt mặc định của WordPress rằng tôi có thể truy cập bất kỳ wp*tệp nào trong thư mục gốc (tương đối) của bản cài đặt WP. Cụ thể wp-settings.phplà có vấn đề vì nó đã cho đi thông tin về việc thiết lập của tôi. Nếu một người dùng truy cập nó, nó sẽ phát sinh một số lỗi PHP và tiết lộ một phần cấu trúc thư mục. Tôi đã chỉnh sửa tập tin php.ini của mình để display_errorstắt. Bây giờ truy cập http://example.com/wp-settngs.phpmang đến một trang trống.

  2. Điều này tự nó không lý tưởng bởi vì nó tiết lộ rằng wp-settings.phptồn tại. Trong thực tế, truy cập tất cả các wp*tệp khác nhau là có thể (với kết quả khác nhau). Sau đó tôi đặt các mục sau trong tệp htaccess của mình:

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

    Điều này đã làm việc tuyệt vời! Bất cứ điều gì với một wp*đã được chuyển đến trang 404 tùy chỉnh của tôi. Nhưng bây giờ tôi không thể truy cập trang quản trị của mình.

  3. Tôi đã cố gắng chèn dòng này vào đoạn mã trên : RewriteRule ^blogin wp-admin [NC,R,L]. Nó được cho là ngay sau đó RewriteBasenhưng điều này đã không làm việc.

  4. Tôi đã cố gắng làm một:

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

    hy vọng rằng một người giới thiệu từ trang web của tôi (thông qua việc viết lại quy tắc) sẽ có thể truy cập wp-admin, nhưng không phải ai đó từ bên ngoài. Điều này cũng không hoạt động. apache phàn nàn rằng bạn không thể sử dụng chỉ thị này từ htaccess.

Tôi đã đọc tài liệu apache; Tôi hiểu các khái niệm, về mặt lý thuyết, nhưng tôi cần một số trợ giúp thực tế.

EDIT: Tôi đang tìm kiếm một giải pháp sử dụng .htaccess thay vì httpd.conf vì thiết lập cụ thể của tôi khiến việc sử dụng httpd.conf không nhất quán.


Bạn đã thử đổi tên tất cả các tệp wp * thành một tiền tố khác cũng như thay đổi tất cả các tham chiếu đến các tệp đó chưa? Tôi nghĩ rằng đây sẽ là điều dễ nhất để làm. Tất nhiên, bạn có thể đi bằng cách viết lại URL, nhưng sau đó bạn sẽ phải đảm bảo rằng tất cả các liên kết cũng không sử dụng tên wp *, điều này (theo ý kiến ​​của tôi) khá giống với đề xuất ban đầu.
LazyOne

Tôi nghĩ rằng một trong những lợi ích của việc viết lại URL là các tài nguyên được yêu cầu có thể được ánh xạ lại thành một tiền tố khác ... Tôi hy vọng rằng tôi có thể làm điều này mà không cần đổi tên tất cả các tệp (đó là điểm phải trải qua điều này) ...
Avery Chan

Câu trả lời:


8

TLDR; Không thể làm lu mờ WordPress bằng cách chỉ sử dụng các lệnh trong tệp .htaccess của bạn.

Bây giờ là một câu chuyện về sự đau khổ và kinh dị. Bạn của chúng tôi, fbh đã đúng về những khó khăn trong việc ẩn WordPress, nó không dành cho những kẻ hèn nhát bụng vàng. Arr! Dưới đây là chi tiết của cuộc phiêu lưu (mis) này. Các ngươi sẽ được cảnh báo!

Động lực

Tôi là một trong những người thích những thứ hoàn hảo. Tôi sẽ dành thời gian lãng phí quá nhiều kỹ thuật để trở thành "cách đúng đắn". Một trong những điều tôi không thích về thiết lập mặc định của WordPress là người dùng có thể nhập http://ex.com/wp-sinstall.php và sau đó tất cả các thuật ngữ php này sẽ xuất hiện ở mọi nơi. Cuối cùng tôi đã có thể tắt lỗi thông qua PHP nhưng điều đó dẫn đến một mong muốn lớn hơn là chỉ có những thứ được tạo ra từ tài nguyên có thể định vị được từ máy chủ ... và mọi thứ khác sẽ được 404 / 3'ified cho trang tìm kiếm tùy chỉnh của chúng tôi. Sau đó tôi đã có ý tưởng rằng tôi muốn ẩn hoàn toàn khung cơ bản (ví dụ WP) ... dù sao đi nữa ... nếu bạn muốn ẩn WP thì có thể. Nhưng nó thực sự khó.

Các bước để cam chịu của bạn

  1. Sửa đổi cài đặt PHP ini của bạn một cách thích hợp. (tức là tắt lỗi hiển thị) Bạn có thể nghĩ rằng điều này là không cần thiết bởi vì nếu chúng tôi đang sử dụng .htaccess để định tuyến lại mọi thứ, mọi người sẽ không thấy lỗi vì họ không thể truy cập vào tài nguyên gây ra lỗi (Tôi đang nhìn vào bạn wp-settings.php). Nhưng lỗi có thể xảy ra trong các trang được hiển thị, vì vậy bạn chắc chắn muốn tắt chúng. Chỉ vì các WP_*chỉ thị được đặt không nhất thiết có nghĩa là mọi thứ sẽ hoạt động theo cách bạn nghĩ họ sẽ làm. Tôi thấy rằng trên máy chủ của mình, tôi phải đặt display_errors thành FIRST sai, vì WP_DISPLAY_ERRORS cho rằng cài đặt mặc định là sai.

    Kiểm soát cài đặt ini PHP có thể đơn giản như đặt một lệnh trong tệp .htaccess của bạn. Hoặc, trong trường hợp của tôi, phức tạp như tạo trình xử lý CGI và sau đó đặt tệp php.ini ở đó. YMMV tùy thuộc vào thiết lập của bạn.

  2. Xóa tất cả quyền truy cập vào tập tin / thư mục có wp-tiền tố. Ý tưởng là việc triển khai WP của bạn là về nội dung của bạn chứ không phải về WP (trừ khi nó đặc biệt tập trung vào WP). Mọi người không muốn xem http; // ex.com/wp-cron.php có ý nghĩa gì ... trừ khi chúng không tốt. Tôi đã hoàn thành điều này thông qua điều này:

     # 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. Tìm hiểu làm thế nào để vượt qua mordor Bằng cách xóa tất cả quyền truy cập vào wp-*bạn, bạn không còn có thể truy cập vào phần quản trị của WP. Điều đó thực sự hút. Ngoài điều đó, bạn chỉ nhận ra rằng bạn không biết những gì RewriteCond %{ENV:REDIRECT_STATUS} ^$thực sự làm. Chà, điều tôi đã cố gắng làm là tạo cho mình một cửa hậu 'bí mật' cho trang quản trị WP. Tôi đã sử dụng mã này:

     # 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]
    

    Vì vậy, URL: http://ex.com/mordor sẽ đưa chúng ta đến trang đăng nhập. Lý do tại sao chúng tôi có REDIRECTdòng ở bước trên là vì URL này được viết lại thành wp-*URL, chúng tôi không muốn quy tắc viết lại đầu tiên để có được nó. Vì nó được chuyển hướng nội bộ, REDIRECT_STATUSsẽ được đặt chính xác và nó sẽ không đẩy chúng tôi đến vùng đất 403/4.

  4. Xóa nội dung wp Wordpress.stackexchange có một bài viết tuyệt vời về xóa nội dung wp. Bạn phải xác định lại một số hằng số WP và công việc đó khá nhiều. Bạn cũng phải chuyển hướng tất cả các truy cập từ wp-content'bất cứ nội dung nào'. Đây có lẽ sẽ không phải là một vấn đề nếu đây là một triển khai rõ ràng. Nếu bạn đang sửa đổi một triển khai có sẵn, bạn sẽ phải làm thêm một số thứ.

  5. Viết lại URL thành nội dung wp tùy chọn RewriteRule (.*)(wp-content)(.*) $1whatever-content$3 [NC,R,L] . Điều này đi trong tập tin .htaccess của bạn. Nếu người dùng của bạn cố gắng truy cập một số nội dung cũ thông qua một wp-contentURL, nó sẽ được chuyển hướng ở đây.

  6. Grep và thay thế tất cả các tham chiếu đến nội dung wp trong DB của bạn tùy chọn . Bạn vẫn còn wp-contenttrong cơ sở dữ liệu của bạn. Nếu bạn muốn WP miễn phí, bạn cần loại bỏ những thứ đó. Tôi đã xuất / mysql đổ cơ sở dữ liệu của mình, thực hiện tìm kiếm và thay thế wp-contentchuỗi thành chuỗi mới. Bạn có thể nói ... tại sao tôi phải làm điều này nếu apache sẽ viết lại URL của tôi? Vấn đề là mã nguồn sẽ chứa các tham chiếu này vì vậy nếu bạn thực sự quan tâm đến việc che khuất WordPress, bạn cần phải làm điều này. Lưu ý: Tại thời điểm này tôi nên dừng lại và chấp nhận thực tế rằng điều này sẽ không hoạt động. Nhưng tôi muốn ông T thương hại tôi.

  7. Thay thế tất cả các tham chiếu đến wp-includeswp-admintrong nguồn. Rất nhiều chức năng của WordPress phụ thuộc vào hai thư mục sau: wp-includeswp-admin. Điều này có nghĩa là các tên thư mục này được mã hóa cứng trong mã nguồn. Điều này có nghĩa là bạn sẽ phải tạo các thư mục mới (vì PHP sử dụng hệ thống tệp hệ điều hành cơ bản, không phải apache) để truy cập vào các thư mục này và sau đó VIẾT BÀI NGOÀI vào html phát ra. Đây chỉ là cách quá nhiều rắc rối. Tôi nhanh chóng bỏ cuộc và đi vào phòng tắm để đi vệ sinh.

Bài học

Chắc chắn, tôi chỉ có thể đọc http://codex.wordpress.org/Hardening_WordPress và làm theo các bước đó. Nhưng tôi muốn trang web hoàn hảo. Bây giờ tôi chỉ muốn tất cả những giờ trở lại. Điều lớn nhất ngăn tôi dừng lại là tôi đã không đọc bất cứ nơi nào trên internet rằng đây là rất nhiều công việc và gần như không thể làm được. Thay vào đó tôi đọc về những người đang cố gắng làm điều đó mà không biết họ có thành công hay không. Vì vậy, với bản thân trong quá khứ của tôi, người mà tôi sẽ gửi cái này qua Time Machine của Apple, vui lòng không thử và làm mờ WordPress. Nó không đáng.


Chà, Avery, tôi cũng là một người muốn trở nên hoàn hảo .. Đầu tiên tôi muốn tạo ra một wordpress multisite bằng cách che giấu sự thật tôi đang sử dụng wordpress. Tôi đã trải qua rất nhiều vấn đề và cuối cùng đã từ bỏ ý tưởng đa chiều. Bởi vì nhiều plugin không hỗ trợ multisite. Điểm thứ 7 của bạn cho biết bạn đã thay thế wp-includeswp-adminnhắn tin thủ công. Tôi khá chắc chắn rằng bạn đã duyệt từng tệp và thay thế bằng tay. Đó là bởi vì bạn đã bỏ lỡ một số phần mềm tiện dụng hữu ích. Chẳng hạn, bạn có thể đã thử grepwin , giúp công việc đó dễ dàng hơn
Giri

4

Nếu bạn đang cố gắng che giấu rằng bạn đang sử dụng wordpress vì crackers, thì bạn thực sự có một số việc phải làm. Nếu bạn thực hiện thủ thuật wp *, vậy còn nội dung wp và wp-bao gồm thì sao? Nếu không thể tiếp cận những người đó, bạn sẽ phá vỡ trang và nó sẽ trông thật kinh khủng.

Ngoài ra, có rất nhiều thứ trong Wordpress mà việc này thực sự tốn một số công việc - và rất có thể bạn sẽ phải thực hiện lại rất nhiều lần khi nâng cấp được cài đặt. (Vì một vài chuyển hướng trong Apache sẽ không thực hiện được mẹo)

Nếu bạn chỉ đang cố gắng che giấu nó với tất cả mọi người ông bà, thì tất nhiên bạn sẽ có thể phần nào làm điều đó với sự tối nghĩa.

Bạn đã đọc hướng dẫn "cứng Wordpress" chưa? Nếu không, bạn nên kiểm tra xem: http://codex.wordpress.org/Hardening_WordPress Nó giới thiệu tuyệt vời về rất nhiều điều bạn có thể làm.

Ngoài ra, nếu bạn mong muốn che giấu sự thật rằng bạn sử dụng Wordpress, tại sao lại sử dụng nó?


1. Re: wp-content / wp-gộp Xem liên kết trong bài 2. Tôi đã đọc hướng dẫn làm cứng WordPress. 3. Câu hỏi cuối cùng của bạn có thể được trả lời dễ dàng bằng cách lướt qua liên kết tôi đã đăng. Tôi không cố tỏ ra thô lỗ, nhưng câu hỏi này ít liên quan đến giá trị kỹ thuật của câu hỏi của tôi. Nhiều người sử dụng các công cụ khác nhau nhưng không muốn quảng cáo nó. Đối với một số người, đó là một quyết định kinh doanh.
Avery Chan

0

Hãy thử làm cấu hình của bạn trong cấu hình apache. Điều này có thể bao gồm các tập tin như /etc/wordpress/htaccess. Điều này sẽ cho phép bạn sử dụng Directorychỉ thị cấu hình. Tuy nhiên, bạn sẽ cần phải khởi động lại apache để tải các thay đổi. Sử dụng khởi động lại duyên dáng nếu bạn không muốn gián đoạn dịch vụ.

Để hạn chế truy cập thư mục với .htaccesscác tệp, chúng cần phải nằm trong các thư mục thích hợp. Chúng hoạt động giống như nội dung của một Directorychỉ thị cấu hình. Bạn có thể cần phải bật các .htaccesstùy chọn cần thiết trong cấu hình apache của mình. Phương pháp này không hiệu quả bằng việc sử dụng lệnh trong cấu hình apache vì nó cần phải được sửa lại thường xuyên.


Tôi đang tìm kiếm một giải pháp không yêu cầu chỉnh sửa tệp httpd.conf của mình vì điều đó có thể vượt qua được bằng văn bản (Tôi đang ở trên một máy chủ riêng ảo). Tôi sẽ chỉnh sửa câu hỏi một cách thích hợp.
Avery Chan

@Avry: Bạn sẽ cần đặt các lệnh bạn sẽ đặt trong cấu hình <Directory> trong một .htaccesstệp trong thư mục phù hợp. Lưu ý: Apache khuyên bạn nên sử dụng cấu hình nếu có thể. Sử dụng kiểm soát phiên bản để bảo vệ chống lại ghi đè.
BillThor
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.