ปัจจุบันนี้ เนื่องจากเครือข่ายคอมพิวเตอร์ได้รับความนิยมมากขึ้น การรักษาความปลอดภัยของคอมพิวเตอร์จึงไม่เพียงแต่ต้องป้องกันไวรัสคอมพิวเตอร์เท่านั้น แต่ยังต้องปรับปรุงความสามารถของระบบในการต้านทานการบุกรุกที่ผิดกฎหมายจากแฮกเกอร์อีกด้วย นอกจากนี้ ยังต้องมีการปรับปรุงการรักษาความลับของการส่งข้อมูลระยะไกลเพื่อหลีกเลี่ยงการโจรกรรมที่ผิดกฎหมายระหว่างการส่งข้อมูลอีกด้วย บทความนี้กล่าวถึงบางสถานการณ์ที่อาจเกิดขึ้นเมื่อมีการสร้างเว็บเซิร์ฟเวอร์เท่านั้น โดยหวังว่าจะดึงดูดความสนใจ
1. ช่องโหว่ด้านความปลอดภัย
ช่องโหว่บนเว็บเซิร์ฟเวอร์สามารถพิจารณาได้จากประเด็นต่อไปนี้:
1. ไฟล์ลับ ไดเร็กทอรี หรือข้อมูลสำคัญบนเว็บเซิร์ฟเวอร์ที่คุณไม่อนุญาตให้ผู้อื่นเข้าถึง
2. เมื่อส่งข้อมูลจากผู้ใช้ระยะไกลไปยังเซิร์ฟเวอร์ โดยเฉพาะอย่างยิ่งเมื่อส่งข้อมูล เช่น บัตรเครดิต อาชญากรจะดักจับข้อมูลอย่างผิดกฎหมายกลางทาง
3. เว็บเซิร์ฟเวอร์เองก็มีช่องโหว่บางประการ ซึ่งทำให้บางคนบุกรุกระบบโฮสต์ ทำลายข้อมูลสำคัญบางอย่าง และอาจถึงขั้นทำให้ระบบอัมพาตได้
4. ช่องโหว่ด้านความปลอดภัยของ CGI ได้แก่:
(1) การละเว้น Bugs ในระบบโฮสต์โดยตั้งใจหรือไม่ตั้งใจจะสร้างเงื่อนไขสำหรับแฮกเกอร์ที่ผิดกฎหมาย
(2) โปรแกรมที่เขียนด้วยสคริปต์ CGI อาจส่ง Web Hazard ให้กับระบบโฮสต์
5. นอกจากนี้ยังมีเว็บเซิร์ฟเวอร์ธรรมดาบางตัวที่ดาวน์โหลดจากอินเทอร์เน็ตโดยไม่คำนึงถึงปัจจัยด้านความปลอดภัยบางประการ และไม่สามารถใช้สำหรับการใช้งานเชิงพาณิชย์ได้
ดังนั้นไม่ว่าคุณจะกำหนดค่าเซิร์ฟเวอร์หรือเขียนโปรแกรม CGI คุณต้องใส่ใจกับความปลอดภัยของระบบ พยายามอุดช่องโหว่ที่มีอยู่และสร้างสภาพแวดล้อมที่ปลอดภัย
2. ปรับปรุงความปลอดภัยและเสถียรภาพของระบบ
ข้อควรระวังด้านความปลอดภัยของเว็บเซิร์ฟเวอร์:
1. จำกัดการเปิดบัญชีบนเว็บเซิร์ฟเวอร์และลบผู้ใช้บางรายที่ขัดขวางกระบวนการอยู่เป็นประจำ
2. สำหรับบัญชีที่เปิดบนเว็บเซิร์ฟเวอร์ ให้กำหนดข้อกำหนดเกี่ยวกับความยาวของรหัสผ่านและการเปลี่ยนแปลงเป็นประจำเพื่อป้องกันการโจรกรรม
3. พยายามแยก FTP, MAIL และเซิร์ฟเวอร์อื่นๆ ออกจากเซิร์ฟเวอร์เหล่านั้น และลบแอปพลิเคชันที่ไม่เกี่ยวข้องบางส่วน เช่น ftp, sendmail, tftp, NIS, NFS, finger, netstat และอื่นๆ
4. ลบล่ามที่ไม่จำเป็นออกไป เช่น SHELL บนเว็บเซิร์ฟเวอร์ นั่นคือ เมื่อไม่ได้ใช้ PERL ในโปรแกรม CGI ของคุณ ให้ลองลบ PERL ในล่ามระบบ
5. ตรวจสอบไฟล์บันทึกในเซิร์ฟเวอร์เป็นประจำและวิเคราะห์เหตุการณ์ที่น่าสงสัย เมื่อบันทึกเช่น rm, เข้าสู่ระบบ, /bin/perl, /bin/sh ฯลฯ ปรากฏในบันทึกข้อผิดพลาด เซิร์ฟเวอร์ของคุณอาจถูกบุกรุกโดยผู้ใช้ที่ผิดกฎหมายบางราย
6. ตั้งค่าการอนุญาตและคุณลักษณะของไฟล์ระบบบนเว็บเซิร์ฟเวอร์ กำหนดกลุ่มสาธารณะ เช่น WWW ให้กับเอกสารที่ผู้อื่นสามารถเข้าถึงได้ และกำหนดเฉพาะสิทธิ์แบบอ่านอย่างเดียวเท่านั้น ไฟล์ HTML ทั้งหมดอยู่ในกลุ่ม WWW และกลุ่ม WWW ได้รับการจัดการโดยผู้ดูแลเว็บ เฉพาะผู้ดูแลระบบเว็บเท่านั้นที่มีสิทธิ์เขียนไฟล์การกำหนดค่าเว็บ
7. เมื่อเว็บเซิร์ฟเวอร์บางตัวชี้ไดเร็กทอรีเอกสารเว็บและไดเร็กทอรี FTP ไปยังไดเร็กทอรีเดียวกัน คุณควรระวังอย่าระบุไดเร็กทอรี FTP และ CGI-BIN ในไดเร็กทอรีเดียวกัน นี่เป็นการป้องกันไม่ให้ผู้ใช้บางรายอัพโหลดบางโปรแกรม เช่น PERL หรือ SH ผ่าน FTP และใช้ CGI-BIN ของเว็บเพื่อดำเนินการโปรแกรมเหล่านั้น ซึ่งก่อให้เกิดผลเสียตามมา
8. เข้าถึง IP หรือ DNS ของผู้ใช้โดยการจำกัดสิทธิ์ เช่น เพิ่ม: ไปที่ access.conf ใน NCSA:
"ไดเร็กทอรี / เต็ม / พาธ / ถึง / ไดเร็กทอรี"
"จำกัดการรับโพสต์"
สั่งความล้มเหลวร่วมกัน
ปฏิเสธจากทั้งหมด
อนุญาตจาก 168.160.142.abc.net.cn
《/จำกัด》
《/ไดเร็กทอรี》
ด้วยวิธีนี้ เฉพาะลูกค้าที่มีชื่อโดเมน abc.net.cn หรือ IP ที่เป็นของ 168.160.142 เท่านั้นที่สามารถเข้าถึงเว็บเซิร์ฟเวอร์
สำหรับเซิร์ฟเวอร์ CERN หรือ W3C ให้เพิ่มสิ่งนี้ใน httpd.conf:
การป้องกันผู้ใช้ในพื้นที่ {
GetMask @(*.capricorn.com, *.zoo.org, 18.157.0.5)
-
ป้องกัน /relative/path/to/directory/* ผู้ใช้ท้องถิ่น
9.HTTPD ภายใต้ WINDOWS
(1) เซิร์ฟเวอร์การสื่อสาร Netscape สำหรับ NT
ช่องโหว่ของล่าม PERL:
Netscape Communications Server ไม่สามารถจดจำส่วนขยายและความสัมพันธ์ของแอปพลิเคชันภายใต้ CGI-BIN ได้ ตัวอย่างเช่น ไฟล์ .pl เป็นไฟล์การตีความที่เรียกโดยอัตโนมัติโดยโปรแกรมโค้ด PERL แม้แต่ตอนนี้ ไฟล์ perl.exe ก็สามารถจัดเก็บได้ใน CGI เท่านั้น - ไดเรกทอรี BIN ลง ดำเนินการเช่น: /cgi-bin/perl.exe? &my_script.pl. แต่นี่คือ
เป็นไปได้ไหมที่ใครก็ตามที่จะดำเนินการ PERL เมื่อมีคนเพิ่มบางอย่างเช่น: /cgi-bin/perl.exe ลงใน URL ของเบราว์เซอร์ -e unlink <*> อาจทำให้เกิดความเสี่ยงในการลบไฟล์ในไดเร็กทอรีปัจจุบันของเซิร์ฟเวอร์ อย่างไรก็ตาม เว็บไซต์อื่นๆ เช่น O'Reilly WebSite หรือ Purveyor ไม่มีช่องโหว่นี้
ช่องโหว่ในการดำเนินการ CGI ของไฟล์แบตช์:
เนื้อหาของไฟล์ test.bat มีดังนี้:
@ปิดเสียงสะท้อน
echo ประเภทเนื้อหา: ข้อความ/ธรรมดา
เสียงสะท้อน
สะท้อนสวัสดีชาวโลก!
จะเกิดอะไรขึ้นถ้า URL ของเบราว์เซอร์ของลูกค้าคือ:/cgi-bin/test.bat? &dir จากนั้นล่ามคำสั่งจะถูกดำเนินการเพื่อทำให้รายการ DIR สมบูรณ์ สิ่งนี้ทำให้ผู้เยี่ยมชมสามารถดำเนินการคำสั่งอื่นได้
(2)เซิร์ฟเวอร์เว็บไซต์ O′Reilly สำหรับ Windows NT/95
มีช่องโหว่เช่นเดียวกับ Netscape เมื่อใช้ไฟล์แบตช์ในเวอร์ชันก่อน WebSite1.1B อย่างไรก็ตาม เวอร์ชันใหม่จะปิดบทบาทของ .bat ใน CGI รองรับ PERL และเวอร์ชันใหม่ใช้ VB และ C เป็นเครื่องมือในการพัฒนา CGI
(3) เว็บเซิร์ฟเวอร์ IIS ของ Microsoft
IIS ก่อนวันที่ 5 มีนาคม 1996 มีข้อบกพร่องร้ายแรงภายใต้ NT และคุณสามารถใช้คำสั่งคำสั่งได้ตามอำเภอใจ อย่างไรก็ตาม ช่องโหว่ดังกล่าวได้รับการแก้ไขแล้ว และคุณสามารถตรวจสอบวันที่สร้างไฟล์ปฏิบัติการของคุณได้ ยังมีข้อบกพร่องด้านความปลอดภัยบางประการใน IIS 3.0 ซึ่งส่วนใหญ่เป็นสิทธิ์การให้สิทธิ์ภายใต้ CGI-BIN นอกจากนี้ เว็บเซิร์ฟเวอร์หลายแห่งยังมีช่องโหว่ด้านความปลอดภัย ซึ่งได้รับการอัปเดตอย่างต่อเนื่องในระหว่างกระบวนการอัปเกรดเวอร์ชัน ฉันจะไม่แสดงรายการทีละรายการที่นี่
[ตัดหน้า]
3. พิจารณาความปลอดภัยจากมุมมองของการเขียนโปรแกรม CGI
1. การใช้ภาษาที่คอมไพล์ปลอดภัยกว่าภาษาที่แปลแล้ว และควรวางโปรแกรม CGI ไว้ภายใต้ CGI-BIN โดยไม่ขึ้นกับไดเร็กทอรีที่เก็บข้อมูล HTML นี่เป็นการป้องกันไม่ให้ผู้เยี่ยมชมที่ผิดกฎหมายได้รับแหล่งที่มาของภาษาที่แปลจากเบราว์เซอร์ ในรหัส
2. เมื่อเขียนโปรแกรม CGI ในภาษา C คุณควรลองใช้ popen(), system(), คำสั่ง SHELL ทั้งหมดที่เกี่ยวข้องกับ /bin/sh เช่นเดียวกับ system(), exec(), open(), eval( ใน PERL ) และคำสั่งอื่นๆ เช่น exec หรือ eval
เมื่อแบบฟอร์มที่ผู้ใช้กรอกถูกส่งกลับไปยัง CGI อย่าเรียกใช้ฟังก์ชันต่างๆ เช่น system() โดยตรง
นอกจากนี้ สำหรับการเข้ารหัสและการส่งข้อมูล ปัจจุบันมี SSL, SHTTP, SHEN และโปรโตคอลอื่นๆ ให้ทุกคนได้ศึกษา
4. ไฟร์วอลล์
1. แนวคิดของไฟร์วอลล์
ไฟร์วอลล์หมายถึงอุปกรณ์ที่ประกอบด้วยซอฟต์แวร์หรือการรวมกันของอุปกรณ์ซอฟต์แวร์และฮาร์ดแวร์ ซึ่งอยู่ระหว่างคอมพิวเตอร์ขององค์กรหรือกลุ่มเครือข่ายและช่องทางภายนอก (อินเทอร์เน็ต) โดยจะจำกัดการเข้าถึงเครือข่ายภายในของผู้ใช้ภายนอกและ จัดการสิทธิ์การเข้าถึงเครือข่ายภายนอกของผู้ใช้ภายใน
2. มาตรการไฟร์วอลล์
(1) โฮสต์พร็อกซี
"เครือข่ายภายใน - พร็อกซีเกตเวย์ - อินเทอร์เน็ต"
ด้วยวิธีนี้ เครือข่ายภายในจะไม่สื่อสารโดยตรงกับอินเทอร์เน็ต นั่นคือ ผู้ใช้คอมพิวเตอร์เครือข่ายภายในและพร็อกซีเกตเวย์ใช้วิธีการสื่อสาร นั่นคือ การจัดหาโปรโตคอลเครือข่ายภายใน (Netbios, TCP/IP ฯลฯ) และโปรโตคอลการสื่อสารเครือข่าย TCP/IP มาตรฐานถูกนำมาใช้ระหว่างเกตเวย์และ อินเทอร์เน็ต ซึ่งจะป้องกันไม่ให้แพ็กเก็ตข้อมูลเครือข่ายเดินทางโดยตรงระหว่างเครือข่ายภายในและภายนอก คอมพิวเตอร์ภายในต้องเข้าถึงอินเทอร์เน็ตผ่านพร็อกซีเกตเวย์ ซึ่งทำให้ง่ายต่อการจำกัดคอมพิวเตอร์เครือข่ายภายในไม่ให้เข้าถึงคอมพิวเตอร์ภายนอกบนพร็อกซีเซิร์ฟเวอร์ นอกจากนี้ เนื่องจากพร็อกซีเซิร์ฟเวอร์ใช้มาตรฐานโปรโตคอลที่แตกต่างกันทั้งสองด้าน จึงสามารถป้องกันการบุกรุกที่ผิดกฎหมายจากโลกภายนอกได้โดยตรง นอกจากนี้ เกตเวย์ของพร็อกซีเซิร์ฟเวอร์ยังสามารถดำเนินการควบคุมความปลอดภัย เช่น การตรวจสอบแพ็กเก็ตข้อมูล และการยืนยันรหัสผ่าน ด้วยวิธีนี้ ผู้ใช้ทั้งสองด้านสามารถควบคุมและจัดการได้ดีขึ้น โดยทำงานเป็นไฟร์วอลล์
เนื่องจากมาตรการไฟร์วอลล์นี้ดำเนินการผ่านพร็อกซีเซิร์ฟเวอร์ ประสิทธิภาพย่อมได้รับผลกระทบเมื่อมีผู้ใช้ออนไลน์จำนวนมาก พร็อกซีเซิร์ฟเวอร์มีภาระหนัก ดังนั้นซอฟต์แวร์ไคลเอ็นต์จำนวนมากที่เข้าถึงอินเทอร์เน็ตอาจไม่สามารถเข้าถึงอินเทอร์เน็ตได้ตามปกติจากภายใน คอมพิวเตอร์เครือข่าย
(2) การเพิ่มตัวกรองเราเตอร์เสร็จสมบูรณ์
"เครือข่ายภายใน - ตัวกรอง - เราเตอร์ - อินเทอร์เน็ต"
โครงสร้างนี้ใช้เราเตอร์และตัวกรองเพื่อร่วมกันจำกัดไม่ให้คอมพิวเตอร์ภายนอกเข้าถึงเครือข่ายภายในตามที่อยู่ IP หรือชื่อโดเมน นอกจากนี้ยังสามารถระบุหรือจำกัดการเข้าถึงอินเทอร์เน็ตจากเครือข่ายภายในได้อีกด้วย เราเตอร์กำหนดเส้นทางการสื่อสารข้อมูลบน PORT ที่ระบุบนโฮสต์เท่านั้น ในขณะที่ตัวกรองทำการกรอง กรอง การตรวจสอบ และการตรวจสอบความปลอดภัย ซึ่งส่วนใหญ่สามารถแยกการเข้าสู่ระบบการเข้าถึงที่ผิดปกติระหว่างเครือข่ายภายในและภายนอกได้
[ตัดหน้า]3. พิจารณาความปลอดภัยจากมุมมองของการเขียนโปรแกรม CGI
1. การใช้ภาษาที่คอมไพล์ปลอดภัยกว่าภาษาที่แปลแล้ว และควรวางโปรแกรม CGI ไว้ภายใต้ CGI-BIN โดยไม่ขึ้นกับไดเร็กทอรีที่เก็บข้อมูล HTML นี่เป็นการป้องกันไม่ให้ผู้เยี่ยมชมที่ผิดกฎหมายได้รับแหล่งที่มาของภาษาที่แปลจากเบราว์เซอร์ ในรหัส
2. เมื่อเขียนโปรแกรม CGI ในภาษา C คุณควรลองใช้ popen(), system(), คำสั่ง SHELL ทั้งหมดที่เกี่ยวข้องกับ /bin/sh เช่นเดียวกับ system(), exec(), open(), eval( ใน PERL ) และคำสั่งอื่นๆ เช่น exec หรือ eval
เมื่อแบบฟอร์มที่ผู้ใช้กรอกถูกส่งกลับไปยัง CGI อย่าเรียกใช้ฟังก์ชันต่างๆ เช่น system() โดยตรง
นอกจากนี้ สำหรับการเข้ารหัสและการส่งข้อมูล ปัจจุบันมี SSL, SHTTP, SHEN และโปรโตคอลอื่นๆ ให้ทุกคนได้ศึกษา
4. ไฟร์วอลล์
1. แนวคิดของไฟร์วอลล์
ไฟร์วอลล์หมายถึงอุปกรณ์ที่ประกอบด้วยซอฟต์แวร์หรือการรวมกันของอุปกรณ์ซอฟต์แวร์และฮาร์ดแวร์ ซึ่งอยู่ระหว่างคอมพิวเตอร์ขององค์กรหรือกลุ่มเครือข่ายและช่องทางภายนอก (อินเทอร์เน็ต) โดยจะจำกัดการเข้าถึงเครือข่ายภายในของผู้ใช้ภายนอกและ จัดการสิทธิ์การเข้าถึงเครือข่ายภายนอกของผู้ใช้ภายใน
2. มาตรการไฟร์วอลล์
(1) โฮสต์พร็อกซี
"เครือข่ายภายใน - พร็อกซีเกตเวย์ - อินเทอร์เน็ต"
ด้วยวิธีนี้ เครือข่ายภายในจะไม่สื่อสารโดยตรงกับอินเทอร์เน็ต นั่นคือ ผู้ใช้คอมพิวเตอร์เครือข่ายภายในและพร็อกซีเกตเวย์ใช้วิธีการสื่อสาร นั่นคือ การจัดหาโปรโตคอลเครือข่ายภายใน (Netbios, TCP/IP ฯลฯ) และโปรโตคอลการสื่อสารเครือข่าย TCP/IP มาตรฐานถูกนำมาใช้ระหว่างเกตเวย์และ อินเทอร์เน็ต ซึ่งจะป้องกันไม่ให้แพ็กเก็ตข้อมูลเครือข่ายเดินทางโดยตรงระหว่างเครือข่ายภายในและภายนอก คอมพิวเตอร์ภายในต้องเข้าถึงอินเทอร์เน็ตผ่านพร็อกซีเกตเวย์ ซึ่งทำให้ง่ายต่อการจำกัดคอมพิวเตอร์เครือข่ายภายในไม่ให้เข้าถึงคอมพิวเตอร์ภายนอกบนพร็อกซีเซิร์ฟเวอร์ นอกจากนี้ เนื่องจากพร็อกซีเซิร์ฟเวอร์ใช้มาตรฐานโปรโตคอลที่แตกต่างกันทั้งสองด้าน จึงสามารถป้องกันการบุกรุกที่ผิดกฎหมายจากโลกภายนอกได้โดยตรง นอกจากนี้ เกตเวย์ของพร็อกซีเซิร์ฟเวอร์ยังสามารถดำเนินการควบคุมความปลอดภัย เช่น การตรวจสอบแพ็กเก็ตข้อมูล และการยืนยันรหัสผ่าน ด้วยวิธีนี้ ผู้ใช้ทั้งสองด้านสามารถควบคุมและจัดการได้ดีขึ้น โดยทำงานเป็นไฟร์วอลล์
เนื่องจากมาตรการไฟร์วอลล์นี้ดำเนินการผ่านพร็อกซีเซิร์ฟเวอร์ ประสิทธิภาพย่อมได้รับผลกระทบเมื่อมีผู้ใช้ออนไลน์จำนวนมาก พร็อกซีเซิร์ฟเวอร์มีภาระหนัก ดังนั้นซอฟต์แวร์ไคลเอ็นต์จำนวนมากที่เข้าถึงอินเทอร์เน็ตอาจไม่สามารถเข้าถึงอินเทอร์เน็ตได้ตามปกติจากภายใน คอมพิวเตอร์เครือข่าย
(2) การเพิ่มตัวกรองเราเตอร์เสร็จสมบูรณ์
"เครือข่ายภายใน - ตัวกรอง - เราเตอร์ - อินเทอร์เน็ต"
โครงสร้างนี้ใช้เราเตอร์และตัวกรองเพื่อร่วมกันจำกัดไม่ให้คอมพิวเตอร์ภายนอกเข้าถึงเครือข่ายภายในตามที่อยู่ IP หรือชื่อโดเมน นอกจากนี้ยังสามารถระบุหรือจำกัดการเข้าถึงอินเทอร์เน็ตจากเครือข่ายภายในได้อีกด้วย เราเตอร์กำหนดเส้นทางการสื่อสารข้อมูลบน PORT ที่ระบุบนโฮสต์เท่านั้น ในขณะที่ตัวกรองทำการกรอง กรอง การตรวจสอบ และการตรวจสอบความปลอดภัย ซึ่งส่วนใหญ่สามารถแยกการเข้าสู่ระบบการเข้าถึงที่ผิดปกติระหว่างเครือข่ายภายในและภายนอกได้