พอร์ตไฟร์วอลล์ใดที่ฉันต้องเปิดเมื่อใช้ FTPS


33

ฉันต้องการเข้าถึงเซิร์ฟเวอร์ FTPS (vsftpd) บนเว็บไซต์ของผู้ขาย ผู้ขายมีไฟร์วอลล์อยู่หน้าเซิร์ฟเวอร์ ftps ฉันมีไฟร์วอลล์หน้า FTPS ไคลเอ็นต์ของฉัน

ฉันเข้าใจว่าพอร์ต 990, 991 และอาจต้องเปิด 989 เพื่อควบคุมทราฟฟิก

ฉันมีคำถาม:

  1. เมื่อดูจากมุมมองไฟร์วอลล์ของผู้ขายพอร์ตเหล่านี้ควรเปิดขึ้นสำหรับปริมาณการใช้งานทั้งขาเข้าและขาออกหรือไม่
  2. แล้วพอร์ตสำหรับช่อง DATA ล่ะ?
  3. ฉันต้องเปิดพอร์ตทั้งหมดที่สูงกว่า 1,000 พอร์ตหรือไม่?
  4. ฉันควรจะทำอย่างไรกับการรับส่งข้อมูลทั้งขาเข้าและขาออก?

คำตอบ:


19

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

การใช้ SFTP หรือ scp ทำให้งานของผู้ดูแลระบบเครือข่ายง่ายขึ้นมาก - ทุกอย่างเกิดขึ้นที่พอร์ตของเซิร์ฟเวอร์ 22 และการทำธุรกรรมเป็นไปตามรูปแบบไคลเอนต์ / เซิร์ฟเวอร์ปกติ

สิ่งหนึ่งที่ไม่ได้กล่าวถึงคือไฟร์วอลล์ของคุณกำลังทำงาน NAT อยู่หรือไม่และมันเป็น static NAT หรือไดนามิก NAT หากเครื่องไคลเอนต์ของคุณมีที่อยู่แบบคงที่หรือกำลัง NATAL แบบคงที่คุณอาจไม่จำเป็นต้องทำการเปลี่ยนแปลงไฟร์วอลล์ใด ๆ โดยสมมติว่าคุณอนุญาตการรับส่งข้อมูลขาออกทั้งหมดและเซิร์ฟเวอร์ทำงานในโหมดพาสซีฟ (PASV) เท่านั้น

หากต้องการทราบว่าคุณจะต้องเปิดพอร์ตใดคุณจะต้อง:

a) คุยกับผู้ขายเพื่อรับข้อมูลเฉพาะเกี่ยวกับวิธีการกำหนดค่าระบบของพวกเขา

b) ใช้ตัววิเคราะห์โปรโตคอลเช่น tcpdump หรือ wireshark เพื่อดูทราฟฟิกทั้งจากภายนอกไฟร์วอลล์ของคุณและภายในไฟร์วอลล์ของคุณ

คุณจำเป็นต้องค้นหาว่าพอร์ตใดคือส่วนควบคุมการเชื่อมต่อ คุณรายการ 3 ซึ่งดูเหมือนแปลกสำหรับฉัน สมมติว่าเซิร์ฟเวอร์ใช้งานได้ในโหมด PASV (พาสซีฟ) เท่านั้นคุณต้องหาวิธีกำหนดค่าเซิร์ฟเวอร์ไปยังพอร์ต DATA ที่จัดสรรไว้ พวกเขาล็อคแชนเนล DATA ลงในพอร์ตขาเข้าเดียวหรือไม่ พวกเขาล็อคแชนเนล DATA ลงในช่วงเล็ก ๆ หรือพอร์ตหรือไม่?

ด้วยคำตอบเหล่านี้คุณสามารถเริ่มกำหนดค่าไฟร์วอลล์ของคุณ


3
FTPS ในโหมดแฝงจะใช้พอร์ตควบคุมเหนือพอร์ต # 1024 และมันจะทำงานได้ดีกว่ากับไฟร์วอลล์มากกว่าแบบไม่โต้ตอบ ไคลเอนต์บอกพอร์ต 21 พอร์ตบนขอบเปิดและคุณสามารถกำหนดค่าไคลเอนต์เพื่อพูดว่า "การควบคุมอยู่บนพอร์ต 2000 หรือ 2001" แล้วเซิร์ฟเวอร์จะเปิดพอร์ตขาออก 2000 หรือ 2001 ไคลเอนต์ FTP ส่วนใหญ่สนับสนุนการกำหนดช่วงที่เฉพาะเจาะจง ของพอร์ตเพื่อให้ "control" เปิดอยู่และนั่นทำให้การกำหนดไฟร์วอลล์เป็นเรื่องง่าย
djangofan

27

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

ฉันเชื่อว่าคุณต้องการอย่างน้อยหนึ่งพอร์ตต่อการเชื่อมต่อข้อมูลที่คุณต้องการสนับสนุน หากเป็นเพียงคุณคุณอาจเปิดพอร์ตเพิ่มเติมได้ไม่กี่แห่งเท่านั้น โดยเฉพาะสำหรับฉันฉันใช้ 21000-21010

ใน vsftpd.conf ฉันมีสองบรรทัดนี้ (รวมถึงสิ่งอื่น ๆ ทั้งหมดเพื่อสนับสนุน SSL):

pasv_min_port=21000

pasv_max_port=21010

บนไฟร์วอลล์ของฉันฉันมี IP แบบสแตติกสาธารณะที่มี NAT แบบหนึ่งต่อหนึ่ง / แบบคงที่กับ IP ภายในและเปิดพอร์ต TCP เท่านั้น 21, 21000-21010 เปิด


10

ฉันรู้ว่านี่เป็นเธรดที่เก่าแก่ที่สุดอย่างไรก็ตาม ..

โปรดทราบว่า SFTP นั้นแตกต่างจาก FTPS อย่างสิ้นเชิง (SSH กับ SSL)

FTPS แย่ลงใน 2 ทาง ชัดเจนและโดยปริยาย ความชัดเจนน้อยกว่าความปลอดภัยเนื่องจากหลังจาก handshake เริ่มต้นกระโดดข้ามการเข้ารหัสระหว่างการถ่ายโอนข้อมูล [หากการเข้ารหัสข้อมูลถูกเก็บรักษาไว้ที่ฝั่งเซิร์ฟเวอร์ด้วย PROT P] ในขณะที่ Implicit เก็บการเข้ารหัสของข้อมูลหลังจากการจับมือกัน พอร์ต FTPS อย่างชัดเจนเริ่มต้นคือ 21 พอร์ตเริ่มต้นโดยปริยายคือ 990 (หลังจากจับมือมันจะเปลี่ยนเป็น 989 โดยอัตโนมัติสำหรับการส่งข้อมูลหากไม่ได้กำหนดค่าแตกต่างกัน) ในขณะที่พอร์ต 21 ได้รับการยอมรับโดยทั่วไปว่าเป็น EXPLICIT FTPS และ 990 เป็น IMPLICIT FTPS ในความเป็นจริงแล้วแต่ว่าพอร์ตใดที่คุณจะกำหนดค่ายกเว้น 990/989 จะนำไปสู่ ​​EXPLICIT FTPS ในขณะที่ 990/989 เท่านั้นจะยอมรับเป็น IMPLICIT FTPS

ดังนั้นเพื่อตอบคำถามของคุณ: - ขึ้นอยู่กับการกำหนดค่าเซิร์ฟเวอร์ FTPS คุณจะต้องเปิดพอร์ต 21 หรือ 990/989 อย่างไรก็ตามเพื่อให้แน่ใจว่าคุณควรติดต่อผู้ดูแลระบบเซิร์ฟเวอร์ FTPS และสอบถามเส้นทาง โปรดทราบว่าสำหรับโหมดพาสซีฟเช่นเดียวกับซอฟต์แวร์ FTP อื่น ๆ คุณจะต้องเปิดพอร์ตเพิ่มเติม (TCP / UDP) โดยทั่วไปจะอยู่ในช่วง 64,000-65000


2

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

SFTP นั้นดีขึ้นมากในทางทฤษฎี แต่คุณต้องใช้เซิร์ฟเวอร์ SFTP ที่ทำงานได้เช่นเซิร์ฟเวอร์ที่ จำกัด ลูกค้าไปยังไดเรกทอรีบ้านของตนเอง

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

FTP อัตโนมัติเป็นสัญลักษณ์ของปัญหาการออกแบบ ฉันสังเกตเห็นสิ่งนี้เมื่อจัดการกับผู้ขายรวมประมาณโหลที่ 'ต้องใช้' สถานที่ที่ฉันทำงานเพื่อทำ FTP อัตโนมัติ (สำหรับสิ่งที่สำคัญมาก) และเมื่อลูกค้าหลายสิบคนทำกับร้านเดียวกันนั้น (ความล้มเหลวในการออกแบบเกี่ยวกับ 20 การใช้งานที่แตกต่างที่ฉันเห็น) เป็นเรื่องง่ายที่จะโน้มน้าวให้แอปส่วนใหญ่ใช้ HTTPS (โดยปกติแล้วพวกเขาพูดว่า "รอไม่มีเหตุผลที่เราไม่เพียงแค่ให้พวกเขารับ HTTPS จากเว็บเซิร์ฟเวอร์ที่เราให้บริการข้อมูลแล้ว" ) ยกเว้นบางส่วนที่ให้คำตอบเช่น "ดีเรามีสคริปต์เหล่านี้ที่ดูเหมือนจะใช้ได้แล้วและไม่มีใครในทีมของเราเก่งเรื่องการเขียนสคริปต์ดังนั้นเราจึงไม่สามารถทำการเปลี่ยนแปลงใด ๆ ได้" (ทีมงานของโปรแกรมเมอร์ 5-10 คน


1

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


-1

พอร์ต 22 เป็นมาตรฐานเนื่องจาก SSH daemon บน UNIX มีโมดูล SFTP ที่คุณสามารถเปิดใช้งานเพื่อสร้างเซิร์ฟเวอร์ SFTP อย่างชัดเจน หากคุณต้องการเรียกใช้เซิร์ฟเวอร์ FTP โดยนัยด้วย Filezilla คุณสามารถรันบนพอร์ตใดก็ได้ที่คุณต้องการ แต่มีการตรวจจับ: หากคุณใช้ไคลเอนต์ FileZilla คุณต้องระบุ URL ไซต์ ftp เป็น ftps: //mysite.com: 8086 แทนที่จะวางพอร์ตในฟิลด์พอร์ตแยกต่างหากที่ไคลเอนต์ FileZilla มีให้

สำหรับตัวเลือกที่ชัดเจนคุณจะต้องมีหนึ่งพอร์ต: 22 สำหรับตัวเลือกโดยปริยายคุณจะต้องเปิดไฟร์วอลล์สำหรับพอร์ตควบคุม: 8086 (ซึ่งจะส่งต่อไปยังพอร์ต 21 บนเซิร์ฟเวอร์ filezilla ของคุณภายใน)


6
คำถามถามเกี่ยวกับ FTPS ไม่ใช่ SFTP
Michael Lang

-7

ถ้า ftps เหมือนกันกับsftpคุณจะต้องสามารถเข้าถึงพอร์ต 22 บนเว็บไซต์ของผู้ขายได้

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


11
SFTP นั้นไม่เหมือนกับ ftps ( codeguru.com/csharp/.net/net_general/internet/article.php/ … ) SFTP เป็นโปรโตคอลการถ่ายโอนไฟล์ที่ใช้กับ SSH FTPS เป็น FTP ด้วย SSL FTPS เริ่มการเชื่อมต่อข้อมูลใหม่บนพอร์ตสุ่มใหม่ซึ่งทำให้ยากที่จะปรับใช้หลังไฟร์วอลล์ แต่ฉันไม่สามารถลบไฟร์วอลล์ในสถานการณ์นี้ได้

2
ขออภัยด้วย ฉันจะออกจากโพสต์นี้ แต่ในกรณีที่คนอื่นมีความสับสนเหมือนกัน
Brent

มันเป็นความสับสนที่พบได้ทั่วไปอย่างมหาศาล จากด้านไฟร์วอลล์ sftp นั้นเป็นวิธีที่ง่ายกว่าในการอนุญาตยกเว้นมันสร้างขึ้นบนโปรโตคอลที่มีไว้สำหรับการเข้าสู่ระบบ ประมาทเพื่อความปลอดภัยของกลุ่มอิสระที่จะอนุญาตโดยไม่ต้องมีการตรวจสอบอิสระ ยากสำหรับ sysadmins ในการค้นหา / กำหนดค่าเซิร์ฟเวอร์ sftp ที่เหมาะสมสำหรับไคลเอนต์ที่ไม่น่าเชื่อถือ การอภิปรายใด ๆ ของ SFTP หรือ ftps จะต้องพูดถึงโปรโตคอลอื่น ๆ เพราะความสับสนเป็นเรื่องธรรมดามาก
carlito
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.