FTP เป็นผู้มีประสบการณ์ในแอปพลิเคชันอินเทอร์เน็ต ซึ่งอำนวยความสะดวกในการแบ่งปันไฟล์โดยผู้ใช้ระดับองค์กร อย่างไรก็ตาม ปัญหาด้านความปลอดภัยมักเกิดขึ้นที่ FTP เสมอ วิธีป้องกันผู้โจมตีจากการขโมยข้อมูลสำคัญจากเซิร์ฟเวอร์ FTP ด้วยวิธีการที่ผิดกฎหมาย วิธีป้องกันผู้โจมตีจากการใช้เซิร์ฟเวอร์ FTP เพื่อแพร่กระจายโทรจันและไวรัส ฯลฯ นี่เป็นปัญหาที่ผู้ดูแลระบบต้องใส่ใจ คราวนี้ผมจะยกตัวอย่าง VSFTP ซึ่งใช้กันอย่างแพร่หลายมากที่สุดบนแพลตฟอร์มระบบปฏิบัติการ Linux เพื่อพูดถึงวิธีปรับปรุงความปลอดภัยของเซิร์ฟเวอร์ FTP
1. ห้ามผู้ใช้ระดับระบบเข้าสู่ระบบเซิร์ฟเวอร์ FTP
เพื่อปรับปรุงความปลอดภัยของเซิร์ฟเวอร์ FTP วิธีที่ดีที่สุดคือผู้ดูแลระบบต้องตั้งค่าบัญชี FTP แยกต่างหากสำหรับพนักงาน แทนที่จะมอบผู้ใช้ระดับระบบให้กับผู้ใช้ทั่วไป ซึ่งจะนำมาซึ่งความเสี่ยงด้านความปลอดภัยอย่างมาก ในเซิร์ฟเวอร์ VSFTP บัญชีล็อกอินสามารถจัดการได้ผ่านไฟล์คอนฟิกูเรชัน vsftpd.ftpusers อย่างไรก็ตาม บัญชีนี้อยู่ในบัญชีดำ และบุคคลที่รวมอยู่ในบัญชีนี้จะไม่สามารถใช้บัญชีของตนเพื่อเข้าสู่ระบบเซิร์ฟเวอร์ FTP ได้ หลังจากปรับใช้เซิร์ฟเวอร์ VSFTP เราสามารถใช้คำสั่ง vi เพื่อดูไฟล์การกำหนดค่าและพบว่ามีบัญชีเริ่มต้นหลายบัญชีอยู่แล้ว ในหมู่พวกเขา รูทผู้ใช้ขั้นสูงของระบบก็อยู่ในหมู่พวกเขาด้วย จะเห็นได้ว่าด้วยเหตุผลด้านความปลอดภัย เซิร์ฟเวอร์ VSFTP จะห้ามไม่ให้บัญชีรูทเข้าสู่ระบบเซิร์ฟเวอร์ FTP ตามค่าเริ่มต้น หากผู้ดูแลระบบต้องการอนุญาตให้บัญชีระบบ เช่น รูท ล็อกอินเข้าสู่เซิร์ฟเวอร์ FTP เขาหรือเธอจำเป็นต้องลบรูทและชื่อผู้ใช้อื่น ๆ ที่เกี่ยวข้องในไฟล์การกำหนดค่านี้ อย่างไรก็ตาม การอนุญาตให้บัญชีระบบเข้าสู่ระบบเซิร์ฟเวอร์ FTP จะส่งผลเสียต่อความปลอดภัย ด้วยเหตุนี้ ฉันไม่แนะนำให้ผู้ดูแลระบบทำเช่นนี้ เป็นการดีที่สุดสำหรับผู้ดูแลระบบที่จะไม่เปลี่ยนแปลงบัญชีระบบใดๆ ที่เกี่ยวข้องในไฟล์นี้ และคงการตั้งค่าของบัญชีเหล่านี้ไว้
หากคุณจำเป็นต้องปิดการใช้งานบัญชีอื่นด้วยเหตุผลอื่น คุณสามารถเพิ่มชื่อบัญชีลงในไฟล์นี้ได้ ตัวอย่างเช่น เซิร์ฟเวอร์ FTP และเซิร์ฟเวอร์ฐานข้อมูลอาจถูกปรับใช้บนเซิร์ฟเวอร์ในเวลาเดียวกัน ด้วยเหตุผลด้านความปลอดภัย เป็นความคิดที่ดีที่จะเพิ่มบัญชีของผู้ดูแลระบบฐานข้อมูลลงในบัญชีดำนี้
2. เสริมสร้างการควบคุมผู้ใช้ที่ไม่ระบุชื่อ
ผู้ใช้ที่ไม่ระบุชื่อหมายถึงบัญชีที่ไม่ได้กำหนดไว้ในเซิร์ฟเวอร์ FTP และผู้ดูแลระบบ FTP ยังคงต้องการให้พวกเขาเข้าสู่ระบบเพื่อความสะดวกในการจัดการ แต่ท้ายที่สุดแล้ว พวกเขายังไม่ได้รับการอนุมัติจากเซิร์ฟเวอร์ เพื่อปรับปรุงความปลอดภัยของเซิร์ฟเวอร์ สิทธิ์ของพวกเขาจะต้องถูกจำกัด นอกจากนี้ยังมีพารามิเตอร์มากมายบนเซิร์ฟเวอร์ VSFTP ที่สามารถใช้เพื่อควบคุมสิทธิ์ของผู้ใช้ที่ไม่ระบุชื่อ ผู้ดูแลระบบจำเป็นต้องดำเนินการกำหนดค่าที่เกี่ยวข้องตามระดับความปลอดภัยของเซิร์ฟเวอร์ FTP ควรสังเกตว่ายิ่งการควบคุมการอนุญาตของผู้ใช้ที่ไม่ระบุชื่อเข้มงวดมากขึ้นเท่าใด ความปลอดภัยของเซิร์ฟเวอร์ FTP ก็จะยิ่งสูงขึ้นเท่านั้น แต่ในขณะเดียวกันความสะดวกในการเข้าถึงของผู้ใช้ก็จะลดลงเช่นกัน ดังนั้นท้ายที่สุดแล้ว ผู้ดูแลระบบยังคงต้องรักษาสมดุลระหว่างความปลอดภัยของเซิร์ฟเวอร์และความสะดวกสบาย
ด้านล่างนี้คือการกำหนดค่าต่างๆ ที่ฉันแนะนำสำหรับผู้ใช้ที่ไม่ระบุชื่อ หากคุณไม่ทราบวิธีการกำหนดค่า คุณสามารถดูการกำหนดค่าเหล่านี้ได้ การกำหนดค่าเหล่านี้คำนึงถึงความปลอดภัยของเซิร์ฟเวอร์และความสะดวกของผู้ใช้
หนึ่งคือพารามิเตอร์ anon_world_readable_only พารามิเตอร์นี้ใช้เพื่อควบคุมว่าผู้ใช้ที่ไม่ระบุชื่อสามารถดาวน์โหลดไฟล์ที่อ่านได้จากเซิร์ฟเวอร์ FTP เป็นหลักหรือไม่ หากมีการใช้งานเซิร์ฟเวอร์ FTP ภายในองค์กร และส่วนใหญ่ใช้โดยพนักงานภายใน วิธีที่ดีที่สุดคือตั้งค่าพารามิเตอร์นี้เป็น YES จากนั้นใส่แบบฟอร์มทั่วไปของบริษัทและเอกสารสาธารณะอื่นๆ ลงไป เพื่อให้พนักงานสามารถดาวน์โหลดเอกสารเหล่านี้ได้โดยไม่เปิดเผยตัวตน สิ่งนี้จะไม่ส่งผลกระทบต่อความปลอดภัยของเซิร์ฟเวอร์ FTP แต่จะอำนวยความสะดวกในการปฏิบัติงานของพนักงานคนอื่นด้วย
ประการที่สองคือพารามิเตอร์ anon_upload_enable พารามิเตอร์นี้ระบุว่าผู้ใช้ที่ไม่ระบุชื่อสามารถอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์ FTP ภายใต้การเข้าถึงแบบไม่ระบุชื่อได้หรือไม่ โดยปกติแล้ว พารามิเตอร์นี้ควรตั้งค่าเป็น No นั่นคือผู้ใช้ไม่ได้รับอนุญาตให้อัปโหลดไฟล์ระหว่างการเข้าถึงโดยไม่ระบุชื่อ ไม่เช่นนั้นหากใครก็ตามสามารถอัพโหลดไฟล์ได้ แล้วหากอีกฝ่ายอัพโหลดไฟล์ไวรัส บริษัทก็จะได้รับผลกระทบ ดังนั้นผู้ใช้ที่ไม่ระบุชื่อจึงควรถูกห้ามไม่ให้อัพโหลดไฟล์ แต่มีข้อยกเว้นสำหรับเรื่องนี้ ตัวอย่างเช่น บางบริษัทใช้โปรโตคอล FTP เพื่อสำรองไฟล์ ในเวลานี้ หากรับประกันความปลอดภัยของเครือข่ายองค์กร คุณสามารถตั้งค่าพารามิเตอร์นี้เป็น YES ซึ่งอนุญาตให้ระบบปฏิบัติการเรียกใช้คำสั่ง FTP เพื่อสำรองไฟล์บนเซิร์ฟเวอร์ FTP ในกรณีนี้ เพื่อให้ปรับใช้ขั้นตอนการสำรองข้อมูลได้ง่ายขึ้น มักใช้การเข้าถึงแบบไม่ระบุชื่อ ดังนั้น ผู้ใช้ที่ไม่ระบุชื่อจะต้องได้รับอนุญาตให้อัปโหลดไฟล์บนเซิร์ฟเวอร์ FTP
ตัวที่สามคือพารามิเตอร์ anon_other_write_enable และพารามิเตอร์ anon_mkdir_write_enable พารามิเตอร์ทั้งสองนี้ส่วนใหญ่เกี่ยวข้องกับสิทธิ์ที่ค่อนข้างสูงของผู้ใช้ที่ไม่ระบุชื่อ ตัวอย่างเช่น พารามิเตอร์แรกระบุว่าผู้ใช้ที่ไม่ระบุชื่อมีสิทธิ์อื่นนอกเหนือจากการอัปโหลดและการสร้างไดเร็กทอรีย่อย เช่น การเปลี่ยนชื่อไฟล์บนเซิร์ฟเวอร์ FTP เป็นต้น พารามิเตอร์ตัวที่สองระบุว่าผู้ใช้ที่ไม่ระบุชื่อสามารถสร้างไดเร็กทอรีย่อยภายใต้สถานการณ์เฉพาะได้ ฟังก์ชั่นเหล่านี้จะส่งผลต่อความปลอดภัยของเซิร์ฟเวอร์ FTP และความปลอดภัยของไฟล์ ด้วยเหตุนี้ เว้นแต่จะมีเหตุผลพิเศษ การอนุญาตเหล่านี้จึงควรถูกปิดใช้งาน นั่นคือตั้งค่าของพารามิเตอร์เหล่านี้เป็น NO ฉันคิดว่าเว้นแต่ผู้ดูแลระบบจะใช้เซิร์ฟเวอร์ FTP เพื่อความสนุกสนาน พารามิเตอร์เหล่านี้ก็สามารถเปิดได้ มิฉะนั้น จะเป็นการดีกว่าถ้าตั้งค่าพารามิเตอร์เหล่านี้เป็น NO เพื่อปรับปรุงความปลอดภัยของเซิร์ฟเวอร์ FTP
โดยทั่วไป การควบคุมผู้ใช้ที่ไม่ระบุชื่อควรเป็นไปตามหลักการของสิทธิ์ขั้นต่ำ เนื่องจากผู้ใช้ที่ไม่ระบุชื่อเป็นผู้ใช้ที่ไม่ได้รับอนุญาตจากเซิร์ฟเวอร์ FTP จึงไม่สามารถทำการควบคุมการเข้าถึงสิทธิ์ระดับลึกได้ ด้วยเหตุนี้จึงสามารถควบคุมได้ผ่านพารามิเตอร์พื้นฐานเหล่านี้เท่านั้น
3. ควบคุมไดเร็กทอรีได้ดี
โดยทั่วไปแล้ว ผู้ดูแลระบบจำเป็นต้องตั้งค่าไดเร็กทอรีรากที่แตกต่างกันสำหรับผู้ใช้แต่ละราย ด้วยเหตุผลด้านความปลอดภัยและเพื่อป้องกันไม่ให้ผู้ใช้รายอื่นรบกวนซึ่งกันและกัน ผู้ดูแลระบบจำเป็นต้องตั้งค่าเพื่อให้ผู้ใช้ไม่สามารถเข้าถึงไดเร็กทอรีรากของผู้ใช้รายอื่น ตัวอย่างเช่น บางบริษัทตั้งค่าบัญชี FTP สำหรับแต่ละแผนกเพื่ออำนวยความสะดวกในการแลกเปลี่ยนไฟล์ จากนั้นฝ่ายขายฝ่ายขายจะมีการขายไดเร็กทอรีราก แผนกคลังสินค้ามีไดเร็กทอรีราก แวร์ ในฐานะพนักงานขาย พวกเขาสามารถเข้าถึงไดเร็กทอรีย่อยใดๆ ภายใต้ไดเร็กทอรีรากของตนเองได้ แต่ไม่สามารถเข้าถึงไดเร็กทอรีรากของผู้ใช้คลังสินค้า Ware ในกรณีนี้ พนักงานฝ่ายขายจะไม่สามารถเข้าถึงไฟล์ของผู้ใช้คลังสินค้าได้ จะเห็นได้ว่าด้วยการจำกัดผู้ใช้ไม่ให้เข้าถึงไดเร็กทอรีอื่นที่ไม่ใช่ไดเร็กทอรีราก จะสามารถป้องกันไม่ให้ผู้ใช้รายอื่นรบกวนซึ่งกันและกัน และปรับปรุงความปลอดภัยของไฟล์บนเซิร์ฟเวอร์ FTP เพื่อให้บรรลุวัตถุประสงค์นี้ พารามิเตอร์ chroot_local_user สามารถตั้งค่าเป็น NO หลังจากการตั้งค่านี้ ผู้ใช้ทั้งหมดที่เข้าสู่ระบบภายในเครื่องจะไม่สามารถป้อนไดเร็กทอรีอื่นนอกเหนือจากไดเร็กทอรีรากได้ อย่างไรก็ตาม เมื่อดำเนินการควบคุมนี้ วิธีที่ดีที่สุดคือตั้งค่าไดเร็กทอรีที่ทุกคนสามารถเข้าถึงเพื่อจัดเก็บไฟล์สาธารณะบางส่วนได้ เราต้องมั่นใจในความปลอดภัยของเซิร์ฟเวอร์โดยไม่ส่งผลกระทบต่อการแบ่งปันและการสื่อสารไฟล์ตามปกติ
4. จำกัดอัตราการส่งข้อมูล
ในบางครั้ง เพื่อให้มั่นใจถึงการทำงานที่เสถียรของเซิร์ฟเวอร์ FTP จำเป็นต้องจำกัดอัตราการอัพโหลดและดาวน์โหลดไฟล์ ตัวอย่างเช่น บนเซิร์ฟเวอร์เดียวกัน เซิร์ฟเวอร์ FTP เมลเซิร์ฟเวอร์ ฯลฯ จะถูกใช้งานแยกกัน เพื่อให้บริการแอปพลิเคชันเหล่านี้อยู่ร่วมกันอย่างสันติ จำเป็นต้องควบคุมอัตราการส่งข้อมูลสูงสุด เนื่องจากแบนด์วิธของเซิร์ฟเวอร์เดียวกันมีขีดจำกัดสูงสุด หากบริการแอปพลิเคชันใช้แบนด์วิดธ์ที่ค่อนข้างใหญ่ ก็จะส่งผลเสียต่อบริการแอปพลิเคชันอื่นๆ และอาจถึงขั้นทำให้บริการแอปพลิเคชันอื่นๆ ไม่สามารถตอบสนองความต้องการของผู้ใช้ได้ตามปกติ อีกตัวอย่างหนึ่งคือบางครั้ง FTP จำเป็นต้องกำหนดขีดจำกัดอัตราสูงสุดโดยขึ้นอยู่กับวัตถุประสงค์ หากใช้ FTP สำหรับการสำรองข้อมูลไฟล์ อัพโหลดไฟล์ และดาวน์โหลดไฟล์ในเวลาเดียวกัน เพื่อปรับปรุงประสิทธิภาพของการสำรองข้อมูลไฟล์และลดระยะเวลาการสำรองข้อมูล จำเป็นต้องจำกัดอัตราการอัพโหลดและดาวน์โหลดไฟล์สูงสุด
เพื่อใช้ข้อจำกัดอัตราการส่งข้อมูล ผู้ดูแลระบบสามารถตั้งค่าพารามิเตอร์ local_max_rate ตามค่าเริ่มต้น พารามิเตอร์นี้ไม่ได้เปิดใช้งาน กล่าวคือ ไม่มีการจำกัดอัตราสูงสุด อย่างไรก็ตาม ด้วยเหตุผลข้างต้น ฉันยังคงแนะนำให้ผู้ดูแลระบบตั้งค่าพารามิเตอร์นี้ก่อนที่จะนำเซิร์ฟเวอร์ FTP เข้าสู่การใช้งานจริง ป้องกันผลกระทบด้านลบต่อบริการแอปพลิเคชันอื่นๆ เนื่องจากการใช้แบนด์วิธมากเกินไปในการอัพโหลดและดาวน์โหลด ผู้ดูแลระบบจำเป็นต้องสร้างความสมดุลระหว่างบริการแอพพลิเคชั่นต่างๆ และจัดสรรแบนด์วิธอย่างสมเหตุสมผล อย่างน้อยต้องแน่ใจว่าแต่ละบริการแอปพลิเคชันสามารถตอบสนองคำขอของลูกค้าได้ตามปกติ นอกจากนี้ เมื่อเป็นไปได้ จำเป็นต้องดำเนินการนอกช่วงพีคด้วย ตัวอย่างเช่น เมลเซิร์ฟเวอร์และเซิร์ฟเวอร์ FTP ถูกใช้งานบนโฮสต์เดียวในเวลาเดียวกัน เซิร์ฟเวอร์ FTP ส่วนใหญ่จะใช้สำหรับการสำรองข้อมูลไฟล์ ดังนั้น เพื่อป้องกันไม่ให้การสำรองข้อมูลไฟล์ส่งผลเสียต่อการส่งและรับอีเมล (เนื่องจากการสำรองข้อมูลไฟล์ต้องใช้แบนด์วิธค่อนข้างมาก ซึ่งจะลดความเร็วในการส่งและรับอีเมลลงอย่างมาก) วิธีที่ดีที่สุดคือแยกการสำรองข้อมูลไฟล์ออกจากช่วงที่มีการใช้งานสูงสุด ของการส่งและรับอีเมล์ หากเวลาสูงสุดในการส่งและรับอีเมลโดยปกติคือเมื่อคุณไปทำงานในตอนเช้า อย่าใช้บริการ FTP สำหรับการสำรองข้อมูลไฟล์ ในช่วงพักกลางวัน ฉันมักจะส่งและรับอีเมลน้อยลง ณ จุดนี้ คุณสามารถใช้ FTP เพื่อสำรองไฟล์ได้ ดังนั้น หากเซิร์ฟเวอร์ FTP และบริการแอปพลิเคชันอื่นๆ ทำงานในช่วงเวลาที่มีการใช้งานน้อย ก็สามารถตั้งค่าอัตราให้สูงขึ้นได้เพื่อปรับปรุงประสิทธิภาพการทำงานของบริการ FTP แน่นอนว่าสิ่งนี้ทำให้ผู้ดูแลระบบมีความต้องการค่อนข้างสูง เนื่องจากผู้ดูแลระบบจำเป็นต้องวิเคราะห์แอพพลิเคชั่นต่างๆ จากนั้นจึงจัดทำแผนที่ครอบคลุมตามการใช้งานเซิร์ฟเวอร์ เว้นแต่จะมีมาตรการที่สูงกว่าและเงื่อนไขที่ดีกว่า จำเป็นต้องเพิ่มอัตราการส่งข้อมูลของเซิร์ฟเวอร์ FTP ให้สูงสุด มิฉะนั้นจะส่งผลเสียอย่างมากต่อบริการข้อมูลอื่น ๆ ที่ใช้งานในองค์กรและทำให้เกิดความแออัดในเครือข่ายองค์กร