ฉันจะปิดบัง Wordpress ของฉันติดตั้งผ่าน htaccess ได้อย่างไร


9

(ฉันทราบว่าไม่แนะนำให้ใช้การรักษาความปลอดภัยที่คลุมเครือ)

ฉันพยายามซ่อนความจริงที่ว่าฉันใช้ 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 ไม่สอดคล้องกัน


คุณลองเปลี่ยนชื่อไฟล์ wp * ทั้งหมดเป็นคำนำหน้าอื่นรวมถึงเปลี่ยนการอ้างอิงทั้งหมดเป็นไฟล์ดังกล่าวหรือไม่? ฉันคิดว่านี่จะเป็นสิ่งที่ง่ายที่สุดที่จะทำ แน่นอนคุณสามารถไปกับการเขียน URL ใหม่ได้ แต่จากนั้นคุณจะต้องตรวจสอบให้แน่ใจว่าลิงก์ทั้งหมดไม่ได้ใช้ชื่อ wp * เช่นกันซึ่งในความคิดของฉันนั้นค่อนข้างคล้ายกับคำแนะนำดั้งเดิม
LazyOne

ผมคิดว่าหนึ่งในประโยชน์ของ URL ที่เขียนใหม่เป็นว่าทรัพยากรที่ร้องขอสามารถ remapped คำนำหน้าอื่น ... ผมหวังว่าผมสามารถทำเช่นนี้ได้โดยไม่ต้องเปลี่ยนชื่อไฟล์ทั้งหมด (ซึ่งเป็นจุดที่จะผ่านนี้) ที่ ...
Avery Chan

คำตอบ:


8

TLDR; เป็นไปไม่ได้ที่จะปิดบัง WordPress โดยใช้คำสั่งในไฟล์. htaccess ของคุณเท่านั้น

ตอนนี้เรื่องราวของความฉิบหายและความสยองขวัญมาแล้ว เพื่อนของเรา fbh พูดถูกเกี่ยวกับความยากลำบากในการซ่อนเวิร์ดเพรสมันไม่ใช่สำหรับคนขี้ขลาดสีเหลือง ARR! นี่คือรายละเอียดของการผจญภัย (mis) นี้ ถูกเตือน!

แรงจูงใจ

ฉันเป็นหนึ่งในคนที่ชอบสิ่งที่สมบูรณ์แบบ ผมจะใช้จ่ายเสียเวลาบางสิ่งบางอย่างมากกว่าวิศวกรรมที่จะเป็น 'วิธีการที่เหมาะสม' สิ่งหนึ่งที่ฉันไม่ชอบเกี่ยวกับการติดตั้ง WordPress เริ่มต้นคือผู้ใช้สามารถพิมพ์ในhttp://ex.com/wp-settings.phpจากนั้นศัพท์แสง php ทั้งหมดนี้จะคายไปทั่วสถานที่ ในที่สุดฉันก็สามารถปิดข้อผิดพลาดผ่านทาง PHP แต่สิ่งที่นำไปสู่ความปรารถนาที่ยิ่งใหญ่กว่าที่จะมีสิ่งต่าง ๆ ที่เกิดขึ้นเนื่องจากเป็นทรัพยากรที่หาได้จากเซิร์ฟเวอร์ ... และทุกอย่างอื่นจะเป็น 404 / 3'ified หลังจากนั้นฉันก็มีความคิดนี้ว่าฉันต้องการซ่อนเฟรมเวิร์กพื้นฐาน (เช่น WP) ... ต่อไป ... ถ้าคุณต้องการซ่อน WP มันเป็นไปได้ แต่มันยากจริงๆ

ขั้นตอนในการลงโทษของคุณ

  1. แก้ไขการตั้งค่า PHP ini ของคุณอย่างเหมาะสม (เช่นปิดการแสดงข้อผิดพลาด)คุณอาจคิดว่ามันไม่จำเป็นเพราะถ้าเราใช้. htaccess ในการกำหนดเส้นทางใหม่ผู้คนจะไม่เห็นข้อผิดพลาดเพราะพวกเขาไม่สามารถเข้าถึงข้อผิดพลาดที่ก่อให้เกิดทรัพยากร (ฉันมองคุณwp-settings.php) แต่อาจมีข้อผิดพลาดเกิดขึ้นในหน้าเว็บที่แสดงดังนั้นคุณจึงต้องการปิดมันอย่างแน่นอน เพียงเพราะWP_*มีการกำหนดคำสั่งไม่จำเป็นต้องหมายความว่าทุกอย่างจะทำงานอย่างที่คุณคิด ฉันพบว่าบนเซิร์ฟเวอร์ของฉันฉันต้องตั้งค่า display_errors เป็น false FIRST เพราะ WP_DISPLAY_ERRORS สันนิษฐานว่าการตั้งค่าเริ่มต้นเป็นเท็จ

    การควบคุมการตั้งค่า 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. เรียนรู้วิธีการส่งผ่าน 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]
    

    ดังนั้น URL: http://ex.com/mordorควรพาเราไปที่หน้าเข้าสู่ระบบ เหตุผลที่เรามีREDIRECTบรรทัดในขั้นตอนข้างต้นคือเนื่องจาก URL นี้ได้รับการเขียนใหม่ไปยังwp-*URL เราไม่ต้องการให้กฎการเขียนซ้ำใหม่เป็นครั้งแรก เนื่องจากมันถูกเปลี่ยนเส้นทางภายในREDIRECT_STATUSจะถูกตั้งค่าอย่างถูกต้องและมันจะไม่ผลักดันเราไปสู่ ​​403/4 land

  4. ลบ wp-content Wordpress.stackexchangeมีบทความที่ดีเกี่ยวกับการลบเนื้อหา wp คุณต้องกำหนดค่าคงที่ WP บางค่าใหม่และใช้งานได้ดีมาก นอกจากนี้คุณยังต้องเปลี่ยนเส้นทางการเข้าถึงทั้งหมดจากwp-contentไปยัง 'เนื้อหาใด ๆ ' นี่อาจจะไม่เป็นปัญหาหากเป็นการปรับใช้แบบใหม่ทั้งหมด หากคุณกำลังปรับใช้การปรับใช้ที่มีอยู่แล้วคุณจะต้องทำสิ่งพิเศษเพิ่มเติม

  5. URL ที่เขียนเพื่อ wp-content RewriteRule (.*)(wp-content)(.*) $1whatever-content$3 [NC,R,L]ตัวเลือก สิ่งนี้จะอยู่ในไฟล์. htaccess ของคุณ หากผู้ใช้ของคุณพยายามเข้าถึงเนื้อหาเก่าผ่านwp-contentURL ผู้ใช้จะได้รับการเปลี่ยนเส้นทางที่นี่

  6. Grep และแทนที่การอ้างอิงทั้งหมดไปยัง wp-content ในฐานข้อมูลเสริมของคุณ คุณยังมีwp-contentอยู่ในฐานข้อมูลของคุณ ถ้าคุณต้องการ WP ฟรีคุณต้องกำจัดสิ่งนั้น ฉันส่งออก / mysql ทิ้งฐานข้อมูลของฉันทำการค้นหาและแทนที่บนwp-contentสตริงเป็นสตริงใหม่ คุณอาจพูดว่า ... ทำไมฉันต้องทำเช่นนี้หาก apache จะเขียน URL ของฉันใหม่? ปัญหาคือซอร์สโค้ดจะมีการอ้างอิงเหล่านี้ดังนั้นหากคุณสนใจปิดบัง WordPress จริงๆคุณต้องทำสิ่งนี้ หมายเหตุ: ณ จุดนี้ฉันควรจะหยุดและยอมรับความจริงที่ว่าสิ่งนี้จะไม่ทำงาน แต่ฉันอยากให้มิสเตอร์ T สงสารฉัน

  7. แทนที่การอ้างอิงทั้งหมดไปยังwp-includesและwp-adminในแหล่งที่มา จำนวนมากของการทำงาน WordPress ขึ้นอยู่กับทั้งสองไดเรกทอรี: และwp-includes wp-adminซึ่งหมายความว่าชื่อไดเรกทอรีเหล่านี้จะฮาร์ดโค้ดในซอร์สโค้ด ซึ่งหมายความว่าคุณจะต้องสร้างไดเรกทอรีใหม่ (เนื่องจาก PHP ใช้ระบบไฟล์ระบบปฏิบัติการพื้นฐานไม่ใช่ Apache) เพื่อเข้าถึงสิ่งเหล่านี้จากนั้นจึงเขียนคำเหล่านี้ลงใน html ที่ปล่อยออกมา นี่เป็นปัญหามากเกินไป ฉันเลิกอย่างรวดเร็วและไปที่ห้องน้ำเพื่อไปหาคนเซ่อ

บทเรียน

แน่นอนว่าฉันอ่านhttp://codex.wordpress.org/Hardening_WordPressแล้วทำตามขั้นตอนเหล่านั้น แต่ฉันต้องการเว็บไซต์ที่สมบูรณ์แบบ ตอนนี้ฉันแค่ต้องการเวลาทั้งหมดเหล่านั้นกลับมา สิ่งที่ใหญ่ที่สุดที่ทำให้ฉันหยุดไม่ได้คือฉันไม่ได้อ่านทุกที่บนอินเทอร์เน็ตว่านี่เป็นงานจำนวนมากและแทบเป็นไปไม่ได้เลยที่จะทำ ฉันอ่านคนที่พยายามจะทำโดยไม่รู้สึกว่าพวกเขาประสบความสำเร็จหรือไม่ ดังนั้นสำหรับตัวฉันที่ผ่านมาซึ่งฉันจะส่งสิ่งนี้ผ่าน Time Machine ของ Apple โปรดอย่าพยายามปิดบัง WordPress มันไม่คุ้มค่า.


เอเวอรี่ฉันยังเป็นคนหนึ่งที่ต้องการจะสมบูรณ์แบบ .. ก่อนอื่นฉันต้องการสร้าง wordpress multisite โดยการซ่อนความจริงที่ว่าฉันกำลังใช้ wordpress อยู่ ฉันเจอปัญหามากมายและในที่สุดก็ทำให้ความคิดหลาย ๆ เนื่องจากปลั๊กอินจำนวนมากไม่รองรับไซต์หลายไซต์ จุดที่ 7 ของคุณระบุว่าคุณถูกแทนที่wp-includesและwp-adminข้อความด้วยตนเอง ฉันค่อนข้างมั่นใจว่าคุณเปิดดูไฟล์แต่ละไฟล์และแทนที่ด้วยตนเอง นั่นเป็นเพราะคุณพลาดซอฟต์แวร์ที่มีประโยชน์บางอย่าง ตัวอย่างเช่นคุณอาจลองgrepwinซึ่งทำให้งานนั้นง่ายขึ้น
Giri

4

หากคุณพยายามซ่อนว่าคุณใช้เวิร์ดเพรสเนื่องจากแครกเกอร์คุณก็มีงานต้องทำจริงๆ หากคุณใช้เคล็ดลับ wp * แล้ว wp-content และ wp- รวมเกี่ยวกับอะไร? คุณจะไม่สามารถเข้าถึงหน้าเหล่านั้นได้และมันจะดูน่ากลัว

นอกจากนี้ยังมีหลายสิ่งหลายอย่างใน Wordpress ที่ใช้งานได้จริงและคุณอาจต้องทำหลาย ๆ อย่างอีกครั้งเมื่อติดตั้งการอัพเกรด (เนื่องจากการเปลี่ยนเส้นทางบางอย่างใน Apache จะไม่ทำเคล็ดลับ)

หากคุณเพียงแค่พยายามซ่อนมันจากมิสเตอร์และมิสซิสทุกคนแน่นอนว่าคุณควรจะทำสิ่งนั้นด้วยความสับสน

คุณได้อ่านคำแนะนำ "การชุบแข็ง Wordpress"? ถ้าไม่คุณควรตรวจสอบ: http://codex.wordpress.org/Hardening_WordPress มันให้การแนะนำที่ดีเกี่ยวกับสิ่งต่างๆมากมายที่คุณสามารถทำได้

นอกจากนี้หากคุณกระตือรือร้นที่จะซ่อนความจริงที่ว่าคุณใช้ Wordpress ทำไมต้องใช้มัน


1. Re: wp-content / wp- รวม ดูลิงค์ในโพสต์ 2. ฉันได้อ่านคำแนะนำเวิร์ด 3. คำถามสุดท้ายของคุณสามารถตอบได้อย่างง่ายดายโดยอ่านลิงค์ที่ฉันโพสต์ ฉันไม่ได้พยายามหยาบคาย แต่คำถามนี้มีส่วนเกี่ยวข้องกับข้อดีทางเทคนิคของคำถามของฉัน ผู้คนจำนวนมากใช้เครื่องมือต่าง ๆ แต่ไม่ต้องการโฆษณา สำหรับบางคนมันเป็นการตัดสินใจทางธุรกิจ
Avery Chan

0

ลองกำหนดค่าของคุณในการกำหนดค่า apache /etc/wordpress/htaccessนี้สามารถรวมของไฟล์เช่น สิ่งนี้จะช่วยให้คุณใช้Directoryคำสั่งกำหนดค่า อย่างไรก็ตามคุณจะต้องรีสตาร์ท apache เพื่อโหลดการเปลี่ยนแปลง ใช้การรีสตาร์ทอย่างนุ่มนวลหากคุณไม่ต้องการให้บริการขัดข้อง

ในการ จำกัด การเข้าถึงไดเรกทอรีด้วย.htaccessไฟล์พวกเขาจำเป็นต้องอยู่ในไดเรกทอรีที่เหมาะสม พวกเขาทำงานเหมือนเนื้อหาของDirectoryคำสั่งกำหนดค่า คุณอาจต้องเปิดใช้งาน.htaccessตัวเลือกที่จำเป็นในการกำหนดค่า apache ของคุณ วิธีการนี้ไม่ได้มีประสิทธิภาพเท่ากับการใช้คำสั่งในการกำหนดค่า apache เนื่องจากต้องมีการวิเคราะห์ซ้ำบ่อยครั้ง


ฉันกำลังมองหาโซลูชันที่ไม่ต้องแก้ไขไฟล์ httpd.conf เพราะสามารถเขียนทับได้ (ฉันอยู่ในโฮสต์ส่วนตัวเสมือน) ฉันจะแก้ไขคำถามอย่างเหมาะสม
เอเวอรี่ชาน

@Avry: คุณจะต้องวางคำสั่งที่คุณจะใส่ในการกำหนดค่า <Directory> ใน.htaccessไฟล์ในไดเรกทอรีที่ตรงกัน หมายเหตุ: Apache แนะนำให้คุณใช้การกำหนดค่าถ้าเป็นไปได้ ใช้การควบคุมเวอร์ชันเพื่อป้องกันการเขียนทับ
BillThor
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.