首页
关于
标签合集
友情链接
Search
1
一些简单方面的Linux生产随机密码shell
370 阅读
2
美超微主板IPMI使用教程
338 阅读
3
Ubuntu系统开启root登陆权限
265 阅读
4
linux下502自动重启脚本
253 阅读
5
利用廉价VPS做反代,保护你的真实服务器
196 阅读
OS
促销资讯
管理系统
网站运维
网文资讯
登录
Search
标签搜索
网站架构
linux
网站运营
centos
mysql
google
nginx
ssh
apache
服务器
kloxo
vps
架构分析
PHP
特价VPS
xen
shell
数据库
lamp
vpn
装逼爱好者
累计撰写
163
篇文章
累计收到
20
条评论
首页
栏目
OS
促销资讯
管理系统
网站运维
网文资讯
页面
关于
标签合集
友情链接
搜索到
1
篇与
的结果
2015-01-16
常用iptables参数细节使用方法
iptables 指令语法: iptables [-t table] command [match] [-j target/jump]-t 参数用来指定规则表,内建的规则表有三个,分别是:nat、mangle 和 filter,当未指定规则表时,则一律视为是 filter。 各个规则表的功能如下:nat 此规则表拥有 Prerouting 和 postrouting 两个规则链,主要功能为进行一对一、一对多、多对多等网址转译工作(SNATDNAT),由于转译工作的特性,需进行目的地网址转译的封包,就不需要进行来源网址转译,反之亦然,因此为了提升改写封包的率,在防火墙运作时,每个封包只会经过这个规则表一次。如果我们把封包过滤的规则定义在这个数据表里,将会造成无法对同一包进行多次比对,因此这个规则表除了作网址转译外,请不要做其它用途。mangle 此规则表拥有 Prerouting、FORWARD 和 postrouting 三个规则链。除了进行网址转译工作会改写封包外,在某些特殊应用可能也必须去改写封包(TTL、TOS)或者是设定 MARK(将封包作记号,以进行后续的过滤),这时就必须将这些工作定义在 mangle 规则表中,由于使用率不高,我们不打算在这里讨论 mangle 的用法。封包过滤的理动作(例如:DROP、 LOG、 ACCEPT 或 REJECT),我们会将基本规则都建立在此规则表中。主要包含::命令表用来增加(-A、-I)删除(-D)修改(-R)查看(-L)规则等;常用参数用来指定协议(-p)、源地址(-s)、源端口(--sport)、目的地址(-d)、目的端口(--dport)、进入网卡(-i)、出去网卡(-o)等设定包信息(即什么样的包);用来描述要处理包的信息。常用处理动作用 -j 来指定对包的处理(ACCEPT、DROP、REJECT、REDIRECT等)。1、常用命令列表: 常用命令(-A追加规则、-D删除规则、-R修改规则、-I插入规则、-L查看规则) 命令-A,--append范例 iptables -A INPUT ...说明新增规则(追加方式)到某个规则链(这里是INPUT规则链)中,该规则将会成为规则链中的最后一条规则。命令-D,--delete范例 iptables -D INPUT --dport 80 -j DROPiptables -D INPUT 1说明 从某个规则链中删除一条规则,可以输入完整规则,或直接指定规则编号加以删除。命令-R, --replace范例 iptables -R INPUT1-s 192.168.0.1 -j DROP说明取代现行规则,规则被取代后并不会改变顺序。(1是位置)命令-I,--insert范例 iptables -I INPUT1--dport 80 -j ACCEPT说明插入一条规则,原本该位置(这里是位置1)上的规则将会往后移动一个顺位。命令-L, --list范例 iptables -L INPUT说明 列出某规则链中的所有规则。命令-F, --flush范例 iptables -F INPUT说明 删除某规则链(这里是INPUT规则链)中的所有规则。命令-Z,--zero范例 iptables -Z INPUT说明 将封包计数器归零。封包计数器是用来计算同一封包出现次数,是过滤阻断式攻击不可或缺的工具。命令-N, --new-chain范例 iptables -N allowed说明 定义新的规则链。命令-X, --delete-chain范例 iptables -X allowed说明 删除某个规则链。命令-P, --policy范例 iptables -P INPUT DROP说明 定义过滤政策。 也就是未符合过滤条件之封包,预设的处理方式。命令-E,--rename-chain范例 iptables -E allowed disallowed说明 修改某自订规则链的名称。2、常用封包比对参数:(-p协议、-s源地址、-d目的地址、--sport源端口、--dport目的端口、-i进入网卡、-o 出去网卡)参数-p, --protocol (指定协议)范例 iptables -A INPUT -p tcp (指定协议) -p all 所有协议, -p !tcp 去除tcp外的所有协议。说明 比对通讯协议类型是否相符,可以使用 ! 运算子进行反向比对,例如:-p ! tcp ,意思是指除 tcp 以外的其它类型,包含udp、icmp ...等。如果要比对所有类型,则可以使用 all 关键词,例如:-p all。参数-s, --src, --source(指定源地址,指定源端口--sport)例如: iptables -A INPUT -s 192.168.1.1说明 用来比对封包的来源 IP,可以比对单机或网络,比对网络时请用数字来表示屏蔽,例如:-s 192.168.0.0/24,比对 IP 时可以使用 ! 运算子进行反向比对,例如:-s ! 192.168.0.0/24。 参数-d, --dst, --destination(指定目的地址,指定目的端口--dport)例如: iptables -A INPUT -d 192.168.1.1说明 用来比对封包的目的地 IP,设定方式同上。 参数-i, --in-interface (指定入口网卡) -i eth+ 所有网卡例如: iptables -A INPUT -i eth0说明 用来比对封包是从哪片网卡进入,可以使用通配字符 + 来做大范围比对,例如:-i eth+ 表示所有的 ethernet 网卡,也以使用 ! 运算子进行反向比对,例如:-i ! eth0。参数-o, --out-interface (指定出口网卡)例如: iptables -A FORWARD -o eth0说明 用来比对封包要从哪片网卡送出,设定方式同上。参数--sport, --source-port (源端口)例如: iptables -A INPUT -p tcp --sport 22说明 用来比对封包的来源端口号,可以比对单一埠,或是一个范围,例如:--sport 22:80,表示从 22 到 80 端口之间都算是符合件,如果要比对不连续的多个埠,则必须使用--multiport 参数,详见后文。比对埠号时,可以使用 ! 运算子进行反向比对。参数--dport, --destination-port (目的端口)例如: iptables -A INPUT -p tcp --dport 22说明 用来比对封包的目的端口号,设定方式同上。参数--tcp-flags (只过滤TCP中的一些包,比如SYN包,ACK包,FIN包,RST包等等)例如: iptables -p tcp --tcp-flags SYN,FIN,ACK SYN说明 比对 TCP 封包的状态旗号,参数分为两个部分,第一个部分列举出想比对的旗号, 第二部分则列举前述旗号中哪些有被设,未被列举的旗号必须是空的。TCP 状态旗号包括:SYN(同步)、ACK(应答)、FIN(结束)、RST(重设)、URG(紧急)PSH(强迫推送) 等均可使用于参数中,除此之外还可以使用关键词 ALL 和 NONE 进行比对。比对旗号时,可以使用 ! 运算子行反向比对。 参数--syn例如: iptables -p tcp --syn说明 用来比对是否为要求联机之 TCP 封包,与 iptables -p tcp --tcp-flags SYN,FIN,ACK SYN 的作用完全相同,如果使用 !运算子,可用来比对非要求联机封包。参数-m multiport --source-port例如: iptables -A INPUT -p tcp -m multiport --source-port 22,53,80,110说明 用来比对不连续的多个来源埠号,一次最多可以比对 15 个埠,可以使用 !运算子进行反向比对。 参数-m multiport --destination-port例如: iptables -A INPUT -p tcp -m multiport --destination-port 22,53,80,110说明 用来比对不连续的多个目的地埠号,设定方式同上。 参数-m multiport --port例如: iptables -A INPUT -p tcp -m multiport --port 22,53,80,110说明 这个参数比较特殊,用来比对来源埠号和目的埠号相同的封包,设定方式同上。注意:在本范例中,如果来源端口号为 80目的地埠号为 110,这种封包并不算符合条件。 参数--icmp-type例如: iptables -A INPUT -p icmp --icmp-type 8说明 用来比对 ICMP 的类型编号,可以使用代码或数字编号来进行比对。请打 iptables -p icmp --help 来查看有哪些代码可用。 参数-m limit --limit例如: iptables -A INPUT -m limit --limit 3/hour说明 用来比对某段时间内封包的平均流量,上面的例子是用来比对:每小时平均流量是否超过一次 3 个封包。 除了每小时平均次外,也可以每秒钟、每分钟或每天平均一次,默认值为每小时平均一次,参数如后: /second、 /minute、/day。 除了进行封数量的比对外,设定这个参数也会在条件达成时,暂停封包的比对动作,以避免因骇客使用洪水攻击法,导致服务被阻断。 参数--limit-burst范例 iptables -A INPUT -m limit --limit-burst 5说明 用来比对瞬间大量封包的数量,上面的例子是用来比对一次同时涌入的封包是否超过 5 个(这是默认值),超过此上限的封将被直接丢弃。使用效果同上。 参数-m mac --mac-source范例 iptables -A INPUT -m mac --mac-source 00:00:00:00:00:01说明 用来比对封包来源网络接口的硬件地址,这个参数不能用在 OUTPUT 和 Postrouting规则炼上,这是因为封包要送出到网后,才能由网卡驱动程序透过 ARP 通讯协议查出目的地的 MAC 地址,所以 iptables 在进行封包比对时,并不知道封包会送到个网络接口去。 参数--mark范例 iptables -t mangle -A INPUT -m mark --mark 1说明 用来比对封包是否被表示某个号码,当封包被比对成功时,我们可以透过 MARK 处理动作,将该封包标示一个号码,号码最不可以超过 4294967296。 参数-m owner --uid-owner范例 iptables -A OUTPUT -m owner --uid-owner 500说明 用来比对来自本机的封包,是否为某特定使用者所产生的,这样可以避免服务器使用root 或其它身分将敏感数据传送出,可以降低系统被骇的损失。可惜这个功能无法比对出来自其它主机的封包。 参数-m owner --gid-owner范例 iptables -A OUTPUT -m owner --gid-owner 0说明 用来比对来自本机的封包,是否为某特定使用者群组所产生的,使用时机同上。 参数-m owner --pid-owner范例 iptables -A OUTPUT -m owner --pid-owner 78说明 用来比对来自本机的封包,是否为某特定行程所产生的,使用时机同上。 参数-m owner --sid-owner范例 iptables -A OUTPUT -m owner --sid-owner 100说明 用来比对来自本机的封包,是否为某特定联机(Session ID)的响应封包,使用时机同上。 参数-m state --state范例 iptables -A INPUT -m state --state RELATED,ESTABLISHED说明 用来比对联机状态,联机状态共有四种:INVALID、ESTABLISHED、NEW 和 RELATED。INVALID 表示该封包的联机编号(Session ID)无法辨识或编号不正确。ESTABLISHED 表示该封包属于某个已经建立的联机。NEW 表示该封包想要起始一个联机(重设联机或将联机重导向)。RELATED 表示该封包是属于某个已经建立的联机,所建立的新联机。例如:FTP-DATA 联机必定是源自某个 FTP 联机。 3、常用的处理动作: (-j 指定对满足条件包的处理,常用动作有ACCEPT接受报、DROP丢弃报、REJECT丢弃报并通知对方、REDIRECT重定向包等) -j 参数用来指定要进行的处理动作,常用的处理动作包括:ACCEPT、REJECT、DROP、REDIRECT、MASQUERADE、LOG、DNAT、SNAT、MIRROR、QUEUE、RETURN、MARK,分别说明如下: ACCEPT将封包放行,进行完此处理动作后,将不再比对其它规则,直接跳往下一个规则链(natostrouting)。REJECT拦阻该封包,并传送封包通知对方,可以传送的封包有几个选择:ICMP port-unreachable、ICMP echo-reply 或是 tcp-reset(这个封包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。例如:iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with tcp-resetDROP丢弃封包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。REDIRECT将封包重新导向到另一个端口(PNAT),进行完此处理动作后,将会继续比对其它规则。这个功能可以用来实作通透式porxy 或用来保护 web 服务器。例如:iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080MASQUERADE改写封包来源 IP 为防火墙 NIC IP,可以指定 port 对应的范围,进行完此处理动作后,直接跳往下一个规则(mangleostrouting)。这个功能与 SNAT 略有不同,当进行 IP 伪装时,不需指定要伪装成哪个 IP,IP 会从网卡直接读,当使用拨接连线时,IP 通常是由 ISP 公司的 DHCP 服务器指派的,这个时候 MASQUERADE 特别有用。例如:iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000LOG将封包相关讯息纪录在 /var/log 中,详细位置请查阅 /etc/syslog.conf 组态档,进行完此处理动作后,将会继续比对其规则。例如:iptables -A INPUT -p tcp -j LOG --log-prefix "INPUT packets"SNAT改写封包来源IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后,将直接跳往下一个规则(mangleostrouting)。例如:iptables -t nat -A POSTROUTING -p tcp-o eth0 -j SNAT--to-source194.236.50.155-194.236.50.160:1024-32000DNAT改写封包目的地IP 为某特定 IP 或 IP 范围,可以指定 port 对应的范围,进行完此处理动作后,将会直接跳往下一个规炼(filter:input 或 filter:forward)。例如:iptables -t nat-A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT--to-destination 192.168.1.1-192.168.1.10:80-100MIRROR镜射封包,也就是将来源 IP 与目的地 IP 对调后,将封包送回,进行完此处理动作后,将会中断过滤程序。QUEUE中断过滤程序,将封包放入队列,交给其它程序处理。透过自行开发的处理程序,可以进行其它应用,例如:计算联机费......等。RETURN结束在目前规则炼中的过滤程序,返回主规则炼继续过滤,如果把自订规则炼看成是一个子程序,那么这个动作,就相当提早结束子程序并返回到主程序中。MARK将封包标上某个代号,以便提供作为后续过滤的条件判断依据,进行完此处理动作后,将会继续比对其它规则。例如:iptables -t mangle -A PREROUTING -p tcp --dport 22 -j MARK --set-mark 2四.拓展模块 1.按来源MAC地址匹配 # iptables -t filter -A FORWARD-m --mac-source 00:02:b2:03:a5:f6-j DROP 拒绝转发来自该MAC地址的数据包 2.按多端口或连续端口匹配 20: 表示20以后的所有端口 20:100 表示20到100的端口 :20表示20之前的所有端口 -m multiport [--prots, --sports,--dports]例子:# iptables -A INPUT -p tcp -m multiport --dports 21,20,25,53,80 -j ACCEPT 【多端口匹配】 # iptables -A INPUT -p tcp --dport 20: -j ACCEPT # iptables -A INPUT -p tcp --sport 20:80 -j ACCEPT # iptables -A INPUT -p tcp --sport :80 -j ACCEPT3.还可以按数据包速率和状态匹配 -m limit --limit 匹配速率 如: -m limit --limit 50/s -j ACCEPT -m state --state 状态 如: -m state --state INVALID,RELATED -j ACCEPT 4.还可以限制链接数-m connlimit --connlimit-above n 限制为多少个例如:iptables -I FORWARD -p tcp -m connlimit --connlimit-above 9 -j DROP //表示限制链接数最大为9个5、模拟随机丢包率iptables -A FORWARD -p icmp -m statistic --mode random --probability 0.31 -j REJECT //表示31%的丢包率或者-m random --average 5 -j DROP 表示模拟丢掉5%比例的包相关知识:Linux 中延时模拟设置延时 3s :tc qdisc add dev eth0 root netem delay 3000ms可以在 3000ms 后面在加上一个延时,比如 ’3000ms 200ms‘表示 3000ms ± 200ms ,延时范围 2800 – 3200 之间. 结果显示如下 Linux 中丢包模拟设置丢包 50% ,iptables 也可以模拟这个,但一下不记的命令了,下次放上来:tc qdisc change dev eth0 root netem loss 50%上面的设丢包,如果给后面的 50% 的丢包比率修改成 ’50% 80%’ 时,这时和上面的延时不一样,这是指丢包比率为 50-80% 之间。
2015年01月16日
77 阅读
0 评论
0 点赞