Linux里面iptables -F作用是什么?

是比较特殊的端口,它还有一些端口是 数据传输端口, 例如目录列表, 上传 ,下载 文件都要用到这些端口。 而这些端口是 任意 端口。。。 这个 任意 真的比较特殊。 如果不指定什么一个端口范围, iptables 很难对任意端口开放的, 如果iptables允许任意端口访问, 那和不设置防火墙没什么区别,所以不现实的。 那么我们的解决办法就是 指定这个数据传输端口的一个范围。 这是我为了演示ftp特殊端口做的简单规则,大家可以添加一些对数据包的验证 例如 -m state --state ESTABLISHED,RELATED 等等要求更加高的验证

#如上例,添加一条入站规则:对进来的包的状态进行检测。已经建立tcp连接的包以及该连接相关的包允许通过!

#ESTABLISHED:已建立的链接状态。RELATED:该数据包与本机发出的数据包有关。

#-i 参数是指定接口,这里的接口是lo ,lo就是Loopback(本地环回接口),意思就允许本地环回接口在INPUT表的所有数据通信。

prohibited的消息给被拒绝的主机。(一般不发送,就不添加这两条)

以下是iptables相关命令和参数:

三个规则链这个规则表顾名思义是用来进行封包过滤的理动作(例如:DROP、 LOG、 ACCEPT 或 REJECT),我们会将基本规则都建立在此规则表中。

1、常用命令列表:  常用命令(-A追加规则、-D删除规则、-R修改规则、-I插入规则、-L查看规则)

说明 新增规则(追加方式)到某个规则链(这里是INPUT规则链)中,该规则将会成为规则链中的最后一条规则。

说明 从某个规则链中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。

说明 取代现行规则,规则被取代后并不会改变顺序。(1是位置)

说明 插入一条规则,原本该位置(这里是位置1)上的规则将会往后移动一个顺位。

说明 列出某规则链中的所有规则。

说明 删除某规则链(这里是INPUT规则链)中的所有规则。

说明 将封包计数器归零。封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或缺的工具。

说明 定义新的规则链。

说明 删除某个规则链。

说明 定义过滤政策。 也就是未符合过滤条件之封包,预设的处理方式。

说明 修改某自订规则链的名称。

2、常用封包比对参数:(-p协议、-s源地址、-d目的地址、--sport源端口、--dport目的端口、-i 进入网卡、-o 出去网卡)

去除tcp外的所有协议。

说明 用来比对封包的来源 IP,可以比对单机或网络,比对网络时请用数字来表示屏蔽,

说明 用来比对封包的目的地 IP,设定方式同上。

说明 用来比对封包是从哪片网卡进入,可以使用通配字符 + 来做大范围比对,

说明 用来比对封包要从哪片网卡送出,设定方式同上。

说明 用来比对封包的来源端口号,可以比对单一埠,或是一个范围,

如果要比对不连续的多个埠,则必须使用 --multiport 参数,详见后文。比对埠号时,可以使用 ! 运算子进行反向比对。

说明 用来比对封包的目的端口号,设定方式同上。

(只过滤TCP中的一些包,比如SYN包,ACK包,FIN包,RST包等等)

说明  比对 TCP 封包的状态旗号,参数分为两个部分,第一个部分列举出想比对的旗号,

FIN(结束)、RST(重设)、URG(紧急)PSH(强迫推送) 等均可使用于参数中,除此之外还可以使用关键词 ALL 和 

NONE 进行比对。比对旗号时,可以使用 ! 运算子行反向比对。

说明 用来比对不连续的多个目的地埠号,设定方式同上。

说明 这个参数比较特殊,用来比对来源埠号和目的埠号相同的封包,设定方式同上。

注意:在本范例中,如果来源端口号为 80目的地埠号为 110,这种封包并不算符合条件。

说明 用来比对 ICMP 的类型编号,可以使用代码或数字编号来进行比对。

说明 用来比对某段时间内封包的平均流量,上面的例子是用来比对:每小时平均流量是

否超过一次 3 个封包。 除了每小时平均次外,也可以每秒钟、每分钟或每天平均一次,

比对外,设定这个参数也会在条件达成时,暂停封包的比对动作,以避免因骇客使用洪水

攻击法,导致服务被阻断。

说明 用来比对瞬间大量封包的数量,上面的例子是用来比对一次同时涌入的封包是否超

过 5 个(这是默认值),超过此上限的封将被直接丢弃。使用效果同上。

说明 用来比对封包来源网络接口的硬件地址,这个参数不能用在 OUTPUT 和 Postrouting规则炼上,这是因为封包要送出到网后,才能由网卡驱动程序透过 ARP 通讯协议查出目的地的 MAC 地址,所以 iptables 在进行封包比对时,并不知道封包会送到个网络接口去。

说明 用来比对封包是否被表示某个号码,当封包被比对成功时,我们可以透过 MARK 处理动作,将该封包标示一个号码,号码最不可以超过 。

说明 用来比对来自本机的封包,是否为某特定使用者所产生的,这样可以避免服务器使用 

root 或其它身分将敏感数据传送出,可以降低系统被骇的损失。可惜这个功能无法比对出

说明 用来比对来自本机的封包,是否为某特定使用者群组所产生的,使用时机同上。

说明 用来比对来自本机的封包,是否为某特定行程所产生的,使用时机同上。

说明 用来比对来自本机的封包,是否为某特定联机(Session ID)的响应封包,使用时

NEW 表示该封包想要起始一个联机(重设联机或将联机重导向)。

3、常用的处理动作: (-j  指定对满足条件包的处理,常用动作有ACCEPT接受报、DROP丢弃报、REJECT丢弃报并通知对方、REDIRECT重定向包等)

RETURN        结束在目前规则炼中的过滤程序,返回主规则炼继续过滤,如果把自订规则炼看成是一个子程序,那么这个动作,就相当提早结束子程序并返回到主程序中。

设置丢包 50% ,iptables 也可以模拟这个,但一下不记的命令了,下次放上来:

上面的设丢包,如果给后面的 50% 的丢包比率修改成 ’50% 80%’ 时,这时和上面的延时不一样,这是指丢包比率为 50-80% 之间。

}

iptables 是 Linux 管理员用来设置 IPv4 数据包过滤条件和 NAT 的命令行工具。这篇文章较详细的给大家介绍了Linux iptables 命令,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧

iptables 是 Linux 管理员用来设置 IPv4 数据包过滤条件和 NAT 的命令行工具。iptables 工具运行在用户态,主要是设置各种规则。而 netfilter 则运行在内核态,执行那些设置好的规则。

查看规则的命令格式为:

-L :列出某个 table 的所有链或某个链的规则
-n :直接显示 IP,速度会快很多
-v :列出更多的信息,包括通过该规则的数据包总位数、相关的网络接口等

红框中的内容为链的名称及其默认策略,filter 表中所有链的默认策略都是 ACCEPT。红框下面的行代表什么呢?

因为默认情况下没有添加自定义的规则,所以上图中这些行下面都是空的。

清除规则的命令格式如下:

-F:清除所有已制定的规则
-Z:将所有的 chain 的计数与流量统计都清零

如果我们要制订一套防火墙规则,一般会先清除现有的规则,然后从头开始创建新的规则。下面让我们清除本机 filter 表中的所有规则:

 

如果一个数据包没有匹配到一个链中的任何一个规则,那么将对该数据包执行这个链的默认策略(default policy),默认策略可以是 ACCEPT 或 DROP。
链中默认策略的存在使得我们在设计防火墙时可以有两种选择:

设置默认策略 DROP 所有的数据包,然后添加规则接受(ACCEPT)来自可信 IP 地址的数据包,或访问我们的服务监听的端口的数据包,比如 bittorrent、FTP 服务器、Web 服务器、Samba 文件服务器等等。

设置默认策略 ACCEPT 所有的数据包,然后添加规则丢弃(DROP)特定的数据包。比如来自一些恶意 IP 的数据包,或访问某些端口的数据包,在这些端口上我们并没有提供公开的服务。

一般情况下,上面的第一个选项用于 INPUT 链,因为我们希望对访问的资源进行权限控制。而第二个选项常用于 OUTPUT 链,因为我们通常信任离开机器的数据包(该数据包来自本机)。

设置默认策略的命令格式如下:

 

-P 选项用来定义默认策略(Policy)。注意,这是大写字母 P。ACCEPT 表示接受数据包,DROP 表示丢弃数据包。

一般情况下,我们会把 filter 表的 INPUT 链的默认策略制订的严格一些,比如设为 DROP。而 FORWARD 和 OUTPUT 可以宽松些,设为 ACCEPT。比如我们可以通过下面的命令把 filter 表的 INPUT 链的默认策略设置为 DROP:

我们可以通过规则来匹配数据包,具体的匹配条件包括 IP、网段、网络接口(interface)和传输协议(tcp、udp 等)。

添加规则的命令格式如下:

-A:针对某个规则链添加一条规则,新添加的规则排在现有规则的后面。
-I:针对某个规则链插入一条规则,可以为新插入的规则指定在链中的序号。如果不指定序号,则新的规则会变成第一条规则。
-i:指定数据包进入的那个网络接口,比如 eth0、lo 等,需要与 INPUT 链配合使用。
-o: 指定传出数据包的那个网络接口,需要与 OUTPUT 链配合使用。
-p: 指定此规则适用于那种网络协议(常用的协议有 tcp、udp、icmp,all 指适用于所有的协议)。
-d:指定数据包的目标 IP/网段,其它与 -s 选项相同。

下面我们来看几个例子。

上面的命令假设 lo 接口是可以信任的设备,所有进出该接口的数据包都会被接受。

注意,上面的命令中并没有设置 -s、-d 等参数,其实没有指定的参数表示该参数是任何值都可以被接受。

和 lo 接口类似,如果你完全信任某个接口,可以像设置 lo 一样设置它:

只接受来自内网中某个网段的数据包:

 

接受/丢弃来自指定 IP 的数据包:

 

然后看看 filter 表的规则:

iptables-save 命令提供了另外一种风格的输出:

在我们添加的规则中,很多时候需要指定网络协议(tcp、udp 等)及相关的端口号,其基本命令格式如下:

丢弃所有通过 tcp 协议访问本机 21 端口的数据包:

 
 

在 linux kernel 2.2 以前使用 ipchains 管理防火墙时,必须针对数据包的进、出方向进行控制。

比如要连接到远程主机的 22 端口时,必须设置两条规则:

这是很麻烦的,比如你要连接 10 台远程主机的 22 端口,即便你本机的 OUTPUT 设置为 ACCEPT,

iptables 则解决了这个问题,它会通过一个状态模块来分析:这个想要进入的数据包是不是对自己已发送请求的响应?如果判断是对自己请求的响应,就放行这个数据包。

使用状态模块的基本命令格式如下:

只要是已建立连接或相关的数据包接受:

 

只要是不合法的数据包就丢弃:

 

注意,我们通过 iptables 命令设置的规则都保存在内存中,也就是说系统重启的话所有的配置都会丢失。

 

在需要时再通过 iptables-restore 命令把文件中的配置信息导入:

 

iptables 是一个比较复杂的命令,本文只是介绍了一些最基本的用法。接下来我们会介绍如何通过 iptables 构建基本的防火墙配置以及 NAT 服务器。




以上所述是小编给大家介绍的Linux iptables 命令,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

}

Iptables是一个基于命令行的防火墙工具,它使用规则链来允许/阻止网络流量。当一条网络连接试图在你的系统中建立时,iptables会查找其对应的匹配规则。如果找不到,iptables将对其采取默认操作。

现有的一些图形界面软件也可以替代iptables,如Firestarter。但iptables用起来并不难。配置iptables的规则时要特别小心,特别是在你远程登陆服务器的时候。因为这时的一个错误有可能让你和服务器永久失去连接,而你必须要到服务器面前才能解决它。

Iptables的规则链分为三种:输入、转发和输出。
时,iptables会检查输出链中与ping和howtogeek.com相关的规则,然后决定允许还是拒绝你的连接请求。
注意:当ping一台外部主机时,看上去好像只是输出链在起作用。但是请记住,外部主机返回的数据要经过输入链的过滤。当配置iptables规则时,请牢记许多协议都需要双向通信,所以你需要同时配置输入链和输出链。人们在配置SSH的时候通常会忘记在输入链和输出链都配置它。

在配置特定的规则之前,也许你想配置这些链的默认行为。换句话说,当iptables无法匹配现存的规则时,你想让它作出何种行为。
你可以运行如下的命令来显示当前iptables对无法匹配的连接的默认动作:



正如上面所显示的,我们可以使用grep来使输出的结果变得更加简洁。在上面的截图中,所有的链默认情况下均接受所有的连接。
通常情况下,你会希望你的系统默认情况下接收所有的网络数据。这种设定也是iptables的默认配置。接收网络连接的配置命令是:

你也可以在使用默认配置的情况下,添加一些命令来过滤特定的IP地址或端口号。我们稍后在本文介绍这些命令。
如果你想默认情况下拒绝所有的网络连接,然后在其基础上添加允许的IP地址或端口号,你可以将默认配置中的ACCEPT变成DROP,如下图所示。这对于一些含有敏感数据的服务器来说是极其有用的。通常这些服务器只允许特定的IP地址访问它们。


四、对特定连接的配置下面来看看如何对特定的IP地址或端口作出设定。本文主要介绍三种最基本和常见的设定。

}

我要回帖

更多关于 iptables的作用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信