iptables详解--转
副标题[/!--empirenews.page--]
出处:http://yijiu.blog.51cto.com/433846/1356254 iptables详解 基本概念: 1.防火墙工作在主机边缘:对于进出本网络或者本主机的数据报文,根据事先设定好的检查规则对其检查,对形迹可疑的报文一律按照事先定义好的处理机制做出相应处理 对linux而言tcp/ip协议栈是在内核当中,意味着报文的处理是在内核中处理的,也就是说防火墙必须在工作在内核中,防火墙必须在内核中完成tcp/ip报文所流进的位置,用规则去检查,才真正能工作起来。 iptables用来衡量tcp/ip报文的属性:源ip、目标ip、源端口、目标端口; tcp标志位: ? syn、syn+ack、ack、 fin、urg、psh、rst ; 2.应用网关 众多代理服务器都是应用网关,比如squid(使用acl限制应用层)varish这一类代理服务等。 3,入侵检测系统(IDS): ·网络入侵检测系统 ?NIDS ·主机入侵检测系统 ?HIDS 对于IDS常用的检测服务有:snort等 4.入侵防御系统(IPS),比如蜜罐 部署一套入侵检测系统是非常麻烦的,因为必须检测网络任意一个位置 对于IPS常用的检测服务有: tripwire 等 iptables基本概念 对linux来说,是能够实现主机防火墙的功能组件,如果部署在网络边缘,那么既可以扮演网络防火墙的角色,而且是纯软件的 网络数据走向: 请求报文à网关à路由à应用程序(等待用户请求)à内核处理à路由à发送报文 iptables规则功能 表: filter主要和主机自身有关,主要负责防火墙功能 过滤本机流入流出的数据包是默认使用的表; input ? :负责过滤所有目标地址是本机地址的数据包,就是过滤进入主机的数据包; forward ?:负责转发流经主机但不进入本机的数据包,和NAT关系很大; output ? :负责处理源地址的数据包,就是对本机发出的数据包; NAT表: 负责网络地址转换,即来源于目的IP地址和端口的转换,一般用于共享上网或特殊端口的转换服务 snat ? ?:地址转换 dnat ? ?:标地址转换 pnat ? ?:标端口转换 mangle?表: 将报文拆开来并修改报文标志位,最后封装起来 5个检查点(内置链) ·PREROUTING ·INPUT ·FORWORD ·OUTPUT ·POSTROUTING ? ? 多条链整合起来叫做表,比如,在input这个链,既有magle的规则也可能有fileter的规则。因此在编写规则的时候应该先指定表,再指定链 netfilter主要工作在tcp/ip协议栈上的,主要集中在tcp报文首部和udp报文首部 规则的属性定义: 1.网络层协议 主要集中在ip协议报文上 2.传输层协议属性: 主要集中在 tcp udp icmp ?icmp其并不是真正意义传输层的,而是工作在网络层和传输层之间的一种特殊的协议 3.ip报文的属性: IP报文的属性为:?源地址.目标地址 4.iptables规则匹配 iptables如何查看表和链 大写字母选项:可以实现某种功能,比如添加删除清空规则链; 小写字母选项:用来匹配及其他; -L?:list 列表 ? ? -n :数字格式显示ip和端口; ? ? --line-numbers:显示行号; ? ? -x?: 显示精确值,不要做单位换算; -t : ?指定表 ? ? ?-t{fillter|nat|mangle|raw} -v?: 显示详细信息 -v -vvv -vvvv ..可以显示更详细的信息 5.其他子命令: 管理链: -F?:清空链 清空nat表中的input链,格式如下: #iptables-t nat -F INPUT #清空fllter表所有链: #iptables-F -P :?设定默认策略,为指定链设置默认策略,格式如下: #设置fllter表input链的默认规则为丢弃 iptables-t fllter -P INPUT DROP -N?: 新建一条自定义链(内置链不能删除,如果太多,可以自定义链) #自定义连只能被调用才可以发挥作用 iptables-N fillter_web -X :?删除自定义空链,如果链内有规则,则无法删除 -Z?:计算器清零 iptables-Z -E?:重命名自定义链 iptables管理规则: -A ??:append附加规则,将新增的规则添加到链的尾部 -I[n]?:插入为第n条规则 -D ? :?删除第n条规则 -R[n] :?替换第N条 表和链的对应关系: fillter?:INPUT FORWORD OUTPUT nat : PREROUTING POSTROUTING ?OUTPUT 使用-t指定表来查看指定表内的规则: #iptables-t nat -L -n raw : prerouting output iptables-t raw -L -n mangle: prerouting input forword output postrouting iptables-t mangle -L -n #查看规则 [root@test3~]# iptables -L -nChain INPUT (policy ACCEPT)target ? ? prot opt source ? ? ? ? ? ? ?destination ? ? ? ?Chain FORWARD (policy ACCEPT)target ? ? prot optsource ? ? ? ? ? ? ?destination ? ? ? ?Chain OUTPUT (policy ACCEPT)target ? ? prot optsource ? ? ? ? ? ? ?destination ? 通过以上可以观察到,每一个链都有默认策略:policy ACCEPT 通常只需要修改fllter表的默认策略即可,由此如果有报文请求来访问本机的某个服务,那么则会经过input链,因此进来的报文都是需要做过滤的,那么出去的报文则不需要过滤,在有些特定的场所下也需要做过滤 所以写规则的时候必须放将规则写在正确链上,意义非常重大 规则和默认策略都有2个计数器,通过-v选项可以观察规则的匹配情况 #iptables -t nat -L -n -v [root@sshgw~]# iptables -L -n -v ChainINPUT (policy ACCEPT 7 packets,975 bytes) pkts bytestarget ? ? prot opt in ? ? out ? ?source ? ? ? ? ? ? ?destination ? ? ? ? ? ?0 ? ?0 ACCEPT ? ? all ?-- ?lo ? ? * ? ? ?0.0.0.0/0 ? ? ? ? ? 0.0.0.0/0 ? ? ? ? ? ? ?0 ? ?0 DROP ? ? ? all ?-- eth2 ? * ? ? ? 101.61.0.0/10 ? ? ? ?0.0.0.0/0 ? ? ? ? ? ? ?0 ? ?0 DROP ? ? ? all ?-- eth2 ? * ? ? ? 127.0.0.0/8 ? ? ? ? ?0.0.0.0/0 ? ? ? ? ? ? ?0 ? ?0 DROP ? ? ? all ?-- eth2 ? * ? ? ? 162.254.0.0/16 ? ? ? 0.0.0.0/0 ? ? ? ? ? ? ?0 ? ?0 DROP ? ? ? all ?-- eth2 ? * ? ? ? 192.0.0.0/24 ? ? ? ? 0.0.0.0/0 ? ? ? ? ? ? ?0 ? ?0 DROP ? ? ? all ?-- eth2 ? * ? ? ? 192.0.2.0/24 ? ? ? ? 0.0.0.0/0 ? ? ? ? ? ? ?0 ? ?0 DROP ? ? ? all ?-- eth2 ? * ? ? ? 197.18.0.0/15 ? ? ? ?0.0.0.0/0 ? ? ? ? ? ? ?0 ? ?0 DROP ? ? ? all ?-- ?eth2 ?* ? ? ? 197.51.100.0/24 ? ? ?0.0.0.0/0 ? ? ? ? ? ? ?0 ? ?0 DROP ? ? ? all ?-- eth2 ? * ? ? ? 203.0.111.0/24 ? ? ? 0.0.0.0/0 ? ? ? ? ? ? ?0 ? ?0 DROP ? ? ? all ?-- eth2 ? * ? ? ? 224.0.0.0/4 ? ? ? ? ?0.0.0.0/0 ? ? ? ? ? ? ?0 ? ?0 DROP ? ? ? all -- ?eth2 ? * ? ? ?240.0.0.0/4 ? ? ? ? 0.0.0.0/0 ? ? ? ? ? 776 37056?REFRESH_TEMP ?all -- ?* ? ? ?* ? ? ?0.0.0.0/0 ? ? ? ? ? 0.0.0.0/0 ? ? ? ? ? 编写规则语法: iptables [-t?表] 大写选项子命令 [规则号] 链名 匹配标准 -j 目标(规则) 目标: DROP ? : ??丢弃 REJECT : ??拒绝 ACCEPT : ??接受 RETURN?: ?返回主链继续匹配 REDIRECT: ?端口重定向 MASQUERADE :地址伪装 DNAT : ? ?目标地址转换 SNAT?:源地址转换MARK :打标签 LOG ? 自定义链 匹配标准 iptables的匹配标准大致分为两类: 1.通用匹配 -s | --src | --source [!] IP/NETWORK -d ------------------------ -i :指定数据报文流入接口 ?input prerouting forward -o :指定数据报文流出接口 ?output postrouting forward -p :明确说明只放行哪种协议的报文匹配规则 以当前主机为例: 凡是来自于某个ip段的网络访问本机 [root@test3xtables-1.4.7]# iptables -A INPUT -s 10.0.10.0/24 -d 10.0.10.0/24 -j ACCEPT[root@test3 xtables-1.4.7]# iptables -L -n -v ChainINPUT (policy ACCEPT 10 packets,1029 bytes) pkts?bytestarget ? ?prot opt ?in ? ?out ? ? ?source ? ? ? ? ? ? ? ?destination (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |