Firewalld基本使用方法

firewall常规操作

firewall-cmd --state        ##查看防火墙的状态
firewall-cmd --list-service                     # 查看开放的服务
firewall-cmd --get-service                      # 查看全部支持的服务
firewall-cmd --zone=public --list-ports         # 查看开放的端口

firewall-cmd --reload       ##重载防火墙规则,不会中断连接,清除临时配置,加载配置文件中的永久配置
firewall-cmd --complete-reload ##重载防火墙,中断用户的连接(清除规则,重建规则,在更新之前首先会将策略设置为DROP,等更新完成之后再恢复为ACCEPT)
firewall-cmd --panic-on     ##紧急模式,强制关闭所有网络连接,--panic-off是关闭紧急模式
firewall-cmd --query-panic       # 查看是否为应急模式

firewall-cmd --get-active-zones                 # 查看激活的域
firewall-cmd --zone=public --list-rich-rules    # 查看添加的规则
firewall-cmd --set-default-zone=work ##更改默认的区域,

firewalld的区域zone介绍(默认共有9个)

#不同的区域之间的差异是其对待数据包的默认行为不同,firewalld的默认区域为public;
    public(公开)
    block(拒绝)
    dmz(非军事化)
    drop(丢弃)
    external(外部)
    home(家庭)
    internal(内部)
    trusted(信任)
    work(工作区)

firewalld判断次序

#对于一个接收到的请求具体使用哪个zone,firewalld是通过三种方式来判断的:
    1、source,来源地址
    2、Interface,接收请求的网卡
    3、firewalld配置的默认区域(zone)
这三个方式的优先级按顺序依次降低,也就是说如果按照source可以找到就不会再按interface去找,如果前两个都找不到才会使用第三个默认区域。

#查询drop区域是否允许请求ssh和https服务的流量
    firewall-cmd --zone=drop --query-service=ssh
    firewall-cmd --zone=drop --query-service=https

配置文件介绍

#对端口的操作,如开放端口等信息,所以直接修改此文件也是可以的
    /etc/firewalld/zones/public.xml

#配置文件结构(非常简单,主要有两个文件和三个目录)
    文件:firewalld.conf、lockdown-whitelist.xml
    目录:zones、services、icmptypes

#修改firewalld配置文件的方法(主要是三种)
    1、firewall-config:是图形化工具
    2、firewall-cmd: 命令行工具
    3、直接编辑xml文件

动作中查看操作:

--get-icmptypes ##查看支持的所有ICMP类型
--get-zones ##查看所有区域
--get-default-zone ##查看当前的默认区域
--get-active-zones ##查看当前正在使用的区域
--get-services ##查看当前区域支持的服务
--list-services ##查看当前区域开放的服务列表
--list-all ##查看此区域内的所有配置,类似与iptables -L -n

新建--add或删除--remove规则:

--add-interface=eth0 ##将网络接口添加到默认的区域内
--add-port=12222/tcp --permanent ##添加端口到区域开放列表中
--add-port=5000-10000/tcp --permanent ##将端口范围添加到开放列表中;
--add-service=ftp --permanent ##添加服务到区域开放列表中(注意服务的名称需要与此区域支持的服务列表中的名称一致)
--add-source=192.168.1.1 ##添加源地址的流量到指定区域
--remove-source=192.168.1.1 ##删除源地址的流量到指定区域
--change-interface=eth1 ##改变指定的接口到其他区域
--remove-service=http ##在home区域内将http服务删除在开放列表中删除
--add-masquerade ##开启SNAT(源地址转换)
--query-masquerade ##查询SNAT的状态
--remove-interface=eth0 ##将网络接口在默认的区域内删除
--query-interface=eth0 ##确定该网卡接口是否存在于此区域
--add-forward-port=port=513:proto=tcp:toport=22:toaddr=192.168.100.101 ##端口转发

Rich(富)规则:

当基本firewalld语法规则不能满足要求时,可以使用以下更复杂的规则
.rich-rules 富规则,功能强,表达性语言,查看帮助:man 5 firewalld.richlanguage
.rich规则比基本的firewalld语法实现更强的功能,不仅实现允许/拒绝,还可以实现日志syslog和auditd,也可以实现端口转发,伪装和限制速率
rich规则实施顺序有以下四点
    a.该区域的端口转发,伪造规则
    b.该区域的日志规则
    c.该区域的允许规则
    d.该区域的拒绝规则
每个匹配的规则都生效,所有规则都不匹配,该区域默认规则生效;

Rich规则选项:

--add-rich-rule=’rule’ ##新建rich规则
--remove-rich-rule=’rule’ ##删除rich规则
--query-rich-rule=’rule’ ##查看单条rich规则
--list-rich-rules ##查看rich规则列表

实例

# 开放单个端口(--permanent 表示永久生效,没有此参数重启后失效)
    firewall-cmd --zone=public --add-port=80/tcp --permanent

# 开放端口范围
    firewall-cmd --zone=public --add-port=8388-8389/tcp --permanent

# 添加服务,添加https
    firewall-cmd --add-service=https --permanent

# 移除端口
    firewall-cmd --zone=public --remove-port=80/tcp --permanent

Rich规则示例:
#拒绝从192.168.0.11的所有流量
    firewall-cmd --permanent --zone=cla***oom --add-rich-rule=‘rule family=ipv4 source address=192.168.0.11/32 reject‘
#限制每分钟只有两个连接到ftp服务
    firewall-cmd --add-rich-rule=’rule service name=ftp limitvalue=2/m accept’
#抛弃esp协议的所有数据包
    firewall-cmd --permanent --add-rich-rule=‘rule protocol value=esp drop‘
#接受所有192.168.1.0/24子网端口范置7900-7905的TCP流量
    firewall-cmd --permanent --zone=vnc --add-rich-rule=‘rule family=ipv4 source address=192.168.1.0/24 port port=7900-7905 protocol=tcp accept‘
##开启SNAT
    firewall-cmd --permanent --add-rich-rule=‘rule family=ipv4 source address=192.168.0.0/24 masquerade‘
##使用rule规则实现端口转发,to-addr选项如果不指定默认转发到本机
    firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.100.0/24 forward-port port=80 protocol=tcp to-port=8080 to-addr=192.168.100.100'

# 对 147.152.139.197 开放TCP 10000端口
firewall-cmd --permanent --zone=public --add-rich-rule='
        rule family="ipv4"
        source address="147.152.139.197/32"
        port protocol="tcp" port="10000" accept'       

# 拒绝47.52.39.197 的TCP 10001端口:
firewall-cmd --permanent --zone=public --add-rich-rule='
              rule family="ipv4"
              source address="47.52.39.197/32"
              port protocol="tcp" port="10001" reject'  

# 对192.168.0.1 这个IP全部放行
firewall-cmd --permanent --zone=public --add-rich-rule='
              rule family="ipv4"
              source address="192.168.0.1/32" accept';

# 开放所有权限给192.168.0.0/16 这个网段儿的主机
firewall-cmd --permanent --zone=public --add-rich-rule='
              rule family="ipv4"
              source address="192.168.0.0/16" accept';

#将原本访问本机888端口的流量转发到本机22端口
    firewall-cmd --zone=drop --add-forward-port=port=888:proto=tcp:toport=22

#将原本访问本机888端口的流量转发到ip为192.168.2.208的主机的22端口,需要开启masquerade
    firewall-cmd --zone=drop --add-masquerade
    firewall-cmd --zone=drop --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.2.208

#伪装,将来自局域网192.168.2.0/24网段访问外网的流量映射为网络出口公网IP,即修改源IP地址
    firewall-cmd --zone=drop --add-masquerade
    firewall-cmd --zone=drop --add-rich-rule="rule family=ipv4 source address=192.168.2.0/24 masquerade"
声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/478.html
谢谢你请我吃辣条谢谢你请我吃辣条

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2022/12/3作者: 辣条①号

现在在做什么? 接下来打算做什么? 你的目标什么? 期限还有多少? 进度如何? 不负遇见,不谈亏欠!

暂无评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???

文章目录