|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
使用gcc或g++进行编译,使用gdb进行调试;
Linux的内置firewall机制,是经由过程kernel中的netfilter模块完成的(www.netfilter.ort)。Linuxkernel利用netfilter对收支的数据包举行过滤,netfilter由三个划定规矩表构成,每一个表又有很多内建的链构成。经由过程利用iptables命令能够对这些表链举行操纵,如增加、删除和列出划定规矩等。
1、Netfilter划定规矩表―filternatmangle
filter,用于路由收集数据包。是默许的,也就是说假如没有指定-t参数,当创立一条新划定规矩时,它会默许寄存到该表内。
INPUT收集数据包流向服务器
OUTPUT收集数据包从服务器流出
FORWARD收集数据包经服务器路由
nat,用于NAT表.NAT(NetAddressTranslation)是一种IP地点转换办法。
PREROUTING收集数据包抵达服务器时能够被修正
OUTPUT收集数据包由服务器流出
POSTROUTING收集数据包期近将从服务器收回时能够被修正
mangle,用于修正收集数据包的表,如TOS(TypeOfService),TTL(TimeToLive),等
INPUT收集数据包流向服务器
OUTPUT收集数据包流出服务器
FORWARD收集数据包经过服务器转发
PREROUTING收集数据包抵达服务器时能够被修正
POSTROUTING收集数据包期近将从服务器收回时能够被修正
1.设置Iptables
当数据包进进服务器时,LinuxKernel会查找对应的链,直到找到一条划定规矩与数据包婚配。假如该划定规矩的target是ACCEPT,就会跳多余下的划定规矩,数据包会被持续发送。假如该划定规矩的target是DROP,该数据包会被拦阻失落,kernel不会再参考其他划定规矩。
Note:假如从始至终都没有一条划定规矩与数据包婚配,并且表开端又没有dropall的划定规矩,那么该数据包会被accept。Cisco则相反,在表开端会因含denyall的划定规矩。
1.)Iptables的命令选项
iptables[-ttables]commandoptionparametertarget
-A在链尾增加一条划定规矩
-C将划定规矩增加到用户界说链之前对其举行反省
-D从链中删除一条划定规矩
-E重定名用户界说的链,不改动链自己
-F清空链,删除链上的一切划定规矩
-I在链中拔出一条划定规矩
-L列出某个链上的划定规矩,如iptablesCLINPUT列出INPUT链的划定规矩
-N创立一个新链
-P界说某个链的默许战略
-R交换链上的某条划定规矩
-X删除某个用户相干的链
-Z将一切表的一切链的字节和数据包计数器清零
2.)Iptables的命令参数
-pCprotocol
使用于数据包的协定范例,能够是TCPUDPICMP或ALL。!也可以使用。
当利用-ptcp时,还可以使用其他能够选项,以便同意进一步界说划定规矩。选项包含:
――sport同意指定婚配数据包源端口.port1:port,暗示port1和port2之间的一切端口
――dport目标端口,和――sport相同。
当利用-p!udp时,也有特别的选项供使包含:
――sport,――dport,与-ptcp不异,只不外用以用于UDP包。
利用-picmp参数时,只要一个选项可用。
――icmp-type,同意在过滤划定规矩中指定icmp范例。
-sCsource指定命据包的源地点。该参数后跟一个IP地点,一个带有sub-netmask的收集地点,或一个主机名。(不倡议利用主机名)
-d,--destination数据包的目标地点,同-s.
-j,――jump用于指定一个target,告知划定规矩将该婚配的数据包发送到该target。Target能够是ACCEPT,DROP,QUEUE,RETURN.假如没有-j,那末不会对数据包举行任何操纵,只是将计数器加1。
-i--in-interface,关于INPUTFORWARDPREROUTING链,该参数指定命据包抵达服务器时所利用的端口。
-o--out-interface,关于OUTPUTFORWARDPOSTROUTING链,该参数指定命据包分开服务器时利用的端口。
3.)Iptables的命令target
创立划定规矩的最初一步是指定Iptables对数据包的操纵。只需某一划定规矩婚配该数据包,就不会再有其余划定规矩的操纵。内建的target有:ACCEPTDROPQUEUERETURN。
ACCEPT:同意数据包经由过程,抵达目标地。
DROP:回绝数据包经由过程,抛弃该包。
QUEUE:将数据包发送回到用户使用程序处置。
RETURN:不再依据以后链的其他划定规矩来反省数据包,而是间接前往,持续被发送到其目标地点,或下一个链。
2.使用Iptables划定规矩示例
同意WWW
iptablesCAINPUTCptcpCdport80CjACCEPT
该划定规矩被增加到filter表的INPUT链,同意目标端口是80的数据包。
在外部接口上同意DHCP
iptablesCAINPUTCieth0Cptcp--sport68--dport67ACCEPT
iptablesCAINPUTCieth0Cpucp--sport68--dport67ACCEPT
以上同时同意TCP和UDP协定。
3.保留和恢复Iptables
保留Iptables
利用iptables-save可将现行的iptables划定规矩保留,
iptables-save>iptables保留路径,如#iptables-save>/etc/iptables.up.rule
恢复Iptables
利用iptables-restore可从设置文档恢复iptables表到现行iptables表.
iptables-restore</etc/iptables.up.rule
2、UbuntuServer中的Iptables
UbuntuServer6.06中已默许安装iptables,版本是1.3.3.默许形态是封闭。
经由过程修正/etc/network/interfaces可将iptables翻开:
autolo
Ifaceloinetloopback
autoeth0
ifaceeth0inetdhcp
#增加以下内容
pre-upiptables-restore</etc/iptables.up.rule
#calltherestoredrulewhenactivetheeth0
post-downiptables-save>/etc/iptables.up.rule
#restoretheiptablesrulewhenshutdowntheinterfaceeth0
然后从头激活eth0便可。
别的,可随时修正/etc/iptables.up.rule设置文件,来变动iptables的划定规矩。Iptables.up.rule格局以下:
#Generatedbyiptables-saveV1.3.3onTueJul3114:18:442007
*filter
:INPUTACCEPT[73:8213]
:FORWARDACCEPT[0:0]
:OUTPUTACCEPT[8:825]
-AINPUTCiloCpicmpCjDROP
-AINPUTCieth0CpicmpCjDROP
COMMIT
#CompletedonTueJul3114:10:442007
行与行之间不克不及有空行。
三.Summary
iptables表链中每条划定规矩的按次很主要,假如首条是acceptall,那么一切的数据包城市被同意经由过程firewall,因而应该得当的布置划定规矩按次。
一般的法例是:回绝一切同意多数.
</p>
常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基的。 |
|