首页 > 系统相关 >Linux firewalld防火墙学习总结

Linux firewalld防火墙学习总结

时间:2024-08-27 21:49:50浏览次数:9  
标签:zone -- cmd 防火墙 firewalld firewall 区域 permanent Linux

实践环境

CentOS-7-x86_64-DVD-2009

简介

Firewalld是一种简单的、有状态的、基于区域(zone-based)的防火墙。策略和区域用于组织防火墙规则。网络在逻辑上被划分为多个区域,它们之间的流量可以通过策略进行管理。

查看防火墙状态

# service firewalld status

或者

# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

说明:如果输出显示 Active: inactive (dead),则表示未开启防火墙。 如果现实Active: active (running)则表示开启了防火墙。

或者

# firewall-cmd --state
not running

开启防火墙

# service firewalld start

或者

# systemctl start firewalld

重启防火墙

# service firewalld restart

或者

# systemctl restart firewalld

设置防火墙开机自启

# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.

禁用防火墙开机自启

# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

查看预定义区域

# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
# #查看每个区域的详细信息
# firewall-cmd --list-all-zones

区域简介:

区域 默认规则
block 拒绝流入的流量,除非与流出的流量相关
dmz 拒绝流入的流量,除非与流出的流量相关;如果流量与ssh服务相关,则允许流量
drop 拒绝流入的流量,除非与流出的流量相关
external 拒绝流入的流量;除非与流出的流量相关;如果流量与ssh服务相关,则允许流量
home 拒绝流入的流量;除非与流出的流量相关;如果流量与ssh,mdns,ipp-client,amba-client,dhcpv6-client服务相关,则允许流量
internal 等同于home区域
public 拒绝流入的流量;除非与流出的流量相关;如果流量与ssh,dhcpv6-client服务相关,则允许流量
trusted 允许所有的数据包流入与流出
work 拒绝流入的流量;除非与流出的流量相关;如果流量与ssh,ipp-client,dhcpv6-client服务相关,则允许流量

创建自定义区域

# firewall-cmd --permanent --new-zone=testing
success

注意:--permanent选项不能少

查看默认区域

# firewall-cmd --get-default-zone
public

查看网卡关联的区域

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:12:86:da brd ff:ff:ff:ff:ff:ff
    inet 192.168.206.102/24 brd 192.168.206.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe12:86da/64 scope link 
       valid_lft forever preferred_lft forever
# firewall-cmd --get-zone-of-interface=ens33
public

注意:一张网卡只能关联一个区域

修改默认区域

例子:

# #修改默认区域为`trusted`
# firewall-cmd --set-default-zone=trusted 
success
# firewall-cmd --get-default-zone 
trusted
# firewall-cmd --get-zone-of-interface=ens33
trusted
# #还原
# firewall-cmd --set-default-zone=public 
success
# firewall-cmd --get-default-zone 
public
# firewall-cmd --get-zone-of-interface=ens33
public

修改网卡关联的区域

方法1:先删除现有关联区域,再添加目标关联区域(因为同一时间,一张网卡只能关联一个区域,所以要先添加再删除)

# firewall-cmd --remove-interface=ens33 --zone=public
success
# firewall-cmd --get-zone-of-interface=ens33
no zone
## 设置ens33关联区域为trusted
# firewall-cmd --add-interface=ens33 --zone=trusted
success
# firewall-cmd --get-zone-of-interface=ens33
trusted

方法2:

## 设置ens33关联区域为public
# firewall-cmd --change-interface=ens33 --zone=public
success
# firewall-cmd --get-zone-of-interface=ens33
public

打印当前活动区域及绑定的接口和源

firewall-cmd --get-active-zones

打印当前活动区域以及这些区域中使用的接口和源。活动区域是与接口或源绑定的区域。输出格式为:

zone1
  interfaces: interface1 interface2 ..
  sources: source1 ..
zone2
  interfaces: interface3 ..
zone3
  sources: source2 ..
如果没有接口和源绑定到区域,则忽略该对应区域行

例子:

# firewall-cmd --get-active-zones
public
  interfaces: ens33

端口访问限制

查看已开放端口

firewall-cmd  [--permanent] [--zone=zone] --list-ports

以空格分隔的列表形式列出为区域添加的端口。端口的形式为portid[-portid]/protocol,它可以是端口和协议对,也可以是具有协议的端口范围。如果忽略--zone选项配置,将使用默认区域。

添加开放端口

firewall-cmd [--permanent] [--zone=zone] --add-port=portid[-portid]/protocol [--timeout=timeval]     

zone(区域)添加端口。如果省略了--zone选项配置,将使用默认区域。此选项可以多次指定。如果提供了--timeout,则该规则将在指定的超时时间内处于活动状态,超时之后将自动删除。timeval是一个数字(秒)或数字后跟一个字符s(秒)、m(分钟)、h(小时),例如20m或1h。
端口可以是单个端口号,也可以是端口范围portid-portid。协议可以是tcpudpsctpdccp
--timeout选项不能与--permanent选项组合使用。

取消开放端口

firewall-cmd [--permanent] [--zone=zone] --remove-port=portid[-portid]/protocol

从区域中删除端口。如果省略了--zone选项配置,将使用默认区域。此选项可以多次指定。
--permanent 可用于持久设置选项。这些更改不会立即生效,只有在重新启动/重新加载服务或系统重新启动后才会生效。如果未使用--permanent,则更改将仅是运行时配置的一部分(所做的变更在重启服务、重新加载服务后失效),下同,不再赘述。

例子

例子:为public区域持久开放 tcp协议端口 15672

# firewall-cmd --permanent --add-port=15672/tcp
# firewall-cmd --list-ports # 查不到端口
# #让配置生效
# firewall-cmd --reload
success
# firewall-cmd --list-ports
15672/tcp

说明:

  1. firewall-cmd --reload

    重新加载防火墙规则并保留状态信息。当前的持久配置将成为新的运行时配置,也就说执行的所有仅运行时变更在重新加载规则后丢失。类似的,有以下命令

  2. firewall-cmd --complete-reload

    完全重新加载防火墙,甚至netfilter内核模块。这很可能会终止活动连接,因为状态信息会丢失。此选项仅用于严重的防火墙问题。例如,防火墙规则正确的情况下,无法建立连接的状态信息问题

例子:为public区域持久开放 tcp协议端口范围 1000-2000(包括1000及2000)

# firewall-cmd --permanent --add-port=1000-2000/tcp
success
# firewall-cmd --reload
success
# firewall-cmd --list-ports
15672/tcp 1000-2000/tcp

例子:为public区域持久取消开放 tcp协议端口 15672

# firewall-cmd --permanent --remove-port=15672/tcp
success
# firewall-cmd --reload
success
# firewall-cmd --list-ports
1000-2000/tcp

例子:为public区域持久取消开放tcp协议端口范围 1000-2000(包括1000及2000)

]# firewall-cmd --permanent --remove-port=1000-2000/tcp
success
# firewall-cmd --reload
success
# firewall-cmd --list-ports

# 

IP、网络访问限制

添加开放源

firewall-cmd [--permanent] [--zone=zone] --add-source=source[/mask]|MAC|ipset:ipset

绑定源(source,IP、网络、MAC、IP集)到区域zone。如果省略了--zone选项配置,将使用默认区域。

取消开放源

firewall-cmd [--permanent] --remove-source=source[/mask]|MAC|ipset:ipset

从区域zone删除之前添加绑定的源

例子

例子:允许IP 192.168.50.182持久访问为public区域

# firewall-cmd --permanent --add-source=192.168.50.182
success
# firewall-cmd --reload
success

说明:添加IP白名单后,即使未添加开放端口,针对当前IP,也可以正常访问。

例子:允许子网192.168.50.0/24持久访问为public区域

# firewall-cmd --permanent --add-source=192.168.50.0/24
success
# firewall-cmd --reload
success

例子:取消IP 192.168.50.182对public区域的持久访问许可

# firewall-cmd --permanent --remove-source=192.168.50.182
success
# firewall-cmd --reload
success

富语言规则

列出富语言规则

firewall-cmd [--permanent] [--zone=zone] --list-rich-rules

以换行符分隔的列表形式列出为区域添加的富语言规则。如果省略了--zone选项,将使用默认区域。

添加富语言规则

firewall-cmd [--permanent] [--zone=zone] --add-rich-rule='rule' [--timeout=timeval]

为区域添加富语言规则'rule'。此选项可以多次指定。如果省略了区域,将使用默认区域。如果提供了--timeout,则该规则将在指定的超时时间内处于活动状态,超时之后将自动删除。timeval是一个数字(秒)或数字后跟一个字符s(秒)、m(分钟)、h(小时),例如20m或1h。

--timeout选项不能与--permanent选项组合使用。

删除富语言规则

firewall-cmd  [--permanent] [--zone=zone] --remove-rich-rule='rule'

从区域中删除富语言规则'rule'。此选项可以多次指定。如果省略了区域,将使用默认区域。

查询富语言规则

firewall-cmd  [--permanent] [--zone=zone] --query-rich-rule='rule'

返回是否为区域添加了富语言规则'rule'。如果省略了--zone,将使用默认区域。如果为真,则返回0,否则返回1。

例子

例子:允许 IP 192.168.50.182 持久访问public区域tcp协议端口15672

# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.50.182" port protocol="tcp" port="15672" accept'
# firewall-cmd --reload

例子:取消 IP 192.168.50.182 持久访问public区域tcp协议端口15672的许可

# firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.50.182" port protocol="tcp" port="15672" accept'
success
# firewall-cmd --reload

例子:禁止 IP 192.168.50.182 持久访问public区域

# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.50.182" reject'
# firewall-cmd --reload

注意:添加访问限制前,建议先移除之前的访问许可配置,否则可能导致当前规则不起作用。此外,这里的reject也可以替换为drop,即直接丢弃来访请求数据包。

例子:取消禁止 IP 192.168.50.182 持久访问public区域限制

# firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.50.182" reject'
# firewall-cmd --reload

例子:查看当前配置的富语言规则

# firewall-cmd --list-rich-rules
rule family="ipv4" source address="192.168.50.182" reject

列出为区域启用或添加的所有内容

firewall-cmd[--permanent] [--zone=zone] --list-all

列出为区域添加或启用的所有内容。如果省略了--zone选项配置,则将使用默认区域。

例子:

# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: dhcpv6-client ssh
  ports: 15672/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

保存当前运行时配置为持久配置

# firewall-cmd --runtime-to-permanent

保存活动运行时配置并用它覆盖持久配置。

参考链接

https://firewalld.org/documentation/concepts.html

标签:zone,--,cmd,防火墙,firewalld,firewall,区域,permanent,Linux
From: https://www.cnblogs.com/shouke/p/18366534

相关文章

  • Linux网络:TCP & UDP socket
    Linux网络:TCP&UDPsocketsocket套接字sockaddr网络字节序IP地址转换bzeroUDPsocketsocketbindrecvfromsendtoTCPsocketsocketbindlistenconnectacceptsendrecv本博客讲解Linux下的TCP和UDP套接字编程。无论是创建套接字、绑定地址,还是发送和接收数据,......
  • Linux操作系统Lvm扩容(新加盘)
    在Linux操作系统中,使用LVM(逻辑卷管理器)可以轻松地扩展磁盘容量。下面是一些步骤来扩展LVM新加盘的容量:确定新加盘的设备名称,例如/dev/sdb使用fdisk命令创建一个新的分区(根据扩容目标得文件系统格式进行格式化)sudofdisk/dev/sdb连续按下n键,然后选择主分区(p),接着......
  • Linux基础软件-dns(二)
    作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。Linux进阶部分又分了很多小的部分,我们刚讲完了Linux日常运维。讲的那些东西都算是系统自带的,但是Linux作为一个服务器操作系统,肯定是要安装运行软件......
  • Linux基础虚拟化实验
    常见虚拟化技术虚拟化主要厂商及产品介绍:系列PC/服务器版代表VMwareVMwareworkstation、vSphereMicrosoftVirtualPC、Hyper-VRedHatKVM、RHEVcitrixXenoracleOracleVMVIrtualBox       虚拟化与云计算的关系:虚拟化:一种技术,顾名......
  • Linux 属主属组设置和文件类型
    今天给伙伴们分享一下Linux属主属组设置和文件类型,希望看了有所收获。我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!如果伙伴们看了文档觉得有用,欢迎大家关注我的公......
  • Linux——网络(3)
    一、服务器1、单循环服务器        服务器在同一时刻只能响应一个客户端的请求2、并发服务器模型        服务器在同一时刻可以响应多个客户端的请求3、TCP和UDP        UDP: 无连接        TCP:  有连接           ......
  • linux系统内存不足时, 系统杀死程序 哪儿查看日记
    下面是由ai回答的:当Linux系统内存不足时,系统可能会通过OOMkiller(Out-Of-Memorykiller)机制自动杀死一些进程以释放内存。要查看因内存不足而被系统杀死的程序,可以通过查看系统日志来获取相关信息。根据搜索结果,以下是一些常用的方法来查看系统日志中的相关记录:使用dmesg......
  • 非常全的Linux常用命令
    Linux常用命令 系统信息 arch显示机器的处理器架构uname-m显示机器的处理器架构uname-r显示正在使用的内核版本 dmidecode-q显示硬件系统部件-(SMBIOS/DMI) hdparm-i/dev/hda罗列一个磁盘的架构特性 hdparm-tT/dev/sda在磁盘上执行测试性读取操作 cat/p......
  • Linux——系统中断
    目录1.什么是系统中断2.为什么要有系统中断2.1举个生活中的例子3.中断会带来什么问题3.1问题3.2生活例子——以取外卖为例:假如你订了2份外卖4.回到系统中的软中断?5.系统中断总结6.大量的网络小包会导致性能问题,为什么呢?1.什么是系统中断中断是系统用来响应硬件设备请求的一种......
  • Linux进程管理——进程状态、僵尸进程、孤儿进程、系统中断
    目录1.基础1.1什么是进程1.2程序和进程的区别1.3进程的生命周期1.3.1进程生命周期图1.3.2进程生命流程说明1.4僵尸进程与孤儿进程区别2.监控进程状态2.1静态查看进程2.1.1ps命令2.1.2STAT状态含义2.2动态查看进程2.2.1top命令2.2.2top常用按键显示介绍2.2.3top每列含义详解2.2.4什......