您的位置:首页 > 运维架构 > Linux

iptables 总结

2016-07-22 02:26 281 查看
一、防火墙概念 防火墙,分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。 二、iptables 和netfilter 1. netfilter 内核中tcp/ip协议栈必须经过的地方,可以实现读取规则的地方就叫做 netfilter.(网络过滤器)位置: 1.内核空间中:从一个网络接口进来,到另一个网络接口去的 2.数据包从内核流入用户空间的 3.数据包从用户空间流出的 4.进入/离开本机的外网接口 5.进入/离开本机的内网接口 2.iptables的工作机制hook functions 钩子函数 1.PREROUTING (路由前) 2.INPUT (数据包流入口) 3.FORWARD (转发管卡) 4.OUTPUT(数据包出口) 5.POSTROUTING(路由后)报文流向: 到本机某进程的报文:PREROUTING --> INPUT 由本转发的报文:PREROUTING --> FORWARD -->POSTROUTING 由本某进程发出的:OUTPUT --> POSTROUTING 3.防火墙的策略 防火墙策略一般分为两种,一种叫“通”策略,一种叫“堵”策略,通策略,默认门是关着的,必须要定义谁能进。堵策略则是,大门是洞开的,但是你必须有身份认证,否则不能进。所以我们要定义,让进来的进来,让出去的出去,所以通,是要全通,而堵,则是要选择。当我们定义的策略的时候,要分别定义多条功能,其中:定义数据包中允许或者不允许的策略,filter过滤的功能,而定义地址转换的功能的则是nat选项。为了让这些功能交替工作,我们制定出了“表”这个定义,来定义、区分各种不同的工作功能和处理方式。 我们现在用的比较多个功能有4个: 1.filter 定义允许或者不允许的 2.nat 定义地址转换的 3.mangle功能:修改报文原数据 4.raw:关闭nat表上启用的连接追踪机制; 优先级次序(由高而低): raw -->mangle --> nat --> filter }小扩展: 对于filter来讲一般只能做在3个链上:INPUT ,FORWARD ,OUTPUT 对于nat来讲一般也只能做在3个链上:PREROUTING ,OUTPUT ,POSTROUTING 而mangle则是5个链都可以做:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING iptables/netfilter(这款软件)是工作在用户空间的,它可以让规则进行生效的,本身不是一种服务,而且规则是立即生效的。而我们iptables现在被做成了一个服务,可以进行启动,停止的。启动,则将规则直接生效,停止,则将规则撤销。 iptables还支持自己定义链。但是自己定义的链,必须是跟某种特定的链关联起来的。在一个关卡设定,指定当有数据的时候专门去找某个特定的链来处理,当那个链处理完之后,再返回。接着在特定的链中继续检查。 注意:规则的次序非常关键,谁的规则越严格,应该放的越靠前,而检查规则的时候,是按照从上往下的方式进行检查的。 三.规则的写法: iptables定义规则的方式比较复杂: 格式:iptables [-t table] COMMAND chainCRETIRIA -j ACTION -ttable :filter nat mangle raw COMMAND:定义如何对规则进行管理 chain:指定你接下来的规则到底是在哪个链上操作的,当定义策略的时候,是可以省略的 CRETIRIA:指定匹配标准 -jACTION :指定如何进行处理 比如:不允许172.16.0.0/24的进行访问。 iptables-t filter -A INPUT -s 172.16.0.0/16 -p udp --dport 53 -j DROP 当然你如果想拒绝的更彻底: iptables-t filter -R INPUT 1 -s 172.16.0.0/16 -p udp --dport 53 -j REJECT iptables-L -n -v(-nvL) #查看定义规则的详细信息 四:详解COMMAND: 1.链管理命令(这都是立即生效的) -P:policy,策略,定义默认策略; 一般有两种选择,ACCEPT和DROP 例如:iptables -P INPUT DROP -N:new,新建一条自定义的规则链;被内建链上的规则调用才能生效;[-j chain_name]; -X:drop,删除自定义的引用计数为0的空链; -F:flush,清空指定的链 2.规则管理命令 -A:追加,在当前链的最后新增一个规则 -I num : 插入,把当前规则插入为第几条。 -I 3 :插入为第三条 -R num:Replays替换/修改第几条规则 格式:iptables -R 3 ………… -D num:删除,明确指定删除第几条规则 3.查看管理命令 “-L” iptables-vnL 五:详解匹配标准 1.通用匹配:源地址目标地址的匹配 -s:指定作为源地址匹配,这里不能指定主机名称,必须是IP IP | IP/MASK| 0.0.0.0/0.0.0.0 而且地址可以取反,加一个“!”表示除了哪个IP之外 -d:表示匹配目标地址 -p:用于匹配协议的(这里的协议通常有3种,TCP/UDP/ICMP) -i eth0:从这块网卡流入的数据 流入一般用在INPUT和PREROUTING上 -o eth0:从这块网卡流出的数据 流出一般在OUTPUT和POSTROUTING上 2.扩展匹配2.1隐含扩展:对协议的扩展 -s|-d xxxx -p tcp|udp --syn|--sport|--dport 21-23 -p icmp --icmp-type 0|8(设置一下自己能ping通别人,别人ping不通自己) -i/o eth1 以上都支持取反 2.2显式扩展(-m) 扩展各种模块 -m multiport:表示启用多端口扩展 之后我们就可以启用比如 --dports 21,23,80 六:详解-j ACTION DROP:悄悄丢弃 REJECT:明示拒绝 ACCEPT:接受
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux