firewalld 防火墙简单总结

    技术2024-01-26  120

    前言

    防火墙基于源 IP、目标端口和协议来过滤入站包。因为这种方式中,仅有几个 IP/端口/协议的组合与系统交互,而其它的方式做不到过滤。

    iptables 将包通过一系列的规则进行检查,如果包与特定的 IP/端口/协议的组合匹配,规则就会被应用到这个包上,以决定包是被通过、拒绝或丢弃。

    firewalld和iptables service 之间最本质的不同是:

    1、FirewallD 使用区域和服务而不是链式规则。 2、它动态管理规则集,允许更新规则而不破坏现有会话和连接。

    iptables在 /etc/sysconfig/iptables 中储存配置,而 firewalld将配置储存在 /usr/lib/firewalld/(不建议修改,后续升级会覆盖该区域) 和 /etc/firewalld/ (这些文件将会覆盖默认配置)中的各种XML文件里.

    iptables每一个单独更改意味着清除所有旧有的规则并/etc/sysconfig/iptables里读取所有新的规则,然而使用 firewalld却不会再创建任何新的规 则;仅仅运行规则中的不同之处。 因此,firewalld可以在运行时间内,改变设置而不丢失现行连接。

    二.操作与配置

    1.服务操作 启动服务:

    systemctl start firewalld

    这里不用担心启用了防火墙以后无法通过ssh远程,22端口默认加入了允许规则

    停止服务:

    systemctl stop firewalld

    重启服务:

    systemctl restart firewalld

    查看服务状态:

    systemctl status firewalld

    2.配置文件说明 firewalld 存放配置文件有两个目录,/usr/lib/firewalld 和 /etc/firewalld,前者存放了一些默认的文件,后者主要是存放用户自定义的数据,所以我们添加的service或者rule都在后者下面进行。

    server 文件夹存储服务数据,就是一组定义好的规则。

    zones 存储区域规则

    firewalld.conf 默认配置文件,可以设置默认使用的区域,默认区域为 public,对应 zones目录下的 public.xml

    三.命令

    这里需要首先说明的是,在执行命令时,如果没有带 --permanent 参数表示配置立即生效,但是不会对该配置进行存储,相当于重启服务器就会丢失。如果带上则会将配置存储到配置文件,,但是这种仅仅是将配置存储到文件,却并不会实时生效,需要执行 firewall-cmd --reload 命令重载配置才会生效。

    1.重载防火墙配置

    firewall-cmd --reload

    2.查看防火墙运行状态

    firewall-cmd --state

    3.查看默认区域的设置

    firewall-cmd --list-all

    4.应急命令

    firewall-cmd --panic-on # 拒绝所有流量,远程连接会立即断开,只有本地能登陆 firewall-cmd --panic-off # 取消应急模式,但需要重启firewalld后才可以远程ssh firewall-cmd --query-panic # 查看是否为应急模式

    5.服务

    firewall-cmd --add-service= #添加服务 firewall-cmd --remove-service= #移除服务

    6.端口

    firewall-cmd --add-port=/ #添加端口/协议(TCP/UDP) firewall-cmd --remove-port=/ #移除端口/协议(TCP/UDP) firewall-cmd --list-ports #查看开放的端口

    7.协议

    firewall-cmd --add-protocol= # 允许协议 (例:icmp,即允许ping) firewall-cmd --remove-protocol= # 取消协议 firewall-cmd --list-protocols # 查看允许的协议

    8.允许指定ip的所有流量

    firewall-cmd --add-rich-rule=“rule family=“ipv4” source address=”" accept"

    例:

    firewall-cmd --add-rich-rule=“rule family=“ipv4” source address=“192.168.2.1” accept” # 表示允许来自192.168.2.1的所有流量

    9.允许指定ip的指定协议

    firewall-cmd --add-rich-rule=“rule family=“ipv4” source address=”" protocol value="" accept"

    例:

    firewall-cmd --add-rich-rule=“rule family=“ipv4” source address=“192.168.2.208” protocol value=“icmp” accept” # 允许192.168.2.208主机的icmp协议,即允许192.168.2.208主机ping

    10.允许指定ip访问指定服务

    firewall-cmd --add-rich-rule=“rule family=“ipv4” source address=”" service name="" accept"

    例:

    firewall-cmd --add-rich-rule=“rule family=“ipv4” source address=“192.168.2.208” service name=“ssh” accept” # 允许192.168.2.208主机访问ssh服务

    11.允许指定ip访问指定端口

    firewall-cmd --add-rich-rule=“rule family=“ipv4” source address=”" port protocol="" port="" accept"

    例:

    firewall-cmd --add-rich-rule=“rule family=“ipv4” source address=“192.168.2.1” port protocol=“tcp” port=“22” accept” # 允许192.168.2.1主机访问22端口

    12.将指定ip改为网段

    8-11 的各个命令都支持 source address 设置为网段,即这个网段的ip都是适配这个规则:

    例如:

    firewall-cmd --zone=drop --add-rich-rule=“rule family=“ipv4” source address=“192.168.2.0/24” port protocol=“tcp” port=“22” accept” 表示允许192.168.2.0/24网段的主机访问22端口 。

    13.禁止指定ip/网段

    8-12 各个命令中,将 accept 设置为 reject表示拒绝,设置为 drop表示直接丢弃(会返回timeout连接超时)

    例如:

    firewall-cmd --zone=drop --add-rich-rule=“rule family=“ipv4” source address=“192.168.2.0/24” port protocol=“tcp” port=“22” reject” 表示禁止192.168.2.0/24网段的主机访问22端口 。

    Processed: 0.012, SQL: 9