搜档网
当前位置:搜档网 › iptables基础教程

iptables基础教程

iptables基础教程
iptables基础教程

建立规则和链

通过向防火墙提供有关对来自某个源、到某个目的地或具有特定协议类型的信息包要做些什么的指令,规则控制信息包的过滤。通过使用netfilter/iptables 系统提供的特殊命令iptables,建立这些规则,并将其添加到内核空间的特定信息包过滤表内的链中。关于添加/除去/编辑规则的命令的一般语法如下:

$ iptables [-t table] command [match] [target]

表(table)

[-t table] 选项允许使用标准表之外的任何表。表是包含仅处理特定类型信息包的规则和链的信息包过滤表。有三种可用的表选项:filter、nat 和mangle。该选项不是必需的,如果未指定,则filter 用作缺省表。

filter 表用于一般的信息包过滤,它包含INPUT、OUTPUT 和FORWARD 链。nat 表用于要转发的信息包,它包含PREROUTING、OUTPUT 和POSTROUTING 链。如果信息包及其头内进行了任何更改,则使用mangle 表。该表包含一些规则来标记用于高级路由的信息包,该表包含PREROUTING 和OUTPUT 链。

注:PREROUTING 链由指定信息包一到达防火墙就改变它们的规则所组成,而POSTROUTING 链由指定正当信息包打算离开防火墙时改变它们的规则所组成。

命令(command)

上面这条命令中具有强制性的command 部分是iptables 命令的最重要部分。它告诉iptables 命令要做什么,例如,插入规则、将规则添加到链的末尾或删除规则。以下是最常用的一些命令:

-A 或--append:该命令将一条规则附加到链的末尾。

示例:

$ iptables -A INPUT -s 205.168.0.1 -j ACCEPT

该示例命令将一条规则附加到INPUT 链的末尾,确定来自源地址205.168.0.1 的信息包可以ACCEPT。-D 或--delete:通过用-D 指定要匹配的规则或者指定规则在链中的位置编号,该命令从链中删除该规则。下面的示例显示了这两种方法。

示例:

$ iptables -D INPUT --dport 80 -j DROP

$ iptables -D OUTPUT 3

第一条命令从INPUT 链删除规则,它指定DROP 前往端口80 的信息包。第二条命令只是从OUTPUT 链删除编号为3 的规则。

-P 或--policy:该命令设置链的缺省目标,即策略。所有与链中任何规则都不匹配的信息包都将被强制使用此链的策略。

示例:

$ iptables -P INPUT DROP

该命令将INPUT 链的缺省目标指定为DROP。这意味着,将丢弃所有与INPUT 链中任何规则都不匹配的信息包。

-N 或--new-chain:用命令中所指定的名称创建一个新链。

示例:

$ iptables -N allowed-chain

-F 或--flush:如果指定链名,该命令删除链中的所有规则,如果未指定链名,该命令删除所有链中的所有规则。此参数用于快速清除。

示例:

$ iptables -F FORWARD

$ iptables -F

-L 或--list:列出指定链中的所有规则。

示例:

$ iptables -L allowed-chain

匹配(match)

iptables 命令的可选match 部分指定信息包与规则匹配所应具有的特征(如源和目的地地址、协议等)。匹配分为两大类:通用匹配和特定于协议的匹配。这里,我将研究可用于采用任何协议的信息包的通用匹配。下面是一些重要的且常用的通用匹配及其示例和说明:

-p 或--protocol:该通用协议匹配用于检查某些特定协议。协议示例有TCP、UDP、ICMP、用逗号分隔的任何这三种协议的组合列表以及ALL(用于所有协议)。ALL 是缺省匹配。可以使用! 符号,它表示不与该项匹配。

示例:

$ iptables -A INPUT -p TCP, UDP

$ iptables -A INPUT -p ! ICMP

在上述示例中,这两条命令都执行同一任务—它们指定所有TCP 和UDP 信息包都将与该规则匹配。通过指定! ICMP,我们打算允许所有其它协议(在这种情况下是TCP 和UDP),而将ICMP 排除在外。-s 或--source:该源匹配用于根据信息包的源IP 地址来与它们匹配。该匹配还允许对某一范围内的IP 地址进行匹配,可以使用! 符号,表示不与该项匹配。缺省源匹配与所有IP 地址匹配。

示例:

$ iptables -A OUTPUT -s 192.168.1.1

$ iptables -A OUTPUT -s 192.168.0.0/24

$ iptables -A OUTPUT -s ! 203.16.1.89

第二条命令指定该规则与所有来自192.168.0.0 到192.168.0.24 的IP 地址范围的信息包匹配。第三条命令指定该规则将与除来自源地址203.16.1.89 外的任何信息包匹配。

-d 或--destination:该目的地匹配用于根据信息包的目的地IP 地址来与它们匹配。该匹配还允许对某一范围内IP 地址进行匹配,可以使用! 符号,表示不与该项匹配。

示例:

$ iptables -A INPUT -d 192.168.1.1

$ iptables -A INPUT -d 192.168.0.0/24

$ iptables -A OUTPUT -d ! 203.16.1.89

目标(target)

我们已经知道,目标是由规则指定的操作,对与那些规则匹配的信息包执行这些操作。除了允许用户定义的目标之外,还有许多可用的目标选项。下面是常用的一些目标及其示例和说明:

ACCEPT:当信息包与具有ACCEPT 目标的规则完全匹配时,会被接受(允许它前往目的地),并且它将停止遍历链(虽然该信息包可能遍历另一个表中的其它链,并且有可能在那里被丢弃)。该目标被指定为-j ACCEPT。

DROP:当信息包与具有DROP 目标的规则完全匹配时,会阻塞该信息包,并且不对它做进一步处理。该目标被指定为-j DROP。

REJECT:该目标的工作方式与DROP 目标相同,但它比DROP 好。和DROP 不同,REJECT 不会在服务器和客户机上留下死套接字。另外,REJECT 将错误消息发回给信息包的发送方。该目标被指定为-j REJECT。

示例:

$ iptables -A FORWARD -p TCP --dport 22 -j REJECT

RETURN:在规则中设置的RETURN 目标让与该规则匹配的信息包停止遍历包含该规则的链。如果链是如INPUT 之类的主链,则使用该链的缺省策略处理信息包。它被指定为-jump RETURN。示例:

$ iptables -A FORWARD -d 203.16.1.89 -jump RETURN

还有许多用于建立高级规则的其它目标,如LOG、REDIRECT、MARK、MIRROR 和MASQUERADE 等。保存规则

现在,您已经学习了如何建立基本的规则和链以及如何从信息包过滤表中添加或删除它们。但是,您应该记住:用上述方法所建立的规则会被保存到内核中,当重新引导系统时,会丢失这些规则。所以,如果您将没有错误的且有效的规则集添加到信息包过滤表,同时希望在重新引导之后再次使用这些规则,那么必须将该规则集保存在文件中。可以使用iptables-save 命令来做到这一点:

$ iptables-save > iptables-script

现在,信息包过滤表中的所有规则都被保存在文件iptables-script 中。无论何时再次引导系统,都可以使用iptables-restore 命令将规则集从该脚本文件恢复到信息包过滤表,如下所示:

$ iptables-rest

IPTABLES配置规则

***************************************************************** **********

iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o eth0 -j SNAT --to 220.202.19.86 NAT转换

iptables -t nat -A PREROUTING -d 220.202.19.84 -p tcp --dport 80 -j DNAT --to-d 10.10.0.25:80 端口映射

iptables -A INPUT -s 0/0 -p icmp -m limit --limit 1/s -j ACCEPT 允许每秒一个ICPM 包经过

iptables -A FORWARD -m mac --mac 00:08:74:98:09:A8 -j ACCEPT 允许MAC地址为00:08:74:98:09:A8的通过

***************************************************************** **********

--dport 指定目标TCP/IP端口如--dport 80

--sport 指定源TCP/IP端口如--sport 80

-p tcp 指定协议为tcp 如-p tcp

-p icmp 指定协议为ICMP

-p udp 指定协议为UDP

-j DROP 拒绝

-j ACCEPT 允许

-j REJECT 拒绝并向发出消息的计算机发一个消息

-j LOG 在/var/log/messages中登记分组匹配的记录

-m mac --mac 绑定MAC地址

-m limit --limit 1/s 1/m 设置时间策列

-s 10.10.0.0或10.10.0.0/16 指定源地址或地址段

-d 10.10.0.0或10.10.0.0/16 指定目标地址或地址段

-s ! 10.10.0.0 指定源地址以外的

***************************************************************** ***********

iptables -A 将一个规则添加到链末尾

iptables -D 将指定的链中删除规则

iptables -F 将指定的链中删除所有规则

iptables -I 将在指定链的指定编号位置插入一个规则

iptables -L 列出指定链中所有规则

iptables -t nat -L 列出所有NAT链中所有规则

iptables -N 建立用户定义链

iptables -X 删除用户定义链

iptables -P 修改链的默认设置如将iptables -P INPUT DROP (将INPUT链设置为DROP) ***************************************************************** ************

service iptables save 保存设置

chkconfig --list iptables 查看运行级别

chkconfig --level 235 iptables 设置启动激活iptables级别

***************************************************************** ************

echo "1" >; /proc/sys/net/ipv4/ip_forward 设置转发

IPTABLES 规则(Rules)

二、IPTABLES 规则(Rules)
牢记以下三点式理解 iptables 规则的关键:
? ? ?
Rules 包括一个条件和一个目标(target) 如果满足条件,就执行目标(target)中的规则或者特定值。 如果不满足条件,就判断下一条 Rules。
目标值(Target Values)
下面是你可以在 target 里指定的特殊值: ACCEPT – 允许防火墙接收数据包 ? DROP – 防火墙丢弃包 ? QUEUE – 防火墙将数据包移交到用户空间 ? RETURN – 防火墙停止执行当前链中的后续 Rules, 并返回到调用链(the calling chain)中。 如果你执行 iptables --list 你将看到防火墙上的可用规则。 下例说明当前系统没 有定义防火墙,你可以看到,它显示了默认的 filter 表,以及表内默认的 input 链, f orward 链, output 链。 # iptables -t filter --list Chain INPUT (policy ACCEPT) target prot opt source destination
?
Chain FORWARD (policy ACCEPT) target prot opt source Chain OUTPUT (policy ACCEPT) target prot opt source 查看 mangle 表: # iptables -t mangle --list 查看 NAT 表: # iptables -t nat --list 查看 RAW 表:
destination
destination
# iptables -t raw --list /!\注意:如果不指定-t 选项,就只会显示默认的 filter 表。因此,以下两种命令形 式是一个意思: # iptables -t filter --list (or) # iptables --list 以下例子表明在 filter 表的 input 链, forward 链, output 链中存在规则:

iptables操作手册

1iptables与firewalld的关系 RHEL7.0以后,使用firewalld服务取代了iptables服务,但是依然可以使用iptables服务,只是默认不开启了,iptables和firewalld都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具,是操作系统上的一种服务,将定义好的规则交给内核中的netfilter(网络过滤器)来读取,从而实现防火墙的功能,firewalld和iptables除了可以可以在inbond和outbond方向做策略限制以外,还能实现snat和dnat功能。 注意:firewalld和iptables同时只能运行一种服务,否则会出现不可预知的情况 2iptables安装 RHEL7.0以后,iptables默认不开启,需要安装iptables服务 安装完成后

3实验场景 3.1源地址转换 需求: 源地址1(172.16.202.15)需要访问公网目的地址(192.168.111.245),源地址2(172.16.202.16)不需要访问公网。

内网两台服务器,分别为源地址1(172.16.202.15)和源地址2(172.16.202.16),公网出口处有一台centos 7.1的双网卡服务器,一个接口接内网(172.16.202.14),一个接口接外网(192.168.111.63)。 源地址1上首先需要保证和iptables服务器能够互通,并且有去往192.168.111.245的路由,路由下一跳需要指向iptables内网接口(172.16.202.14),由iptables服务器做源nat,把源地址(172.16.202.15)nat成公网接口地址(192.168.111.63),从而可以访问目的地址(192.168.111.245)。 一、首先在源地址1服务器上配置去往192.168.111.245的路由 ip route add 192.168.111.245 via 172.16.202.14 //临时添加路由,重启网卡或者系统后,路由会丢失,建议做路由固化路由固化:在/etc/sysconfig/network-scripts目录下,新建一个route配置文件,vi route-eth0,新增一条路由,192.168.111.245/32 via 172.16.202.14,重启网卡即可生效 二、iptables服务器上,配置snat策略 iptables -t nat -A POSTROUTING -s 172.16.202.15/32 -d 192.168.111.245/32 -j SNAT --to 192.168.111.63 注释: -t table table to manipulate (default: `filter') //

iptables防火墙架构实验报告

iptables防火墙架构实验报告 班级:10网工三班学生姓名:谢昊天学号:1215134046 实验目的和要求: 1、熟悉和掌握TCP/IP协议的基础概念和方法; 2、掌握防火墙的概念、功能分类及实现方法; 3、掌握Linux系统防火墙和基于iptables的防火墙的配置方法。 4、参考课本课本P201,图9-2,完整实现SNAT的功能。 实验内容与分析设计: 防火墙在实施安全的过程中是至关重要的。一个防火墙策略要符合四个目标,而每个目标通常都不是一个单独的设备或软件来实现的。大多数情况下防火墙的组件放在一起使用以满足公司安全目的需求。防火墙要能满足以下四个目标: 1> 实现一个公司的安全策略 防火墙的主要意图是强制执行你的安全策略,比如你的安全策略需要对MAIL服务器的SMTP流量做限制,那么你要在防火墙上强制这些策略。 2> 创建一个阻塞点 防火墙在一个公司的私有网络和分网间建立一个检查点。这种实现要求所有的流量都要经过这个检查点。一旦检查点被建立,防火墙就可以监视,过滤和检查所有进出的流量。网络安全中称为阻塞点。通过强制所有进出的流量都通过这些检查点,管理员可以集中在较少的地方来实现安全目的。 3> 记录internet活动 防火墙还能强制记录日志,并且提供警报功能。通过在防火墙上实现日志服务,管理员可以监视所有从外部网或互联网的访问。好的日志是适当网络安全的有效工具之一。 4> 限制网络暴露 防火墙在你的网络周围创建了一个保护的边界。并且对于公网隐藏了内部系统的一些信息以增加保密性。当远程节点侦测你的网络时,他们仅仅能看到防火墙。远程设备将不会知道你内部网络的布局以及都有些什么。防火墙提高认证功能和对网络加密来限制网络信息的暴露。通过对所能进入的流量进行检查,以限制从外部发动的攻击。

iptables的详细中文手册

一句一句解说 iptables的详细中文手册 (2009-06-02 22:20:02) 总览 用iptables -ADC 来指定链的规则,-A添加-D删除-C 修改 iptables - [RI] chain rule num rule-specification[option] 用iptables - RI 通过规则的顺序指定 iptables -D chain rule num[option] 删除指定规则 iptables -[LFZ] [chain][option] 用iptables -LFZ 链名[选项] iptables -[NX] chain 用-NX 指定链 iptables -P chain target[options] 指定链的默认目标 iptables -E old-chain-name new-chain-name -E 旧的链名新的链名 用新的链名取代旧的链名 说明 Iptalbes 是用来设置、维护和检查Linux内核的IP包过滤规则的。 可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。这被称作'target'(目标),也可以跳向同一个表内的用户定义的链。 TARGETS 防火墙的规则指定所检查包的特征,和目标。如果包不匹配,将送往该链中下一条规则检查;如果匹配,那么下一条规则由目标值确定.该目标值可以是用户定义的链名,或是某个专用值,如ACCEPT[通过], DROP[删除], QUEUE[排队], 或者RETURN[返回]。 ACCEPT 表示让这个包通过。DROP表示将这个包丢弃。QUEUE表示把这个包传递到用户空间。RETURN表示停止这条链的匹配,到前一个链的规则重新开始。如果到达了一个内建的链(的末端),或者遇到内建链的规则是RETURN,包的命运将由链准则指定的目标决定。 TABLES 当前有三个表(哪个表是当前表取决于内核配置选项和当前模块)。 -t table 这个选项指定命令要操作的匹配包的表。如果内核被配置为自动加载模块,这时若模块没有加载,(系统)将尝试(为该表)加载适合的模块。这些表如下:filter,这是默认的表,包含了内建的链INPUT(处理进入

iptables命令详解_共进电子

Iptables规则是如何练成的 本章将详细地讨论如何构建Iptables规则。Iptables 包含三个表(filter、nat 、mangle),默认使用filter表,每个表包含若干条链(PREROUTING,POSTROUTING,OUTPUT,INPUT和FORWARD),每条规则就添加到相应的链上。规则就是指向标,在一条链上,对不同的连接和数据包阻塞或允许它们去向何处。插入链的每一行都是一条规则。我们也会讨论基本的matche及其用法,还有各种各样的target。 流程图 1. 基础 我们已经解释了什么是规则,在内核看来,规则就是决定如何处理一个包的语句。如果一个包符合所有的条件(就是符合matche语句),我们就运行target 或jump指令。书写规则的语法格式是: iptables [-t table] command [chain] [match] [-j target/jump] 注意target指令必须在最后。如果你不想用标准的表,就要在[table]处指定表名。一般情况下没有必要指定使用的表,因为iptables 默认使用filter表来执行所有的命令。也没有必要非得在这里指定表名,实际上几乎可在规则的任何地

方。当然,把表名在开始处已经是约定俗成的标准。 尽管命令总是放在开头,或者是直接放在表名后面,我们也要考虑考虑到底放在哪儿易读。command告诉程序该做什么,比如:插入一个规则,还是在链的末尾增加一个规则,还是删除一个规则,下面会仔细地介绍。 Chain 指定表的哪条规则链。 match细致地描述了包的某个特点,以使这个包区别于其它所有的包。在这里,我们可以指定包的来源IP 地址,网络接口,端口,协议类型,或者其他什么。下面我们将会看到许多不同的match。 最后是数据包的目标所在。若数据包符合所有的match,内核就用target来处理它,或者说把包发往target。比如,我们可以让内核把包发送到当前表中的其他链(可能是我们自己建立的),或者只是丢弃这个包而没有什么处理,或者向发送者返回某个特殊的应答。下面有详细的讨论。 2. Tables 选项-t用来指定使用哪个表,它可以是下面介绍的表中的任何一个,默认的是filter表。 Table 2-1. Tables Table(表名)Explanation (注释) nat nat表的主要用处是网络地址转换,即Network Address Translation,缩写为NA T。做过NAT操作的数据包的地址就被改变了,当然这种改变是根据我们 的规则进行的。属于一个流的包只会经过这个表一次。如果第一个包被允许做 NA T或Masqueraded,那么余下的包都会自动地被做相同的操作。也就是说, 余下的包不会再通过这个表,一个一个的被NA T,而是自动地完成。这就是 我们为什么不应该在这个表中做任何过滤的主要原因。PREROUTING 链的作 用是在包刚刚到达防火墙时改变它的目的地址,如果需要的话。OUTPUT链 改变本地产生的包的目的地址。POSTROUTING链在包就要离开防火墙之前 改变其源地址。 mangle这个表主要用来mangle数据包。我们可以改变不同的包及包头的内容,比如TTL,TOS(服务类型)或MARK。注意MARK并没有真正地改动数据包, 它只是为包设了一个标记。防火墙内的其他的规则或程序(如tc)可以使用这 种标记对包进行过滤或高级路由。注意,mangle表不能做任何NAT,它只是 改变数据包的TTL,TOS或MARK,而不是其源目地址。NAT是在nat表中 操作的。 filter filter表是专门过滤包的,内建三个链,可以毫无问题地对包进行DROP、LOG、ACCEPT和REJECT等操作。FORW ARD链过滤所有不是本地产生的并且目

2018Linux防火墙iptables配置详解

2018-Linux防火墙iptables配置详解 一、开始配置 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain RH-Firewall-1-INPUT (0 references) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited 可以看出我在安装linux时,选择了有防火墙,并且开放了22,80,25端口. 如果你在安装linux时没有选择启动防火墙,是这样的 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 什么规则都没有. (2)清除原有规则. 不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则. [root@tp ~]# iptables -F清除预设表filter中的所有规则链的规则 [root@tp ~]# iptables -X清除预设表filter中使用者自定链中的规则 我们在来看一下

关于 iptables 入站 出站以及NAT实例

关于 iptables 入站出站以及NAT实例 本文是自己工作上的iptables笔记总结,适合的可以直接拿去用,不适合的,适当修改即可! iptbales默认ACCEPT策略,也称通策略,这种情况下可以做拦截策略,还有种叫堵策略,然后开放通的规则。(我偏向堵策略,自己需要开放什么在开,以下例子也是在此基础上的) iptables 一些参数名称: 四表五链:fifter表、NAT表、Mangle表、Raw表。 INPUT链、OUTPUT链、FORWARD链、PREROUTING链、POSTROUTING链 INPUT链–处理来自外部的数据。 OUTPUT链–处理向外发送的数据。 FORWARD链–将数据转发到本机的其他网卡设备上。 PREROUTING链–处理刚到达本机并在路由转发前的数据包。它会转换数据包中的目标IP地址(destination ip address),通常用于DNAT(destination NAT)。(NAT表需要开启linux路由 net.ipv4.ip_forward = 1) POSTROUTING链–处理即将离开本机的数据包。它会转换数据包中的源IP 地址(source ip address),通常用于SNAT(source NAT)。 OUTPUT链–处理本机产生的数据包。 iptables 新建时情况所有记录 iptables -F iptables -X iptables -F -t mangle iptables -t mangle -X iptables -F -t nat iptables -t nat -X 开放22 SSH端口 iptables -A INPUT -p tcp -p tcp --dport 22 -j ACCEPT (允许外部访问本机的22端口) iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT (有进就有出,IP包是来回的)

Linux下iptables

Linux防火墙iptables学习笔记(一)入门要领 要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有 很多数据包进入,离开,或者经过我们的计算机。 首先我们要弄明白,防火墙将怎么对待这些数据包。这些数据包会经过一些相应的规则链,比如要进入你的计算机的数据包会首先进入INPUT链,从我们的计算机发出的数据包会经过OUTPUT链,如果一台计算机做一个网络的网 关(处于内网和外网两个网络连接的两台计算机,这两台计算机之间相互通讯的数据包会经过这台计算机,这台计算机即相当于一个路由器),可能会有很多数据经过这台计算机,那么这些数据包必经FORWARD链,FORWARD链即数据转发链。明白了这些“链”的概念我们才能进一步学习使用iptables。 现在我们再来分析一下iptables规则是如何工作的,假如我们要访问网站https://www.sodocs.net/doc/637835249.html,,我们要对https://www.sodocs.net/doc/637835249.html,发出请求,这些数据包要经过OUTPUT链,在请求发出前,Linux的内核会在OUTPUT链中检查有没有相应的规则适合这个数据包,如果没有相应的规则,OUTPUT链还会有默认的规则,或者允许,或者不允许(事实上,不允许有两种,一种是把请求拒绝,告诉发出请示的程序被拒绝;还有一种是丢弃,让请求发出者傻等,直到超时)。如果得到允许,请求就发出了,而https://www.sodocs.net/doc/637835249.html,服务器返回的数据包会经过INPUT链,当然,INPUT链中也会有相应的规则等着它。 下面我们介绍几个iptable的命令 iptables-L[-t filter] 这条命令是显示当前有什么已经设置好的防火墙规则,可能的显示结果如下:Chain INPUT(policy ACCEPT)target prot opt source destination Chain FORWARD(policy ACCEPT)target prot opt source destination Chain OUTPUT(policy ACCEPT)target prot opt source destination 从这里我们可以看出,iptables有三个链分别是INPUT OUTPUT和FORWARD. 其中 INPUT是外部数据要进过我们主机的第一外关卡(当然你前面也可以再加硬件防火墙). OUTPUT是你的主机的数据送出时要做的过绿卡 FORWARD是转发你在NAT时才会用到 要设置iptables主要是对这三条链进行设置,当然也包括-nat的另外三个链我们以后再说 你要用iptables你就得启到它启动命令service iptables restart iptables的默认设置为三条链都是ACCEPT如下: iptables-P INPUT ACCEPT iptables-P OUTPUT ACCEPT iptables-P FORWARD ACCEPT 以上信息你可以用iptables-L看到 总体来说iptables可以有二种设置

iptables命令大全

数据包经过防火墙的路径 图1比较完整地展示了一个数据包是如何经过防火墙的,考虑到节省空间,该图实际上包了三种情况: 来自外部,以防火墙(本机)为目的地的包,在图1中自上至下走左边一条路径。 由防火墙(本机)产生的包,在图1中从“本地进程”开始,自上至下走左边一条路径 来自外部,目的地是其它主机的包,在图1中自上至下走右边一条路径。 图1 如果我们从上图中略去比较少用的mangle表的图示,就有图2所显示的更为清晰的路径图.

图2 禁止端口的实例 禁止ssh端口 只允许在192.168.62.1上使用ssh远程登录,从其它计算机上禁止使用ssh #iptables -A INPUT -s 192.168.62.1 -p tcp --dport 22 -j ACCEPT #iptables -A INPUT -p tcp --dport 22 -j DROP

?禁止代理端口 #iptables -A INPUT -p tcp --dport 3128 -j REJECT ?禁止icmp端口 除192.168.62.1外,禁止其它人ping我的主机 #iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type echo-request -j ACCEPT #iptables -A INPUT -i eth0 -p icmp --icmp-type echo-request –j ?DROP 或 #iptables -A INPUT -i eth0 -s 192.168.62.1/32 -p icmp -m icmp --icmp-type 8 -j ACCEPT #iptables -A INPUT -i eth0 -p icmp -m icmp --icmp-type 8 -j DROP 注:可以用iptables --protocol icmp --help查看ICMP类型 还有没有其它办法实现? ?禁止QQ端口 #iptables -D FORWARD -p udp --dport 8000 -j REJECT 强制访问指定的站点

Linux防火墙 iptables详细介绍

周旭光unixzhou@https://www.sodocs.net/doc/637835249.html, Linux防火墙iptables 周旭光 unixzhou@https://www.sodocs.net/doc/637835249.html, 2011年5月10日 目录 1、Linux防火墙基础 (2) 1、iptables的规则表、链结构 (2) 1.1 规则表 (2) 1.2 规则链 (2) 2、数据包的匹配流程 (2) 2.1 规则表之间的优先级 (2) 2.2 规则链之间的优先级 (2) 2.3 规则链内部各防火墙规则之间的优先顺序 (3) 2、管理和设置iptables规则 (3) 2.1 iptables的基本语法格式 (3) 2.2 管理iptables规则 (3) iptables命令的管理控制项 (3) 2.3 条件匹配 (5) 2.3.1 通用(general)条件匹配 (5) 2.3.2 隐含(implicit)条件匹配 (6) 2.3.3 显示(explicit)条件匹配 (6) 2.4 数据包控制 (7) 3、使用防火墙脚本 (8) 3.1 导出、导入防火墙规则 (8) 3.2 编写防火墙脚本 (8)

1、Linux防火墙基础 1、iptables的规则表、链结构 1.1 规则表 iptables管理4个不同的规则表,其功能由独立的内核模块实现。 filter表:包含三个链INPUT , OUTPUT , FORWARD nat表:PREROUTING , POSTROTING , OUTPUT mangle表:PREROUTING , POSTROUTING , INPUT , OUTPUT , FORWARD raw表:OUTPUT , PREROUTING 1.2 规则链 INPUT链当收到访问防火墙本机的数据包(入站)时,应用此链中的规则 OUTPUT链当防火墙本机向外发送数据包(出站)时,应用此链中的规则 FORWARD链收到需要通过防火墙发送给其他地址的数据包,应用此链 PREROUTING链做路由选择之前,应用此链 POSTROUTING链对数据包做路由选择之后,应用此链中的规则 2、数据包的匹配流程 2.1 规则表之间的优先级 Raw mangle nat filter 2.2 规则链之间的优先级 入站数据流向:来自外界的数据包到达防火墙,首先呗PREROUTING规则链处理(是否被修改地址),之后会进行路由选择(判断该数据包应该发往何处),如果数据包的目标地址是防火墙本机,那么内核将其传递给INPUT 链进行处理,通过以后再交给上次的应用程序进行响应 转发数据流向:来自外界的数据包到达防火墙后,首先被PREROUTING规则链处理,之后进行路由选择,如果数据包的目标地址是其他外部地址,则内核将其传递给FPRWARD链进行处理,然后再交给POSTROUTIING 规则链(是否修改数据包的地址等)进行处理。 出站数据流向:防火墙本身向外部地址发送数据包,首先被OUTPUT规则链处理,之后进行路由选择,然后

Linux防火墙的配置实例

Linux防火墙的配置实例 我们该如何利用Linux操作系统自带的防火墙来提高网络的管理控制功能呢?具体的来说,我们可以分三步走。一是先在Linux服务器上开一个后门,这个后门是专门给我们网络管理员管理服务器用的。二是把所有的进站、出站、转发站接口都关闭,此时,只有通过我们上面开的后门,管理员才能够远程连接到服务器上,企图任何渠道都不能连接到这台主机上。三是根据我们服务器的用途,把一些需要用到的接口开放出去。 1) 永久性生效,重启后不会复原 开启: chkconfig iptables on 关闭: chkconfig iptables off 2) 即时生效,重启后复原 开启: service iptables start 关闭: service iptables stop 清除原有规则. 不管你在安装linux时是否启动了防火墙,如果你想配置属于自己的防火墙,那就清除现在filter的所有规则. [root@tp ~]# iptables -F 清除预设表filter中的所有规则链的规则 [root@tp ~]# iptables -X 清除预设表filter中使用者自定链中的规则 我们在来看一下 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination 什么都没有了吧,和我们在安装linux时没有启动防火墙是一样的.(提前说一句,这些配置就像用命令配置IP一样,重起就会失去作用),怎么保存. [root@tp ~]# /etc/rc.d/init.d/iptables save

Windows和Linux防火墙实例

一、Windows系统中的防火墙实例 Windows防火墙是一个基于主机的状态防火墙,它丢弃所有未请求的传入流量,即那些既没有对应于为响应计算机的某个请求而发送的流量(请求的流量),也没有对应于已指定为允许的未请求的流量(异常流量)。Windows防火墙提供某种程度的保护,避免那些依赖未请求的传入流量来攻击的恶意用户和程序。这里以对目前常用的Windows XP Service Pack 2自带防火墙为实例,介绍它的基本配置及应用。 打开Windows XP的访问控制面板,这里包括Windows自带防火墙。Windows XP SP2与之前的Windows系列相比,自带防火墙新增了以下主要特性: 1、默认对计算机的所有连接启用。 2、应用于所有连接的全局配置选项。 3、用于全局配置的新增对话框集。 4、全新的操作模式。 5、启动安全性。 6、本地网络限制。 7、异常流量可以通过应用程序文件名指定。 8、对Internet协议第6版(IP V6)的内建支持,配置对话框可同时配置IPv4和IPv6流量。 9、采用Netsh和组策略的新增配置选项。 打开自带防火墙,可以看到对话框中包含“常规”、“异常”和“高级”三个选项卡,如图7-9所示。完成这些选项卡的设置,便可以实现对Windows防火墙的基本安全配置。新的Windows防火墙对话框包含以下选项卡: 图7-9 Windows防火墙的“常规”选项卡 在“常规”选项卡上,主要有以下几个可选项: (1)“启用(推荐)” 选择这个选项可以对“高级”选项卡上所选择的所有网络连接启用Windows防火墙,这也是默认功能。Windows防火墙启用后将仅允许请求的和例外的传入流量。例外的网

Iptables应用层库函数实现机制

Iptables应用层库函数实现机制(iptables-1.2.7) 1. iptables命令概述 首先分析iptables命令的特点:命令、选项、匹配(match)、target四部分组成。命令中只允许一个命令,每次添加一个命令时通过add_command来检验命令是否唯一。允许多个不同的选项但是不允许多个相同的选项(除了--verbose选项,-v选项可以指定多个,例如iptables –L INPUT –v –v其显示的信息比iptables –L INPUT –v要多,会把内核里有关iptables规则相对位置等等更详细的信息都显示出来-----主要是用于规则信息的调试),每次添加一个选项都通过set_option 来实现。可通过Inverse_for_options数组查看哪些选项允许前面带有!符号,SOURCE、DESTINATION、PROTOCOL、VIANAMEIN、VIANAMEOUT、FRAGMENT选项允许前面带有!符号。分片选项-f的!有点特殊是这样实现的iptables …! –f …是放在-f前面而不是后面,那么在命令解析中是怎样实现这一点的,首先命令解析出!是无效选项case 1:在无效选项处理中将invert标志为1。 1.1 命令: 命令类型:INSERT、APPEND、DELETE、REPLACE、LIST、FLUSH、ZERO、NEWCHAIN、DELETECHAIN、RENAMECHAIN、POLICY 1.2 选项: 选项类型:VERBOSE、NUMERIC、LINENUMBERS、COUNTERS、SOURCE、DESTINATION、PROTOCOL、JUMP、EXACT、VIANAMEIN、VIANAMEOUT、FRAGMENT 1.3 匹配: 匹配的种类:第一类是generic matches(通用的匹配),适用于所有的规则;第二类是TCP matches,顾名思义,这只能用于TCP包;第三类是UDP matches,当然它只能用在UDP包上了;第四类是ICMP matches ,针对ICMP包的;第五

iptables系统配置防火墙和NAT功能的实例学习

iptables系统配置防火墙和NAT功能的实例学习 来源: ChinaUnix博客日期:2007.11.01 11:55(共有0条评论) 我要评论 关于Slackware 9.1.0 的配置说明 ********************************************************* * * *******关于防火墙系统恢复操作和启动方法说明******************* * * ********************************************************* 该系统主要作用就是对内部服务器作静态nat映射和端口访问控制。 在防火墙中,系统启动时已经自动启动了以上防火墙脚本,启动位置为:/etc/rc.d/rc.local文件中,sh /etc/rc.d/nat_firewall.sh #在系统启动时自动启动该脚本 如果需要手动启用防火墙和静态nat映射功能,操作以下步骤即可。 cd /etc/rc.d/ ./portnat.sh 如果用户不需要对内部服务器作任何端口控制,只需要作静态nat映射,只要执行以下文件,即可恢复不设防火墙状态。 cd /etc/rc.d/ ./no_firewall.sh ********************************************************** * * ****关于Slackware 9.1.0 系统配置防火墙和NAT功能的配置说明***** ****(nat_firewall.sh) * **********************************************************

(完整版)linux下各种服务进程之iptables详解

linux下IPTABLES配置详解 开始配置 我们来配置一个filter表的防火墙. (1)查看本机关于IPTABLES的设置情况 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination Chain RH-Firewall-1-INPUT (0 references) target prot opt source destination ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:25 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited 可以看出我在安装linux时,选择了有防火墙,并且开放了22,80,25端口. 如果你在安装linux时没有选择启动防火墙,是这样的 [root@tp ~]# iptables -L -n Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination

ACL 和 Iptabless

ACL 1.访问控制列表的类型 标准访问控制列表:根据数据包的源IP地址来允许或拒绝。(标号1—99) 扩展访问控制列表:根据数据包的源IP地址、目的IP地址、指定协议、端口和标志(100-199) 命名访问控制列表:允许在标准和扩展访问控制列表中使用命名来代替标号 定时访问控制列表:提供基于时间的附加访问控制。 2.标准的ACL配置 语法:Router(config)#access-list (1—99) {permit|deny} 源ip的网段反掩码 1.允许19 2.168.1.0/24和192.168.1.2 的流量通过 Router(config)#access-list 1 permit 192.168.1.0 0.0.0.255 Router(config)#access-list 1 permit 192.168.1.2 0.0.0.0.0 或Router(config)#access-list 1 host 192.168.1.1 2.拒绝访问任何网段 Router(config)#access-list 2 deny any 3.删除以建立的ACL Router(config)# no access-list 1 4.将ACl应用到端口 Router(config-if)#ip access-group (1——99){in | out } 3.扩展访问ACL 配置 Router(config)#access-list (100-199){permit | deny} protocol {原地址反掩码目标地址反掩码} [operator operan ] Operator:lt-小于;gt—大于;eq—等于;neq-不等于 Protocol:TCP;UDP;IP;ICMP 1.允许网络19 2.168.1.0/24访问网络192.168.2.0/24的ip流量通过。而拒绝其他的任何流量 Router(config)#access-list 100 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 Router(config)#access-list 100 deny ip any any 2. 拒绝网络192.168.1.0/24访问FTP服务器192.168.2.2。而其允许他的任何流量 Router(config)#access-list 101 deny tcp 192.168.1.0 0.0.0.255 host 192.168.2.2 eq 21 Router(config)#access-list 101 permit ip any any 3.禁止192.168.1.0/24中的主机ping服务器192.168.2.2 而允许其他任何流量 Router(config)#access-list 119 deny icmp 192.168.1.0 0.0.0.255 host 192.168.2.2 echo Router(config)#access-list 119 permit ip any any 4.将ACL应用到端口Router(config)# ip access-group 101 {in|out} 5.查看 show access-list 4.命名访问控制列表 1. Router(config)#ip access-list {standard |extended} access-list-name 2.标准命名ACL: Router(config-std-nacl)#【seq-Num】 {permit|deny}source 【source-vildcard】 3.扩展命名ACL: Router(config-std-nacl)#【seq-Num】{permit|deny} Protocol {src src-vildcard dst dst-vildcard} 【operator operan】 如:允许来自主机192.168.1.1/24和192.168.2.6/24的流量通过,而拒绝其他的流量通过 Router(config)#ip access-list cisco Router(config-std-nacl)#15 permit host 192.168.2.6 Router(config-std-nacl)#permit host 192.168.1.1

XenServer的iptables(防火墙)安全设置

XenServer的iptables(防火墙)安全设置 在XenServer运维中,会遇到各种攻击,暴力破解服务器的密码等等,如何做好服务器的一些安全呢,可以通过iptables进行简单防御。 备注:XenSystem云平台和XenServer通讯是通过22(SSH默认端口),443这2个端口通讯的,其中443端口不能修改,22端口可以修改。 小知识:关于iptables表,表里面的规则都是从上到下执行的,意思就是说,您在上面允许了一个IP,但是在下面确禁止了这个IP,那么这个时候,禁止这个IP这条规则是无效的。 实例规则一:禁止某个IP访问。 首先查看一下xenserver服务器的默认iptables表,会看到里面已经存在一些规则了。 命令:cat /etc/sysconfig/iptables 编辑器编辑iptables表,在:RH-Firewall-1-INPUT - [0:0] 规则下面添加一条禁止IP的规则,当然您也可以禁止某个IP段。 编辑命令:vi /etc/sysconfig/iptables iptables规则:-A INPUT -s 192.168.11.176 -p tcp -m tcp -j DROP

禁止某个IP段,比如禁止192.168.11.0/24这个段。 iptables规则:-A INPUT -s 192.168.11.0/24 -p tcp -m tcp -j DROP 保存,重启iptables,被禁止这个IP已经无法访问服务器了。 命令:service iptables restart 实例规则二:只允许某个IP或者IP段访问服务器。 XenServer服务器中,已经有规则允许访问的端口了,首先我们要把这些允许的端口注释或者删除,如下图。 在:RH-Firewall-1-INPUT - [0:0] 规则下面添加一条允许IP或者IP段的规则。 允许单个IP规则:

相关主题