แก้ไขการเข้าถึง FTP จากพีซีไคลเอนต์ Linux โดยเปิดใช้งานไฟร์วอลล์
วันนี้ ฉันต้องการแบ่งปันประสบการณ์ส่วนตัวของฉันกับการเข้าถึง FTP ใน Linux ขอบคุณระบบปฏิบัติการใหม่จาก Microsoft ซึ่งฉันพบว่าไม่เหมาะกับการใช้งานประจำวัน ฉันจึงเปลี่ยนมาใช้ Linux เมื่อสองสามปีก่อน ฉันใช้เซิร์ฟเวอร์ FTP ในเครือข่ายในบ้านของฉัน และไม่สามารถเข้าถึงได้จากพีซีไคลเอนต์ของฉันที่ทำงานอยู่ Linux ซึ่งมีกฎไฟร์วอลล์เพื่อบล็อกการเชื่อมต่อขาเข้า เช่น นโยบาย INPUT ถูกตั้งค่าเป็น REJECT ใน iptables นี่คือวิธีที่ฉันแก้ไขปัญหา
ฉันถือว่านโยบาย OUTPUT นั้นยอมรับได้ทั้งบนเครื่องไคลเอนต์และเซิร์ฟเวอร์
โซลูชัน # 1 ใช้โมดูลเคอร์เนล nf_conntrack_ftp
โมดูลเคอร์เนล nf_conntrack_ftp อนุญาตให้คุณปลดบล็อกการเข้าถึงพอร์ตที่จำเป็นสำหรับเซิร์ฟเวอร์ FTP โดยอัตโนมัติทุกครั้งที่คุณทำการเชื่อมต่อ ข้อกำหนดเพียงอย่างเดียวสำหรับโมดูลนี้คือบรรทัดต่อไปนี้ในกฎ iptables ของคุณ (โดยปกติคือ /etc/iptables/iptables.rules) บนพีซีไคลเอนต์:
$IPT -A INPUT -i eth0 -m state --state RELATED, ESTABLISHED -j ACCEPT
มี eth0 คือชื่ออุปกรณ์เครือข่ายของคุณ
ถัดไป คุณต้องโหลด nf_conntrack_ftp หากยังไม่ได้โหลด เรียกใช้คำสั่งต่อไปนี้ในฐานะรูทบนพีซีไคลเอนต์
# modprobe nf_conntrack_ftp
หากเซิร์ฟเวอร์ของคุณใช้พอร์ตที่ไม่ใช่ค่าเริ่มต้น (นอกเหนือจากพอร์ต 21) ให้ใช้คำสั่งต่อไปนี้:
# modprobe nf_conntrack_ftp พอร์ต=your_port
สิ่งนี้จะให้การเชื่อมต่ออัตโนมัติกับพอร์ตที่จำเป็นทั้งหมดระหว่างเซิร์ฟเวอร์ FTP และซอฟต์แวร์ไคลเอนต์ของคุณ ใช้งานได้จนกว่าคุณจะรีบูทพีซีของคุณ
ในการทำการเปลี่ยนแปลงนี้อย่างถาวร คุณต้องสร้างไฟล์ข้อความใหม่ /etc/modules-load.d/conntrack_ftp.conf และเพิ่มบรรทัดต่อไปนี้ในไฟล์นี้:
nf_conntrack_ftp
ในกรณีของพอร์ตเซิร์ฟเวอร์ที่ไม่ใช่ค่าเริ่มต้น คุณต้องสร้างไฟล์เพิ่มเติม /etc/modprobe.d/conntrack_ftp.conf ด้วยเนื้อหาต่อไปนี้:
ตัวเลือก nf_conntrack_ftp พอร์ต=
นี้ควรจะเพียงพอ
โซลูชัน # 2 ใช้ช่วงพอร์ตแบบพาสซีฟคงที่
หากคุณไม่สามารถใช้โมดูล nf_conntrack_ftp ได้ คุณสามารถตั้งค่าช่วงพอร์ตคงที่สำหรับซอฟต์แวร์เซิร์ฟเวอร์ FTP และเปิดบนไคลเอ็นต์พีซี ตัวอย่างเช่น นี่คือวิธีการสำหรับแอป vsftpd
- ในไฟล์คอนฟิกูเรชันของ vsftpd ซึ่งโดยปกติคือ /etc/vsftpd.conf ให้เพิ่มบรรทัดต่อไปนี้:
pasv_min_port=5500. pasv_max_port=6500
ควรทำบนฝั่งเซิร์ฟเวอร์ หลังจากนั้นคุณควรรีสตาร์ท vsftpd
- ในกฎ iptables ของคุณ (โดยปกติคือ /etc/iptables/iptables.rules) บนพีซีไคลเอนต์ ให้เพิ่มกฎต่อไปนี้:
$IPT -A อินพุต -p tcp -s
--dport 5500:6500 -j ยอมรับ - ใช้กฎ iptables ดังนี้:
# iptables-restore < /etc/iptables/iptables.rules
แค่นั้นแหละ.