防火墙 iptables
防火墙分类
- 包过滤防火墙(packet filter)
- 应用层网关代理(Application level Gateway)
- 状态防火墙(stateful firewall)
包过滤防火墙和状态防火墙区别:
- 包过滤防火墙:静态防火墙,通过IP数据报头部的五元素(地址、协议、端口)过滤数据,因为五元素在会话中不变,故称其为静态。
优点是规则简单,易实现,处理速度快。缺点是难以应对ip碎片攻击,不支持复杂协议,不能防止对应用层的攻击,无法应对nmap -sA扫描。
- 状态防火墙: 动态包过滤防火墙, 收到连接请求时建立一张存储连接信息的表,基于这个表对出入数据进行管理,如iptables防护墙。同一会话,虽然五元组不变,但是状态标识是变化的,所以称之为动态。可设置白名单和黑名单。缺点是消耗资源。
iptables防火墙简介
状态防火墙,linux的防火墙由netfilter和iptables组成,2.4内核以后,用户空间的iptables制定规则,内核空间的netfilter实现防火墙功能。
需要root权限
防火墙规则通常有两种基本策略。一是黑名单策略;二是白名单策略。
- 黑名单策略指没有被拒绝的流量都可以通过,这种策略下管理员必须针对每一种新出现的攻击,制定新的规则,因此不推荐。
- 白名单策略指没有被允许的流量都要拒绝,这种策略比较保守,根据需要,逐渐开放,目前一般都采用白名单策略,推荐。
iptables的结构
总体上是四表五链结构,每张表有几种内置链。Iptables的底层就是利用Netfilter的hook技术设置条件,而“链”则表示利用hook设置条件的位置,比如发包前,收包前,转发前等等。
iptables命令
iptables [ -t 表名 ] 管理选项 [ 链名 ] [ 条件匹配 ] [ -j 目标动作或跳转 ]
- 选表,表决定数据报文处理的方式,不指定表名时,默认表示filter表
- 选链,链决定数据报文流经的位置,不指定链名时,默认表示该表内所有链
- 选条件,条件决定对数据报文做何种匹配
- 选择处理数据报文的动作,制定相应的防火墙规则
- -A,Append one or more rules to the end of the selected chain.
- -D,Delete one or more rules from the selected chain.
- -l ,Insert one or more rules in the selected chain as the given rule number.
- -R,Replace a rule in the selected chain.
- -P 制定policy(ACCEPT, DROP)
- -F,Flush the selected chain ,清空链
- -L,List all rules in the selected chain.
例1 查看已设置的规则
例2 只能发包,不能收包
例3 只接收icmp echo reply的包
例4:根据连接状态表选择接收的包,即拒绝新的连接请求和无效链接,只接收已建立连接的相关请求
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
参考
https://www.cnblogs.com/frankb/p/7427944.html
《TCP/IP详解》
《UNIX网络编程》