การป้องกันของ VPN สิ้นสุดตรงไหนบนเส้นทางไปยังเซิร์ฟเวอร์ FTP
VPN ครอบคลุมเส้นทางถึงเกตเวย์ของตน ไม่ใช่ช่วงถัดไป แยก FTP ธรรมดา FTPS และ SFTP จากนั้นตรวจสอบช่องทางข้อมูลและตัวตนของอีกฝ่าย
VPN ปกป้องเส้นทางหนึ่ง และทุกเส้นทางย่อมมีจุดสิ้นสุด เมื่ออุโมงค์สิ้นสุดที่เกตเวย์ของบริษัท การถ่ายโอนไฟล์จะดำเนินต่อไปจากตรงนั้นภายใต้การป้องกันที่โปรโตคอลของมันเองมอบให้ ความแตกต่างนี้เป็นตัวตัดสินว่าการถ่ายโอนได้รับการปกป้องตั้งแต่ต้นจนจบหรือเพียงถึงเกตเวย์ ตัวบ่งชี้ Connected ไม่ได้บอกอะไรเกี่ยวกับทั้งสองกรณี
สองตำแหน่ง สองเส้นทางที่เหลือ
ลองใช้แล็ปท็อปที่เชื่อมต่อกับ VPN ของบริษัทแล้วเปิดเซสชัน FTP ไปยังเซิร์ฟเวอร์ภายในอีกเครื่องหนึ่ง อุโมงค์หยุดที่เกตเวย์ และช่วงจากเกตเวย์ไปยังเซิร์ฟเวอร์นั้นอยู่นอกอุโมงค์
FTP ธรรมดาไม่ได้มีการเข้ารหัสเพิ่มขึ้นเพียงเพราะแพ็กเก็ตของมันเดินทางผ่านอุโมงค์ บนช่วงที่เหลือนั้น คำสั่ง ข้อมูลรับรอง และเนื้อหาไฟล์เดินทางตามที่โปรโตคอลกำหนดทุกประการ นั่นคือแบบเปิดเผย เรื่องนี้จะสำคัญหรือไม่ขึ้นอยู่กับโครงสร้างเครือข่ายและสิ่งที่ปกป้องช่วงนั้นอีกชั้น และการเรียกที่อยู่ว่าเป็นส่วนตัวไม่ได้ตอบคำถาม เหตุผลเดียวกันนี้ใช้ในทางกลับกันเมื่อเซิร์ฟเวอร์อยู่ในเครือข่ายคลาวด์ที่เกตเวย์เข้าถึงผ่านการกระโดดอีกครั้ง
วางปลายทางของ VPN และบริการ FTP ไว้บนเครื่องเดียว ก็จะไม่มีช่วงถัดไปให้กังวล นั่นคือตำแหน่งที่แตกต่าง ไม่ใช่ข้อพิสูจน์ว่ากระบวนการ ไฟล์ และข้อมูลรับรองของโฮสต์ปลอดภัย
FTP ธรรมดา FTPS และ SFTP คือสามการตัดสินใจ
FTP ธรรมดาไม่ได้เข้ารหัสสิ่งใดเลย รวมถึงรหัสผ่าน FTPS เพิ่ม TLS ให้กับ FTP ดังนั้นช่องควบคุมและช่องข้อมูลเมื่อมีการเจรจาจะได้รับการปกป้อง SFTP เป็นโปรโตคอลอีกตัวที่บรรทุกอยู่ภายใน SSH และไม่ใช่อีกการสะกดของ FTPS
เซิร์ฟเวอร์ต้องรองรับตัวเลือกนั้น เพราะไคลเอนต์ไม่สามารถสร้างตัวรับฟังที่ไม่มีอยู่ได้ การเลือก SFTP ไม่ได้เปลี่ยนบริการที่ใช้ FTP อย่างเดียวให้เป็นปลายทาง SSH และการเปลี่ยนชื่อบุ๊กมาร์กหรือเปลี่ยนพอร์ตไม่ได้พิสูจน์อะไรเกี่ยวกับสิ่งที่เจรจากัน ยืนยันโปรโตคอลทั้งจากฝั่งเซิร์ฟเวอร์และฝั่งไคลเอนต์ กลอนในโปรแกรมจัดการไฟล์เป็นข้อกล่าวอ้างเกี่ยวกับเซสชัน ไม่ใช่เกี่ยวกับตัวรับฟังที่อยู่เบื้องหลัง
| Protocol | Usual port | What it protects | Identity check |
|---|---|---|---|
| FTP | 21 | Nothing on the wire | None beyond the login |
| FTPS | 21 or 990 | Control channel, data channel when required | TLS server certificate |
| SFTP | 22 | The whole session inside SSH | SSH host key |
อ่านคอลัมน์สุดท้ายเมื่อการถ่ายโอนมีความสำคัญ เพราะนั่นคือที่ที่จะเห็นการเปลี่ยนแปลงตัวตนที่ไม่คาดคิด
การเชื่อมต่อข้อมูลคือการเชื่อมต่อที่สอง
FTP เปิดการเชื่อมต่อควบคุมแล้วจึงเปิดการเชื่อมต่อข้อมูลแยกต่างหากสำหรับรายการและการถ่ายโอน การเข้าสู่ระบบที่ได้รับการปกป้องไม่ได้บอกอะไรเกี่ยวกับการเชื่อมต่อภายหลังเหล่านั้น เว้นแต่การติดตั้งจะกำหนดให้ต้องมีการป้องกันสำหรับพวกมันด้วย
ใน FTPS ไคลเอนต์ขอช่องข้อมูลที่ได้รับการปกป้องผ่านคำสั่งเฉพาะ และนโยบายของเซิร์ฟเวอร์อาจปฏิเสธทางเลือกแบบเปิดเผย ตรวจสอบว่านโยบายกำหนดให้เป็นเช่นนั้น แทนที่จะสมมติว่าค่าเริ่มต้นของไคลเอนต์เพียงพอ โหมดพาสซีฟเพิ่มความยุ่งยากอีกชั้น เพราะเซิร์ฟเวอร์ประกาศที่อยู่และพอร์ตสำหรับการเชื่อมต่อข้อมูล ไฟร์วอลล์หรืออุปกรณ์ NAT ที่เขียนประกาศนั้นใหม่หรือบล็อกจะทำให้เกิดเซสชันที่ผ่านการยืนยันตัวตนแล้วแต่ค้างอยู่ที่รายการแรก
curl -vk ftps://files.corp.example/ --user alice --ftp-ssl-control
openssl s_client -connect files.corp.example:21 -starttls ftp
ss -tnp | grep -E ':21|:990'
คำสั่งที่สองแสดงสิ่งที่เซิร์ฟเวอร์นำเสนอในช่องควบคุมก่อนที่จะแตะไฟล์ใด ๆ คำสั่งที่สามแสดงว่ามีการสร้างการเชื่อมต่อข้อมูลขึ้นหรือไม่ ซึ่งเป็นความแตกต่างระหว่างความล้มเหลวในการยืนยันตัวตนและความล้มเหลวของโหมดพาสซีฟ
การตรวจสอบตัวตนอยู่รอดผ่านอุโมงค์
ไคลเอนต์ FTPS ตรวจสอบตัวตนของเซิร์ฟเวอร์ TLS และไคลเอนต์ SFTP ตรวจสอบคีย์โฮสต์ SSH การตรวจสอบทั้งสองเป็นของโปรโตคอลการถ่ายโอนไฟล์ และ VPN ไม่ได้ทำการใด ๆ เลย
การแยกส่วนนี้สำคัญเมื่อมีบางอย่างตรงกลางต้องการตรวจสอบเซสชัน การปิด TLS เพื่อให้อุปกรณ์เครือข่ายอ่านคำสั่งได้เป็นการเปลี่ยนรูปแบบการป้องกันแทนที่จะทำให้สมบูรณ์ และเช่นเดียวกันกับการยอมรับคีย์โฮสต์ที่ไม่มีการอธิบายเพราะอุโมงค์ขึ้นมาแล้ว รักษาการกำหนดค่าความเชื่อถือที่ตั้งใจไว้และรับวัสดุที่ถูกต้องจากผู้ดูแลระบบ อุโมงค์ที่ผ่านการยืนยันตัวตนไม่ได้บอกอะไรเกี่ยวกับเซิร์ฟเวอร์ที่ปลายอีกด้าน
วัสดุกุญแจส่วนตัวและใบรับรองสำหรับโปรโตคอลเหล่านี้เป็นความลับชิ้นที่สามอีกชิ้น แยกจากข้อมูลรับรองของ VPN
บันทึกสิ่งที่คุณตรวจสอบจริง ๆ
เลือกไฟล์ที่ไม่เป็นอันตรายซึ่งคุณได้รับอนุญาตให้ย้าย และบันทึกข้อเท็จจริงสี่ประการเกี่ยวกับความพยายามนั้น ใช้โปรโตคอลใด ตรวจสอบตัวตนของอีกฝ่ายใด ตั้งใจใช้เส้นทางใด และการถ่ายโอนเสร็จสิ้นหรือไม่
lftp -u alice -e "set ftp:ssl-protect-data true; ls; bye" ftps://files.corp.example
sftp -v [email protected]
รายการไดเรกทอรี การเข้าสู่ระบบอุโมงค์ และการถ่ายโอนที่เสร็จสิ้นเป็นการสังเกตสามอย่างแยกกัน และมีเพียงอย่างสุดท้ายที่บอกว่าเส้นทางใช้งานได้กับไฟล์ หากการออกแบบพึ่งพา VPN เพียงอย่างเดียวเพื่อความลับในการกระโดดที่เหลือ ให้เขียนไว้เป็นการตัดสินใจอย่างที่มันเป็น บันทึกการยอมรับที่ระบุการกระโดดและสมมติฐานความเชื่อถือมีค่ามากกว่าภาพหน้าจอของไคลเอนต์ที่เชื่อมต่ออยู่