构筑Linux防火墙之IPtables的概念与用法(2)

目标(target)
我们已经知道,目标是由规则指定的操作,那些与规则匹配的信息包执行这些操作。除了允许用户定义的目标之外,还有许多可用的目标选项。用于建立高级规则的目标,如LOG、REDIRECT、MARK、MIRROR 和MASQUERADE等。
状态机制
状态机制是iptables中特殊的一部分,其实它不应该叫状态机制,因为它只是一种连接跟踪机制。但是,很多人都认可状态机制这个名字。连接跟踪可以让netfilter知道某个特定连接淖刺?T诵辛?痈?俚姆阑鹎匠谱鞔?凶刺??频姆阑鹎剑?韵录虺莆?刺?阑鹎健W刺?阑鹎奖确亲刺?阑鹎揭?踩??蛭??市砦颐潜嘈锤?厦艿墓嬖颉?BR>
在iptables里,包是和被跟踪连接的四种不同状态有关的。它们是NEW、ESTABLISHED、RELATED和INVALID。使用--state匹配操作,我们能很容易地控制“谁或什么能发起新的会话”。
所有在内核中由netfilter的特定框架做的连接跟踪称作conntrack(就是connection tracking的首字母缩写)。conntrack可以作为模块安装,也可以作为内核的一部分。大部分情况下,我们需要更详细的连接跟踪。因此,conntrack中有许多用来处理TCP、UDP或ICMP协议的部件。这些模块从数据包中提取详细的、唯一的信息,因此能保持对每一个数据流的跟踪。这些信息也告知conntrack流当前的状态。例如,UDP流一般由他们的目的地址、源地址、目的端口和源端口唯一确定。
在以前的内核里,我们可以打开或关闭重组功能。然而,自从iptables和netfilter,尤其是连接跟踪被引入内核,这个选项就被取消了。因为没有包的重组,连接跟踪就不能正常工作。现在重组已经整合入conntrack,并且在conntrack启动时自动启动。不要关闭重组功能,除非你要关闭连接跟踪。
除了本地产生的包由OUTPUT链处理外,所有连接跟踪都是在PREROUTING链里进行处理的,意思就是说iptables会在PREROUTING链里重新计算所有的状态。如果我们发送一个流的初始化包,状态就会在OUTPUT链里被设置为NEW,当我们收到回应的包时,状态就会在PREROUTING链里被设置为ESTABLISHED。如果第一个包不是本地产生的,那就会在PREROUTING链里被设置为NEW状态。综上所述,所有状态的改变和计算都是在nat表中的PREROUTING链和OUTPUT链里完成的。
正如前面说的,包的状态依据IP所包含的协议不同而不同,但在内核外部,也就是用户空间里,只有4种状态:NEW、ESTABLISHED、RELATED和INVALID。它们主要是和状态匹配一起使用。
NEW
NEW说明这个包是我们看到的第一个包。意思就是,这是conntrack模块看到的某个连接第一个包,它即将被匹配了。比如,我们看到一个SYN包,是我们所留意的连接的第一个包,就要匹配它。第一个包也可能不是SYN包,但它仍会被认为是NEW状态。
ESTABLISHED
ESTABLISHED已经注意到两个方向上的数据传输,而且会继续匹配这个连接的包。处于ESTABLISHED状态的连接是非常容易理解的。只要发送并接到应答,连接就是ESTABLISHED的了。一个连接要从NEW变为ESTABLISHED,只需要接到应答包即可,不管这个包是发往防火墙的,还是要由防火墙转发的。ICMP的错误和重定向等信息包也被看作是ESTABLISHED,只要它们是我们所发出的信息的应答。
RELATED
RELATED是个比较麻烦的状态。当一个连接和某个已处于ESTABLISHED状态的连接有关系时,就被认为是RELATED的了。换句话说,一个连接要想是RELATED的,首先要有一个ESTABLISHED的连接。这个ESTABLISHED连接再产生一个主连接之外的连接,这个新的连接就是RELATED的了,当然前提是conntrack模块要能理解RELATED。ftp是个很好的例子,FTP-data 连接就是和FTP-control有RELATED的。
INVALID
INVALID说明数据包不能被识别属于哪个连接或没有任何状态。有几个原因可以产生这种情况,比如,内存溢出,收到不知属于哪个连接的ICMP错误信息。一般地,我们DROP这个状态的任何东西。
这些状态可以一起使用,以便匹配数据包。这可以使我们的防火墙非常强壮和有效。以前,我们经常打开1024以上的所有端口来放行应答的数据。现在,有了状态机制,就不需再这样了。因为我们可以只开放那些有应答数据的端口,其他的都可以关闭。这样就安全多了。

(0)

相关推荐

  • 构筑Linux防火墙之IPtables的概念与用法(1)

    构筑Linux防火墙之什么是Linux防火墙 防火墙典型的设置是有两个网卡,一个流入,一个流出。iptables读取流入和流出的数据包的报头,然后将它们与规划集(ruleset)相比较,然后将可接受的 ...

  • Linux防火墙iptables简明教程

    前几天微魔部落再次遭受到个别别有用心的攻击者的攻击,顺便给自己充个电,复习了一下linux下常见的防火墙iptables的一些内容,但是无奈网上的很多教程都较为繁琐,本着简明化学习的目的,微魔为大家剔 ...

  • Linux防火墙怎么设置

    一般开启防火墙是防止一些病毒、木马入侵计算机,当然虽然说不一定能完全防止,但是对于一些一般的木马之类还是有一定的效果,那么怎么启动这些linux系统的防火墙。 首先你要知道你的linux系统的版本是属 ...

  • Linux防火墙设置

    Linux防火墙设置 【任务描述】 (1)设置网卡IP地址为192.168.1.234,子网掩码为255.255.255.0,网关为192.168.1.1。 (2)设置DNS为61.177.7.1。 ...

  • 关闭Linux防火墙

    有时候在虚拟机实验时,linux防火墙会阻止ip,端口,协议等.很不方便.所以常常需要关闭虚拟机中linux的防火墙. 操作方法 01 查看防火墙是否开启 执行 service iptables st ...

  • linux防火墙开放端口

    为了安全服务器某些端口只对特地的服务器开放,需要用到linux的iptables对请求的ip地址进行过滤,达到阻止和放行指定的IP地址的目的.保护内部服务器端口不受攻击. 操作方法 01 以oracl ...

  • Linux防火墙的配置方法(firewalld服务)

    红帽RHEL7系统已经用firewalld服务替代了iptables服务,新的防火墙管理命令firewall-cmd与图形化工具firewall-config. 执行firewall-config命令 ...

  • Linux防火墙伪装机制抵抗恶意黑客的详细介绍

    防火墙可分为几种不同的安全等级。在Linux中,由于有许多不同的防火墙软件可供选择,安全性可低可高,最复杂的软件可提供几乎无法渗透的保护能力。不过,Linux核心本身内建了一种称作”伪装”的简单机制, ...

  • Linux防火墙伪装机制帮您抵抗恶意黑客

    防火墙可分为几种不同的安全等级。在Linux中,由于有许多不同的防火墙软件可供选择,安全性可低可高,最复杂的软件可提供几乎无法渗透的保护能力。不过,Linux核心本身内建了一种称作”伪装”的简单机制, ...