> For the complete documentation index, see [llms.txt](https://server.gitbook.io/setservermsu/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://server.gitbook.io/setservermsu/untitled.md).

# VSFTPD

&#x20;                                                                                      **VSFTPD**

**Vsftpd** **คือ**

&#x20;         เป็นเซิร์ฟเวอร์ FTP ที่มีความมั่นคงและปลอดภัย ซึ่งสามารถลดความเสี่ยงที่ผู้โจมตีจะเข้าถึงเซิร์ฟเวอร์โดยผ่านทางช่องโหว่ของ FTP ได้ ตัวอย่างไซต์ FTP ต่างๆ ที่รัน VSFTP ได้แก่ Red Hat, OpenBSD, และ SuSE แม้กระทั่งสถาบัน [SANS](http://www.sans.org/) ก็แนะนำว่า VSFTP เป็นเดมอน FTP ที่ควรใช้เพราะมีความปลอดภัยสูง

&#x20;         **คุณสมบัติของ** **vsftpd**

&#x20;         VSFTP เป็นเดมอน (daemon) ของเซิร์ฟเวอร์ FTP ที่รันบนระบบปฏิบัติการ Linux/UNIX ซึ่งมีคุณสมบัติหลักอยู่ 3 อย่าง ได้แก่

* มีความปลอดภัย
* มีประสิทธิภาพดี
* มีความมั่นคง

&#x20;         นอกจากนี้โปรแกรม VSFTP ยังมีคุณสมบัติอื่น ๆ อีก ได้แก่ เป็นระบบที่มีขนาดเล็ก มีความสามารถในการจัดการ virtual users มีทางเลือกในการทำงานเป็นแบบ stand-alone configuration และแบบผ่านทางเดมอน inetd รวมทั้งสามารถจำกัดปริมาณการรับส่งข้อมูล (bandwidth) ในการให้บริการในเซิร์ฟเวอร์ ที่ต้องการควบคุมการใช้งานได้อีกด้วย

&#x20;         ในแง่ของความปลอดภัยนั้น VSFTP ได้ถูกออกแบบมาเพื่อแก้ไขจุดบกพร่องที่พบในการติดตั้ง wu-ftpd, proftpd, และแม้แต่ bsd-ftpd โดยการไม่ใช้บัญชีชื่อ root ซึ่งมีความเสี่ยง และใช้คุณสมบัติด้านความปลอดภัยที่มีประสิทธิภาพอย่าง chroot นอกจากนี้ยังมีการใช้เทคนิคการพัฒนาโปรแกรมอย่างปลอดภัยเพื่อแก้ปัญหาหน่วยความจำล้น (buffer overflows) ด้วย อ่านรายละเอียดเพิ่มเติมเกี่ยวกับความปลอดภัยของ VSFTP ได้ที่เอกสารเผยแพร่ ต่อไปนี้: [Overview](http://vsftpd.beasts.org/OVERVIEW) [Design](http://vsftpd.beasts.org/DESIGN) [Implementation](http://vsftpd.beasts.org/IMPLEMENTATION) [Trust](http://vsftpd.beasts.org/TRUST) และนอกจากนี้ยังมีการกล่าวถึง vsftpd ในแง่ของความปลอดภัยมากมาย ดังต่อไปนี้

* ในเดือนพฤศจิกายน พ.ศ. 2545 ไซต์ ftp.openbsd.org ได้รัน vsftpd ซึ่งเป็นการยืนยันได้ว่า vsftpd มีคุณสมบัติดีเหมาะแก่การใช้เป็นเซิร์ฟเวอร์ FTP
* vsftpd ไม่มีจุดบกพร่องชื่อ "globbing" ซึ่งมีผลกระทบต่อเซิร์ฟเวอร์ FTP หลายแห่ง สามารถศึกษาเหตุผลของการกำจัดจุดบกพร่องนี้ได้ในเอกสาร [Bugtraq posting](http://www.securityfocus.com/archive/1/176116) โดยมีคำอธิบายเหตุผล และหลักการออกแบบโปรแกรมด้วย
* vsftpd ไม่มีจุดบกพร่องชื่อ "globbling" ที่เกี่ยวข้องกับการโจมตีแบบ denial of service ด้วยเหตุผลคล้ายๆ กัน ศึกษารายละเอียดได้ที่ [Bugtraq posting](http://www.securityfocus.com/archive/1/169366)
* vsftpd ได้รับการสนับสนุนในหน้า Vanderbilt University ITS ภายใต้หัวข้อ "Safe Computing" ศึกษารายละเอียดได้ที่[ http://www.vanderbilt.edu/its/security/safe\_tools.html](http://www.vanderbilt.edu/its/security/safe_tools.html)
* vsftpd ได้รับการกล่าวถึงในหัวข้อความปลอดภัยว่า มีประสิทธิภาพดีและปราศจากช่องโหว่ด้านความปลอดภัย ซึ่งตรงกันข้ามกับเซิร์ฟเวอร์ FTP อื่นๆ รวมถึง OpenBSD ด้วย ศึกษารายละเอียดได้ที่ <http://www.seifried.org/security/network/20010926-ftp-protocol.html>

ในแง่ของประสิทธิภาพนั้น มีการกล่าวถึงดังนี้

* ใน usenet มีการอ้างถึง vsftpd ว่าทำงานได้เร็วเทียบเท่ากับ BSD-ftpd (ซึ่งมีประสิทธิภาพสูง ต่างกับ wu-ftpd) ศึกษาเพิ่มเติมได้ที่[ http://groups.google.com/groups?hl=en\&selm=Pine.BSF.4.31.0202031625080.1082-100000%40atlantis.dp.ua](http://groups.google.com/groups?hl=en\&selm=Pine.BSF.4.31.0202031625080.1082-100000@atlantis.dp.ua)
* มีการเปรียบเทียบประสิทธิภาพของ vsftpd ว่ามีความเร็วถึง 70 Mbyte/sec ซึ่งมากกว่า TUX (55 Mbyte/sec)
* มีการกล่าวว่าเครือข่ายของ Linux ที่อยู่บน gigabit ethernet ก็ใช้ vsftpd และมีความเร็วถึง 86 Mbyte/sec ศึกษาเพิ่มเติมได้ที่[ http://lists.insecure.org/linux-kernel/2001/Feb/0104.html](http://lists.insecure.org/linux-kernel/2001/Feb/0104.html)
* ในการใช้ vsftpd บน RedHat นั้น Alan Cox กล่าวว่า "ในที่สุดก็มี ftpd ที่เหมาะสำหรับใช้บน Linux แล้ว" ศึกษาเพิ่มเติมได้ที่[ http://www.linux.org.uk/diary/](http://www.linux.org.uk/diary/)

&#x20;                                                              **การติดตั้ง** **vsftpd บน linux**

&#x20;1.ทำการเปิด Terminal ขึ้นมา

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCLsGnjCLi6-6arT7Y%2F-LBCLxoz1SZ3quexdaRw%2Fimage.png?alt=media\&token=dbc1a18e-eddf-4a86-9a97-fb05d0c83eb8)

2\. ให้ทำการ Update และ Upgrade Server ให้มีความเป็นปัจจุบันก่อน

&#x20;                    การ Update จะใช้คำสั่ง  $ sudo apt-get update  จากนั้นใส่รหัสผ่านลงไป

&#x20;                   การ Upgrade จะใช้คำสั่ง $ sudo apt-get upgrade จากนั้นใส่รหัสผ่านลงไป

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCLsGnjCLi6-6arT7Y%2F-LBCM3fm_XjMMc0_vGSs%2Fimage.png?alt=media\&token=bcfaa0e6-e198-41cb-b619-f5ae74c4fe45)

3.ทำการติดตั้ง FTP Server  ด้วยแพ็คเกต vsftpd  โดยการพิมพ์คำสั่งนี้ลงไป$ sudo apt-get install vsftpd

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCM6puPwkAOt8bi8sd%2F-LBCMCH3RJnFxpb2XFUU%2Fimage.png?alt=media\&token=855045b9-64ba-4cef-b555-f8d1d9256e15)

&#x20;การติดตั้งเสร็จสมบูรณ์

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCMEMY34ULT9yRqs8r%2F-LBCMM1pKSUHZ84eKpXc%2Fimage.png?alt=media\&token=c45fbd21-35b6-4cb1-bdec-4805509958d5)

\
&#x20;4.ตรวจสอบการทำงานของ Service ftp(พอร์ต 21) โดยการพิมพ์คำสั่ง $ netstat-tan

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCMR0VC8-xIT9kCzqy%2F-LBCMgMgYwckM6UQDhFe%2Fimage.png?alt=media\&token=d049be09-870a-43d3-91a7-4c03f5445b67)

Service FTP ทำงานที่พอร์ต 21

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCMR0VC8-xIT9kCzqy%2F-LBCMl3Pq7TecUFq1Rq8%2Fimage.png?alt=media\&token=03d65c71-3dc2-43b9-b682-d2936fcc3813)

5.เข้าไปแก้ไขไฟล์คอนฟิก vsftpd.conf  ซึ่งเก็บไว้ที่ /etc/vsftpd.conf   สามารถกำหนดบริการของ FTP ได้ 2แบบ คือ แบบระบุตัวตนผู้ใช้บริการ กับ แบบไม่ระบุตัวตนผู้ใช้บริการ  เลือกตั้งค่าเป็นแบบใดแบบหนึ่ง เท่านั้น  โดยการพิมพ์คำสั่ง  $ sudo gedit /etc/vsftpd.conf

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCMr3i11u9oCljW9UD%2F-LBCN-vJ4OKyBQHx_4cJ%2Fimage.png?alt=media\&token=e034d931-dc7b-47d6-8ffe-854e829fc86d)

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCMr3i11u9oCljW9UD%2F-LBCN24JUCH7ioXQ_uV6%2Fimage.png?alt=media\&token=47db0342-94bc-41df-9bb3-7f1e4a14e96f)

<br>

6.ทดสอบการติดตั้ง FTP แบบระบุตัวตนผู้ใช้บริการ คือจะต้องมีบัญชีผู้ใช้งานอยู่ในระบบ

ในไฟล์ /etc/vsftpd.conf ให้เอา comment ( # ) หน้าบรรทัดที่มีข้อความต่อไปนี้ ออกไป  จากนั้นให้  Save ไว้เหมือนเดิม

anonymous\_enable=no //จะทำให้ Anonymous User ไม่สามารถเข้าใช้งาน FTP ได้

local\_enable=YES //จะทำให้ User ที่อยู่ใน Network วงเดียวกันกับ Server) สามารถใช้งาน  FTP ได้

write\_enable=YES //จะทำให้ User สามารถ Upload File ไปที่ Server ได้

&#x20;           chroot\_local\_user=YES //จะเป็นการบังคับไม่ให้ User ออกนอก Home Directory ของตนเองไปยัง  Directory ที่มีลำดับชั้นที่สูงกว่า

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCN82Q_La9Q2ZTT99B%2F-LBCNDPlOaogZ2ug9Swk%2Fimage.png?alt=media\&token=d0fddc44-8526-432a-a18a-bc3e2db9ecae)

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCN82Q_La9Q2ZTT99B%2F-LBCNEdEJ9CNXqB5X3ZY%2Fimage.png?alt=media\&token=ff2aa9f4-fd96-4f32-a1c6-a293b4a8f6e7)

\
&#x20;7.รีสตาร์ท เซอร์วิส(Restart Service) vsftpd  โดยการพิมพ์คำสั่ง $ sudo service  vsftpd restart

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCNLK7KAWBWlwg21l-%2F-LBCNNhyxtwlZXs7kFTT%2Fimage.png?alt=media\&token=b5cccf5a-d38a-4dad-b87d-72118ef948af)

8.ตรวจสอบ IP ของ FTP Server ก่อน  โดยการพิมพ์คำสั่งดังต่อไปนี้ลงไป $ sudo ifconfig

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCNLK7KAWBWlwg21l-%2F-LBCNSdMP3xXUNY0oVl_%2Fimage.png?alt=media\&token=65728fd1-98bb-40ec-9549-094dca24badb)

9.ที่คอมพิวเตอร์อีกเครื่อง(Windows 7)  ให้ทำการเปิด cmd ขึ้นมา  ด้วยการไปที่ Start Menu แล้วพิมพ์หา  cmd

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCNaQWguY36pmTnLAy%2F-LBCNfHas6Dxjcr8bf8z%2Fimage.png?alt=media\&token=cbe80a29-09b2-4828-b1ec-5550a895f6ce)

10.ตรวจสอบ IP เครื่อง โดยการพิมพ์คำสั่งดังต่อไปนี้  > ipconfig&#x20;

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCNaQWguY36pmTnLAy%2F-LBCNmn644kiBobiSkdZ%2Fimage.png?alt=media\&token=413f4c4b-f383-4fe2-a645-6c7cfbb200be)

11.การเข้าใช้บริการ FTP จะทดสอบโดยการเข้าใช้ผ่านโปรแกรม  FileZilla FTP Client  ซึ่งจะต้องทำการติดตั้งโปรแกรมไว้นี้ในเครื่องเสียก่อน   เปิดโปรแกรม FileZilla FTP Client ขึ้นมา

\*สามารถ Download ได้ที่ <https://filezilla-project.org/download.php> \*

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCNaQWguY36pmTnLAy%2F-LBCNsB4fVu8UynS1NPb%2Fimage.png?alt=media\&token=e5a94f56-8484-4322-9719-3b6ff8beb498)

<br>

&#x20;ผลลัพธ์จากการ Connect

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCNaQWguY36pmTnLAy%2F-LBCO2IPovqbIIjK-4PR%2Fimage.png?alt=media\&token=bf1e3f6b-8dbf-498e-a739-29e8f385589d)

&#x20;12.ทดสอบการ Upload File  ด้วยการเลือกไฟล์(File)จากทางฝั่ง Client ที่ต้องการ  จากนั้นลองคลิ๊กเมาส์ที่ไฟล์นั้นค้างไว้  แล้วลากจากฝั่ง Client ไปวางทางฝั่ง Server  ในกรณีที่ไม่สามารถทำการลากวางได้  ให้ทำการคลิ๊กขวาที่ไฟล์ที่ต้องการ Upload  จากนั้นเลือกเมนู Upload  เพื่อทำหน้าที่แทนการลากวาง

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCNaQWguY36pmTnLAy%2F-LBCO72MhP5kefA5Q-7O%2Fimage.png?alt=media\&token=dfadec0b-4507-4546-8fe5-9706fbca97ea)

ผลการ Upload จะมีไฟล์ขึ้นมาบน Desktop

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCNaQWguY36pmTnLAy%2F-LBCOApY-87TXPmrXvLh%2Fimage.png?alt=media\&token=e2347b64-205d-46b1-9381-85465bc139ad)

\
13.การ Download file ให้เลือกไฟล์ที่ต้องการจะ Download  จากนั้นทำการคลิ๊กที่ไฟล์นั้นค้างไว้  แล้วลากจากทางฝั่ง Server ไปยังฝั่งClient   ในกรณีที่ไม่สามารถทำการลากวางได้  ให้ทำการคลิ๊กขวาที่ไฟล์ที่ต้องการ Download จากนั้นเลือกเมนูDownload  เพื่อทำการ Download แทนการลากวาง

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCOJI-KEHT8jhGpOUe%2F-LBCOLD9si9oPsEcbS1G%2Fimage.png?alt=media\&token=71d5d88e-cb7a-4263-bdf3-54cfcdd0ba7f)

14.ทดสอบการเข้าใช้งาน FTP Server  ผ่าน  Web Browser  โดยการพิมพ์ URL<ftp://FTP> Server IP  เช่น  [ftp://192.168.107.144](ftp://192.168.107.144/)

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCOJI-KEHT8jhGpOUe%2F-LBCOR3emxCwyiPIEnMf%2Fimage.png?alt=media\&token=6c0a26d0-2ac7-441c-9732-468299d7be27)

กรอก Username กับ Password ลงไป แล้วกดปุ่ม ตกลง จะเข้าสู่การใช้บริการของ FTP

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCOJI-KEHT8jhGpOUe%2F-LBCOax6BwcT3pGvGm73%2Fimage.png?alt=media\&token=e1a1f2df-d617-4b55-bb54-07821c1aa8b2)

เข้าสู่หน้าบริการของ FTP server

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCOJI-KEHT8jhGpOUe%2F-LBCOgP_XJzI3kDMIljR%2Fimage.png?alt=media\&token=a47643ec-c150-4481-8d38-c0f763bb61ea)

15.ทดสอบการเข้าใช้งาน Directory ที่มีลำดับชั้นสูงกว่า  Home Directory ของ User &#x20;

ผลลัพธ์คือ  ไม่สามารถเข้าใช้งานได้  เนื่องจากได้ตั้งค่าคอนฟิก   chroot\_local\_user=YES //จะเป็นการบังคับไม่ให้ User ออกนอก Home Directory ของตนเองไปยัง  Directory ที่มีลำดับชั้นที่สูงกว่า    ไว้ในไฟล์  /etc/vsftpd.conf

![](https://2243606846-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LBCEf1lCbn-vUz6qW8E%2F-LBCOJI-KEHT8jhGpOUe%2F-LBCOq_ZNMqJOMeRQBkb%2Fimage.png?alt=media\&token=abd581dc-d2a5-4149-a1a9-6b3350d818ce)
