เพื่อนๆ หลายคนเคยประสบปัญหามากมายเมื่อใช้ IIS6 ในการสร้างเว็บไซต์ ในอดีตเราพบปัญหาเหล่านี้บางส่วน และบางส่วนเป็นปัญหาใหม่ หลังจากการทดลองหลายครั้ง เมื่อรวมกับประสบการณ์ในการแก้ไขปัญหาก่อนหน้านี้ เราจึงได้ข้อสรุปนี้ สามารถช่วยทุกคนได้
ปัญหาที่ 1: ไม่ได้เปิดใช้งานเส้นทางหลัก
ตัวอย่างอาการ:
Server.MapPath() error'ASP 0175: 80004005'
ไม่อนุญาตให้ใช้อักขระเส้นทาง
/0709/dqyllhsub/news/OpenDatabase.asp บรรทัด 4
ไม่ได้รับอนุญาตในพารามิเตอร์เส้นทางของ อักขระ MapPath'..'
การวิเคราะห์สาเหตุ:
เว็บเพจจำนวนมากใช้คำสั่งเช่น ../ รูปแบบ (นั่นคือ กลับไปยังเพจก่อนหน้า นั่นคือ เส้นทางหลัก) อย่างไรก็ตาม ด้วยเหตุผลด้านความปลอดภัยใน IIS6.0 ตัวเลือกนี้จะถูกปิดตามค่าเริ่มต้น
วิธีแก้ไข:
ในคุณสมบัติ IIS->โฮมไดเร็กทอรี->การกำหนดค่า->ตัวเลือก ทำเครื่องหมายที่ช่องถัดจาก "เปิดใช้งานเส้นทางหลัก" ยืนยันการรีเฟรช
ปัญหาที่ 2: การกำหนดค่าที่ไม่เหมาะสมของส่วนขยายเว็บของ ASP (ใช้ได้กับ ASP.NET, CGI ด้วย)
ตัวอย่างอาการ:
ข้อผิดพลาด HTTP 404 - ไม่พบไฟล์หรือไดเรกทอรี
การวิเคราะห์สาเหตุ:
ใน IIS6.0 มีตัวเลือกส่วนขยายโปรแกรมเว็บใหม่ ซึ่งคุณสามารถอนุญาตหรือปิดใช้งาน ASP, ASP.NET, CGI, IDC และโปรแกรมอื่น ๆ ตามค่าเริ่มต้น ASP และโปรแกรมอื่น ๆ เป็นสิ่งต้องห้าม
วิธีแก้ไข:
เลือก Active Server Pages ในส่วนขยายบริการเว็บใน IIS แล้วคลิก "อนุญาต"
ปัญหาที่ 3: การกำหนดค่าการรับรองความถูกต้องที่ไม่เหมาะสม
ตัวอย่างอาการ:
ข้อผิดพลาด HTTP 401.2 - ไม่ได้รับอนุญาต: การเข้าถึงถูกปฏิเสธเนื่องจากการกำหนดค่าเซิร์ฟเวอร์
การวิเคราะห์สาเหตุ:
IIS รองรับวิธีการรับรองความถูกต้องของเว็บต่อไปนี้:
(1) การรับรองความถูกต้องแบบไม่ระบุ
ชื่อ IIS สร้างบัญชีชื่อ IUSR_computer (โดยที่ชื่อคอมพิวเตอร์คือชื่อของเซิร์ฟเวอร์ที่ใช้ IIS) ซึ่งใช้ในการรับรองความถูกต้องของผู้ใช้ที่ไม่ระบุชื่อเมื่อร้องขอเนื้อหาเว็บ ตรวจสอบสิทธิ์ บัญชีนี้ให้สิทธิ์การเข้าสู่ระบบภายในแก่ผู้ใช้ คุณสามารถรีเซ็ตการเข้าถึงของผู้ใช้ที่ไม่ระบุชื่อเพื่อใช้บัญชี Windows ที่ถูกต้องได้
(2) การตรวจสอบสิทธิ์ขั้นพื้นฐาน
ใช้การตรวจสอบสิทธิ์ขั้นพื้นฐานเพื่อจำกัดการเข้าถึงไฟล์บนเว็บเซิร์ฟเวอร์รูปแบบ NTFS ด้วยการรับรองความถูกต้องขั้นพื้นฐาน ผู้ใช้จะต้องป้อนข้อมูลประจำตัว และการเข้าถึงจะขึ้นอยู่กับ ID ผู้ใช้ ID ผู้ใช้และรหัสผ่านจะถูกส่งผ่านเครือข่ายในรูปแบบข้อความที่ชัดเจน
(3) การรับรองความถูกต้องแบบรวมของ Windows
การรับรองความถูกต้องแบบรวมของ Windows มีความปลอดภัยมากกว่าการรับรองความถูกต้องขั้นพื้นฐาน และทำงานได้ดีในสภาพแวดล้อมอินทราเน็ตที่ผู้ใช้มีบัญชีโดเมน Windows ในการรับรองความถูกต้องของ Windows แบบรวม เบราว์เซอร์จะพยายามใช้ข้อมูลรับรองที่ผู้ใช้ปัจจุบันใช้ในระหว่างกระบวนการเข้าสู่ระบบโดเมน และหากความพยายามล้มเหลว ผู้ใช้จะได้รับแจ้งให้ระบุชื่อผู้ใช้และรหัสผ่าน หากคุณใช้ Integrated Windows Authentication รหัสผ่านของผู้ใช้จะไม่ถูกส่งไปยังเซิร์ฟเวอร์ หากผู้ใช้เข้าสู่ระบบคอมพิวเตอร์เฉพาะที่ในฐานะผู้ใช้โดเมน เขาไม่จำเป็นต้องรับรองความถูกต้องอีกครั้งเมื่อเข้าถึงคอมพิวเตอร์เครือข่ายในโดเมนนี้
(4) การรับรองความถูกต้องแบบแยกส่วน
การรับรองความถูกต้องแบบแยกส่วนจะเอาชนะข้อบกพร่องหลายประการของการรับรองความถูกต้องขั้นพื้นฐาน เมื่อใช้การรับรองความถูกต้องแบบแยกย่อย รหัสผ่านจะไม่ถูกส่งในรูปแบบข้อความที่ชัดเจน หรือคุณสามารถใช้ Digest Authentication ผ่านพร็อกซีเซิร์ฟเวอร์ได้ การรับรองความถูกต้องแบบแยกส่วนใช้กลไกการท้าทาย/การตอบสนอง (กลไกเดียวกับที่ใช้โดย Integrated Windows Authentication) โดยที่รหัสผ่านจะถูกส่งในรูปแบบที่เข้ารหัส
การรับรองความถูกต้องของ .NET Passport
Microsoft .NET Passport เป็นบริการตรวจสอบความถูกต้องของผู้ใช้ที่อนุญาตการรักษาความปลอดภัยการลงชื่อเข้าใช้เพียงครั้งเดียว เพื่อให้ผู้ใช้มีความปลอดภัยมากขึ้นเมื่อเข้าถึงเว็บไซต์และบริการที่เปิดใช้งาน .NET Passport ไซต์ที่เปิดใช้งาน .NET Passport อาศัยเซิร์ฟเวอร์กลาง .NET Passport ในการตรวจสอบผู้ใช้ อย่างไรก็ตาม เซิร์ฟเวอร์กลางไม่ได้อนุญาตหรือปฏิเสธการเข้าถึงผู้ใช้เฉพาะไปยังไซต์ที่เปิดใช้งาน .NET Passport แต่ละไซต์
วิธีแก้ไข:
กำหนดค่าการรับรองความถูกต้องของข้อมูลประจำตัวที่แตกต่างกันตามความจำเป็น (โดยทั่วไปคือการตรวจสอบความถูกต้องของข้อมูลประจำตัวแบบไม่ระบุชื่อ ซึ่งเป็นวิธีการตรวจสอบความถูกต้องที่ใช้โดยไซต์ส่วนใหญ่) ตัวเลือกการรับรองความถูกต้องได้รับการกำหนดค่าภายใต้คุณสมบัติ IIS->ความปลอดภัย->การรับรองความถูกต้องและการควบคุมการเข้าถึง
ปัญหาที่ 4: ข้อจำกัด IP ที่กำหนดค่าไม่ถูกต้อง
ตัวอย่างอาการ:
ข้อผิดพลาด HTTP 403.6 - ห้าม: ที่อยู่ IP ของไคลเอ็นต์ถูกปฏิเสธ
การวิเคราะห์เหตุผล:
IIS มีกลไกการจำกัด IP คุณสามารถกำหนดค่าให้จำกัด IP บางอย่างไม่ให้เข้าถึงไซต์ หรือจำกัดเฉพาะ IP บางตัวไม่ให้เข้าถึงไซต์ได้ หากไคลเอ็นต์อยู่ในช่วง IP ที่คุณบล็อก หรือไม่ได้อยู่ภายใน ช่วงที่คุณอนุญาต ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้น
วิธีแก้ไข:
ไปที่คุณสมบัติ IIS->ความปลอดภัย->ข้อ จำกัด ที่อยู่ IP และชื่อโดเมน หากคุณต้องการจำกัดการเข้าถึงที่อยู่ IP บางแห่ง คุณต้องเลือกการเข้าถึงที่ได้รับอนุญาต คลิกเพิ่ม เพื่อเลือกที่อยู่ IP ที่ไม่ได้รับอนุญาต ในทางตรงกันข้าม คุณสามารถอนุญาตการเข้าถึงจากที่อยู่ IP บางแห่งเท่านั้น
ปัญหาที่ 5: บัญชี IUSR ถูกปิดใช้งาน
ตัวอย่างอาการ:
ข้อผิดพลาด HTTP 401.1 - ไม่ได้รับอนุญาต: การเข้าถึงถูกปฏิเสธเนื่องจากข้อมูลประจำตัวที่ไม่ถูกต้อง
การวิเคราะห์สาเหตุ:
เนื่องจากบัญชีที่ผู้ใช้ใช้สำหรับการเข้าถึงแบบไม่ระบุชื่อคือชื่อ IUSR_machine หากบัญชีนี้ถูกปิดใช้งาน ผู้ใช้จะไม่สามารถเข้าถึงได้
วิธีแก้ไข:
แผงควบคุม -> เครื่องมือการดูแลระบบ -> การจัดการคอมพิวเตอร์ -> ผู้ใช้และกลุ่มภายใน เปิดใช้งานบัญชีชื่อเครื่อง IUSR
ปัญหาที่ 6: ตั้งค่าสิทธิ์ NTFS ไม่ถูกต้อง
ตัวอย่างอาการ:
ข้อผิดพลาด HTTP 401.3 - ไม่ได้รับอนุญาต: การเข้าถึงถูกปฏิเสธเนื่องจากการตั้งค่า ACL บนทรัพยากรที่ร้องขอ
การวิเคราะห์สาเหตุ:
ผู้ใช้เว็บไคลเอ็นต์อยู่ในกลุ่มผู้ใช้ ดังนั้น หากสิทธิ์ NTFS ของไฟล์ไม่เพียงพอ (เช่น ไม่มีสิทธิ์ในการอ่าน) หน้าจะไม่สามารถเข้าถึงได้
วิธีแก้ไข:
ไปที่แท็บความปลอดภัยของโฟลเดอร์และกำหนดค่าสิทธิ์ของผู้ใช้ อย่างน้อยก็ให้สิทธิ์ในการอ่าน การตั้งค่าสิทธิ์ NTFS จะไม่อธิบายไว้ที่นี่
คำถามที่ 7: บัญชี IWAM ไม่ซิงค์
ตัวอย่างอาการ:
HTTP 500 -
การวิเคราะห์สาเหตุข้อผิดพลาดเซิร์ฟเวอร์ภายใน:
บัญชี IWAM เป็นบัญชีที่มีอยู่แล้วภายในที่สร้างขึ้นโดยอัตโนมัติโดยระบบเมื่อมีการติดตั้ง IIS หลังจากสร้างบัญชี IWAM แล้ว จะมีการใช้งานร่วมกันโดย Active Directory ฐานข้อมูล IIS metabase และแอปพลิเคชัน COM+ รหัสผ่านของบัญชีจะถูกบันทึกโดยบุคคลที่สามตามลำดับ และระบบปฏิบัติการจะรับผิดชอบในการซิงโครไนซ์รหัสผ่าน IWAM ที่บันทึกไว้โดยทั้งสามฝ่าย ฝ่าย การซิงโครไนซ์รหัสผ่านของระบบสำหรับบัญชี IWAM บางครั้งล้มเหลว ส่งผลให้รหัสผ่านไม่สอดคล้องกันสำหรับบัญชี IWAM
วิธีแก้ไข:
หากมี AD ให้เลือก Start->Programs->Administrative Tools->Active Directory Users and Computers ตั้งรหัสผ่านสำหรับบัญชี IWAM เรียกใช้ c:InetpubAdminScripts>adsutil SET w3svc/WAMUserPass + รหัสผ่านเพื่อซิงโครไนซ์รหัสผ่านฐานข้อมูล IIS metabase เรียกใช้ cscript c:inetpubadminscriptssynciwam.vbs -v เพื่อซิงโครไนซ์รหัสผ่านของบัญชี IWAM ในแอปพลิเคชัน COM+
คำถามที่ 8: ปัญหาการตั้งค่า MIME ส่งผลให้ไม่สามารถดาวน์โหลดไฟล์บางประเภทได้ (ใช้ ISO เป็นตัวอย่าง)
ตัวอย่างอาการ:
ข้อผิดพลาด HTTP 404 - ไม่พบไฟล์หรือไดเร็กทอรี
การวิเคราะห์สาเหตุ:
IIS6.0 ยกเลิกการสนับสนุนสำหรับ MIME บางประเภท เช่น ISO ทำให้เกิดข้อผิดพลาดในการดาวน์โหลดไคลเอ็นต์
วิธีแก้ไข:
คุณสมบัติ -> ส่วนหัว HTTP -> ประเภท MIME -> ใหม่ใน IIS ในกล่องโต้ตอบถัดไป กรอกนามสกุลเป็น .ISO และประเภท MIME เป็นแอปพลิเคชัน
นอกจากนี้ การบล็อกไฟร์วอลล์ ข้อผิดพลาดในการกำหนดค่า ODBC ข้อจำกัดด้านประสิทธิภาพของเว็บเซิร์ฟเวอร์ ข้อจำกัดของเธรด และปัจจัยอื่นๆ ยังเป็นสาเหตุที่เป็นไปได้ที่ทำให้เซิร์ฟเวอร์ IIS ไม่สามารถเข้าถึงได้ ซึ่งจะไม่มีการกล่าวถึงทีละข้อที่นี่