iptables之state扩展与开启被动模式ftp

1. state扩展

2. 如何开放被动模式的ftp服务?

3. 防火墙规则的检查次序

4. 保存与加载预存的规则


1. state扩展

??该扩展至关重要,正是由于state才实现了连接追踪机制。
??连接追踪机制:每一台客户端与本地主机进行通讯时(有可能是通过本地主机去访问其他主机),本地主机都会在内存的一段空间中存储源IP、源端口、目标IP、目标端口的信息(每条记录都有生存时间)。当客户端下次再与本地主机进行通讯时,就可以通过查找之前存储的信息来追踪该客户端是否与本地主机通讯过。
??注意:开启连接追踪功能,需要占用内存的空间,影响系统性能。且前端负载均衡服务器若开启此功能,由于连接追踪模板空间有限制,空间满了之后,会导致后续的连接请求无法得到响应。

连接追踪机制已经追踪到并记录下来的连接保存在/proc/net/nf_conntrack文件中

ipv4     2 tcp      6 299 ESTABLISHED src=192.168.25.1 dst=192.168.25.128 sport=52832 dport=22 src=192.168.25.128 dst=192.168.25.1 sport=22 dport=52832 [ASSURED] mark=0 zone=0 use=2

以上内容的部分解释
ipv4:基于哪种底层协议
tcp:上层的协议
src sport:源地址 源端口
dst dport:目标地址,目标端口
ESTABLISHED:目前状态

  连接追踪功能所能记录的最大连接数量通过该文件定义(可调整):

/proc/sys/net/nf_conntrack_max

  调整连接追踪机制所能记录的最大连接数:

sysctl -w net.nf_conntrack_max=300000
echo 300000 > /proc/sys/net/nf_conntrack_max

  conntrack所能追踪的连接数量最大值取决于/proc/sys/net/nf_conntrack_max的设定。已经追踪到并记录下来的连接位于/proc/net/nf_conntrack文件中,超时的连接将会被删除。当/proc/net/nf_conntrack满时,后续的新连接可能会超时。
解决办法(通常采用第一种方法):
??1. 加大nf_conntrack_max的值
??2. 降低nf_contrack条目的超时时长
  不同协议的连接追踪时长记录在/proc/sys/net/netfilter/目录下的各文件中conntrack的子集,用于对报文的状态做连接追踪;

The "state" extension is a subset of the "conntrack" module. "state" allows access to the connection tracking state for this packet.

  根据”连接追踪机制“去检查连接的状态;

??conntrack机制:追踪本机上的请求和响应之间的关系;状态有如下几种:
??NEW:新发出请求;连接追踪模板中不存在此连接的相关信息条目,因此,将其识别为第一次发出的请求;与协议无关。
??ESTABLISHED:NEW状态之后,连接追踪模板中为其建立的条目失效之前期间内所进行的通信状态;
?? RELATED:相关联的连接;如ftp协议中的数据连接与命令连接之间的关系;
?? INVALID:无法识别的连接;
?? UNTRACKED:未进行追踪的连接;

例:

~] # iptables -A INPUT -s 172.18.0.0/16 -d 172.18.0.100 -p tcp -m multiport --dport 22,23,80 -m state --state NEW,ESTABLISHED -j ACCEPT
~] # iptables -A OUTPUT -d 172.18.0.0/16 -s 172.18.0.100 -p tcp -m multiport --sport 22,23,80 -m state --state ESTABLISHED -j ACCEPT
~] # iptables -A INPUT -d 172.18.100.6 -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED -j ACCEPT
~] # iptables -A OUTPUT -s 172.18.100.6 -p icmp --icmp-type 0 -m state --state ESTABLISHED -j ACCEPT

以上规则可合并为:

~] # iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
~] # iptables -A INPUT -d 172.18.100.6 -p tcp -m multiport --dports 22,23,80 -m state --state NEW -j ACCEPT
~] # iptables -A INPUT -d 172.18.100.6 -p icmp --icmp-type 8 -m state --state NEW -j ACCEPT
~] # iptables -A OUTPUT -m state --state ESTABLISHED -j ACCEPT

开启被动模式ftp

~] # modprobe nf_conntrack_ftp   #内核加载nf_conntrack_ftp模块
~] # systemctl start vsftpd.service     #开启vsftpd服务
~] # iptables -A INPUT-d 172.18.100.6 -m state --state ESTABLISTED,RELATED -j ACCEPT
~] # iptables -A INPUT -d 172.18.100.6 -p tcp -m multiport --dports 21,22,23,80 -m state --state NEW  -j ACCEPT
~] # iptables -A OUTPUT -s 172.18.100.6 -m state --state ESTABLISHED -j ACCEPT

2. 如何开放被动模式的ftp服务?

(1) 装载ftp连接追踪的专用模块:

~]# modproble  nf_conntrack_ftp

(2) 放行命令连接(假设Server地址为172.16.100.67):

~]# iptables -A INPUT -d 172.16.100.67 -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
~]# iptables -A OUTPUT -s 172.16.100.67 -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT

(3) 放行数据连接(假设Server地址为172.16.100.67):

~]# iptables -A INPUT -d 172.16.100.67 -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
~]# iptables -I OUTPUT -s 172.16.100.67 -m state --state ESTABLISHED -j ACCEPT

3. 防火墙规则的检查次序

规则在链上的次序即为其检查时的生效次序,因此其优化使用有一定法则

  1. 同类规则(访问同一应用),匹配范围小的放前面。用于特殊处理
  2. 不同类的规则(访问不同应用),匹配范围大的放前面。
  3. 应该将那些可由一条规则描述的多个规则合并为一条规则。(规则越少,检查的次数越少)。
  4. 要设置默认策略
    规则的有效期限
    ??iptables命令添加的规则,手动删除前,其生效期限为kernel的生命周期

    4. 保存与加载预存的规则

    保存规则:
      CentOS 6:

#方式一:
~]# service iptables save
#方式二:
~]# iptables-save > /etc/sysconfig/iptables
#该目录为默认目录,也可以自定义保存路径
~]# iptables-save > /PATH/TO/SOME_RULE_FILE

  CentOS 7:

~]# iptables -S > /PATH/TO/SOME_RULE_FILE
~]# iptables-save > /PATH/TO/SOME_RULE_FILE

从文件中加载预存的规则:
  以下命令会自动从/etc/sysconfig/iptables文件中重载规则
  通用方法:

~]# iptables-restore < /PATH/FROM/SOME_RULE_FILE

  CentOS 6专用命令

service iptables restart

自动生效规则文件中的规则:

  1. 把iptables命令放在脚本文件中,让脚本文件开机自动运行。
      把脚本放在/etc/rc.d/rc.local中即可
  2. 用规则文件保存规则,开机自动运行重载命令
      在/etc/rc.d/rc.local中
      iptables-restore < /PATH/FROM/SOME_RULE_FILE

原文地址:http://blog.51cto.com/11975865/2090892

时间: 2024-08-26 13:19:39

iptables之state扩展与开启被动模式ftp的相关文章

iptables(4)开放被动模式FTP服务

开放被动模式FTP服务: (1)装载ftp追踪时的专用的模块: #modprobe nf_conntrack_ftp (2)放行请求报文: 命令连接:NEW,ESTABLISHED 数据连接:RELATED,ESTABLISHED # iptables -A INPUT -d LocalIP -p tcp --dport 21 -m state --stateNEW,ESTABLISHED -j ACCEPT # iptables -A INPUT -d LocalIP -p tcp -m st

iptables详解(8):iptables扩展模块之state扩展

当我们通过http的url访问某个网站的网页时,客户端向服务端的80端口发起请求,服务端再通过80端口响应我们的请求,于是,作为客户端,我们似乎应该理所应当的放行80端口,以便服务端回应我们的报文可以进入客户端主机,于是,我们在客户端放行了80端口,同理,当我们通过ssh工具远程连接到某台服务器时,客户端向服务端的22号端口发起请求,服务端再通过22号端口响应我们的请求,于是我们理所应当的放行了所有22号端口,以便远程主机的响应请求能够通过防火墙,但是,作为客户端,如果我们并没有主动向80端口发

主动模式FTP与被动模式FTP该如何选择

主动模式FTP与被动模式FTP该如何选择  无论是主动模式还是被动模式,其要进行文件传输都必须依次建立两个连接,分别为命令连接与数据连结.而主动模式与被动模式的差异主要体现在数据连结通道上.为了说明两者的差异,我将主要对这个数据连结进行比较详细的说明.  当FTP客户端需要登陆到FTP服务器上的时候,服务器与客户端需要进行一系列的身份验证过程,这个过程就叫做命令连接.如在客户端向服务器发起连接请 求的时候,客户端会随即的选择某个TCP端口来跟FTP服务器的21号端口进行连接,这主要是通过TCP三

win10 64位安装memcache扩展和开启redis扩展

前面有关于win10下搭建wamp环境的介绍,在此不在赘述,php操作memcache有memcache库和memcached库,其中memcache是php内置的扩展库,支持面向对象和面向过程两种操作,memcached是基于libmemcached的一套第三方扩展库,仅支持面向对象方式操作,相对于memcache扩展而言,功能更加强大,方法更加丰富,效率更高.下面介绍下在window环境下如何安装memcache扩展和开启redis扩展, 下载文件 附件有memcached的安装文件和php

【转载】MAC OS开启关闭ftp命令

MAC OS开启关闭ftp命令 第一种:通过命令行来开启关闭,如下所示: 开启 FTP Server sudo -s launchctl load -w /System/Library/LaunchDaemons/ftp.plist 关闭 FTP Server sudo -s launchctl unload -w /System/Library/LaunchDaemons/ftp.plist 第二种:通过第三方图形工具来开启和关闭ftp功能: 1.Lion Tweaks 1.3:这个工具可以设

iptables详解(6):iptables扩展模块之 state 扩展

为了防止恶意攻击主动连接到你的主机 我们需要通过iptables的扩展模块判断报文是为了回应我们之前发出的报文还是主动向我们发送的报文 state模块可以让iptables实现 连接追踪机制 NEW  ESTABLISHED RELATED INVALID UNTRACKED 原文地址:https://www.cnblogs.com/chenxiaomeng/p/12044607.html

iptables之layer7扩展

L7-filter:    提供了更多的netfilter模块,可以基于应用层为iptables提供更多功能.类似的还有ipp2p. 注意:软件官网上表明支持的最新内核版本为2.6.x,已经好久没有更新了.3.x的内核未测试. 需要软件包:        kernel-xxx.tar.gz 内核源码包        iptables-xxx.tar.bz2 iptables源码包        netfilter-layer7-xxx.tar.gz l7源码包        l7-protoco

iptables下state的4种形式

ESTABLISHED,NEW,RELATED,INVALID. 注意:TCP/IP 标准描述下,UDP及ICPM数据包是没有连接状态的,但在state模块的描述下,任何数据包都有连接状态. ESTABLISHED:与TCP数据包的关系,首先在防火墙上执行ssh client,并且对网络上的ssh服务器提出服务请求,而这时送出的第一个数据包就是服务请求的数据包,如果实个数据包能成功的穿防火墙,那么接下来,ssh server与ssh client之间的所有ssh数据包的状态都会是ESTABLIS

Ubuntu --- lamp环境下安装php扩展和开启apache重写

安装教程参考:http://www.laozuo.org/8303.html 1.安装php扩展(比如安装mbstring) 先搜索相关的包 apt-cache search php7 再安装 apt-get install php7.0-mbstring 2.开启apache重写 先开启重写功能 sudo a2enmod rewrite 再修改/etc/apache2/sites-enabled/下对应的配置文件 <Directory /> Options FollowSymLinks Al