如何理解Linux的iptables
如何理解Linux的iptables,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
所谓防火墙,实质上是指由软硬件组合成的一个在内外网之间构造的一种保护屏障,它是一种隔离技术。因此从物理上区分,可以分为软件和硬件防火墙,从逻辑上区分,可以分为主机和网络防火墙,而我们现在要讲到的iptables,是属于防火墙中的软件防火墙的范畴,但它只是一个命令行工具或者说是一种客户端代理,并不是真正的防火墙,用户通过这个代理,把安全设定执行到真正的防火墙框架中,这个框架叫做Netfilter |
原理
Netfilter是Linux中的一个子项目,它的主要功能是进行数据包过滤、连接跟踪、地址转换等,而iptables则是netfilter提供的对用户数据包进行过滤、修改等操作的一种命令行工具,当数据包通过网卡进入进入内核时,它得先经过iptables的五条链,这些链都有相应的处理数据包的规则,而我们正是通过在这些链上设置规则来控制管理数据包,从而达到防火墙的功能。每当数据包到达一个链时,iptables就会从链中的所有规则逐一开始校验该数据包是否符合规则中限定的条件。若满足,系统就会根据每个规则定义的方法来处理该数据包;若不满足,iptables则继续检查下一条规则,如果该数据包不符合链中的任意规则,iptables则会该链的默认策略去处理该数据包。
四个表
iptables的结构是由tables组成,而tables是由链组成,链又是由具体的规则组成。因此我们在编写iptables的规则时,通过要先指定表,再指定链。tables的作用是区分不同功能的规则,并且存储这些规则。
tables的类型分别有:
五条链
链,也称为钩子函数,它是一系列规则的一个组合,当数据包经过这些狗子函数时,她必须完全匹配每一个钩子函数中的所有规则,方能进入下一个钩子函数。
钩子函数的类型分别有:
语法规则
语法:iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转]
1)常用的命令选项:
-t:指定要操纵的表(四个表);-A:向规则链中添加条目;-D:从规则链中删除条目;-i:向规则链中插入条目;-R:替换规则链中的条目;-L:显示规则链中已有的条目;-F:清楚规则链中已有的条目;-Z:清空规则链中的数据包计算器和字节计数器;-N:创建新的用户自定义规则链;-P:定义规则链中的默认目标;-h:显示帮助信息;-p:指定要匹配的数据包协议类型;-s:指定要匹配的数据包源
2)常用的处理动作:
ACCEPT:允许数据包通过DROP:直接丢弃数据包,不给任何回应信息REJECT: 拒绝数据包通过,必要时会给数据发送端一个响应的信息。LOG:在/var/log/messages文件中记录日志然后将数据包传递给下一条规则REDIRECT: 端口映射。SNAT :源地址转换,修改包来源IP为某IP或IP范围,做内网和公网之间的转换。DNAT::目标地址转换。 修改数据包目的地IP为某 Ip 或 IP 范围。
3)常用的条件匹配:
1、状态匹配:-m state --state 连接状态NEW:与任何连接无关的ESTABLISHED:响应请求或已建立连接的RELATED:与已有连接有相关性的,如FTP数据连接2、MAC地址匹配:-m mac --mac-source MAC地址eg:iptables -A INPUT -m mac --mac-source f0:1b:12:12:22:4f -j DROP3、IP范围匹配:-m iprange --class="lazy" data-src-range IP范围eg:iptables -A FORWARD -p tcp -m iprange --class="lazy" data-src-range 192.168.0.1-192.168.0.10 -j ACCEPT4、多端口匹配:-m multiport --sports 源端口列表 和 -m multiport --sports 目的端口列表eg:iptables -A INPUT -p tcp -m multiport --dport 11,29,116,121 -j ACCEPT
4)常用的一些iptables策略:
1、拒绝转发来自192.168.2.33主机的数据iptables -A FORWARD -s 192.168.2.33 -j REJECT2、允许转发来自192.168.2.1/99网段的数据iptables -A FORWARD -s 192.168.2.1/99 -j ACCEPT3、允许本机开放从TCP端口20-1024提供的应用服务。iptables -A INPUT -p tcp --dport 20:1024 -j ACCEPTiptables -A OUTPUT -p tcp --sport 20:1024 -j ACCEPT4、只允许管理员从202.13.0.0/16网段使用SSH远程登录防火墙主机。iptables -A INPUT -p tcp --dport 22 -s 202.13.0.0/16 -j ACCEPTiptables -A INPUT -p tcp --dport 22 -j DROP5、 允许转发来自192.168.0.0/24局域网段的DNS解析请求数据包。iptables -A FORWARD -s 192.168.0.0/24 -p udp --dport 53 -j ACCEPTiptables -A FORWARD -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT6、屏蔽ip 110.1.1.1的访问iptables -I INPUT -s 110.1.1.1 -j DROP7、屏蔽从123.0.0.1到123.255.255.254iptables -I INPUT -s 123.0.0.0/8 -j DROP8、屏蔽从从123.45.0.1到123.45.255.254iptables -I INPUT -s 124.45.0.0/16 -j DROP9、屏蔽从从123.45.6.1到123.45.6.254iptables -I INPUT -s 123.45.6.0/24 -j DROP10、允许所有本机向外的访问iptables -A OUTPUT -j ACCEPT11、允许访问22端口iptables -A INPUT -p tcp --dport 22 -j ACCEPT
5)常用的iptables命令:
1、查看当前 IPTABLES 规则service iptables status2、 将所有iptables以序号标记显示iptables -L -n --line-numbers3、 比如要删除INPUT里序号为22的规则iptables -D INPUT 22
看完上述内容,你们掌握如何理解Linux的iptables的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341