Clear
Lead Graphic Papers

Secure FTP Server

ผู้เขียน: เจษฎา ช้างสีสังข์
วันที่เผยแพร่: 5 เม.ย. 2555
ปรับปรุงล่าสุดวันที่: 5 เม.ย. 2555

Share on Facebook Share on Twitter Share on Google+

FTP (File Transfer Protocol) คือโพรโทคอลที่ออกแบบมาเพื่อใช้ในการรับส่งไฟล์ระหว่าง Client และ Server โดยจะมีพอร์ตที่ใช้งานอยู่ 2 พอร์ต คือ พอร์ต 20 ใช้ในการรับส่งไฟล์ ส่วนอีกพอร์ตคือ พอร์ต 21 ใช้ในการควบคุมหรือส่งคำสั่ง FTP เช่น ตรวจสอบการเข้าถึงโปรแกรมจากผู้ใช้งาน เป็นต้น และในปัจจุบัน ผู้ให้บริการ Web hosting โดยส่วนใหญ่มักจะให้บริการแลกเปลี่ยนไฟล์ผ่าน FTP Server เพราะการการติดตั้งระบบและการบริหารจัดการไฟล์ทำได้ง่าย

เนื่องจาก FTP เป็นโพรโตคอลที่รับส่งข้อมูลโดยไม่มีการเข้ารหัสลับ จึงทำให้ข้อมูลที่รับส่ง ไม่ว่าจะเป็น Username หรือ Password สามารถถูกดักรับ (Sniff) จากผู้ไม่หวังดีได้ [1] ซึ่งวิธีการแก้ไขนั้น ผู้ดูแลระบบควรเปลี่ยนมาใช้โพรโทคอลสำหรับแลกเปลี่ยนข้อมูลที่มีการเข้ารหัสลับข้อมูลที่รับส่งเสมอ ซึ่งมีโพรโทคอลที่ถูกออกแบบมาเพื่อแก้ปัญหาดังกล่าว คือ FTPS [2]

การใช้งาน FTP ที่มีการเข้ารหัสลับ

จากปัญหาที่ได้กล่าวข้างต้น ผู้ดูแลระบบจึงควรตั้งค่า FTP Server ให้รองรับการเข้ารหัสลับข้อมูล โดยในบทความนี้ จะยกตัวอย่างการตั้งค่าเพื่อใช้งานโพรโทคอล FTPS บนซอฟต์แวร์ FileZilla Server [3]


1. ผู้ดูแลระบบสามารถกำหนดให้ระบบรองรับ FTPS ได้ด้วยการคลิกที่เมนู Edit เลือก Settings จากนั้นเลือก SSL/TLS setting คลิกที่ช่อง Enable FTP over SSL/TLS support (FTPS) ดังรูปที่ 1

ftp01.png
รูปที่ 1 แสดงการตั้งค่าให้โปรแกรมรองรับ FTPS

2. ทำการกำหนดใบรับรองดิจิทัลให้กับซอฟต์แวร์ FTP Server เพื่อใช้ในกระบวนการเข้ารหัสลับข้อมูลที่ใช้รับส่งระหว่าง Server-Client ในกรณีที่ผู้ดูแลระบบมีใบรับรองดิจิทัลอยู่แล้ว สามารถใช้งานได้โดยระบุตำแหน่งของไฟล์ Certificate และไฟล์ Private key ให้กับระบบ แต่หากผู้ดูแลระบบยังไม่มีใบรับรองดิจิทัล สามารถสร้างขึ้นมาใหม่ได้โดยการ คลิกที่ปุ่ม Generate new certificate จากนั้นใส่ข้อมูลของผู้ให้บริการ ดังที่แสดงตัวอย่างในรูปที่ 2

ftp02.png
รูปที่ 2 แสดงหน้าต่างการสร้างใบรับรอง

3. หากผู้ดูแลระบบต้องการบังคับให้ผู้ใช้ล็อกอินได้เฉพาะในโหมด FTPS เท่านั้น สามารถทำได้โดยการ ไปที่เมนู Edit เลือก Users จากนั้นคลิกที่ช่อง Force SSL for user login ดังรูปที่ 3

ftp03.jpg
รูปที่ 3 แสดงการตั้งค่าให้ User ล็อกอินด้วย FTPS เท่านั้น

4. ที่ฝั่ง Client ทดลองเชื่อมต่อไปยัง FTP Server โดยกำหนดค่า Host ขึ้นต้นด้วย ftps:// ในการเชื่อมต่อครั้งแรก ระบบจะแจ้งให้ผู้ใช้ทราบถึงใบรับรองของเครื่อง Server ที่จะใช้ในการเชื่อมต่อ หากผู้ใช้ยอมรับความถูกต้องของใบรับรองนี้ สามารถคลิกที่ปุ่ม OK เพื่อเริ่มการเชื่อมต่อ ดังรูปที่ 4

ftp04.jpg
รูปที่ 4 แสดงใบรับรองของเครื่อง Server

ข้อแนะนำเพิ่มเติม

อย่างใรก็ตาม นอกจากจะตั้งค่าให้ FTP Server รองรับการรับส่งข้อมูลที่มีการเข้ารหัสลับแล้ว ผู้ดูแลระบบควรมีการตั้งค่า Server ให้มีประสิทธิภาพด้วย เช่น การกำหนดสิทธิในการเข้าถึงระบบ การกำหนดพื้นที่การใช้งานให้กับผู้ใช้ ตามข้อแนะนำ [4][5][6] ดังนี้

1. กำหนดสิทธิในการเข้าถึงไฟล์ให้กับผู้ใช้งาน

ในการกำหนดสิทธิในการเข้าถึงไฟล์ให้กับผู้ใช้งาน ผู้ดูแลระบบควรกำหนดสิทธิให้เท่าที่จำเป็นเท่านั้น จากรูปที่ 5 เป็นการกำหนดสิทธิให้ผู้ใช้ชื่อ test01 สามารถดาวน์โหลดไฟล์ที่อยู่ภายใต้ไดเรกทอรี C:\D\M\3 ได้เท่านั้น

ftp05.png
รูปที่ 5 แสดงตัวอย่างการตั้งค่าสิทธิในการเข้าถึงไฟล์ให้กับผู้ใช้

2. เปิดใช้งานการบันทึก Log

เป็นการตั้งค่าระบบให้บันทึกการทำงานต่างๆ ที่เกิดขึ้นกับระบบ เช่น การล็อกอินเข้าใช้งาน การดาวน์โหลดหรืออัพโหลดไฟล์ เป็นต้น การบันทึก Log ใช้เพื่อวิเคราะห์ในกรณีที่ระบบเกิดปัญหา เช่น การติดตามหา IP Address ของผู้ที่โจมตีระบบ นอกจากนี้ยังทำให้ระบบมีความสอดคล้องตาม พรบ.คอมพิวเตอร์ พ.ศ. 2550 ซึ่งได้ระบุว่า ผู้ให้บริการจะต้องสามารถระบุตัวตนของผู้ใช้งานได้ พร้อมเก็บข้อมูลการจราจรคอมพิวเตอร์ไม่น้อยกว่า 90 วัน ในระยะเวลา 1 ปี [7]

ftp06.png
รูปที่ 6 แสดงตัวอย่างการตั้งค่าให้ระบบรองรับการบันทึก Log

3. จำกัดความเร็วของข้อมูลที่รับส่งระหว่าง Server-Client

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

ftp07.png
รูปที่ 7 แสดงตัวอย่างการตั้งค่าวันเวลาเพื่อกำหนดความเร็วให้กับระบบ

4. ระงับบัญชีผู้ใช้ชั่วคราวหากล็อกอินผิดเกินจำนวนครั้งที่กำหนด

เพื่อป้องกันการโจมตีด้วย Brute Force Attack ผู้ดูแลระบบสามารถกำหนดให้โปรแกรม ทำการระงับบัญชีผู้ใช้ไม่ให้สามารถล็อกอินได้ในระยะเวลาหนึ่ง จากรูปที่ 8 เป็นการตั้งค่าให้ระงับบัญชีผู้ใช้ทำการล็อกอินจาก IP Address เดียวกันเป็นระยะเวลา 1 ชม. หากพบว่ามีการล็อกอินที่ไม่ถูกต้องเกิน 10 ครั้ง

ftp08.png
รูปที่ 8 แสดงตัวอย่างการตั้งค่าการระงับบัญชีผู้ใช้

5. กำหนดขนาดพื้นที่การใช้งานให้กับผู้ใช้

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

6. ปิดการล็อกอินแบบ Anonymous

ผู้ดูแลระบบควรปิดการล็อกอินแบบ Anonymous เพื่อไม่ให้ผู้ที่ไม่ได้รับอนุญาตเข้ามายังระบบ

7. อัพเดตเวอร์ชันของซอฟต์แวร์ให้ใหม่อยู่เสมอ

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

สิ่งสำคัญที่ควรตระหนักในการแลกเปลี่ยนไฟล์ผ่าน FTP คือ การรักษาความลับของข้อมูลที่รับส่ง ดังนั้น ผู้ดูแลระบบจึงควรกำหนดให้มีการเข้ารหัสลับข้อมูล รวมถึงปรับแต่งค่าอื่นๆ เพิ่มเติม เพื่อให้ระบบมีความมั่นคงปลอดภัยมากยิ่งขึ้น


อ้างอิง

1. http://searchsecurity.techtarget.com/tip/FTP-security-best-practices-for-the-enterprise
2. http://tools.ietf.org/id/draft-murray-auth-ftp-ssl-00.txt
3. http://wiki.filezilla-project.org/FTPS_using_Explicit_SSL/TLS_howto_%28Server%29
4. http://www.windowsecurity.com/articles/secure_ftp_server.html
5. http://blog.jscape.com/jscape/2008/06/best-practices.html
6. http://www.g6ftpserver.com/forum/index.php?/topic/1214-hardening-your-ftp-server/
7. http://www.ratchakitcha.soc.go.th/DATA/PDF/2550/E/102/5.PDF

Clear