iptables配置说明
1.iptables的发展:
为了更方便的测试,linux做为单机防火墙测试,图中的linux1和linux2以做了nat.具体配置流程查看链接。
http://www.cnblogs.com/Yuanbangchen/p/5840297.html
1、filter表:默认用filter表执行所有的命令。只操作与本机有关的数据包。
2、nat表:主要用于NAT地址转换。只有数据流的第一个数据包被这个链匹配,后面的包会自动做相同的处理。
分为:DNAT(目标地址转换)、SNAT(源地址转换)、MASQUERADE
(1)DNAT操作主要用在这样一种情况,你有一个合法的IP地址,要把对防火墙的访问 重定向到其他的机子上(比如DMZ)。也就是说,我们改变的是目的地址,以使包能重路由到某台主机。
(2)SNAT 改变包的源地址,这在极大程度上可以隐藏你的本地网络或者DMZ等。内网到外网的映射。
(3)MASQUERADE 的作用和SNAT完全一样,只是计算机的负荷稍微多一点。因为对每个匹配的包,MASQUERADE都要查找可用的IP地址,而不象SNAT用的IP地址是配置好的。
3、mangle表:用来改变数据包的高级特性,一般不用。
(二) command(命令)详解
1、 -A或者--append //将一条或多条规则加到链尾
2、 -D或者--delete //从链中删除该规则
3、 -R或者--replace //从所选链中替换一条规则
4、 -L或者--list //显示链的所有规则
5、 -I或者--inset //根据给出的规则序号,在链中插入规则。按序号的顺序插入,如是 “1”就插入链首
6、 -X或者--delete-chain //用来删除用户自定义链中规则。必须保证链中的规则都不在使用时才能删除链。如没有指定链,将删除所有自定义链中的规则。
7、 -F或者--flush //清空所选链中的所有规则。如指定链名,则删除对应链的所有规则。如没有指定链名,则删除所有链的所有规则。
8、 -N或者--new-chain //用命令中所指定的名字创建一个新链。
9、 -P或者--policy //设置链的默认目标,即策略。 与链中任何规则都不匹配的信息包将强制使用此命令中指定的策略。
10、-Z或者--zero //将指定链中的所有规则的包字节计数器清零。
分为四大类:通用匹配、隐含匹配、显示匹配、针对非正常包的匹配
1、通用匹配
无论我们使用何种协议,装入何种扩展,通用匹配都可以使用。不需要前提条件
(1) -p(小写)或--protocol
用来检查某些特定协议。协议有TCPUDPICMP三种。可用逗号分开这三种协议的任何组合。也可用“!”号进行取反,表示除该协议外的剩下的协议。也可用all表示全部协议。默认是all,但只代表tcpudpicmp三种协议。
$ iptable -A INPUT -p TCP,UDP
$ iptable -A INPUT -p ! ICMP //这两种表示的意思为一样的。
(2) -s 或 --source
以Ip源地址匹配包。根据源地址范围确定是否允许或拒绝数据包通过过滤器。可使用 “!”符号。默认是匹配所有ip地址。
可是单个Ip地址,也可以指定一个网段。 如: 192.168.1.1/255.255.255.255 表示一个地址。 192.168.1.0/255.255.255.0 表示一个网段。
(3) -d 或 --destination
用目的Ip地址来与它们匹配。与 source 的格式用法一样
(4)-i 或 --in-interface
指定数据包从哪个网络接口进入。只能用INPUT FORWARD PREROUTING 三个链中。用在其他任何链中都会出错。可使用“+” “!”两种符号。
只用一个“+"号,表示匹配所有的包,不考虑使用哪个接口。如: iptable -A INPUT -i + //表匹配所有的包。
放在某类接口后面,表示所有此类接口相匹配。如: iptable -A INPUT -i eth+ //表示匹配所有ethernet 接口。
(5) -o --out-interface
指定数据包从哪个网络接口输出。与-i一样的使用方法。只能用OUTPUT FORWARD POSTROUTING 三个链中。用在其他任何链中都会出错.可使用“+” “!”两种符号。
(6) -f ( --fragment )
用来匹配一个被分片的包的第二片或以后的部分。因一个数据包被分成多片以后,只有第一片带有源或目标地址。后面的都不带 ,所以只能用这个来匹配。可防止碎片攻击。
2、隐含匹配
这种匹配是隐含的,自动的载入内核的。如我们使用 --protocol tcp 就可以自动匹配TCP包相关的特点。
分三种不同协议的隐含匹配:tcp udp icmp
1 tcp
tcp match 只能隐含匹配TCP包或流的细节。但必须有 -p tcp 作为前提条件。
TCP --sport
基于tcp包的源端口匹配包 ,不指定此项则表示所有端口。
iptable -A INPUT -p TCP --sport 22:80 //TCP源端口号22到80之间的所有端口。
iptable -A INPUT -p TCP --sport 22: //TCP源端口号22到65535之间的所有端口。
TCP --dport
基于tcp包的目的端口来匹配包。 与--sport端口用法一样。
TCP --flags
匹配指定的TCP标记。
iptable -p TCP --tcp-flags SYN,FIN,ACK SYN
2 UDP match
UDP --sport
基于UDP包的源端口匹配包 ,不指定此项则表示所有端口。
UDP --dport
基于UDP包的目的端口匹配包 ,不指定此项则表示所有端口。
3 -m icmp --icmp-type
根据ICMP类型包匹配。类型 的指定可以使用十进制数或相关的名字,不同的类型,有不同的ICMP数值表示。也可以用“!”取反。
[linux1] iptables -t filter -I FORWARD -s 192.168.10.0/24 -d 192.168.80.0/24 -p icmp -m icmp --icmp-type 8 -j DROP 拒绝win2003与xp新建会话。xp向2003是允许的。
3、显示匹配
显示匹配必须用 -m装 载。
(1)-m limit
必须用 -m limit 明确指出。 可以对指定的规则的匹配次数加以限制。即,当某条规则匹配到一定次数后,就不再匹配。也就是限制可匹配包的数量。这样可以防止DOS攻击。
限制方法: 设定对某条规则 的匹配最大次数。设一个限定值 。 当到达限定值以后,就停止匹配。但有个规定,在超过限制次数后,仍会每隔一段时间再增加一次匹配次数。但增加的空闲匹配数最大数量不超过最大限制次数。
--limit rate
最大平均匹配速率:可赋的值有'/second', '/minute', '/hour', or '/day'这样的单位,默认是3/hour。
待匹配包初始个数的最大值:若前面指定的极限还没达到这个数值,则概数字加1.默认值为5
iptable -A INPUT -m limit --limt 3/hour //设置最大平均匹配速率。也就是单位时间内,可匹配的数据包个数。 --limt 是指定隔多 长时间发一次通行证。
iptable -A INPUT -m limit --limit-burst 5 //设定刚开始发放5个通行证,也最多只可匹配5个数据包。
(3) mark
以数据包被 设置的MARK来匹配包。这个值由 MARK TARGET 来设置的。
(4) -m multiport
这个模块匹配一组源端口或目标端口,最多可以指定15个端口。只能和-p tcp 或者 -p udp 连着使用。
多端口匹配扩展让我们能够在一条规则里指定不连续的多个端口。如果没有这个扩展,我们只能按端口来写规则了。这只是标准端口匹配的增强版。不能在一条规则里同时用标准端口匹配和多端口匹配。
iptable -A INPUT -p TCP -m multiport --sport 1:1024,115
iptable -A INPUT -p TCP -m multiport --dport 22,28,115
iptable -A INPUT -p TCP -m multiport --port 22,28,115
(5) -m iprange 指定地址范围 --src-range ip-ip --dst-range ip-ip
(6) -m connlimit限制最大连接个数。 --connlimit-above
(7) ttl match
根据IP头里的TTL字段来匹配包。
用来更改包的TTL,有些ISP根据TTL来判断是不是有多台机器共享连接上网。
iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-set 64
iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-dec 1
# 离开防火墙的时候实际上TTL已经-2了,因为防火墙本身要-1一次。
iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-inc 1
# 离开防火墙的时候不增不减,tracert就不好用了,呵呵。
(8) owner match
基于包的生成者(即所有者或拥有者)的ID来匹配包。
owner 可以是启动进程的用户的ID,或用户所在的级的ID或进程的ID,或会话的ID。此只能用在OUTPUT 中。
此模块设为本地生成包匹配包创建者的不同特征。而且即使这样一些包(如ICMP ping应答)还可能没有所有者,因此永远不会匹配。
--uid-owner userid
如果给出有效的user id,那么匹配它的进程产生的包。
--gid-owner groupid
如果给出有效的group id,那么匹配它的进程产生的包。
--sid-owner seessionid
根据给出的会话组匹配该进程产生的包。
一旦满 足匹配不再去匹配表或链内定义的其他规则。但它还可能会匹配其他表和链内的规则。即在同一个表内匹配后就到上为止,不往下继续。
2、drop
-j drop 当信息包与规则完全匹配时,将丢弃该 包。不对它做处理。并且不向发送者返回任何信息。也不向路由器返回信息。
3、reject
与drop相同的工作方式,不同的是,丢弃包后,会发送错误信息给发送方。
iptables -A FORWARD -p icmp -s 192.168.10.100 -j REJECT 目标端口不可到达
4、DNAT
用在prerouting链上。
做目的网络地址转换的。就是重写目的的IP地址。
如果一个包被匹配,那么和它属于同一个流的所有的包都会被自动转换。然后可以被路由到正确的主机和网络。
也就是如同防火墙的外部地址映射。把外部地址映射到内部地址上。
iptables -t nat -A PREROUTING -d 218.104.235.238 -p TCP --dport 110,125 -j DNAT --to-destination 192.168.9.1
//把所有访问218.104.235.238地址 110.125端口的包全部转发到 192.168.9.1上。
--to-destination //目的地重写
5、SNAT
用在nat 表的postrouting链表。这个和DNAT相反。是做源地址转换。就是重写源地址IP。 常用在内部网到外部网的转换。
--to-source
iptables -t nat POSTROUTING -o eth0 -p tcp -j SNAT --to-source 218.107.248.127 //从eth0接口往外发的数据包都把源地址重写为218.107.248.127
********************
iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.1.9
# 将所有的访问15.45.23.67:80端口的数据做DNAT发到192.168.1.9:80
如果和192.168.1.9在同一内网的机器要访问15.45.23.67,防火墙还需要做设置,改变源IP为防火墙内网IP 192.168.1.1。否则数据包直接发给内网机器,对方将丢弃。
iptables -t nat -A POSTROUTING -p tcp --dst 15.45.23.67 --dport 80 -j SNAT --to-source 192.168.1.1
# 将所有的访问15.45.23.67:80端口的数据包源IP改为192.168.1.1
如果防火墙也需要访问15.45.23.67:80,则需要在OUTPUT链中添加,因为防火墙自己发出的包不经过PREROUTING。
iptables -t nat -A OUTPUT --dst 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.1.9
********************
6、MASQUERADE
masquerade 的作用和 SNAT的作用是一样的。 区别是,他不需要指定固定的转换后的IP地址。专门用来设计动态获取IP地址的连接的。
MASQUERADE的作用是,从服务器的网卡上,自动获取当前ip地址来做NAT
如家里的ADSL上网,外网的IP地址不是固定的,你无法固定的设定NAT转换后的IP地址。这时就需要用masquerade来动态获取了。
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j masquerade //即把192.168.1.0 这个网段的地址都重写为动态的外部IP地址。
7、REDIRECT
只能在NAT表中的PREROUTING OUTPUT 链中使用
在防火墙所在的机子内部转发包或流到另一个端口。比如,我们可以把所有去往端口HTTP的包REDIRECT到HTTP proxy(例如squid),当然这都发生在我们自己的主机内部。
--to-ports
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
不使用这个选项,目的端口不会被改变。
指定一个端口,如--to-ports 8080
指定端口范围,如--to-ports 8080-8090
8、RETURN
顾名思义,它使包返回上一层,顺序是:子链——>父链——>缺省的策略。具体地说,就是若包在子链中遇到了RETURN,则返回父链的下一条规则继续进行条件的比较,若是在父链(或称主链,比如INPUT)中遇到了RETURN,就要被缺省的策略(一般是ACCEPT或DROP)操作了。(译者注:这很象C语言中函数返回值的情况)
9、MIRROR
颠倒IP头中的源地址与目的地址,再转发。
10、LOG
在内核空间记录日志,dmesg等才能看。/var/log/messages
11、ULOG
在用户空间记录日志。
iptables配置说明的更多相关文章
- iptables 配置说明
#配置,禁止进,允许出,允许回环网卡 iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -A INPUT -i lo -j ACCEP ...
- Linux防火墙详解
1.Linux防火墙基础 作为隔离内外网.过滤非法数据的有力屏障,防火墙通常按实现环境的不同分为硬件防火墙和软件防火墙.硬件防火墙是功能专一的硬件设备,具有比较全面的功能,其工作效率较高,但是加个昂贵 ...
- keepalived工作原理和配置说明 腾讯云VPC内通过keepalived搭建高可用主备集群
keepalived工作原理和配置说明 腾讯云VPC内通过keepalived搭建高可用主备集群 内网路由都用mac地址 一个mac地址绑定多个ip一个网卡只能一个mac地址,而且mac地址无法改,但 ...
- Linux的iptables常用配置范例(1)
以下是来自 http://wiki.ubuntu.org.cn/IptablesHowTo 上的配置说明 可以通过/sbin/iptables -F清除所有规则来暂时停止防火墙: (警告:这只适合在没 ...
- CentOS 6.9开启iptables的日志实现调试
系统日志配置在CentOS 5上叫syslog,而在CentOS 6上叫rsyslog(增强版的syslog),CentOS 5上的配置文件在/etc/syslog.conf下,而CentOS 6在/ ...
- rsync 参数配置说明[转]
rsync 特性 可以镜像保存整个目录树和文件系统. 可以很容易做到保持原来文件的权限.时间.软硬链接等等. 无须特殊权限即可安装. 快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修 ...
- iptables
一.在服务器上打开 22.80.9011端口: iptables -A INPUT -p tcp --dport 9011 -j ACCEPT iptables -A OUTPUT -p tcp -- ...
- 浅谈iptables 入站 出站以及NAT实例
--------------本文是自己工作上的笔记总结,适合的可以直接拿去用,不适合的,适当修改即可!--------------- iptbales默认ACCEPT策略,也称通策略,这种情况下可以做 ...
- Failed to stop iptables.service: Unit iptables.service not loaded.
redhat 7 [root@lk0 ~]# service iptables stop Redirecting to /bin/systemctl stop iptables.service Fai ...
随机推荐
- 十款PHP开发框架对比
PHP开发框架近来在PHP社区中成为讨论的热点,几乎每天都在推出新的框架.面对市面上超过四十种的开发框架,你很难判断究竟哪一款最适合你,尤其是在这些框架所提供的功能不尽相同的时候. 本文将引导你 ...
- codeforce 606A - Magic Spheres
题意:a,b,c三种球,能把俩个一样的球变成另一颜色不一样的球.给你目标x,y,z,问能否经过变化至少达打目标. #include<iostream> #include<stdio. ...
- uva 10256 The Great Divide
题意:给定两个点集,一个红点集,另一个蓝点集,询问,能否找到一条直线能,使得任取一个红点和蓝点都在直线异侧. 思路:划分成两个凸包,一个红包,一个蓝包.两个凸包不相交不重合. 1.任取一个凸包中的点不 ...
- c++ 观察者模式
观察者模式之比喻: 有家公司,老板经常不按时上班,于是员工就可以在老板来之前的那段时间娱乐一下,但是又过的是心惊胆战,怕 老板随时出现:这是观察者模式就起作用了:公司有个前台,她总是第一个看到老板进门 ...
- Sort--冒泡排序
冒泡排序 public class BubbleSort { public static void bubblesort(int[] a){ for(int i=0;i<a.length-1;i ...
- 【数论】Baby Step Giant Step
被数论怒虐了一天 心力憔悴啊 感觉脑细胞已经快消耗殆尽了>_< 但是今天还是会了很多之前觉得特别神的东西 比如BSGS 之前听了两遍 好像都因为听得睡着了没听懂-.- 今天终于硬着头皮学会 ...
- 29个你必须知道的Linux命令
虽然Linux发行版支持各种各样的饿GUI(graphical user interfaces),但在某些情况下,Linux的命令行接口(bash)仍然是简单快速的.Bash和 Linux Shell ...
- [Objective-c 基础 - 2.3] 继承、组合
A.继承的实现: is a 1.不允许子类.父类存在相同的成员变量 2.方法调用优先原则:子类调用方法的时候,优先从本类寻找,若无则向上在父类中寻找 3.重写:子类重新实现父类的方法,覆盖父类之前的方 ...
- C/C++流程图生成器 C转流程图【worldsing笔记】
此版本仅供学习,请大家支持正版软件!! AutoFlowChart v3.1软件下载: http://url.cn/OUK17C 支持导出:word.visio.图片格式. 例如:main.c # ...
- UVA 705 Slash Maze
Slash Maze By filling a rectangle with slashes (/) and backslashes ( ), you can generate nice litt ...