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

สองตำแหน่ง สองเส้นทางที่เหลือ

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

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

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

FTP ธรรมดา FTPS และ SFTP คือสามการตัดสินใจ

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

เซิร์ฟเวอร์ต้องรองรับตัวเลือกนั้น เพราะไคลเอนต์ไม่สามารถสร้างตัวรับฟังที่ไม่มีอยู่ได้ การเลือก SFTP ไม่ได้เปลี่ยนบริการที่ใช้ FTP อย่างเดียวให้เป็นปลายทาง SSH และการเปลี่ยนชื่อบุ๊กมาร์กหรือเปลี่ยนพอร์ตไม่ได้พิสูจน์อะไรเกี่ยวกับสิ่งที่เจรจากัน ยืนยันโปรโตคอลทั้งจากฝั่งเซิร์ฟเวอร์และฝั่งไคลเอนต์ กลอนในโปรแกรมจัดการไฟล์เป็นข้อกล่าวอ้างเกี่ยวกับเซสชัน ไม่ใช่เกี่ยวกับตัวรับฟังที่อยู่เบื้องหลัง

ProtocolUsual portWhat it protectsIdentity check
FTP21Nothing on the wireNone beyond the login
FTPS21 or 990Control channel, data channel when requiredTLS server certificate
SFTP22The whole session inside SSHSSH 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 เพียงอย่างเดียวเพื่อความลับในการกระโดดที่เหลือ ให้เขียนไว้เป็นการตัดสินใจอย่างที่มันเป็น บันทึกการยอมรับที่ระบุการกระโดดและสมมติฐานความเชื่อถือมีค่ามากกว่าภาพหน้าจอของไคลเอนต์ที่เชื่อมต่ออยู่

บทความที่เกี่ยวข้อง