|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在这里你会学到更多的知识,学习linux,更要学习一种geek的精神,python之禅中也说过:以总结分享为荣,以跪求其解为耻;
iptables是甚么
iptables或netfilter(收集过滤器)是Linux下一个用户级的防火墙,同意体系办理员能够调剂设定X表(Xtables)供应相干的体系表格(今朝次要是在iptables/netfilter底下)和相干的“键”与“划定规矩”来办理收集封包的活动与转送的举措。
这篇文章是我几年前写的,之前放在百度空间内里。由于这篇文章已大批转载过了,以是我从头排版,并修正了一些笔墨,请网友不要觉得我是COPY的,感谢撑持。iptables命令指南
语法:iptables[-ttable]command[match][target]
-ttable:指定iptables表。
command:命令选项。
match:划定规矩选项
target:动则选项
iptables命令选项
选项描述-A在所选择的链划定规矩开头增加一条划定规矩。-D从所选择的链中删除划定规矩。有两种办法指定要删除的划定规矩:一是把划定规矩完全地写出来,再就是指定例则序号。-R在所选中的链里指定的行上交换match。如iptables-RINPUTnumber[match][target]。外地址是以名字而不是以IP的情势呈现时,若名字能够被剖析为多个IP,则这条command会失利。-I依据给出的序号拔出划定规矩,默许向顶部拔出划定规矩。-L列出所选择的链的一切划定规矩。如iptables-LINPUT,不指定链将列出表中一切划定规矩。-F清空所选链的划定规矩。-Z清空所选链的计数器。如iptables-ZINPUT,不指定链则以为是一切链。-N创建新链。-X删除指定的用户界说链。被删除的链必需没有被援用,假如被援用,在删除之前你必需删除与之有关的划定规矩。假如没有给出参数,这条命令将会删除一切非内建链。-P界说链的默许target,这里的target只能是DROP和ACCEPT。-E对自界说链举行重定名。如iptables-Ealloweddisallowed-x只能和-L连用,使-L输入中的计数器显现正确的数值,而不是K、M、G等估值。-n
–line-numbers只能和-L连用,以数值情势显现,而不是默许的名字:主机名、收集名、程序名等。-c只能和-A,-I,-R连用,在创立或变动划定规矩时设置计数器,如-c20400,意义是让内核把包计数器设为20,把字节计数器设为400。-m
–modprobe此选项告知iptables探测并装载要利用的模块iptables划定规矩选项
我把划定规矩按协定体例分为五类:通用划定规矩、TCP划定规矩、UDP划定规矩、ICMP划定规矩、初级划定规矩。个中通用划定规矩是能够使用于任何协定的,也不必装载何种扩大的。而TCP划定规矩、UDP划定规矩、ICMP划定规矩只能使用于对应的协定,要装进响应扩大模块,但它是主动或隐含装进内核的,不需手动利用-m载进,以是也称为隐含婚配。初级划定规矩必需用-m装载扩大的,也称为显式婚配。
选项描述通用划定规矩-p婚配协义范例。能够是协义称号(不分巨细写),也能够是响应整数值,必须在/etc/protocols中界说,缺省设置为ALL。能够在协义前加英文叹息号取反。-s婚配源地点。单个地点:192.168.1.1192.168.1.1/24;多个地点:192.168.1.0/24192.168.1.0/255.255.255.0;在地点前加英文叹息号暗示取反,注重空格:-s!192.168.1.0/24;缺省是婚配一切地点。-d婚配方针地点。语法和-s完整一样。-i以包进进当地所利用的收集接口婚配包。要注重这个婚配操纵只能用于INPUT,FORWARD,PREROUTING这三个链。叹息号暗示取反,-i!eth0。-o以包分开当地所利用的收集接口来婚配包。语法和-i完整一样。-f用来婚配一个被分片的包的第二个片或及今后的部分。由于它们不包括源或目标地点,或ICMP范例等信息,因而别的划定规矩没法婚配到它,以是才有这个婚配操纵。要注重碎片打击哦。这个操纵也能够加英文叹息号暗示取反,但要注重地位,如!-f。取反时,暗示只能婚配到没有分片的包大概是被分片的包的第一个碎片,厥后的片都不可。如今内核有完美碎片功效,能够避免碎片打击,以是不用利用取反的功效来避免碎片经由过程。假如你利用毗连跟踪,是不会看就任何碎片的,由于在它们抵达任何链之前就被处置过了。TCP划定规矩(必须有-ptcp作为条件前提)–sport基于TCP包的源端口来婚配包,不指定端口以为是全体端口。可使用端标语大概服务名婚配,利用服务名时必须在/etc/servers中界说。可使用一连的端口–sport22:80,暗示从22到80一切端口。利用一连端口时省略首位端标语时默许是0,如:–sport:80暗示从0到80的一切端口,利用一连端口时省略末位端口时,默许是65535,如–sport22:暗示从22到65535的一切端口。在端标语后面加英文叹息号暗示取反。–dport基于TCP包的目标端口来婚配包。语法和–sport完整一样。–tcp-flags婚配指定的TCP标志。有两个参数,它们都是列表,列表外部用英文逗号离隔,这两个列表之间用空格分隔。第一个参数指定我们要反省的标志,第二个参数指定在第一个参数中设为1的标志(即形态是翻开的标志),且别的标志值为0。这个婚配操纵能够辨认以下标志:SYN、ACK、FIN、RST、URG、PSH,别的另有两个词也能够利用就是ALL和NONE。ALL是指选定一切标志,NONE是不选定任何标志。–tcp-flags也能够利用英文叹息号取反值,如:–tcp-flags!SYN,FIN,ACKSYN暗示婚配FIN和ACK标志被设置而SYN标志没有设置的TCP包。–syn这是ipchains时期的遗留物,和–tcp-flagsSYN,RST,ACKSYN的感化完作一样。也能够利用英文叹息号,如:!–syn用来婚配形态为已创建的毗连包。–tcp-option这个选项我还没有了解,请网友匡助我增补。UDP划定规矩(必须有-pudp作为条件前提)–sport基于UDP的源端口婚配包,语法同-ptcp–sport完整一样。–sport基于UDP的目标端口婚配包,语法同上。ICMP划定规矩(必须有-pICMP作为条件前提)–icmp-type依据ICMP范例婚配包,范例的指定可使用十进制数值和响应的名字。数值在RFC792中有界说,名字能够用iptables-pICMP–help检察。这个选项也能够用英文叹息号取反。初级划定规矩,要用-m装载扩大模声,把这个划定规矩分隔是由于更好形貌。
选项描述-mlimit载进婚配速度模块。–limit为某条划定规矩设置最年夜均匀婚配速度,也就是单元工夫内能够婚配几个包。它的情势是一个数值加一个单元,能够是/second/minute/hour/day。默许是每小时3次,即3/hour,也就是每20分种一次。也以用英文叹息号取反。–limit-burst界说limitmatch的峰值,就是在单元工夫内最多婚配几个包,默许是5。-mmac载进MAC婚配模块。–mac-source地点格局只能是xx:xx:xx:xx:xx:xx,也能够用英文叹息号取反。-mmark标记匹置模块–mark以包被设置的标记值来婚配包,这个值是由iptables的MARKtarget来设置的,它是一个无标记的整数。-mmultiport多端口婚配模块,能够界说不一连的多个端口,最多界说15个不一连的端口,且不克不及同时利用尺度端口婚配和多端口扩大婚配。使用于TCP划定规矩和UDP划定规矩–sport界说多个源端口,如:-ptcp-mmultiport-sport22,53,81,3389。–dport界说多个目标端口,语法同上。–port同端口多端口婚配,意义就是它婚配的是那种源端口和目标端口是统一端口的包。好比:端口80到端口80的包。语法同上。-miprange多个一连IP婚配模块–src-range源IP婚配,例:192.168.0.1-192.168.0.100。–dst-range目标IP婚配-mowner使用级权限婚配模块–uid-owner基于天生包的用户ID来婚配外出的包。如:-mowner–uid-owner0–gid-owner基于天生包的用户组ID来婚配外出的包。–pid-owner基于天生包的历程ID来婚配外出的包。–sid-owner按天生包的会话ID来婚配外出的包。-mstate毗连形态婚配模块–state4种形态可用:INVALID、ESTABLISHED、NEW、RELATED。INVALID意味着这个包没有已知的流或毗连与之联系关系,也多是它包括的数据或包头有成绩;ESTABLISHED意义是包是完整无效的,并且属于一个已创建的毗连,这个毗连的两头都已无数据发送。NEW暗示包将要或已入手下手创建一个新的毗连,大概这个包和一个还没有在两头都无数据发送的毗连有关。RELATED申明包正在创建一个新毗连,这个毗连和一个已创建的毗连相干的。注重:NEW形态其实不在试图创建新毗连的TCP包里寻觅SYN标志。-mtosTCP的TOS字段婚配模块–tos依据TOS婚配包。-mttlTCP的TTL字段婚配模块–ttl依据TTL值来婚配,参数是十进制数。iptables举措选项
就是婚配划定规矩后产生的举措。命令-j。
另有一个很有效的选项:-j用户自界说链,这就就是跳进到这个用户自界说链中往。
选项描述-jACCEPT对切合划定规矩的包同意经由过程。-jDROP对切合划定规矩的包抛弃举措。-jREJECT回绝数据包,并前往毛病信息。只能用于INPUT、FORWARD、OUTPUT链中。
–reject-with告知REJECTtarget应向发送者反回甚么样的信息。可用的信息范例能够man一下。-jDNAT目标地点转换。DNAT只能使用于nat表的PREROUTING和OUTPUT中。
–to-destination指定要写进的IP头的地点。可使用这几种体例:1、单个IP;2、一连地点192.168.1.1-192.168.1.10,这类情形下每一个流就会被随机分派一个要转发的地点,但统一个流老是利用统一个地点。3、我们还能够在地点前面指定端口或端口局限,如:192.168.1.1:80或192.168.1.1:80-100,要注重只要选用-p指定协定后,才干利用。-jSNAT源地点转换。只能使用于nat表的POSTROUTING中。
–to-source指定要转换的源地点和端口。-jMASQUERADE这个举措和SNAT的感化是一样的,区分就是它不必要指定源地点。MASQUERADE被计划用于那些静态猎取IP地点的毗连的,好比拨号上彀。MASQUERADE和SNAT一样,只能使用于nat表的POSTROUTING中。
–to-ports在指定协义的条件下,设置外出包能利用的端口。例:–to-ports1025或–to-ports1024-1050。-jLOG纪录包的有关信息,这个功效是经由过程内核的日记工具完成的,必要开启syslogd服务。
–log-level纪录品级设置,纪录品级具体信息能够检察文件/etc/syslog.conf。
–log-prefix在纪录信息之前加上指定的前缀。如:–log-prefix“INPUTpackets”
–log-tcp-sequence把包的TCP序列号和别的日记信息一同纪录上去。
–log-tcp-options纪录TCP包头中的字段巨细稳定的选项。
–log-ip-options纪录IP包头中的字段巨细稳定的选项。-jMARK用来设置mark值,这个值只能在当地的mangle内外利用,不克不及用在别的任何中央。
–set-mark设置mark值,这个值是一个无标记的整数。-jMIRROR倒置IP头中的源地点和目标地点,然后转发包。这个举措只能应就于INPUT、FORWARD、PREROUTING链和被它们挪用的自界说链中,假如外出的包是因MIRRORtarget收回的,则它们是不会被filter、net、mangle表内的链处置的。-jQUEUE这个target为用户空间的程序或使用软件办理包行列。它是和iptables以外的程序或工具协同利用的,包含收集计数工具,初级的数据包代办署理或过滤使用,等等。-jREDIRECT在防火墙地点的机子外部转发包或流到另外一端口。换包话说,这个target把要转发的包的目标地点改写为我们自已机子的IP。我们在做通明代办署理时,这个target但是起了很高文用的。
–to-ports在指定协义条件下,界说目标端口。不利用这个选项,目标端口不会被改动。指定一个端口,如–to-ports8080。指定端口局限,如–to-ports8080-8090。-jRETURN若包在子链中碰到了RETURNtarget,则前往父链的下一条持续举行前提的对照。-jTOSTOS是用来设置IP头中的TypeofService字段的。这个target只能使用于mangle表内利用。
–set-tos设置TOS的值。-jTTL修正IP头中的TimeToLive字段的值。只能用于mangle表中。
–ttl-set设置TTL值。
–ttl-dec设定TTL要被减失落的值。
–ttl-inc设定TTL要被增添的值。-ULOG能够在用户空间纪录被婚配的包信息,这些信息和全部包城市经由过程netlinksocket被多播。然后一个或多个用户空间的历程就会承受它们。我们能够在ULOGDprojectpage内里找ULOGD用户空间的软件。
–ulog-nlgroup指定向哪一个netlink组发送包。
–ulog-prefix指定纪录信息的前缀。
–ulog-cprange指定每一个包要向“ULOG在用户空间的代办署理”发送的字节数。
–ulog-qthreshold暗示先在内核里储蓄积累多个少包,再把它们发送到用户空间里。附一:ICMP范例代码示图:
<br>
附二:十分棒的iptables进修材料:http://wenku.baidu.com/view/c444d0cfa1c7aa00b52acb39.html 参考文献
iptables指南1.1.19:http://www.tsnc.edu.cn/tsnc_wgrj/doc/iptables-tutorial-cn-1.1.19.html
维基百科:http://zh.wikipedia.org/zh-cn/Iptables
学习linux,就意味着更快的开发效率,等更多关于软件本身或者说操作系统本身的理解。 |
|