วิธีกำหนดค่าไฟร์วอลล์ Windows เพื่ออนุญาตให้ใช้พอร์ตทั้งหมดโดย IIS Express


9

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

ฉันรู้คำตอบ defacto มีแนวโน้มที่จะเป็น "อย่าทำอย่างนี้" ดังนั้นโปรดเข้าใจ ; ฉันกำลังเรียกใช้ Visual Studio และ IIS Express ภายในเครื่องเสมือนและต้องการเชื่อมต่อจากโฮสต์ระบบปฏิบัติการเพื่อการทดสอบและดังนั้นจึงไม่เกี่ยวข้องกับความปลอดภัยของการเปิดพอร์ตทั้งหมดที่ใช้โดย IIS Express

ฉันสร้างกฎขาเข้าโดยตั้งค่าโปรแกรม%ProgramFiles% (x86)\IIS Express\iisexpress.exeเป็นซึ่งเรียกใช้งานได้ตามตัวจัดการงาน ข้อกำหนดของกฎอื่น ๆ ทั้งหมดจะถูกปล่อยให้ว่างเปล่า (ที่อยู่ภายในเครื่องใด ๆ ที่อยู่ระยะไกลใด ๆ และพอร์ตในท้องถิ่นพอร์ตระยะไกลใด ๆ ที่ "อนุญาต" ผู้ใช้ที่ได้รับอนุญาต "ใด ๆ " คอมพิวเตอร์ที่ได้รับอนุญาต) การเชื่อมต่อใช้งานได้เฉพาะเมื่อฉันมีกฎสำหรับพอร์ตเฉพาะที่ให้บริการโดย IIS Express

เนื่องจากมันจะทำให้ชีวิตของฉันง่ายขึ้น (และโดยหลักแล้วเนื่องจาก technet บอกว่าควรใช้งานได้) ฉันจึงไม่จำเป็นต้องเพิ่มกฎไฟร์วอลล์สำหรับแต่ละแอพที่ฉันสร้าง

* งาน "สร้างกฎที่อนุญาตให้โปรแกรมฟังและยอมรับการรับส่งข้อมูลเครือข่ายขาเข้าในพอร์ตใด ๆ ที่ต้องการ"


1
เมื่อคุณพูดถึงความปลอดภัยโดยไม่ต้องกังวลจะมีปัญหากับการเปิดพอร์ตทั้งหมดหรือไม่
Abraxas

เพียงแค่ปิดไฟร์วอลล์ในระบบปฏิบัติการของแขก .. :-) ฉันจะปิดการใช้งานทุกอย่างที่ฉันสามารถทำได้ในระบบปฏิบัติการแขกของฉัน ..
Kody Brown

คำตอบ:


1

มีปัญหาสองสามข้อที่คุณพบ หนึ่งในนั้นiisexpress.exeไม่ใช่กระบวนการที่รับผิดชอบการรับส่งข้อมูล HTTP ฟังก์ชันการทำงานที่จะดำเนินการในฐานะที่เป็นส่วนหนึ่งโหมดเคอร์เนลของสแต็คในเครือข่ายของhttp.sys Windows (สิ่งนี้ทำเพื่อเหตุผลด้านประสิทธิภาพสำหรับข้อมูลเพิ่มเติมให้ดูที่บทนำสู่สถาปัตยกรรม IIS ) ดังนั้นการสร้างกฎสำหรับiisexpress.exeจะไม่ทำอะไรเลย

ประการที่สองhttp.sysตามค่าเริ่มต้นไม่อนุญาตให้โปรแกรมที่ทำงานในฐานะที่ไม่ใช่ผู้ดูแลระบบรับฟังคอมพิวเตอร์เครื่องอื่น ตามการให้บริการการรับส่งข้อมูลภายนอกด้วย WebMatrixคุณต้องเรียกใช้คำสั่งนี้ในพรอมต์คำสั่งการดูแลระบบเพื่อให้ผู้ใช้ทุกคนสามารถฟังเครื่องอื่นผ่านhttp.sys:

netsh http add urlacl url=http://MACHNAME:PORT/ user=everyone

แทนที่MACHNAMEด้วยชื่อโฮสต์ที่จะใช้ในการติดต่อเว็บไซต์และPORTพอร์ตการจราจร ฉันได้อ่านแล้วว่าการใช้*แทนชื่อโฮสต์ที่เฉพาะเจาะจงทำให้มันฟังในชื่อ / อินเตอร์เฟสทั้งหมด แต่ฉันยังไม่ได้ทดสอบส่วนตัวและเอกสารบางส่วนใช้+แทน เมื่อคุณตั้งค่า ACL แล้วคุณสามารถสร้างกฎไฟร์วอลล์ขาเข้าสำหรับพอร์ตได้

อ่านเพิ่มเติม: การกำหนดค่า HTTP และ HTTPS

ความคิดเห็นด้านข้าง:มีตัวแปรสภาพแวดล้อมที่เกิดขึ้นจริงเป็นเรื่องที่ชี้ไปยังรุ่น 32 %PROGRAMFILES(X86)%บิตของแฟ้มโปรแกรม: (เส้นทางไม่ใช่ปัญหาของคุณ)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.