iptables从入门到精通

合集下载

iptables使用详解

iptables使用详解

ptables简介iptables是基于内核的防火墙,功能非常强大,iptables内置了filter,nat和mangle三张表。

filter负责过滤数据包,包括的规则链有,input,output和forward;nat则涉及到网络地址转换,包括的规则链有,prerouting,postrouting和output;mangle表则主要应用在修改数据包内容上,用来做流量整形的,默认的规则链有:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING;input匹配目的IP是本机的数据包,forward匹配流经本机的数据包,prerouting用来修改目的地址用来做DNAT,post routing用来修改源地址用来做SNAT。

iptables主要参数-A 向规则链中添加一条规则,默认被添加到末尾-T指定要操作的表,默认是filt er-D从规则链中删除规则,可以指定序号或者匹配的规则来删除-R进行规则替换-I插入一条规则,默认被插入到首部-F清空所选的链,重启后恢复-N新建用户自定义的规则链-X删除用户自定义的规则链-p用来指定协议可以是tcp,udp,icmp等也可以是数字的协议号,-s指定源地址-d指定目的地址-i进入接口-o流出接口-j采取的动作,accept,drop,snat,dnat,masquerade--sport源端口--dport目的端口,端口必须和协议一起来配合使用注意:所有链名必须大写,表明必须小写,动作必须大写,匹配必须小写iptable配置实例iptable基本操作iptables -L 列出iptables规则iptables -F 清除iptables内置规则iptables -X 清除iptables自定义规则设定默认规则在iptables规则中没有匹配到规则则使用默认规则进行处理iptables -P INPUT DROPiptables -P OUTPUT ACCEPTiptables -P FORWARD DROP配置SSH规则iptables -A INPUT -p t cp --dport 22 -j ACCEPTiptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 如果你把OUTPUT 设置成DROP,就需要加上这个规则,否则SSH还是不能登录,因为SSH服务职能进不能出。

iptables基础命令入门

iptables基础命令入门

规则格式:iptables [-t 表名] [-COMMAND命令] [chain 规则链名] [-m matchname 匹配] [-j 动作](大小写敏感)-t table表名包括:raw:高级功能,如:网址过滤。

mangle:数据包修改(QOS),用于实现服务质量。

net:地址转换,用于网关路由器。

filter:包过滤,用于防火墙规则。

COMMAND命令:链管理:-N:new,自定义一条新的规则链-X:delete,删除自定义的规则链-P:policy,设置默认策略,对filter表中的链而言,其默认策略有;ACCEPT:接受DROP:丢弃REJECT:拒绝-E:重命名自定义链,引用计数不为0的自定义链不能够被重命名,也不能被删除;规则管理:-A:append,追加-I:insert,插入,要时指明位置,省略时表示第一条-D:delete,删除(1)指明规则序号;(2)指明规则本身-R:replace,替换指定链上的指定规则-F:flush,清空指定的规则链-Z:zero,置零iptables的每条规则都有两个计数器:(1)匹配到的报文的个数(2)匹配到的所有报文的大小之和查看:-L:list,列出指定链上的所有规则;-n:numberic,以数字格式显示地址和端口号-v:verbose,详细信息;-vv,-vvv-x:exactiy,显示计数器结果的精确值--line-numbers:显示规则的序号chain规则链名:INPUT链:处理输入数据包。

OUTPUT链:处理输出数据包。

PORWARD链:处理转发数据包。

PREROUTING链:用于目标地址转换(DNAT)。

POSTOUTING链:用于源地址转换(SNAT)。

-m匹配条件:基本匹配条件:无需加载任何模块,由iptables/netfilter自行提供;-s,--source address;检查报文中的源IP地址是否符合此处指定的地址或范围;-d, --destination address;检查报文中的目标IP地址是否符合此处指定的地址或范围;扩展匹配条件:需要加载扩展模块,方可生效;-m-j 动作包括:Accept:接收数据包。

iptables命令详解_共进电子

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。

比如,我们可以让内核把包发送到当前表中的其他链(可能是我们自己建立的),或者只是丢弃这个包而没有什么处理,或者向发送者返回某个特殊的应答。

Linux命令高级技巧使用iptables命令配置和管理防火墙规则

Linux命令高级技巧使用iptables命令配置和管理防火墙规则

Linux命令高级技巧使用iptables命令配置和管理防火墙规则Linux系统中有许多命令可以使用,其中iptables命令是用于配置和管理防火墙规则的重要工具。

本文将介绍一些使用iptables命令的高级技巧,帮助读者更好地理解和使用这个命令。

一、iptables命令简介iptables是一个用于IPv4包过滤和控制Linux内核防火墙服务的用户空间工具。

它可以进行网络地址转换(NAT)、数据包过滤、端口重定向等操作,是保护计算机系统免受恶意攻击的重要工具。

二、iptables命令基本语法iptables命令的基本语法如下所示:iptables [选项] [链] [规则规格]其中,选项是可选的,用于指定不同的功能;链用于指定规则要应用的链,例如INPUT、FORWARD、OUTPUT等;规则规格用于指定具体的防火墙规则。

三、iptables命令常用选项1. -A:追加一条规则到某个链的末尾2. -I:向某个链中的指定位置插入一条规则3. -D:从某个链中删除一条规则4. -P:设置某个链的默认策略5. -L:列出某个链中的所有规则6. -F:清除某个链中的所有规则四、iptables命令高级技巧1. 配置端口转发使用iptables命令可以轻松实现端口转发,将外部请求转发到内部服务器。

例如,要将外部的SSH请求转发到内部服务器的SSH端口,可以使用如下命令:iptables -t nat -A PREROUTING -p tcp --dport 22 -j DNAT --to-destination 内部服务器IP地址:22这样,外部用户连接到本机的22端口时,请求将被转发至内部服务器的22端口。

2. 过滤IP地址通过iptables命令,可以方便地过滤特定的IP地址或IP地址段。

例如,要拒绝来自某个IP地址的所有请求,可以使用如下命令:iptables -A INPUT -s 某个IP地址 -j DROP这样,来自该IP地址的请求将被直接拒绝。

iptables用法初解

iptables用法初解

iptables用法初解一、四表五链之间的关系1.4个表:filter,nat,mangle,raw,默认表是filter(没有指定表的时候就是filter表)。

表的处理优先级:raw>mangle>nat>filter。

filter:一般的过滤功能nat:用于nat功能(端口映射,地址映射,中转IP等)mangle:用于对特定数据包的修改raw:有限级最高,设置raw时一般是为了不再让iptables做数据包的链接跟踪处理,提高性能2.5个链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。

PREROUTING:数据包进入路由表之前INPUT:通过路由表后目的地为本机FORWARDING:通过路由表后,目的地不为本机OUTPUT:由本机产生,向外转发POSTROUTIONG:发送到网卡接口之前。

3.关系如下两个图:iptables中表和链的对应关系如下:二、修改1.配置文件修改方式iptables 装好后,可以用service iptables start来启动,默认是不写配置文件的,可以修改/etc/sysconfig/iptables-config文件的IPTABLES_SAVE_ON_RESTART参数为"YES",那么再次service iptables restart后,会生成/etc/sysconfig/iptables文件,这个是iptables的规则配置文件。

然后每次修改这个文件,重启iptables服务就可以生效。

2.使用iptables-save和iptables-restore实时修改另一种方法可以实时的修改iptables,先调用iptables-save > 1.txt(任一文件), 1.txt保存的就是当前iptables所有的规则。

然后修改1.txt文件,再调用iptables-restore 1.txt,这样可以实时的修改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。

redhatiptables详解

redhatiptables详解

Iptables通过快速的数据包过滤 机制,减少了不必要的网络传输, 提高了网络性能。
Iptables的发展历程
Iptables的前身是ipfwadm和ipchains,它们在Linux内核2.2版本之前就 已经存在。
随着Linux内核的发展,ipfwadm和ipchains逐渐被淘汰,Iptables成为 主流的防火墙工具。
插入规则
使用`iptables -I`命令可以将规则插入到链的开始位置。例如,要将一条拒绝所有输入 包的规则插入到INPUT链的开始位置,可以使用以下命令:`iptables -I INPUT -j DROP`。
删除规则
删除规则
使用`iptables -D`命令可以删除一条已存在 的规则。例如,要删除前面添加的允许从任 何IP地址访问本机的80端口的规则,可以使 用以下命令:`iptables -D INPUT -p tcp -dport 80 -j ACCEPT`。
redhatiptables详解
目录
• Iptables简介 • Iptables基本概念 • Iptables基本操作 • Iptables常用表和链 • Iptables常用匹配和目标 • Iptables防火墙配置示例
01
Iptables简介
什么是Iptables
Iptables是Linux操作系统下的一个强大的防火墙工具,用于配置和管理网络数据包过滤规则。它允 许用户根据预设的规则对进出的网络数据包进行筛选和操作,从而控制网络通信。
保存和恢复规则
要点一
保存规则
在Red Hat系统上,iptables规则默认保存在 `/etc/sysconfig/iptables`文件中。要保存当前的规则到文 件中,可以使用以下命令:`service iptables save`。

iptables 入门

iptables 入门

iptables 入门 - [服务器区]这一节开始说明 iptables 的观念及用法iptables 中的指令,均需区分大小写。

ipchains 和 iptables 在语法上的主要的差异,注意如下:1. 在 ipchains 中,诸如 input 链,是使用小写的chains 名,在 iptables 中,要改用大写 INPUT。

2. 在 iptables 中,要指定规则是欲作用在那一个规则表上(使用 -t 来指定,如 -t nat),若不指定,则预设是作用在 filter 这个表。

3. 在 ipchains 中, -i 是指介面(interface),但在iptables 中,-i 则是指进入的方向,且多了 -o,代表出去的方向。

4. 在 iptables 中,来源 port 要使用关键字 --sport或 --source-port5. 在 iptables 中,目的 port 要使用关键字 --dport或 --destination-port6. 在 iptables 中,"丢弃" 的处置动作,不再使用DENY 这个 target,改用 DROP。

7. 在 ipchains 的记录档功能 -l,已改为目标 -jLOG,并可指定记录档的标题。

8. 在 ipchains 中的-y,在 iptables 中可用 --syn 或 sidebar 隐藏/显示--tcp-flag SYN,ACK,FIN SYN9. 在 iptables 中,imcp messages 型态,要加上关键字 --icmp-type,如:iptables -A OUTPUT -o eth0 -p icmp -s $FW_IP --icmp-type 8 -d any/0 -j ACCEPTiptables 使用时的例子在设定 iptables 的封包过滤规则时,有几个例子,若先熟悉它们,往后就可自行套用,依此类推,很快地,您就可以进入这个天地之中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

iptables从入门到精通一.主要知识点:1. Iptables表链结构2. 数据包过滤流程3. Iptables书写规则4. Iptables条件匹配5. Iptables数据包控制6. Iptables七层过滤7. Iptables脚本二.具体的知识点介绍1. Iptables表链结构1)默认的4个规则表* raw表:确定是否对该数据包进行状态跟踪* mangle表:为数据包设置标记* nat表:修改数据包中的源、目标IP地址或端口* filter表:确定是否放行该数据包(过滤)2)默认的5种规则链* INPUT:处理入站数据包* OUTPUT:处理出站数据包* FORWARD:处理转发数据包* POSTROUTING链:在进行路由选择后处理数据包* PREROUTING链:在进行路由选择前处理数据包2. 数据包过滤流程规则表间的优先顺序* 依次为:raw à mangle à nat à filter规则链间的匹配顺序* 入站数据:PREROUTING à INPUT* 出站数据:OUTPUT à POSTROUTING* 转发数据:PREROUTING à FORWARD à POSTROUTING 如图:3. Iptables书写规则iptables命令的语法格式* iptables [-t 表名] 管理选项 [链名] [条件匹配] [-j 目标动作或跳转] 几个注意事项* 不指定表名时,默认表示filter表* 不指定链名时,默认表示该表内所有链* 除非设置规则链的缺省策略,否则需要指定匹配条件清除规则* -D:删除指定位置或内容的规则* -F:清空规则链内的所有规则* -Z:清空计数器自定义规则链* -N:创建一条新的规则链* -X:删除自定义的规则链其他* -h:查看iptables命令的使用帮助例如:[root@localhost ~]# iptables -t filter -A INPUT -p tcp -j ACCEPT[root@localhost ~]# iptables -I INPUT -p udp -j ACCEPT[root@localhost ~]# iptables -I INPUT 2 -p icmp -j ACCEPT[root@localhost ~]# iptables -P INPUT DROP[root@localhost ~]# iptables -L INPUT --line-numbersChain INPUT (policy DROP)num target prot opt source destination1 ACCEPT udp -- anywhere anywhere2 ACCEPT icmp -- anywhere anywhere3 ACCEPT tcp -- anywhere anywhere4. Iptables条件匹配1)通用条件匹配协议匹配* 使用“-p 协议名”的形式* 协议名可使用在“/etc/protocols”文件中定义的名称* 常用的协议包括tcp、udp、icmp等地址匹配* 使用“-s 源地址”、“-d 目标地址”的形式* 地址可以是单个IP地址、网络地址(带掩码长度)接口匹配* 使用“-i 网络接口名”、“-o 网络接口名”的形式,分别对应接收、发送数据包的网络接口例如:[root@localhost ~]# iptables -I INPUT -p icmp -j REJECT[root@localhost ~]# iptables -A FORWARD -p ! icmp -j ACCEPT[root@localhost ~]# iptables -A FORWARD -s 192.168.1.11 -j REJECT[root@localhost ~]# iptables -A INPUT -i eth1 -s 172.16.0.0/12 -j DROP[root@localhost ~]# iptables -A FORWARD -o eth1 -d 61.35.4.3 -j DROP2)Iptables隐含条件匹配端口匹配* 使用“--sport 源端口”、“--dport 目标端口”的形式* 采用“端口1:端口2”的形式可以指定一个范围的端口TCP标记匹配* 使用“--tcp-flags 检查范围被设置的标记”的形式* 如“--tcp-flags SYN,RST,ACK SYN”表示检查SYN、RST、ACK这3个标记,只有SYN为1时满足条件ICMP类型匹配* 使用“--icmp-type ICMP类型”的形式* ICMP类型可以使用类型字符串或者对应的数值,例如Echo-Request、Echo-Reply 例如:[root@localhost ~]# iptables -A FORWARD -p tcp --dport 22 -j ACCEPT[root@localhost ~]# iptables -A OUTPUT -p tcp --sport 20:80 -j ACCEPT[root@localhost ~]# iptables -I INPUT -i eth1 -p tcp --tcp-flags SYN,RST,ACK SYN -j REJECT[root@localhost ~]# iptables -A INPUT -i eth0 -p icmp --icmp-type Echo-Request -j DROP[root@localhost ~]# iptables -A INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT 3)Iptables扩展条件匹配MAC地址匹配* 使用“-m mac”结合“--mac-source MAC地址”的形式多端口匹配* 使用“-m multiport”结合“--sports 源端口列表”或者“--dports 目标端口列表”的形式* 多个端口之间使用逗号“,”分隔,连续的端口也可以使用冒号“:”分隔IP地址范围匹配* 使用“-m iprange”结合“--src-range 源IP范围”或者“--dst-range 目标IP范围”的形式* 以“-”符号连接起始IP地址、结束IP地址例如:[root@localhost ~]# iptables -A FORWARD -m mac --mac-source 00:0C:29:27:55:3F -j DROP[root@localhost ~]# iptables -A INPUT -p tcp -m multiport --dport20,21,25,110,1250:1280 -j ACCEPT[root@localhost ~]# iptables -A FORWARD -p tcp -m iprange --src-range192.168.1.20-192.168.1.99 -j DROP5. Iptables数据包控制常见的数据包处理方式* ACCEPT:放行数据包* DROP:丢弃数据包* REJECT:拒绝数据包* LOG:记录日志信息,并传递给下一条规则处理* 用户自定义链名:传递给自定义链内的规则进行处理* SNAT:修改数据包的源地址信息* DNAT:修改数据包的目标地址信息[root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/minute --limit-burst 8 -j LOG[root@localhost ~]# iptables -A INPUT -p tcp --dport 22 -j DROP[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 218.29.30.31[root@localhost ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE[root@localhost ~]#iptables -t nat -A PREROUTING -i eth0 -d 218.29.30.31 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.6(:80)6. Iptables七层过滤1). 整体实现过程* 添加内核补丁,重新编译内核,并以新内核引导系统* 添加iptables补丁,重新编译安装iptables* 安装l7-protocols协议定义包* 使用iptables命令设置应用层过滤规则2). 使用的软件包列表* Linux内核源码包:linux-2.6.28.8.tar.bz2* iptables源码包:iptables-1.4.2.tar.bz2* layer7补丁源码包:netfilter-layer7-v2.21.tar.gz* 协议定义包:l7-protocols-2009-05-10.tar.gz3). layer7应用层协议匹配* 匹配格式:-m layer7 --l7proto 协议名* 支持以下常见应用层协议的过滤* qq:腾讯公司QQ程序的通讯协议* msnmessenger:微软公司MSN程序的通讯协议* msn-filetransfer:MSN程序的文件传输协议* bittorrent:BT下载类软件使用的通讯协议* xunlei:迅雷下载工具使用的通讯协议* edonkey:电驴下载工具使用的通讯协议* 其他各种应用层协议:ftp、http、dns、imap、pop3……4). 规则示例:过滤使用qq协议的转发数据包* iptables -A FORWARD -m layer7 --l7proto qq -j DROP7. Iptables脚本防火墙脚本的一般结构1).设置网段、网卡、IP地址等变量2).加载包过滤相关的内核模块* FTP相关:ip_nat_ftp、ip_conntrack_ftp3).确认开启路由转发功能* 方法1:/sbin/sysctl -w net.ipv4.ip_forward=1* 方法2:echo 1 > /proc/sys/net/ipv4/ip_forward* 方法3:修改/etc/sysctl.conf,设置 net.ipv4.ip_forward = 14).用于添加的具体防火墙规则内容* 清空原有规则,建立新的规则例如:/sbin/modprobe ip_tables/sbin/modprobe ip_nat_ftpiptables -Fiptables -Xiptables -Z#------------------------default rule ------------------------------iptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP#------------------------limit packet per second------------------------------ /sbin/iptables -A INPUT -f -m limit --limit 100/sec --limit-burst 100 -j ACCEPT /sbin/iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 20/sec --limit-burst 200 -j ACCEPT/sbin/iptables -A INPUT -p icmp -m limit --limit 12/min --limit-burst 2 -j DROP#------------------------ssh rule ------------------------------------------- iptables -t filter -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPTiptables -t filter -A OUTPUT -o eth0 -p tcp --sport 22 -j ACCEPT#------------------------www-ftp-mail-dns rule -------------------------------- iptables -t filter -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPTiptables -t filter -A OUTPUT -o eth0 -p tcp --sport 80 -j ACCEPT#-------------------------ICMP rule ------------------------------------------ iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPTiptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPTiptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPTiptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT。

相关文档
最新文档