iptables防火墙如何开放ftp端口

本文介绍如何在Linux服务器上配置vsftpd FTP服务,并针对iptables防火墙进行相应端口设置,确保FTP服务正常工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Linux服务器上安装ftp提供用户上传下载,是很方便的事情,但是如果你的服务器开启了iptables防火墙,就要对ftp端口做一些设置。
ftp端口真的比较特殊,并不像80,22这些端口。它分为连接用的端口,还有当你上传下载文件的传输数据用的端口。
netstat -tnl 命令可以看到,我们现在运行了ftp服务。
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN
现在我开始对ftp端口的设置,按照我们以前的视频,添加需要开放的端口
ftp连接端口有 21 和 20 端口,21端口用于连接,20端口用于传输数据,我现在添加对应的规则。
[root@localhost root]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
[root@localhost root]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT
[root@localhost root]# iptables -A OUTPUT -p tcp --sport 21 -j ACCEPT
[root@localhost root]# iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
好,这样就添加完了,我们用浏览器访问一下ftp,出现超时。
所以我刚才说 ftp 是比较特殊的端口,它还有一些端口是 数据传输端口,
例如目录列表, 上传 ,下载 文件都要用到这些端口。
而这些端口是 任意 端口。。。 这个 任意 真的比较特殊。
如果不指定什么一个端口范围, iptables 很难对任意端口开放的,
如果iptables允许任意端口访问, 那和不设置防火墙没什么区别,所以不现实的。
那么我们的解决办法就是 指定这个数据传输端口的一个范围。
下面我们修改一下ftp配置文件。
我这里使用vsftpd来修改演示,其他ftp我不知道哪里修改,大家可以找找资料。
[root@localhost root]# vi /etc/vsftpd/vsftpd.conf
在配置文件的最下面添加
pasv_min_port=30001
pasv_max_port=31000
然后保存退出。
这两句话的意思告诉vsftpd, 要传输数据的端口范围就在30001到31000 这个范围内传送。
这样我们使用 iptables 就好办多了,我们就打开 30001到31000 这些端口。
[root@localhost root]# iptables -A INPUT -p tcp --dport 30001:31000 -j ACCEPT
[root@localhost root]# iptables -A OUTPUT -p tcp --sport 30001:31000 -j ACCEPT
[root@localhost root]# service iptables save
最后进行保存, 然后我们再用浏览器范围下 ftp。可以正常访问

<think>好的,用户问的是如何在iptables中只开放FTP服务。我需要先理解用户的需求,他们可能希望服务器仅允许FTP流量,其他端口或服务都被阻止。FTP比较特殊,因为它使用两个端口:20和21,而且还有被动模式的问题,可能涉及动态端口范围。 首先,我应该回忆一下iptables的基本结构,比如表(filter、nat等)和链(INPUT、OUTPUT、FORWARD)。FTP属于需要处理连接跟踪的服务,因为它的数据连接是动态的。可能需要加载ip_conntrack_ftp和ip_nat_ftp模块来跟踪FTP连接,这样iptables才能正确识别相关的数据连接。 接下来,用户可能不知道FTP有主动和被动模式的区别。主动模式下,服务器使用20端口主动连接客户端,而被动模式下,服务器会开启一个随机的高端口。这时候需要明确用户使用的是哪种模式,或者是否都需要处理。通常,现代FTP服务器可能默认使用被动模式,所以可能需要开放一定的端口范围。 然后,考虑基本的规则设置。首先允许已建立的连接和相关的连接,这很重要,因为FTP的数据连接可能被识别为ESTABLISHED或RELATED。然后允许21端口的控制连接,以及20端口的数据连接(主动模式)。对于被动模式,可能需要指定一个端口范围,比如50000-51000,并在规则中开放这些端口。 另外,可能需要配置NAT相关的规则,特别是如果服务器在NAT后面,或者需要做端口转发。不过用户的问题可能集中在filter表的INPUT链上,所以重点应该放在这里。 还要注意默认策略,将INPUT链的默认策略设为DROP,然后显式允许需要的端口和服务。同时,确保OUTPUT链允许相关流量,否则服务器可能无法响应。 最后,提醒用户保存iptables规则,因为重启后规则会丢失。不同的Linux发行版保存方式不同,比如使用iptables-save或netfilter-persistent等工具。 用户可能的误区包括忘记处理被动模式端口,或者没有加载必要的模块导致数据连接被阻止。需要检查这些方面,并给出明确的步骤和解释,确保用户能够正确配置。</think>以下是使用 `iptables` **仅开放FTP服务**的分步配置指南。FTP协议涉及**控制连接(端口21)**和**数据连接(端口20或动态端口)**,需特别注意连接追踪。 --- ### 一、基础规则(允许FTP控制与数据连接) ```bash # 清空现有规则 iptables -F iptables -X # 设置默认策略(拒绝所有入站流量) iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # 允许已建立连接和相关的数据包 iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # 开放FTP控制端口(21) iptables -A INPUT -p tcp --dport 21 -j ACCEPT # 开放主动模式数据端口(20) iptables -A INPUT -p tcp --dport 20 -j ACCEPT ``` --- ### 二、处理被动模式(PASV模式动态端口) 被动模式下,FTP服务器会随机使用**高端口**传输数据,需指定端口范围并开放: ```bash # 假设FTP被动模式端口范围为50000-51000 iptables -A INPUT -p tcp --dport 50000:51000 -j ACCEPT ``` --- ### 三、加载FTP连接追踪模块(关键步骤) FTP数据连接依赖连接追踪,需加载内核模块: ```bash modprobe ip_conntrack_ftp # 加载连接追踪模块 modprobe ip_nat_ftp # 加载NAT支持模块 # 永久生效(写入/etc/modules-load.d/) echo "ip_conntrack_ftp" >> /etc/modules echo "ip_nat_ftp" >> /etc/modules ``` --- ### 四、完整配置示例 ```bash #!/bin/bash iptables -F iptables -X iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT ACCEPT # 允许本地回环 iptables -A INPUT -i lo -j ACCEPT # 允许FTP相关流量 iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 21 -j ACCEPT iptables -A INPUT -p tcp --dport 20 -j ACCEPT iptables -A INPUT -p tcp --dport 50000:51000 -j ACCEPT ``` --- ### 五、验证与持久化 1. **测试FTP连接**: 使用客户端尝试主动/被动模式连接,验证文件传输是否正常。 2. **保存规则**: ```bash # Debian/Ubuntu apt install iptables-persistent netfilter-persistent save # CentOS/RHEL service iptables save ``` --- ### 常见问题 - **被动模式失败**:检查是否开放了正确的动态端口范围。 - **模块未加载**:通过 `lsmod | grep ftp` 确认模块加载状态。 - **防火墙规则冲突**:确保没有其他规则覆盖FTP端口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值