อนุญาตให้เข้าถึงโฮสต์เสมือน Apache จากเครือข่ายท้องถิ่นเท่านั้น


19

ฉันมีหน้าเว็บบนเซิร์ฟเวอร์ Linux ที่ฉันดูแลโดยใช้ Apache 2.2 เซิร์ฟเวอร์นี้สามารถมองเห็นได้จากโลกภายนอกสำหรับบริการอื่น ๆ

ฉันต้องการกำหนดค่า Apache เพื่อให้โฮสต์เสมือนที่กำหนดสามารถมองเห็นได้จากภายในเครือข่ายท้องถิ่นเท่านั้นดังนั้นฉันสามารถปรับใช้เว็บแอปพลิเคชันเพื่อรับข้อเสนอแนะจากบุคคลอื่นในองค์กรของฉัน ฉันคิดว่าสิ่งนี้เกี่ยวข้องกับคำสั่งอนุญาต แต่การทดลองของฉันไม่เป็นไปด้วยดี

ฉันจะแก้ไขไฟล์ปรับแต่งเพื่อให้บรรลุได้อย่างไร ฉันควรเปลี่ยนการกำหนดค่าไฟร์วอลล์ด้วยหรือไม่


คุณใช้ที่อยู่ IP ส่วนตัว (ไม่สามารถกำหนดเส้นทางได้) เช่น 10.0.0.100 หรือที่อยู่ IP สาธารณะ (ที่กำหนดเส้นทางได้) สำหรับเซิร์ฟเวอร์ของคุณหรือไม่
closetnoc

เซิร์ฟเวอร์มีที่อยู่ IP สาธารณะและฉันสามารถเชื่อมต่อกับมันได้จากนอกเครือข่ายงาน - จากที่บ้านตัวอย่างเช่น คอมพิวเตอร์ของเพื่อนร่วมงานทุกคนมีที่อยู่ IP ภายในเครื่องเป็นประเภท 10. *. *. *
Btz

คำตอบ:


12

ง่าย. เพียงตั้งค่าบางอย่างเช่นนี้ภายในการกำหนดค่าหลักหรือการกำหนดค่าเสมือนของคุณ:

<Directory /var/www/path/to/your/web/documents>

  Order Deny,Allow
  Deny from all
  Allow from 127.0.0.1 ::1
  Allow from localhost
  Allow from 192.168
  Allow from 10
  Satisfy Any

</Directory>

<Directory></Directory>คำสั่งโดยทั่วไปว่า“ใช้กฎเหล่านี้เพื่ออะไรในไดเรกทอรีนี้ และโดย“ ไดเรกทอรีนี้” ที่อ้างถึงสิ่ง/var/www/path/to/your/web/documentsที่ฉันได้ตั้งค่าไว้ในตัวอย่างนี้ แต่ควรเปลี่ยนให้ตรงกับเส้นทางไดเรกทอรีท้องถิ่นของไซต์ของคุณ

ถัดไปใน<Directory></Directory>พื้นที่ที่คุณกำลังเปลี่ยนแปลงพฤติกรรม Apache เริ่มต้นซึ่งทุกอย่างโดยค่าเริ่มต้นAllow Order Deny,Allowถัดไปคุณตั้งค่าDeny from allจากปฏิเสธการเข้าถึงจากทุกคน Follwing ที่เป็นAllow fromข้อความที่อนุญาตให้เข้าถึงได้จาก127.0.0.1 ::1(ที่อยู่ IP localhost), localhost(localhost นั้น) นั่นคือทุกสิ่งมาตรฐาน เนื่องจากการเข้าถึงจากlocalhostเป็นสิ่งจำเป็นสำหรับกระบวนการระบบภายในจำนวนมาก

สิ่งที่ตามมาคือสิ่งที่สำคัญสำหรับคุณ

ตัวเลือกAllow fromfor 192.168และ10จะอนุญาตการเข้าถึงจาก / ที่อยู่เครือข่ายใด ๆ ทั้งหมดที่อยู่ในช่วงเครือข่ายที่ขึ้นต้นด้วยตัวเลขเหล่านั้น

ดังนั้นโดยระบุ192.168ว่าโดยทั่วไปหมายความว่าหากผู้ใช้มีที่อยู่เช่น192.168.59.27หรือ192.168.1.123พวกเขาจะสามารถดูเว็บไซต์

และในทำนองเดียวกันที่ใช้Allow fromสำหรับ10คำนำหน้ามั่นใจว่าถ้ามีคนมีที่อยู่ IP ของ10.0.1.2หรือแม้กระทั่ง10.90.2.3พวกเขาจะสามารถดูเนื้อหาที่

เครือข่ายภายในทั้งหมดค่อนข้างมากในโลกใช้192.168ช่วงหรือบางสิ่งบางอย่างใน10ช่วง ไม่มีอะไรภายนอก ดังนั้นการใช้คอมโบนี้จะบรรลุเป้าหมายของคุณในการบล็อกการเข้าถึงโลกภายนอก แต่อนุญาตเฉพาะการเข้าถึงจากภายในเครือข่ายท้องถิ่นของคุณ


สิ่งที่Satisfy Anyควรทำในกรณีนี้? ฉันไม่รู้อะไรเลยเกี่ยวกับสิ่งนี้ทั้งหมด แต่เมื่อมันปรากฏในสถานการณ์ของฉันฉันสามารถเข้าถึงหน้า (ฉันใช้<Location /path>) จากเครือข่ายภายนอก การเอาออกอย่างไรก็ตามแก้ไขปัญหาของฉันได้ มันดีที่จะเข้าใจว่าทำไมถึงเป็นเช่นนี้เพราะกังวลเล็กน้อยว่าฉันสามารถเข้าถึงหน้าได้แม้จะมีกฎอยู่
liamnichols

@liamnichols ตามที่อธิบายไว้ที่นี่ :“ อนุญาตคำขอหากตรงตามข้อกำหนดใด ๆ (การรับรองความถูกต้องหรือการเข้าถึง)”
JakeGould

14

ผู้ที่เชื่อมโยงไปถึงคำตอบนี้โปรดทราบว่านี่เป็นข้อมูลเฉพาะสำหรับ Apache 2.2

Apache 2.4 ได้คัดค้านคำสั่งเหล่านี้

วิธีใหม่คือการใช้โมดูลmod_authz_hostและRequireคำสั่ง ( ลิงก์ )

ใน Apache 2.4 คุณควรทำ

<Directory /var/www/ncp-web/>
  Require host localhost
  Require ip 127.0.0.1
  Require ip 192.168
  Require ip 10
</Directory>

และลบคำสั่งอนุญาตทั้งหมด


5

เพิ่มส่วนนี้ภายในคำสั่งโฮสต์เสมือนของคุณ:

<Location /mypathurl>
    Order deny,allow
    Deny from all
    Allow from 192.168.1.10
</Location>

แทนที่ IP ของคุณด้านบน สิ่งนี้ไม่ควรใช้เพื่อความปลอดภัยระดับการเงิน FYI


-1

ฉันไม่ทราบว่าคุณมีการตั้งค่าเครือข่ายของคุณอย่างไรฉันกำลังสมมติว่ามีบางสิ่งที่จะลองและให้คำตอบที่ดีกว่า

สมมติว่าคุณมีสำนักงานขนาดเล็กที่มีการเชื่อมต่อ DSL คุณจะมีที่อยู่ IP สาธารณะแบบคงที่หรือบล็อกที่อยู่ที่กำหนดให้กับสายของคุณโมเด็ม DSL และไฟร์วอลล์ โดยไม่ต้องลงรายละเอียดว่าเกิดอะไรขึ้นฉันจะไปยังส่วนที่สำคัญ

คุณควรใช้ NAT (การแปลที่อยู่เครือข่าย) สิ่งนี้จะช่วยให้ที่อยู่ IP สาธารณะสามารถอยู่ในฝั่ง WAN (อินเทอร์เน็ต) ของเครือข่ายของคุณและใช้ที่อยู่ IP ส่วนตัว (เช่น 10.0.0.100) ภายในเครือข่ายด้าน LAN นี่เป็นขั้นตอนการปฏิบัติงานมาตรฐาน หากคุณโฮสต์เว็บเซิร์ฟเวอร์ภายในเครือข่ายของคุณคุณจะใช้การส่งต่อพอร์ตหรือกลไกอื่น ๆ ที่คล้ายกัน) เพื่อชี้ปริมาณการใช้งานเว็บใด ๆ ไปยังเว็บเซิร์ฟเวอร์ของคุณ

ในสถานการณ์มาตรฐานนี้คอมพิวเตอร์ภายในของคุณทั้งหมดจะใช้ที่อยู่ IP ส่วนตัว

สมมติว่าคุณมีการตั้งค่าเครือข่ายมาตรฐานที่คล้ายกันคุณจะเปลี่ยนที่อยู่ IP ของคอมพิวเตอร์ของคุณจากที่อยู่ IP สาธารณะเป็นที่อยู่ IP ส่วนตัว เครือข่ายของคุณอาจมีการตั้งค่า DHCP ซึ่งคอมพิวเตอร์ของคุณสามารถขอที่อยู่ IP ที่มีอยู่ได้ ซึ่งหมายความว่าแทนที่จะระบุที่อยู่ IP คุณเลือกที่จะใช้ DHCP และที่อยู่ IP จะได้รับมอบหมาย หากไม่มี DHCP คุณจะต้องตรวจสอบคอมพิวเตอร์อื่น ๆ เพื่อหาพื้นที่ที่อยู่ IP ส่วนตัวที่อาจใช้งานและเลือกที่อยู่ IP ภายในพื้นที่ที่ไม่ได้ใช้ คุณสามารถระบุที่อยู่ IP ที่ไม่ได้ใช้นี้ในการตั้งค่าเครือข่ายของคุณ สิ่งนี้จะป้องกันไม่ให้ระบบของคุณปรากฏบนอินเทอร์เน็ต


ฉันคิดเกี่ยวกับมัน แต่มันไม่ได้เป็นวิธีแก้ปัญหาในทางปฏิบัติ มีบริการบนเครื่องที่ต้องมองเห็นจากภายนอกและในกรณีใด ๆ ฉันวางแผนที่จะทำให้เว็บแอปพลิเคชันปรากฏอีกครั้งในอีกไม่กี่วัน - ไม่มีจุดในการปฏิวัติโครงร่างเครือข่ายเพียงไม่กี่วัน อย่างไรก็ตามสิ่งที่ฉันสามารถทำงานได้คือการตั้งค่า Apache
Btz

หากคุณมีไฟร์วอลล์คุณสามารถปิดพอร์ตบางพอร์ตไปยังที่อยู่ IP นั้นได้
Closnoc

สามารถใช้การตั้งค่าไฟร์วอลล์ แต่มันเกินความจริง Apache ได้สร้างฟังก์ชันการทำงานเพื่อปฏิเสธหรืออนุญาตตามที่อยู่ IP และเกณฑ์อื่น ๆ ที่เกี่ยวข้อง ดูคำตอบของฉันสำหรับรายละเอียดเพิ่มเติม
JakeGould

@ JakeGould Firewall ไม่จำเป็นต้องแก้ปัญหามากเกินไป ฉันรู้ว่า Apache ดีจริงๆ อย่างไรก็ตามมีตัวเลือกการกรอง HTTP ในไฟร์วอลล์ที่ดีที่สุดซึ่งช่วยได้โดยไม่ต้องโหลดตัวเซิร์ฟเวอร์เอง ในขณะที่ Apache ยอดเยี่ยม แต่ก็ไม่มีข้อบกพร่อง รวมถึงการเข้าถึงพอร์ตรวมถึงการเข้าถึงพอร์ตทางเลือกสามารถจัดการโดยใช้ไฟร์วอลล์เพื่อให้บริการเว็บบางแห่งยังคงเป็นสาธารณะและอื่น ๆ สามารถเข้าถึงได้เฉพาะภายใน LAN
Closnoc
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.