iptables与firewalld防火墙

1. iptables
在早期的Linux系统中,默认使用的是iptables防火墙管理服务来配置防火墙。尽管新型的firewalld防火墙服务已经被投入到使用多年,但是大量的企业在生产环境中依然出于各种原因继续使用iptables。

  1. 策略与规则链
    防火墙会从上至下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作并去执行匹配项中定义的行为(即放行或阻止)。如果在读取完所有的策略规则之后没有匹配项,就去执行默认的策略。一般而言,防火墙策略规则的设置有两种:一种是“通”(即放行),一种是“堵”(即阻止)。当防火墙的默认策略为拒绝时(堵),就要设置允许规(通),否则谁都进不来;如果防火墙的默认策略为允许时,就要设置拒绝规则,否则谁都能进来,防火墙也就失去了防范的作用。iptables 服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则链,而规则链则依据数据包处理位置的不同进行分类,具体如下:
    在进行路由选择前处理数据包(PREROUTING)
    处理流入的数据包(INPUT)
    处理流出的数据包(OUTPUT)
    处理转发的数据包(FORWARD)
    在进行路由选择后处理数据包(POSTROUTING)
    一般来说,从内网向外发送的流量一般都是可控且良性的,因此我们使用最多的就是INPOUT规则链,该规则链可以增大黑客人员从外网入侵内网的难度。
    ACCEPT:允许流量通过
    DROP:拒绝流量通过(丢包状态,没有响应)
    REJECT:拒绝流量通过(不能进入内网,但是有回应)
    iptables 中基本的命令参数
    iptables与firewalld防火墙
  2. firewalld
    RHEL 7 系统中集成了多款防火墙管理工具,其中 firewalld(Dynamic Firewall Manager of Linux systems,Linux 系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有基于 CLI(命令行界面)和基于 GUI(图形用户界面)的两种管理方式。相较于传统的防火墙管理配置工具,firewalld 支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是 firewalld 预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。例如,我们有一台笔记本电脑,每天都要在办公室、咖啡厅和家里使用。按常理来讲,这三者的安全性按照由高到低的顺序来排列,应该是家庭、公司办公室、咖啡厅。当前,我们希望为这台笔记本电脑指定如下防火墙策略规则:在家中允许访问所有服务;在办公室内仅允许访问文件共享服务;在咖啡厅仅允许上网浏览。在以往,我们需要频繁地手动设置防火墙策略规则,而现在只需要预设好区域集合,然后只需轻点鼠标就可以自动切换了,从而极大地提升了防火墙策略的应用效率。firewalld 中常见的区域名称(默认为 public)以及相应的策略规则。
    iptables与firewalld防火墙firewall-cmd是firewalld防火墙配置管理工具的CLI(命令行界面),它的参数一般都是以“长格式”来提共的。
    iptables与firewalld防火墙 Linux 系统中其他的防火墙策略配置工具一样,使用 firewalld 配置的防火墙策略默认为运行时(Runtime)模式,又称为当前生效模式,而且随着系统的重启会失效。如果想让配置策略一直存在,就需要使用永(Permanent)模式了,方法就是在用 firewall-cmd 命令正常设置防火墙策略时添加–permanent 参数,这样配置的防火墙策略就可以永久生效了。但是,永久生效模式有一个“不近人情”的特点,就是使用它设置的策略只有在系统重启之后才能自动生效。如果想让配置的策略立即生效,需要手动执行 firewall-cmd --reload 命令。

流量转发命令格式为firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>。

  1. 图形管理工具
    firewall-config 命令就可以进入图形管理工具,但是在生成环境中尽量使用命令行工具。
    iptables与firewalld防火墙iptables与firewalld防火墙