当前位置:  首页  >  服务器技术  >  Linux/unix  >  Linux教程

Linux下使用iptables过滤系统做代理服务器和防火墙配置详细介绍

代理防火墙1.iptables规则表Filter(针对过滤系统):INPUT、FORWARD、OUTPUTNAT(针对地址转换系统):PREROUTING、POSTROUTING、INPUT、OUTPUTMangle(针对策略路由和特殊应用):OUTPUT、POSTROUTING2.安装包iptables-1.2.7a-23.配置防火墙1)命令语
代理/防火墙   1.iptables规则表 Filter(针对过滤系统):INPUT、FORWARD、OUTPUT NAT(针对地址转换系统):PREROUTING、POSTROUTING、INPUT、OUTPUT Mangle(针对策略路由和特殊应用):OUTPUT、POSTROUTING   2.安装包 iptables-1.2.7a-2   3.配置防火墙 1) 命令语法 Usge: iptables [-t table] -[ADC] chain rule-specification [options] iptables [-t table] -I chain [rulenum] rule-specification [options] iptables [-t table] -R chain rulenum rule-specification [options] iptables [-t table] -D chain rulenum [options] iptables [-t table] -[LFZ] [chain] [options] iptables [-t table] -N chain iptables [-t table] -X [chain] iptables [-t table] -P chain target [options] iptables [-t table] -E old-chain-name new-chain-name 规则操作参数说明: -A:在所选择的链末添加一条或更多规则;   -D:从所选链中删除一条或更多规则。有两种方法:把被删除规则指定为链中的序号(第一条序号为1),或者指定为要匹配的规则;   -R:从选中的链中取代一条规则。如果源地址或目的地址转换为多地址,该命令会失败。规则序号从1开始;   -I:根据给出的规则序号,向所选链中插入一条或更多规则。所以,如果规则序号为1,规则会插入链的头部。这也是不指定规则序号时的默认方式;   -L:现实所选链的所有规则。如果没有所选链,将显示所有链。也可以和z选项一起用,这是链会自动列出和归零;   -F:清空所选链。这等于把所有规则一个个删除;   -Z:把所有链的包以及字节的计数器清空;   -N:根据给出的名称建立一个新的用户定义链。这必须保证没有同名的链存在;   -X:删除指定的用户自定义链。这个链必须没有被引用,如果被引用,在删除之前必须删除或者替换与之有关的规则。如果没有给出参数,这条命令将试着删除每个非内建的链;   -P:设置链的目标规则;   -E:根据用户给出的名字对指定链进行重名名;   规则定义参数说明: -p [!]protocol 规则或者包检查(待查包)的协议。指定协议可以是TCP、UDP、ICMP中的一个或者全部,也可以是数值,代表这些协议中的某一个。当然也可以使用在/etc/protocols中定义的协议名。在协议名前加上"!"表示相反的规则。数字0相当于所有all。Protocol all会匹配所有协议,而且这是缺省时的选项。在和check命令结合时,all可以不被使用;   -s[!]address[/mask]: 指定源地址,可以是主机名、网络名和清楚地IP地址。mask说明可以是网络掩码或清楚的数字,在网络掩码的左边指定网络掩码左边"1"的个数,因此,mask值为24等于255.255.255.0。在指定地址前加上"!"说明指定了相反的地址段。标志--src是这个选项的简写;   -d[!]address[/mask]: 指定目标地址,要获取详细说明请参见-s标志的说明。标志--dst是这个选项的简写;   -j target: 指定规则的目标:也就是说包匹配应当做什么。目标可以为ACCEPT(通过)、 DROP(删除)、RETURN(返回)、REDIRECT(重新指向)、SNAT(源地址转换)、DNAT(目标地址转换)、MASQUERADE(伪装)等,还可以是用户自定义链。如果规则的这个选项被忽略,那么匹配的过程不会对包产生影响,不过规则的计数器会增加;   -i[!][name]: 待选的可接受包接口名称,包通过该接口接收(在链INPUT、FORWORD和 PREROUTING中进入的包)。当在接口名前使用"!"说明后,指的是相反的名称,如果接口名后面加上"+",则所有以次接口名开头的接口都会被匹配。如果这个选项被忽略,会假设为"+",那么将匹配任意接口;   -O[!][NAME]: 这是包经由该接口送出的可选的出口名称,包通过该口输出(在链FORWARD、OUTPUT和POSTROUTING中送出的包)。其他设置同上。   2) 匹配规则扩展选项: tcp:当指定-p tcp,且未指定其他匹配的扩展,则装载这些扩展。 --source-port[!][port[:port]]: 端口或端口范围指定。可以是服务名或端口号。使用格式端口:端口也可以指定包含的(端口)范围。如果忽略首端口号,默认是0,如果忽略末端口号,默认是65535,如果第二个端口号大于第一个,则他们进行交换。这个选项可以使用--sport的别名; --destionation-port[!][port:[port]]: 目标端口或端口范围指定。这个选项可以使用--dport别名来代替;   --tcp-flags[!]mask comp: 匹配指定的TCP标记。第一个参数是要检查的标记,一个用逗号分开的列表,第二个参数是用逗号分开的标记表,是必须设置的。标记如:SYN(同步)、ACK(应答)、FIN(结束)、RST(重设)、URG(紧急)、PSH(送入)ALLNONE。 命令iptables -A FORWARD -p tcp --tcp-flags SYN, ACK, FIN, RST SYN只匹配那些设置了SYN标记而没有设置ACK、FIN和RST标记的包。   udp:当指定-p icmp且未指定其他匹配的扩展时,则装载这些扩展。 --icmp-type[!]typename:这个选项允许指定ICMP类型,可以是一个数值型的ICMP类型,或者是某个由命令"iptables -p icmp -h"所显示的ICMP类型名。   mac: --mac-source[!]address:匹配物理地址。必须是XX:XX:XX:XX:XX这样的格式。注意,他只对来自以太设备并进入PREROUTING、FORWORD和INPUT链的包有效。   limit:这个模块匹配标志用来对网络数据的通过速率进行标记,他和LOG目标结合使用,给出有限的登陆数。当达到这个极限值时,使用这个扩展包的规则将进行匹配。(除非使用了!标记),他的扩展选项包括: --limit rate:最大平均匹配速率,可赋的值有"/second"、"/minute"、"/hour"或"/day"这样的单位,默认是"3/hour"; --limit-burst number:待匹配包初始个数的最大值。若前面指定的极限还没达到这个数值,则该数字加1。默认值是5。   multiport:这个模块匹配一组源端口或目标端口,最多可以指定15个端口。只能和-p tcp或者-p udp连着使用: --source-port[port[,port]]:如果源端口是其中一个给定端口,则匹配; --destination-port[port[,port]]:如果目标端口是其中一个给定端口,则匹配; --port[port[,port]]:若源端口和目的端口相等并与某个给定端口相等,则匹配。   owner:此扩展为本地生成包匹配包的创建者,只能用于OUTPUT链,而且,有一些包(如ICMP ping应答)还可能没有所有者,因此永远不会匹配: --uid-owner userid:如果给出有效的user id,那么匹配他的进程产生的包; --gid-owner groupid:如果给出有效的group id,那么匹配它的进程产生的包; --sid-owner sessionid:根据给出的会话组成匹配该进程产生的包。   REJECT:作为对匹配的包的相应,返回一个错误的包,其他情况下和DROP相同。此目标只适用于INPUT、FORWARD和OUTPUT链,以及调用这些链的用户自定义链。这几个选项控制返回的错误包的特性: --reject-with type:其中的type可以是icmp-net-unreachable、icmp-host-unreachable、icmp-port- unreachable、icmp-porto-unreachable、icmp-net-prohibited或者icmp-host- prohibited,该类型会返回相应的ICMP错误信息(默认是port-unreachable)。选项echo-reply也是允许的;它只能用于指定ICMP ping包的规则中,生成ping的回应。   SNAT:这个目标只适用于nat表的POSTROUTING链。它规定修改包的源地址(此连接以后所有的包都会被影响),停止对规则的检查: --to-source [][:port-port]: 可以指定一个单一的新IP地址,一个IP地址范围,也可以附加一个端口范围(只能在指定-p tcp或者-p udp的规则里)。如果未指定端口范围,源端口是512以下的端口惠被安排为其他的512以下的端口;512到1024之间的端口会被安排为1024以下的,其他端口会被安排为1024或以上。如果可能,端口不会被修改; --to-destiontion [][:port-port]: 可以指定一个单一的新的IP地址,一个IP地址范围,也可以附加一个端口范围(只能在指定-p tcp或者-p udp的规则里)。如果未指定端口范围,目标端口不会被修改。
吐了个 "CAO" !
扫码关注 PHP1 官方微信号
PHP1.CN | 中国最专业的PHP中文社区 | 凯发国际娱乐 | 凯发国际娱乐下载 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有