linux下iptables.docx
《linux下iptables.docx》由会员分享,可在线阅读,更多相关《linux下iptables.docx(42页珍藏版)》请在冰豆网上搜索。
linux下iptables
Linux防火墙iptables学习笔记
(一)入门要领
要在网上传输的数据会被分成许多小的数据包,我们一旦接通了网络,会有
很多数据包进入,离开,或者经过我们的计算机。
首先我们要弄明白,防火墙将怎么对待这些数据包。
这些数据包会经过一
些相应的规则链,比如要进入你的计算机的数据包会首先进入INPUT链,从我
们的计算机发出的数据包会经过OUTPUT链,如果一台计算机做一个网络的网
关(处于内网和外网两个网络连接的两台计算机,这两台计算机之间相互通讯的
数据包会经过这台计算机,这台计算机即相当于一个路由器),可能会有很多数
据经过这台计算机,那么这些数据包必经FORWARD链,FORWARD链即数
据转发链。
明白了这些“链”的概念我们才能进一步学习使用iptables。
现在我们再来分析一下iptables规则是如何工作的,假如我们要访问网站
,我们要对发出请求,这些数据包要经
过OUTPUT链,在请求发出前,Linux的内核会在OUTPUT链中检查有没有
相应的规则适合这个数据包,如果没有相应的规则,OUTPUT链还会有默认的
规则,或者允许,或者不允许(事实上,不允许有两种,一种是把请求拒绝,告
诉发出请示的程序被拒绝;还有一种是丢弃,让请求发出者傻等,直到超时)。
如果得到允许,请求就发出了,而服务器返回的数据包会经
过INPUT链,当然,INPUT链中也会有相应的规则等着它。
下面我们介绍几个iptable的命令
iptables-L[-tfilter]
这条命令是显示当前有什么已经设置好的防火墙规则,可能的显示结果如下:
ChainINPUT(policyACCEPT)targetprotoptsourcedestinationChain
FORWARD(policyACCEPT)targetprotoptsourcedestinationChain
OUTPUT(policyACCEPT)targetprotoptsourcedestination
从这里我们可以看出,iptables有三个链分别是INPUTOUTPUT和
FORWARD.
其中
INPUT是外部数据要进过我们主机的第一外关卡(当然你前面也可以再加硬件
防火墙).
OUTPUT是你的主机的数据送出时要做的过绿卡
FORWARD是转发你在NAT时才会用到
要设置iptables主要是对这三条链进行设置,当然也包括-nat的另外三个链我
们以后再说
你要用iptables你就得启到它启动命令serviceiptablesrestart
iptables的默认设置为三条链都是ACCEPT如下:
iptables-PINPUTACCEPT
iptables-POUTPUTACCEPT
iptables-PFORWARDACCEPT
以上信息你可以用iptables-L看到
总体来说iptables可以有二种设置
CreatePDFwithGO2PDFforfree,ifyouwishtoremovethisline,clickheretobuyVirtualPDFPrinter
1.默认允许,拒绝特别的
2.默认拒绝,允许特别的
二者都有自己有特点,从安全角度看个人偏向于第二种,就是默认拒绝,允许特别
的.但iptalbes默认是第一种默认允许,拒绝特别的
你可以用命令改变默认值来达到我们的要求命令如下
iptables-PINPUTDROP
iptables-POUTPUTDROP
iptables-PFORWARDDROP
你再用iptables-L查看一下就会觉得默认值以改了
先来谈炎几个参数XZFL
-F清除规则
-X清除链
-Z将链的记数的流量清零
一般来说再创建访问规则时都会将原有的规则清零这是一个比较好的习惯,
因为某些规则的存在会影响你建的规则.
基本语法:
iptables[-tfilter][-AIINPUT,OUTPUT,FORWARD][-iointerface]
[-ptcp,udp.icmp,all][-sip/nerwork][--sportports]
[-dip/netword][--dportports][-jACCEPTDROP]
以上是iptables的基本语法
A是添加的意思
I是播入的意思
io指的是数据要进入或出去所要经过的端口如eth1eth0pppoe等
p你所要指定的协议
-s指源地址可是单个IP如192.168.2.6也可以是一个网络
192.168.2.0/24还可以是一个域名如如果你填写的域名系统会
自动解析出他的IP并在iptables里显示
--sport来源端口
-d同-s相似只不过他指的是目标地址也可以是IP域名和网络
--dport目标端口
-j执行参数ACCEPTDROP
注意:
如果以有参数存在则说明全部接受
1如我要来自己l0接口的数据全部接受,我们可以写成这样:
iptables-AINPUT-ilo-jACCEPT
2如果我们想接受192.168.2.6这个IP地址传来的数据我们可以这样写
iptablse-AINPUT-ieth1-ptcp-s192.168.2.6-jACCEPT
3如果我们要拒绝来自己192.168.2.0/24这个网的telnet连接
iptablse-AINPUT-ieth1-pudp-s192.168.2.0/24--sport23-j
DROP
CreatePDFwithGO2PDFforfree,ifyouwishtoremovethisline,clickheretobuyVirtualPDFPrinter
Linux防火墙iptables学习笔记
(二)参数指令
iptables指令
语法:
iptables[-ttable]command[match][-jtarget/jump]
-t参数用来指定规则表,内建的规则表有三个,分别是:
nat、mangle和filter,当未指定规
则表时,则一律视为是filter。
个规则表的功能如下:
nat此规则表拥有Prerouting和postrouting两个规则链,主要功能为进行一对一、一对
多、多对多等网址转译工作(SNATDNAT),由于转译工作的特性,需进行目的地网址转译的
封包,就不需要进行来源网址转译,反之亦然,因此为了提升改写封包的率,在防火墙运作时,
每个封包只会经过这个规则表一次。
如果我们把封包过滤的规则定义在这个数据表里,将会造成
无法对同一包进行多次比对,因此这个规则表除了作网址转译外,请不要做其它用途。
mangle此规则表拥有Prerouting、FORWARD和postrouting三个规则链。
除了进行网址转译工作会改写封包外,在某些特殊应用可能也必须去改写封包(TTL、TOS)或
者是设定MARK(将封包作记号,以进行后续的过滤),这时就必须将这些工作定义在mangle
规则表中,由于使用率不高,我们不打算在这里讨论mangle的用法。
filter这个规则表是预设规则表,拥有INPUT、FORWARD和OUTPUT三个规则链,这个
规则表顾名思义是用来进行封包过滤的理动作(例如:
DROP、LOG、ACCEPT或REJECT),
我们会将基本规则都建立在此规则表中。
常用命令列表:
命令-A,--append
范例iptables-AINPUT...
说明新增规则到某个规则链中,该规则将会成为规则链中的最后一条规则。
命令-D,--delete
范例iptables-DINPUT--dport80-jDROP
iptables-DINPUT1
说明从某个规则链中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。
命令-R,--replace
范例iptables-RINPUT1-s192.168.0.1-jDROP
说明取代现行规则,规则被取代后并不会改变顺序。
命令-I,--insert
范例iptables-IINPUT1--dport80-jACCEPT
说明插入一条规则,原本该位置上的规则将会往后移动一个顺位。
命令-L,--list
范例iptables-LINPUT
说明列出某规则链中的所有规则。
命令-F,--flush
范例iptables-FINPUT
说明删除某规则链中的所有规则。
命令-Z,--zero
范例iptables-ZINPUT
CreatePDFwithGO2PDFforfree,ifyouwishtoremovethisline,clickheretobuyVirtualPDFPrinter
说明将封包计数器归零。
封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或
缺的工具。
命令-N,--new-chain
范例iptables-Nallowed
说明定义新的规则链。
命令-X,--delete-chain
范例iptables-Xallowed
说明删除某个规则链。
命令-P,--policy
范例iptables-PINPUTDROP
说明定义过滤政策。
也就是未符合过滤条件之封包,预设的处理方式。
命令-E,--rename-chain
范例iptables-Ealloweddisallowed
说明修改某自订规则链的名称。
常用封包比对参数:
参数-p,--protocol
范例iptables-AINPUT-ptcp
说明比对通讯协议类型是否相符,可以使用!
运算子进行反向比对,例如:
-p!
tcp,意思
是指除tcp以外的其它类型,包含udp、icmp...等。
如果要比对所有类型,则可以使用all关
键词,例如:
-pall。
参数-s,--src,--source
范例iptables-AINPUT-s192.168.1.1
说明用来比对封包的来源IP,可以比对单机或网络,比对网络时请用数字来表示屏蔽,例如:
-s192.168.0.0/24,比对IP时可以使用!
运算子进行反向比对,例如:
-s!
192.168.0.0/24。
参数-d,--dst,--destination
范例iptables-AINPUT-d192.168.1.1
说明用来比对封包的目的地IP,设定方式同上。
参数-i,--in-interface
范例iptables-AINPUT-ieth0
说明用来比对封包是从哪片网卡进入,可以使用通配字符+来做大范围比对,例如:
-ieth+
表示所有的ethernet网卡,也以使用!
运算子进行反向比对,例如:
-i!
eth0。
参数-o,--out-interface
范例iptables-AFORWARD-oeth0
说明用来比对封包要从哪片网卡送出,设定方式同上。
参数--sport,--source-port
范例iptables-AINPUT-ptcp--sport22
说明用来比对封包的来源埠号,可以比对单一埠,或是一个范围,例如:
--sport22:
80,表
示从22到80埠之间都算是符合件,如果要比对不连续的多个埠,则必须使用--multiport
参数,详见后文。
比对埠号时,可以使用!
运算子进行反向比对。
参数--dport,--destination-port
范例iptables-AINPUT-ptcp--dport22
说明用来比对封包的目的地埠号,设定方式同上。
参数--tcp-flags
CreatePDFwithGO2PDFforfree,ifyouwishtoremovethisline,clickheretobuyVirtualPDFPrinter
范例iptables-ptcp--tcp-flagsSYN,FIN,ACKSYN
说明比对TCP封包的状态旗号,参数分为两个部分,第一个部分列举出想比对的旗号,第二
部分则列举前述旗号中哪些有被设,未被列举的旗号必须是空的。
TCP状态旗号包括:
SYN(同
步)、ACK(应答)、FIN(结束)、RST(重设)、URG(紧急)
PSH(强迫推送)等均可使用于参数中,除此之外还可以使用关键词ALL和NONE进行比
对。
比对旗号时,可以使用!
运算子行反向比对。
参数--syn
范例iptables-ptcp--syn
说明用来比对是否为要求联机之TCP封包,与iptables-ptcp--tcp-flagsSYN,FIN,ACK
SYN的作用完全相同,如果使用!
运算子,可用来比对非要求联机封包。
参数-mmultiport--source-port
范例iptables-AINPUT-ptcp-mmultiport--source-port22,53,80,110
说明用来比对不连续的多个来源埠号,一次最多可以比对15个埠,可以使用!
运算子进行
反向比对。
参数-mmultiport--destination-port
范例iptables-AINPUT-ptcp-mmultiport--destination-port22,53,80,110
说明用来比对不连续的多个目的地埠号,设定方式同上。
参数-mmultiport--port
范例iptables-AINPUT-ptcp-mmultiport--port22,53,80,110
说明这个参数比较特殊,用来比对来源埠号和目的埠号相同的封包,设定方式同上。
注意:
在
本范例中,如果来源端口号为80目的地埠号为110,这种封包并不算符合条件。
参数--icmp-type
范例iptables-AINPUT-picmp--icmp-type8
说明用来比对ICMP的类型编号,可以使用代码或数字编号来进行比对。
请打iptables-p
icmp--help来查看有哪些代码可用。
参数-mlimit--limit
范例iptables-AINPUT-mlimit--limit3/hour
说明用来比对某段时间内封包的平均流量,上面的例子是用来比对:
每小时平均流量是否超过
一次3个封包。
除了每小时平均次外,也可以每秒钟、每分钟或每天平均一次,默认值为每
小时平均一次,参数如后:
/second、/minute、/day。
除了进行封
数量的比对外,设定这个参数也会在条件达成时,暂停封包的比对动作,以避免因骇客使用洪水
攻击法,导致服务被阻断。
参数--limit-burst
范例iptables-AINPUT-mlimit--limit-burst5
说明用来比对瞬间大量封包的数量,上面的例子是用来比对一次同时涌入的封包是否超过5
个(这是默认值),超过此上限的封将被直接丢弃。
使用效果同上。
参数-mmac--mac-source
范例iptables-AINPUT-mmac--mac-source00:
00:
00:
00:
00:
01
说明用来比对封包来源网络接口的硬件地址,这个参数不能用在OUTPUT和Postrouting
规则炼上,这是因为封包要送出到网后,才能由网卡驱动程序透过ARP通讯协议查出目的地的
MAC地址,所以iptables在进行封包比对时,并不知道封包会送到个网络接口去。
参数--mark
范例iptables-tmangle-AINPUT-mmark--mark1
说明用来比对封包是否被表示某个号码,当封包被比对成功时,我们可以透过MARK处理动
CreatePDFwithGO2PDFforfree,ifyouwishtoremovethisline,clickheretobuyVirtualPDFPrinter
作,将该封包标示一个号码,号码最不可以超过4294967296。
参数-mowner--uid-owner
范例iptables-AOUTPUT-mowner--uid-owner500
说明用来比对来自本机的封包,是否为某特定使用者所产生的,这样可以避免服务器使用root
或其它身分将敏感数据传送出,可以降低系统被骇的损失。
可惜这个功能无法比对出来自其它主
机的封包。
参数-mowner--gid-owner
范例iptables-AOUTPUT-mowner--gid-owner0
说明用来比对来自本机的封包,是否为某特定使用者群组所产生的,使用时机同上。
参数-mowner--pid-owner
范例iptables-AOUTPUT-mowner--pid-owner78
说明用来比对来自本机的封包,是否为某特定行程所产生的,使用时机同上。
参数-mowner--sid-owner
范例iptables-AOUTPUT-mowner--sid-owner100
说明用来比对来自本机的封包,是否为某特定联机(SessionID)的响应封包,使用时机同上。
参数-mstate--state
范例iptables-AINPUT-mstate--stateRELATED,ESTABLISHED
说明用来比对联机状态,联机状态共有四种:
INVALID、ESTABLISHED、NEW和RELATED。
INVALID表示该封包的联机编号(SessionID)无法辨识或编号不正确。
ESTABLISHED表示该封包属于某个已经建立的联机。
NEW表示该封包想要起始一个联机(重设联机或将联机重导向)。
RELATED表示该封包是属于某个已经建立的联机,所建立的新联机。
例如:
FTP-DATA联机
必定是源自某个FTP联机。
常用的处理动作:
-j参数用来指定要进行的处理动作,常用的处理动作包括:
ACCEPT、REJECT、DROP、
REDIRECT、MASQUERADE、LOG、DNAT、
SNAT、MIRROR、QUEUE、RETURN、MARK,分别说明如下:
ACCEPT将封包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则炼
(natostrouting)。
REJECT拦阻该封包,并传送封包通知对方,可以传送的封包有几个选择:
ICMP
port-unreachable、ICMPecho-reply或是
tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直
接中断过滤程序。
范例如下:
iptables-AFORWARD-pTCP--dport22-jREJECT--reject-withtcp-reset
DROP丢弃封包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
REDIRECT将封包重新导向到另一个端口(PNAT),进行完此处理动作后,将会继续比对其
它规则。
这个功能可以用来实作通透式
porxy或用来保护web服务器。
例如:
iptables-tnat-APREROUTING-ptcp--dport80
-jREDIRECT--to-ports8080
MASQUERADE改写封包来源IP为防火墙NICIP,可以指定port对应的范围,进行完此
处理动作后,直接跳往下一个规则(mangleostrouting)。
这个功能与SNAT略有不同,当
CreatePDFwithGO2PDFforfree,ifyouwishtoremovethisline,clickheretobuyVirtualPDFPrinter
进行IP伪装时,不需指定要伪装成哪个IP,IP会从网卡直接读,当使用拨接连线时,IP通
常是由ISP公司的DHCP服务器指派的,这个时候MASQUERADE特别有用。
范例如下:
iptables-tnat-APOSTROUTING-pTCP-jMASQUERADE--to-ports1024-31000
LOG将封包相关讯息纪录在/var/log中,详细位置请查阅/etc/syslog.conf组态档,进行
完此处理动作后,将会继续比对其规则。
例如:
iptables-AINPUT-ptcp-jLOG--log-prefix"INPUTpackets"
SNAT改写封包来源IP为某特定IP或IP范围,可以指定port对应的范围,进行完此处
理动作后,将直接跳往下一个规则(mangleostrouting)。
范例如下:
iptables-tnat-APOSTROUTING-ptcp-oeth0-jSNAT--to-source
194.236.50.155-194.236.50.160:
1024-32000
DNAT改写封包目的地IP为某特定IP或IP范围,可以指定port对应的范围,进行完此
处理动作后,将会直接跳往下一个规炼(filter:
input或filter:
forward)。
范例如下:
iptables-tnat-APREROUTING-ptcp-d15.45.23.67--dport80-jDNAT
--to-destination
192.168.1.1-192.168.1.10:
80-100
MIRROR镜射封包,也就是将来源IP与目的地IP对调后,将封包送回,进行完此处理动作
后,将会中断过滤程序。
QUEUE中断过滤程序,将封包放入队列,交给其它程序处理。
透过自行开发的处理程序,可以
进行其它应用,例如:
计算联机费.......等。
RETURN结束在目前规则炼中的过滤程序,返回主规则炼继续过滤,如果把自订规则炼看成是
一个子程序,那么这个动作,就相当提早结束子程序并返回到主程序中。
MARK将封包标上某个代号,以便提供作为后续过滤的条件判断依据,进行完此处理动作后,
将会继续比对其它规则。
范例如下:
iptables-tmangle-APREROUTING-ptcp--dport22-jMARK--set-mark2
CreatePDFwithGO2PDFforfree,ifyouwishtoremovethisline,clickheretobuyVirtualPDFPrinter
Linux防火墙iptables学习笔记(三)iptables命令详解和举例
网上看到这个配置讲解得还比较易懂,就转过来了,大家一起看下,希望对您工作能有所帮助。
网管员的安全意识要比空喊Linux安全重要得多。
iptables-F
iptables-X
iptables-F-tmangle
iptables-tmangle-X
iptables-F-tnat
iptables-tnat-X
首先,把三个表清空,把自建的规则清空。
iptables-PINPUTDROP
iptables-POUTPUTDROP
iptables-PFORWARDACCEPT
设定INPUT、OUTPUT的默认策略为DROP,FORWARD为ACCEPT。
iptables-AINPUT-ilo-jACCEPT
iptables-AOUTPUT-olo-jACCEPT
先把“回环”打开,