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 的封包过滤规则时,有几个例子,若先熟悉它们,往后就可自行套用,依此类推,很快地,您就可以进入这个天地之中。

iptables入门

iptables入门

Linux防火墙iptables学习笔记(一)入门要领文章分类:综合技术要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有很多数据包进入,离开,或者经过我们的计算机。

首先我们要弄明白,防火墙将怎么对待这些数据包。

这些数据包会经过一些相应的规则链,比如要进入你的计算机的数据包会首先进入INPUT链,从我们的计算机发出的数据包会经过 OUTPUT链,如果一台计算机做一个网络的网关(处于内网和外网两个网络连接的两台计算机,这两台计算机之间相互通讯的数据包会经过这台计算机,这台计算机即相当于一个路由器),可能会有很多数据经过这台计算机,那么这些数据包必经FORWARD链,FORWARD链即数据转发链。

明白了这些“链”的概念我们才能进一步学习使用 iptables。

现在我们再来分析一下iptables规则是如何工作的,假如我们要访问网站,我们要对发出请求,这些数据包要经过OUTPUT链,在请求发出前,Linux的内核会在OUTPUT链中检查有没有相应的规则适合这个数据包,如果没有相应的规则,OUTPUT链还会有默认的规则,或者允许,或者不允许(事实上,不允许有两种,一种是把请求拒绝,告诉发出请示的程序被拒绝;还有一种是丢弃,让请求发出者傻等,直到超时)。

如果得到允许,请求就发出了,而服务器返回的数据包会经过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 ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT以上信息你可以用 iptables -L看到总体来说iptables可以有二种设置1.默认允许,拒绝特别的2.默认拒绝,允许特别的二者都有自己有特点,从安全角度看个人偏向于第二种,就是默认拒绝,允许特别的.但iptalbes 默认是第一种默认允许,拒绝特别的你可以用命令改变默认值来达到我们的要求命令如下iptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP你再用iptables -L查看一下就会觉得默认值以改了先来谈炎几个参数XZFL-F 清除规则-X 清除链-Z 将链的记数的流量清零一般来说再创建访问规则时都会将原有的规则清零这是一个比较好的习惯,因为某些规则的存在会影响你建的规则.基本语法:iptables [-t filter] [-AI INPUT,OUTPUT,FORWARD] [-io interface] [-p tcp,udp.icmp,all] [-s ip/nerwork] [--sport ports][-d ip/netword] [--dport ports] [-j ACCEPT DROP]以上是iptables的基本语法A 是添加的意思I 是播入的意思io 指的是数据要进入或出去所要经过的端口如eth1 eth0 pppoe等p 你所要指定的协议-s 指源地址可是单个IP如192.168.2.6 也可以是一个网络 192.168.2.0/24 还可以是一个域名如 如果你填写的域名系统会自动解析出他的IP并在iptables里显示--sport 来源端口-d 同-s相似只不过他指的是目标地址也可以是IP 域名和网络--dport 目标端口-j 执行参数 ACCEPT DROP注意:如果以有参数存在则说明全部接受1 如我要来自己l0接口的数据全部接受,我们可以写成这样:iptables -A INPUT -i lo -j ACCEPT2 如果我们想接受192.168.2.6这个IP地址传来的数据我们可以这样写iptablse -A INPUT -i eth1 -p tcp -s 192.168.2.6 -j ACCEPT3 如果我们要拒绝来自己192.168.2.0/24这个网的telnet连接iptablse -A INPUT -i eth1 -p udp -s 192.168.2.0/24--sport 23 -j DROPLinux防火墙iptables学习笔记(二)参数指令文章分类:综合技术iptables 指令语法:iptables [-t table] command [match] [-j target/jump]-t 参数用来指定规则表,内建的规则表有三个,分别是:nat、mangle 和 filter,当未指定规则表时,则一律视为是 filter。

Linux下iptables超详细教程和使用示例

Linux下iptables超详细教程和使用示例

Linux下iptables超详细教程和使⽤⽰例iptables的结构:iptables由上⽽下,由Tables,Chains,Rules组成。

⼀、iptables的表tables与链chainsiptables有Filter, NAT, Mangle, Raw四种内建表:1. Filter表Filter是iptables的默认表,它有以下三种内建链(chains):INPUT链 – 处理来⾃外部的数据。

OUTPUT链 – 处理向外发送的数据。

FORWARD链 – 将数据转发到本机的其他⽹卡设备上。

2. NAT表NAT表有三种内建链:PREROUTING链 – 处理刚到达本机并在路由转发前的数据包。

它会转换数据包中的⽬标IP地址(destination ip address),通常⽤于DNAT(destination NAT)。

POSTROUTING链 – 处理即将离开本机的数据包。

它会转换数据包中的源IP地址(source ip address),通常⽤于SNAT(source NAT)。

OUTPUT链 – 处理本机产⽣的数据包。

3. Mangle表Mangle表⽤于指定如何处理数据包。

它能改变TCP头中的QoS位。

Mangle表具有5个内建链(chains):PREROUTINGOUTPUTFORWARDINPUTPOSTROUTING4. Raw表Raw表⽤于处理异常,它具有2个内建链:PREROUTING chainOUTPUT chain5.⼩结⼆、IPTABLES 规则(Rules)规则的关键知识点:Rules包括⼀个条件和⼀个⽬标(target)如果满⾜条件,就执⾏⽬标(target)中的规则或者特定值。

如果不满⾜条件,就判断下⼀条Rules。

⽬标值(Target Values)在target⾥指定的特殊值:ACCEPT – 允许防⽕墙接收数据包DROP – 防⽕墙丢弃包QUEUE – 防⽕墙将数据包移交到⽤户空间RETURN – 防⽕墙停⽌执⾏当前链中的后续Rules,并返回到调⽤链(the calling chain)中。

iptables命令详解附实例

iptables命令详解附实例
-s 192.168.0.0/16 匹配来自 192.168.0.0/16 网络的数据包
-d:匹配目的地址,可以是 IP、NET、DOMAIN,也可以空
例如:
-d 202.106.0.20 匹配去往 202.106.0.20 的数据包
-d 202.106.0.0/16 匹配去往 202.106.0.0/16 网络的数据包
例如:
iptables -t filter -A INPUT -j DROP
在 filter 表的 INPUT 链里追加一条规则(作为最后一条规则)
匹配所有访问本机 IP 的数据包,匹配到的丢弃
-I 链名 [规则号码]
INSERT,插入一条规则
例如:
iptables -I INPUT -j DROP
注意:
当数据包没有被规则列表里的任何规则匹配到时,按此默认规则处理
-F [链名]
FLUSH,清空规则
例如:
iptables -F INPUT
清空 filter 表 INPUT 链中的所有规则
iptables -t nat -F PREROUTING
清空 nat 表 PREROUTING 链中的所有规则
注意:
1、-F 仅仅是清空链中规则,并不影响 -P 设置的默认规则
2、-P 设置了 DROP 后,使用 -F 一定要小心!!!
3、如果不写链名,默认清空某表里所有链里的所有规则
-[vxn]L
-L 列出规则
·流入、流出接口(-i、-o)
·来源、目的地址(-s、-d)
·协议类型 (-p)
·来源、目的端口(--sport、--dport)

iptables常用规则

iptables常用规则

iptables常用规则一、引言iptables是Linux操作系统中的一个强大的防火墙工具,它可以通过配置规则来控制网络流量的进出。

本文将介绍iptables常用规则,帮助读者了解并掌握iptables的基本用法。

二、基本概念在讲解规则之前,我们先来了解一些iptables的基本概念。

1. 表(Table)iptables使用表来组织规则,常用的表包括:filter表、nat表和mangle表。

filter表用于过滤数据包,nat表用于网络地址转换,mangle表用于修改数据包。

2. 链(Chain)每个表包含多个链,链是规则的集合,用于对数据包进行处理。

常用的链包括:INPUT链、OUTPUT链和FORWARD链。

INPUT链用于处理接收到的数据包,OUTPUT链用于处理发送的数据包,FORWARD链用于处理转发的数据包。

3. 规则(Rule)规则是iptables的核心概念,它决定了数据包的处理方式。

每条规则包含多个匹配条件和一个处理动作。

当数据包满足所有匹配条件时,将执行对应的处理动作。

三、常用规则示例下面列举了一些常用的iptables规则示例,以帮助读者了解规则的用法。

1. 允许特定IP访问允许特定IP(例如192.168.1.100)访问服务器的SSH服务(端口22)。

```iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT```2. 允许特定网段访问允许特定网段(例如192.168.0.0/24)访问服务器的HTTP服务(端口80)。

```iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 80 -j ACCEPT```3. 拒绝所有外部访问拒绝所有来自外部网络(例如Internet)的数据包。

```iptables -A INPUT -i eth0 -j DROP```4. 允许相关和已建立的连接允许与已建立的连接相关的数据包通过防火墙。

iptables从入门到精通

iptables从入门到精通

iptables官方网站:/∙数据包经过防火墙的路径∙禁止端口∙强制访问某站点∙发布内部网络服务器∙智能DNS∙端口映射∙通过NAT上网∙IP规则的保存与恢复∙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强制访问指定的站点图3要使192.168.52.0/24网络内的计算机(这此计算机的网关应设为192.168.52.10)强制访问指定的站点,在做为防火墙的计算机(192.168.52.10)上应添加以下规则:1. 打开ip包转发功能echo 1 > /proc/sys/net/ipv4/ip_forward2. 在NAT/防火墙计算机上的NAT表中添加目的地址转换规则:iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 202.96.134.130:80iptables -t nat -I PREROUTING -i eth0 -p udp --dport 80 -j DNAT --to-destination 202.96.134.130:803. 在NAT/防火墙计算机上的NAT表中添加源地址转换规则:iptables -t nat -I POSTROUTING -o eth1 -p tcp --dport 80 -s 192.168.52.0/24 -j SNAT --to-source 202.96.134.10:20000-30000iptables -t nat -I POSTROUTING -o eth1 -p udp --dport 80 -s 192.168.52.0/24 -j SNAT --to-source 202.96.134.10:20000-300004. 测试:在内部网的任一台计算机上打开浏览器,输入任一非本网络的IP,都将指向IP为202.96.134.130的网站.发布内部网络服务器图4要使因特网上的计算机访问到内部网的FTP服务器、WEB服务器,在做为防火墙的计算机上应添加以下规则:1. echo 1 > /proc/sys/net/ipv4/ip_forward2. 发布内部网web服务器iptables -t nat -I PREROUTING -p tcp -i eth1 -s 202.96.134.0/24 --dport 80 -j DNAT --to-destination 192.168.52.15:80iptables -t nat -I POSTROUTING -p tcp -i eth0 -s 192.168.52.15 --sport 80 -j SNAT --to-source 202.96.134.10:20000-300003. 发布内部网ftp服务器iptables -t nat -I PREROUTING -p tcp -i eth1 -s 202.96.134.0/24 --dport 21 -j DNAT --to-destination 192.168.52.14:21iptables -t nat -I POSTROUTING -p tcp -i eth0 -s 192.168.52.14 --sport 21 -j SNAT --to-source 202.96.134.10:40000-500004. 注意:内部网的计算机网关要设置为防火墙的ip(192.168.52.1)5. 测试: 用一台IP地址为202.96.134.0段的计算机虚拟因特网访问,当在其浏览器中访问http://202.96.134.10时,实际应看到的是192.168.52.15的的web服务;当访问ftp://202.96.134.10时,实际应看到的是192.168.52.14上的的ftp服务智能DNS图51. echo 1 > /proc/sys/net/ipv4/ip_forward2. 在NAT服务器上添加以下规则:在PREROUTING链中添加目的地址转换规则:iptables -t nat -I PREROUTING -i eth0 -p tcp --dpor 53 -j DNAT --to-destination 202.96.134.130 iptables -t nat -I PREROUTING -i eth0 -p udp --dpor 53 -j DNAT --to-destination 202.96.134.130在POSTROUTING链中添加源地址转换规则:iptables -t nat -I POSTROUTING -o eth1 -s 192.168.52.0/24 -p tcp --dpor 53 -j SNAT --to-source 202.96.134.10:40000-50000iptables -t nat -I POSTROUTING -o eth1 -s 192.168.52.0/24 -p udp --dpor 53 -j SNAT --to-source 202.96.134.10:40000-500003. 测试在内部网任一台计算机上,将DNS设置为任意的外网IP,就可以使用DNS测试工具如nslookup来解析DNS服务器202.96.134.130上的名称.端口映射见上节透明代理设置#iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.62.0/24 --dport 80 -j REDIRECT --to-ports 3128通过NAT上网典型NAT上网一般做为NAT的计算机同时也是局域网的网关,假定该机有两块网卡eth0、eth1,eth0连接外网,IP为202.96.134.134;eth1连接局域网,IP为192.168.62.101. 先在内核里打开ip转发功能#echo 1 > /proc/sys/net/ipv4/ip_forward2.?使局域网用户能访问internet所要做的nat#iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to?202.96.134.134如果上网的IP是动态IP,则使用以下规则:#iptables -t nat -A POSTROUTING -o eth0 -s 192.168.62.0/24 -j MASQUERADE如果是通过ADSL上网,且公网IP是动态IP,则使用以下规则:#iptables -t nat -A POSTROUTING -o ppp0 -s 192.168.62.0/24 -j MASQUERADE3. 使internet用户可以访问局域网内web主机所要做的nat#iptables -t nat -A PREROUTING -p tcp -d 202.96.134.134 --dport 80 -j DNAT --to-destination 192.168.62.10注:局域网内的客户端需将默认网关、DNS设为防火墙的IP在我们的网络机房实现NAT共享上网工作环境:上层代理192.168.60.6(4480),只授予教师机(192.168.62.111)使用该代理的权限目标:不使用squid代理上网,而是使用NAT的方式上网方法:1) 确保停止教师机(192.168.62.111)的squid或其它代理服务2) 客户端网关、DNS均指向192.168.62.111,浏览器代理设置为192.168.60.6(4480)。

《iptables讲义》课件

《iptables讲义》课件
通过具体案例展示iptables在实际场景中的应用,如防止DDoS攻击、保护 Web服务器、限制访问等。 分享一些实用的技巧和经验,帮助读者更好地理解和应用iptables。
常见iptables问题及解决方案
总结常见的iptables使用问题和解决方案,如防火墙配置错误、规则失效等。 提供一些建议和技巧,帮助读者排查和解决iptables相关问题。
介绍iptables内置的各种匹配扩展,如tcp、udp、icmp等。 探索这些扩展的用法和参数,进一步加强对规则匹配的灵活性和精确性。
NAT和iptables
探讨iptables在网络地址转换(NAT)方面的应用。 学习如何配置和管理iptables实现端口转发、地址转换和负载均衡等功能。
iptables实战应用举例Biblioteka iptables的三个表和五个链
介绍iptables中常用的三个表(filter、nat和mangle)以及每个表中的五个链 (INPUT、OUTPUT、FORWARD、PREROUTING和POSTROUTING)。 详细解释每个链的作用和使用场景,帮助理解iptables的链式处理流程。
iptables的内置匹配扩展
《iptables讲义》PPT课件
iptables的基础知识
了解iptables是什么,它是Linux防火墙中的一项重要技术,用于网络数据包过滤和转发。 掌握iptables的工作原理和基本概念。
iptables的核心命令和选项
深入学习iptables的核心命令和选项,如iptables的过滤规则管理、网络地址 转换和连接追踪等。 通过实例演示,掌握各种命令的用法和常见选项的含义。

linux命令iptables的用法

linux命令iptables的用法

Linux命令iptables的用法概述i p ta bl es是L in ux操作系统中的一个重要工具,它用于配置L in ux 内核中的网络过滤规则。

通过使用ip ta bl e s,我们可以控制网络数据包的流向和访问权限,实现网络安全的管理和控制。

本文将详细介绍i p ta bl es的用法和常见操作。

一、iptable s简介i p ta bl es是一个内核空间的防火墙工具,用于过滤、修改、传递数据包,提供网络安全的策略控制。

它基于N et fi lt er框架,能够实时监控网络数据包,并根据预先定义的规则进行处理。

ip ta bl es可以在L i nu x终端上运行,并可以通过配置文件持久化规则。

二、iptable s的基本用法1.查看当前i p t a bl e s规则要查看当前i pt ab le s规则,可以使用以下命令:i p ta bl es-L该命令将显示当前的i pt ab le s规则表和链的信息。

2.添加规则要添加一条i pt ab le s规则,可以使用以下命令:i p ta bl es-A<链名><匹配条件><动作>其中,`链名`表示ip t ab le s中的链,如I NP UT、O UT PU T、F OR WA RD 等;`匹配条件`用于对数据包进行匹配,如源I P、目标IP、协议等;`动作`表示对匹配的数据包采取的操作,如A CC EP T、DR OP等。

3.删除规则要删除一条i pt ab le s规则,可以使用以下命令:i p ta bl es-D<链名><规则序号>其中,`链名`表示要删除规则的链,`规则序号`表示要删除的规则在链中的位置。

4.修改规则要修改一条i pt ab le s规则,可以先删除旧规则,再添加新规则。

三、iptable s常用命令示例1.允许所有本地流量i p ta bl es-A IN PU T-i l o-jA CC EP T该命令允许所有本地流量通过IN PU T链。

iptables用法和介绍

iptables用法和介绍

iptables⽤法和介绍参考视频:/video/BV12f4y1q73o?from=search&seid=11667345261719018642&spm_id_from=333.337.0.01.阿⾥云故障案例搭建keepalived推出havip,19年⽆法使⽤只能使⽤阿⾥云⾃⼰推出的slb负载均衡2.阿⾥云的iptables防⽕墙屏蔽/放⾏端⼝ IP 都可以正常使⽤ iptables共享上⽹端⼝转发/映射⽆法使⽤阿⾥云NAT⽹关,可以实现iptables共享上⽹端⼝转发/映射⽆法使⽤3.阿⾥云云盾故障导致⽤户使⽤什么命令,云盾就删除什么命令时刻备份好数据防⽕墙⼀些名词容器:存放东西表(table):存放链的容器链(chain):存放规则的容器规则(policy):准许或拒绝规则Netfilter 表(tables)链(chain)规则(policy)⼀栋楼楼⾥的房⼦房⼦⾥的柜⼦柜⼦⾥的⾐服,摆放规则⼀:iptables1.iptables⼯作流程1).防⽕墙是层层过滤的,实际是按照配置规则的顺序从上⽽下,从前到后进⾏过滤的2).如果匹配上规则,即明确表⽰是阻⽌还是通过,数据包就不再向下匹配新的规则3).如果规则中没有明确表明是阻⽌还是通过,也就是没有匹配规则,向下进⾏匹配,直到匹配默认规则得到明确的阻⽌还是通过4).防⽕墙的默认规则是所有规则执⾏完才执⾏的注意:屏蔽规则都是放在最上⾯2.表与链简介:iptables 是 4表五链4表: filter表 nat表 raw表 mangle表filter表:负责过滤功能,防⽕墙;内核模块:iptables_filternat表: network address translation,⽹络地址转换功能;内核模块:iptable_natmangle表拆解报⽂,做出修改,并重新封装的功能;iptable_mangleraw表:关闭nat表上启⽤的连接追踪机制;iptable_raw1)filter表防⽕墙:屏蔽或允许端⼝ IPfilter表强调:主要和主机⾃⾝有关,真正负责主机防⽕墙功能的(过滤流⼊流出的数据包) filter表⽰iptanles默认使⽤的表,这个表定义了三个链(chains)企业⼯作场景:主机防⽕墙INPUT 负责过滤所有⽬标地址是本机地址的数据包通俗来说:就是过滤主机的数据包FORWARD 负责转发流经主机的数据包,起转发的作⽤,和NAT关系很⼤ LVS NAT模式,net.ipv4.ip_forward=0OUTPU 处理所有源地址是本机地址的数据包通俗讲:就是处理从主机发出去的数据包2)nat表实现nat功能实现共享上⽹(内⽹服务器上外⽹)端⼝映射ip映射nat 负责⽹络地址转换的,即来源与⽬的IP地址和port的转换应⽤:和主机本⾝⽆关,⼀般⽤于局域⽹共享上⽹或者特殊的端⼝转换服务相关⼯作场景:1.⽤于企业路由(zebra)或⽹关(iptables),共享上⽹(POSTROUTING)2.做内部外部IP地址⼀对⼀映射(dmz),硬件防⽕墙映射IP到内部服务器,ftp服务(PREROUTING)3.WEB,单个端⼝的映射,直接映射80端⼝(PREROUTING)这个表定义了3个链,nat功能相当于⽹络的acl控制,和⽹络交换机acl类似OUTPUT 和主机放出去的数据包有关,改变主机发出数据包的⽬的地址PREROUTING 在数据包到达防⽕墙时,进⾏路由判断之前执⾏的规则,作⽤是改变数据包的⽬的地址,⽬的端⼝等(端⼝转发)PORTROUTING 在数据包离开防⽕墙时,进⾏路由判断之后执⾏的规则,作⽤是改变数据包的⽬的地址,⽬的端⼝等⽣产应⽤:局域⽹共享上⽹查看是否加载iptables相关模块到内核[root@node1 ~]# lsmod | egrep 'filter|nat|ipt'iptable_filter 16384 1iptable_nat 16384 1nf_nat 40960 2 iptable_nat,xt_MASQUERADEnf_conntrack 147456 4 xt_conntrack,nf_nat,nf_conntrack_netlink,xt_MASQUERADEip_tables 28672 2 iptable_filter,iptable_natlibcrc32c 16384 3 nf_conntrack,nf_nat,xfs其中iptables_filter和iptables_nat为核⼼,缺少就⽆法使⽤[root@node1 ~]# systemctl stop firewalld[root@node1 ~]# systemctl disable firewalld然后开启iptables[root@node1 ~]# systemctl start iptables[root@node1 ~]# systemctl enable iptables[root@node1 ~]# iptables -nL 说明:-n是把服务名字转换为端⼝,-L是列出,iptables默认是filter表Chain INPUT (policy ACCEPT)target prot opt source destinationACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHEDACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0ACCEPT all -- 0.0.0.0/0 0.0.0.0/0ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibitedChain FORWARD (policy ACCEPT)target prot opt source destinationREJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibitedChain OUTPUT (policy ACCEPT)target prot opt source destination3.iptables命令参数参数含义-L 显⽰表中的所有规则-n 不要把端⼝或ip反向解析为名字-t 指定表不指定默认为filter表-A append追加,加⼊准许类规则-D delete删除 -D INPUT 1-I insert拒绝类规则放在所有规则最上⾯拒绝类参数含义-p 协议protocal tcp/udp/icmp/all--dport ⽬标端⼝ dest destination 指定端⼝加上协议-p tcp--sport 源端⼝ source 源-s --source 源ip-d --destination ⽬标ip-m 指定模块 multiport(指定多个端⼝)-i input 输⼊的时候从哪个⽹卡进来-o ouput 输出的时候从那个⽹卡出去参数含义-j 满⾜条件后的动作:DROP/ACCEPT/REJECTDROP PEJECT 都是拒绝DROP 会把数据丢掉,不会返回信息给⽤户PEJECT 拒绝返回拒绝信息参数含义-F flush 清除所有规则,不会处理默认规则-X 删除⽤户⾃定义的链-Z 链的计数器清零(数据包计数器与数据包字节计数器)4.配置filter表规则正式配置之前先备份,再清空规则[root@node1 ~]# iptables -F 清除所有规则,不会处理默认规则[root@node1 ~]# iptables -X 删除⽤户⾃定义的链[root@node1 ~]# iptables -Z 链的计数器清零(数据包计数器与数据包字节计数器)[root@node1 ~]# iptables -nL 清空之后的样⼦,然后再进⾏配置Chain INPUT (policy ACCEPT)target prot opt source destinationChain FORWARD (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destination案例:禁⽌访问22端⼝[root@node1 ~]# iptables -A INPUT -p tcp --dport 22 -j DROP说明:-A 后⾯写链名(追加,允许类规则⽤A) INPUT是链名 -p是添加tcp协议 --dport是⽬标端⼝ -j就是说明后⾯是允许还是拒绝-p 协议tcp/udp/icmp(ping命令拒绝访问)/all--dport ⽬标端⼝,指定端⼝加上协议 -p tcp--sport 源端⼝查看iptables表的顺序[root@node1 ~]# iptables -nL --line-number[root@node1 ~]# iptables -D INPUT 1说明:-D 后⾯写链名(删除类规则⽤D) 1是规则表的序号5.屏蔽某个ip[root@node1 ~]# iptables -I INPUT -s 192.168.20.22 -j DROP说明:-I -s 后⾯加IP 由于禁⽌的是IP所以不需要加端⼝[root@node1 ~]# iptables -nLChain INPUT (policy ACCEPT)target prot opt source destinationDROP all -- 192.168.20.22 0.0.0.0/0Chain FORWARD (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destination[root@node1 ~]# iptables -D INPUT 1 删除规则表的禁⽌192.168.20.21的这⾏6.禁⽌某个⽹段连⼊(禁⽌192.168.20.0/24⽹段访问8888端⼝)iptables -I INPUT -s 192.168.20.0/24 -p tcp --dport 8888 -j DROP7.只允许某个⽹段连⼊(允许192.168.20.0⽹段)allow 192.168.20.0/24;deny all;⽅法1:利⽤!进⾏排除iptables -I INPUT ! -s 192.168.20.0/24 -j DROP⽅法2:修改链默认规则,修改为拒绝"添加准许"先配置好规则准许规则再修改默认规则[root@node1 ~]# iptables -A INPUT -s 192.168.20.0/24 -j ACCEPT说明:-A 后⾯写链名(追加,允许类规则⽤A)INPUT是链名 ACCEPT(允许的意思)意思是说:防⽕墙规则允许192.168.20.0⽹段访问然后再修改默认规则[root@node1 ~]# iptables -P INPUT DROP说明:-P是修改默认规则的参数,INPUT链内容就改为DROP[root@node1 ~]# iptables -nLChain INPUT (policy DROP)target prot opt source destinationACCEPT all -- 192.168.20.0/24 0.0.0.0/0ACCEPT all -- 192.168.10.0/24 0.0.0.0/0Chain FORWARD (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEPT)target prot opt source destination8.匹配⽹络连接状态(TCP/IP连接状态)-m state --stateNEW:已经或将启动新的连接ESTABLISHED:已经建⽴的连接RELATED:正在启动的新连接INVALID:⾮法或⽆法识别的连接UNTRACKED:表⽰报⽂未被追踪,⽆法找到[root@node1 ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT[root@node1 ~]# iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT9.拒绝多个端⼝访问[root@node1 ~]# iptables -I INPUT -p tcp -m multiport --dport 2222,12306 -j DROP说明:-m是指定模块 multiport是指定多个端⼝ 2222,12306是指两个端⼝[root@node1 ~]# iptables -I INPUT -p tcp -m multiport --dport 1024:2048 -j DROP说明:1024:2048是指从1024端⼝到2048端⼝都拒绝访问10.匹配ICMPICMP:控制报⽂协议 ping⼀般⽤于禁ping虽然被禁ping但不影响访问⽅法1):通过防⽕墙禁ping[root@node1 ~]# iptables -I INPUT -p icmp --icmp-type 8 -j DROP说明:--icmp-type 8 icmp有很多类型禁ping是第8个⽅法2):通过修改内核禁ping[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 临时修改[root@node1 ~]# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all 恢复修改将net.ipv4.icmp_echo_ignore_all=1 写⼊到/etc/sysctl.conf 永久修改然后输⼊[root@node1 ~]# sysclt -p 使其⽣效11.限制并发及速率-m limit 限制模块-m ;limt --limt 10/minute #每分钟只能有10个数据包,每秒6个-m ;limt --limt n/{second/minute/hour}说明:指定时间内的请求速率 'n'为速率,后⾯为时间分别为:秒分时-m limit --limit 10/minute --limit-burst 5 #每6秒释放⼯牌给别⼈使⽤--limit-burst[n]说明:在同⼀时间内允许通过的请求'n'为数字,不指定默认为5案例:[root@node1 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT 先允许22端⼝[root@node1 ~]# iptables -A INPUT -p icmp -m limit --limit 10/minute --limit-burst 5 -j ACCEPT[root@node1 ~]# iptables -P INPUT DROP12.防⽕墙规则的保护与恢复iptables-save 默认输出到屏幕iptables-restore写⼊到/etc/sysconfig/iptables案例:iptables-save > /etc/sysconfig/iptables 保存到⽂件中iptables-restore < /etc/sysconfig/iptables 恢复防⽕墙策略filter表⼩结封IP 端⼝⽹段禁⽌ping限制速度和并发iptables filter表所有功能可以在云服务器中使⽤13.实际⽣产⽤法iptables 配置⽅式可以远程访问22端⼝[root@node1 ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT[root@node1 ~]# iptables -A INPUT -p tcp -m multiport --dport 443,80 -j ACCEPT[root@node1 ~]# iptables -A INPUT -s 192.168.20.0/24 -j ACCEPT说明:这⾥还可以添加vpn⽹段例:172.16.1.0/241)设置允许本机lo 通讯规则允许本机回环lo接⼝数据流量流出与流⼊[root@node1 ~]# iptables -A INPUT -i lo -j ACCEPT[root@node1 ~]# iptables -I OUTPUT -o lo -j ACCEPT[root@node1 ~]# iptables -P INPUT DROP[root@node1 ~]# iptables -P FORWARD DROP[root@node1 ~]# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT[root@node1 ~]# iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT⼆:nat1:1)共享上⽹[root@node1 ~]# iptables -t nat -A POSTROUTING -s 192.1683.20.0/24 -j SNAT --to-source 10.0.0.50(公⽹)说明:修改的是POSTROUTING(数据包离开防⽕墙时)链源地址为192.168.20.0/24 经过防⽕墙处理修改为10.0.0.50(公⽹)[root@node1 ~]# echo 'net.ipv4.icmp_echo_ignore_all = 0' >> /etc/sysctl.conf[root@node1 ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf2)端⼝映射/转发[root@node1 ~]# iptables -t nat -A PREROUTING -d 10.0.0.50 -p tcp --dport 9001 -j DNAT --to-destination 192.168.20.21:22 3)IP转发[root@node1 ~]# iptables -t nat -A PREROUTING -d 10.0.0.50 -p tcp -j DNAT --to-destination 192.168.20.212.nat故障排查1)先看⼀下防⽕墙规则iptables -t nat -nL2)ip⽹关配置查询⽹关ip r或者route -n3)内核转发是否配置在/etc/sysctl.conf⽂件中net.ipv4.ip_forward = 1echo '1' > /proc/sys/net/ipv4/ip_forward4)nat表总结实现共享上⽹(内⽹服务器上外⽹)端⼝转发/映射nat功能在云服务器上⽆法使⽤替代品叫:NAT⽹关三:总结1.禁⽌来⾃10.0.0.188 IP地址访问80端⼝请求iptables -I INPUT -s 10.0.0.188 -p tcp --dport 80 -j DROP2.如何使命令在执⾏的时候永久⽣效?iptables-save/etc/sysconfig/iptables3.实现把访问10.0.0.3:80的请求转到192.168.20.21:80iptables -t nat -A PREROUTING -d 10.0.0.3 -P tcp --dport 80 -j DNAT --to-destination 192.168.20.21:80 4.实现192.168.20.0/24段所有主机通过1xx.3x.5x.2xx外⽹IP共享上⽹iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -j SNAT --to-destination 1xx.3x.5x.2xxiptables -t nat -A PORTROUTING -s 192.168.20.0/24 -j SNAT MASQUERADE。

inux iptables防火墙的基本知识和应用 -回复

inux iptables防火墙的基本知识和应用 -回复

inux iptables防火墙的基本知识和应用-回复本文将从基础知识、原理解析、配置和应用方面,详细介绍Linux iptables 防火墙的相关内容。

一、基础知识1. 什么是iptables?iptables是Linux系统上使用的高级防火墙工具,它根据规则集对数据包进行过滤和转发。

它允许用户定义网络流量的规则,以保护主机或网络免受未经授权的访问、网络攻击和恶意软件的侵害。

2. iptables与netfilter的关系是什么?Netfilter是Linux内核中负责包过滤的框架,iptables是Netfilter的用户空间工具,它通过对Netfilter的规则进行配置来达到实际的过滤和转发作用。

3. iptables的工作原理是什么?iptables基于packet filtering技术工作,它通过匹配数据包的源IP地址、目标IP地址、端口号和协议等信息来进行过滤。

当数据包经过Linux内核的网络栈时,它会被送到Netfilter层,在这里根据用户定义的规则集进行处理,可以进行允许、拒绝、修改或转发等操作。

二、原理解析1. 防火墙中的链和表的概念是什么?iptables中的“链”表示数据包在防火墙上的处理路径,分为输入链(INPUT)、输出链(OUTPUT)和转发链(FORWARD)等。

而“表”表示多种用途的规则集合,包括filter表、nat表和mangle表等,每个表都有一组预定义的链。

2. 默认策略是什么?如何定义规则?默认策略是指没有匹配上任何规则时,防火墙对数据包的处理方式。

可以通过iptables命令设置默认策略,只需要指定表、链和所需的动作,如允许、拒绝或转发等。

此外,还可以通过添加规则来对特定的数据包进行处理。

3. 规则的匹配顺序是怎样的?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。

相关文档
最新文档