LinuxBash:设置iptables规则以允许主动和被动FTP

LinuxBash:设置iptables规则以允许主动和被动FTP,linux,bash,ftp,iptables,Linux,Bash,Ftp,Iptables,我有一台安装了FTP服务器的电脑。我想设置iptables规则以允许主动和被动FTP。我尝试了下面的代码,people report正在运行,但它似乎阻止了我的所有流量(页面将不再加载等) 该代码只允许传入和传出FTP连接。它不允许任何其他东西进出 $IPT -P INPUT DROP 丢弃所有传入的流量。因此,如果您从这一点开始,您将希望允许流量进入您正在运行的任何其他服务 $IPT -A INPUT -p tcp --sport 21 -m state --state NEW,EST

我有一台安装了FTP服务器的电脑。我想设置iptables规则以允许主动和被动FTP。我尝试了下面的代码,people report正在运行,但它似乎阻止了我的所有流量(页面将不再加载等)


该代码只允许传入和传出FTP连接。它不允许任何其他东西进出

 $IPT -P INPUT DROP
丢弃所有传入的流量。因此,如果您从这一点开始,您将希望允许流量进入您正在运行的任何其他服务

 $IPT -A INPUT  -p tcp --sport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
 $IPT -A OUTPUT -p tcp --dport 21 -m state --state ESTABLISHED -j ACCEPT
此规则将允许传入FTP通信


这个脚本的作用是删除所有现有的IP表链,然后添加允许所有传出流量的规则,并阻止除FTP之外的所有传入流量

需要在#Allow FTP connections@port 21部分翻转输入和输出行的参数,否则新的(活动的)FTP连接将被阻止

# Allow FTP connections @ port 21
$IPT -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT  -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT

从你的问题来看,我假设你有一个普通的主机,它有一组常见的应用程序,如web浏览器、邮件客户端,可能是telnet和|或ssh客户端,也可能是ftp客户端,可能是一些IM等,并且所有这些应用程序都可以工作,您还需要允许此主机上的FTP服务器以主动和被动模式为将要连接的客户端工作。 这里有3组适用于这种情况的规则。公共规则块是适用于大多数客户端主机的最低限度的规则集。 接下来是ftp客户端的规则块(如果您的主机上有)。ftp客户端的规则与其他客户端的规则略有不同:始终有两个连接来启用数据传输:ftp控制(端口21)和ftp数据(端口20处于主动模式或随机端口处于被动模式)。对于主动模式,您可能永远不需要客户端规则,因为被动模式是网络的唯一选择

FTP服务器的规则在最后一个块中

请检查内核中是否有ip_conntrack_ftp(可能被命名为nf_conntrack_ftp):

> lsmod | grep conn
如果没有此内核模块,“相关”规则将不起作用 而且,最有可能的是,单独的ftp数据连接不会在运行时启动 主ftp控制连接将在“端口”命令后挂起。 在这种情况下,您仍然可以强制ftp数据连接,但代价是降低调整规则所提供的安全性。这些调整出现在规则之前的注释中

专业的


我在上面的脚本中发现了一个大错误

规则输入错误,应该是这样的:

$IPT -A INPUT  -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT

$IPT -A INPUT -p tcp --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 20 -m state --state ESTABLISHED -j ACCEPT
体育运动换位!您将要到达一个目的地,如果您连接到服务器,那么sourceport是动态的,客户端spefific是未知的,尽管建立了连接

我想第二行是模棱两可的,因为您不知道服务器端客户端将使用哪个端口来建立ftp连接。如果出站流量被defalut阻止,最好是这样的规则:

$IPT -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED,RELATED  -j ACCEPT
但这只有在符合规则的情况下才需要

$IPT -P OUTPUT DROP
位于规则集的顶部

问候


马库斯

请参考本网站了解解释:

FTP客户端:

lsmod | grep ftp
modprobe nf_conntrack_ftp      or   modprobe ip_conntrack_ftp
lsmod | grep ftp
 iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT 
 iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 20 --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 
 iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT 
 iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT 
 iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 
 lsmod | grep ftp
 modprobe nf_conntrack_ftp      or   modprobe ip_conntrack_ftp
 lsmod | grep ftp
 iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT 
 iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 20 --sport 1024:-m conntrack --ctstate ESTABLISHED -j ACCEPT 
 iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 
 iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT 
 iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 
 iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m conntrack --ctstate ESTABLISHED -j ACCEPT 
FTP服务器:

lsmod | grep ftp
modprobe nf_conntrack_ftp      or   modprobe ip_conntrack_ftp
lsmod | grep ftp
 iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT 
 iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 20 --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 
 iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT 
 iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
 iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT 
 iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 
 lsmod | grep ftp
 modprobe nf_conntrack_ftp      or   modprobe ip_conntrack_ftp
 lsmod | grep ftp
 iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT 
 iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 20 --sport 1024:-m conntrack --ctstate ESTABLISHED -j ACCEPT 
 iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 
 iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT 
 iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT 
 iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m conntrack --ctstate ESTABLISHED -j ACCEPT 
在客户端的被动和主动模式之间切换

 ftp> passive
 Passive mode on.
 ftp> passive
 Passive mode off.

输入应是新的、已建立的。不是输出。谢谢你的更正。固定的。我只是把它打出来,没有仔细看一眼。