linux防火墙设置firewalld

sforiz sforiz     2023-03-25     299

关键词:

entos从7.0 开始将原先的防火墙iptables换成了FirewallD。FirewallD支持 IPv4, IPv6 防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项,被称作动态管理防火墙,也就是说不需要重启整个防火墙便可应用更改。centos7默认安装了firewalld,若没有安装,执行 yum install firewalld firewalld-config 安装,其中firewalld-config是GUI工具。FirewallD与iptables关系:

firewalld底层仍旧是基于iptables的,但还是有很多不同的地方:

  • iptables在 /etc/sysconfig/iptables 中储存配置,而 firewalld 将配置储存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件里,其中前者是默认的配置,请不要修改。可以在/etc/firewalld/中编辑自己的配置,firewalld优先使用/etc/firewalld/中的配置。
  • 使用 iptables,每一个单独更改意味着清除所有旧有的规则和从 /etc/sysconfig/iptables里读取所有新的规则,然而使用 firewalld 却不会再创建任何新的规则;仅仅运行规则中的不同之处。因此,firewalld 可以在运行时间内,改变设置而不丢失现行连接。

firewalld中zone概念(区域)

RHEL7中的不过貌似其实现方式还是和iptables一样的,但是不像mariaDB那样兼容MySQL命令,FirewallD无法解析由 ip*tables 和 ebtables 命令行工具添加的防火墙规则

FirewallD使用区域(zone)的概念来管理,每个网卡对应一个zone,这些zone的配置文件可在/usr/lib/firewalld/zones/下看到,默认的是public.由firewalld 提供的区域按照从不信任到信任的顺序排序:

  • drop(丢弃)任何流入网络的包都被丢弃,不作出任何响应。只允许流出的网络连接。
  • block(阻塞)任何进入的网络连接都被拒绝,并返回 IPv4 的 icmp-host-prohibited 报文或者 IPv6 的 icmp6-adm-prohibited 报文。只允许由该系统初始化的网络连接。
  • public(公开) 在用以可以公开的部分。你认为网络中其他的计算机不可信并且可能伤害你的计算机。只允许选中的连接接入。
  • external(外部)用在路由器等启用伪装的外部网络。你认为网络中其他的计算机不可信并且可能伤害你的计算机。只允许选中的连接接入。
  • dmz(隔离区)用以允许隔离区(dmz)中的电脑有限地被外界网络访问。只接受被选中的连接。
  • work(工作)用在工作网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
  • home(家庭)用在家庭网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
  • internal(内部)用在内部网络。你信任网络中的大多数计算机不会影响你的计算机。只接受被选中的连接。
  • trusted(信任)允许所有网络连接。

firewalld中的过滤规则

  • source: 根据源地址过滤
  • interface: 根据网卡过滤
  • service: 根据服务名过滤
  • port: 根据端口过滤
  • icmp-block: icmp 报文过滤,按照 icmp 类型配置
  • masquerade: ip 地址伪装
  • forward-port: 端口转发
  • rule: 自定义规则

其中,过滤规则的优先级遵循如下顺序

  • source
  • interface
  • conf

firewalld常用命令

fierwalld可以直接修改配置文件进行配置,也可以通过配置工具的命令,这里因为是远程操作为了确保开启后ssh端口是开放的,所以直接修改配置文件。

先查看/etc/firewalld/firewalld.conf中DefaultZone的值,默认是DefaultZone=public,这时/etc/firewalld/zones/目录下应该有个public.xml文件,vi打开它修改成:

1 2 3 4 5 6 7 8 9 <? xml version = "1.0" encoding = "utf-8" ?> < zone >      < short > Public < / short >      < description > For use in public areas . You do not trust the other computers on networks to not harm your computer . Only selected incoming connections are accepted . < / description >      < service name = "dhcpv6-client" / >      < service name = "ssh" / >      < service name = "http" / >      < service name = "https" / > < / zone >

这就代表在public zone中开放ssh(22)、http(80)、https(443)端口,其中对应每一个在/usr/lib/firewalld/services/下*.xml文件定义好的服务类型,比如http.xml文件如下:

1 2 3 4 5 6 <? xml version = "1.0" encoding = "utf-8" ?> < service >      < short > WWW ( HTTP ) < / short >      < description > HTTP is the protocol used to serve Web pages . If you plan to make your Web server publicly available , enable this option . This option is not required for viewing pages locally or developing Web pages . < / description >      < port protocol = "tcp" port = "80" / > < / service >

所以也可以直接在public.xml中这样:

1 2 3 4 5 6 7 8 9 <? xml version = "1.0" encoding = "utf-8" ?> < zone >      < short > Public < / short >      < description > For use in public areas . You do not trust the other computers on networks to not harm your computer . Only selected incoming connections are accepted . < / description >      < service name = "dhcpv6-client" / >      < service name = "ssh" / >      < port protocol = "tcp" port = "80" / > #等效的      < service name = "https" / > < / zone >

每次改配置文件还是比较麻烦的,firewalld可以使用firewall-config和firewall-cmd进行配置,前者是由于GUI模式下,后者为命令行下工具,一些常用命令如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 systemctl start firewalld #启动 systemctl status firewalld #或者firewall-cmd –state 查看状态 sytemctl disable firewalld #停止并禁用开机启动 systemctl enable firewalld #设置开机启动 systemctl stop firewalld #禁用 firewall - cmd version #查看版本 firewall - cmd help #帮助信息 firewall - cmd get - active - zones #查看区域信息 firewall - cmd get - zone - of - interface = eth0 #查看指定接口所属区域 firewall - cmd panic - on #拒绝所有包 firewall - cmd panic - off #取消拒绝状态 firewall - cmd query - panic #查看是否拒绝 firewall - cmd reload #更新防火墙规则 firewall - cmd complete - reload #断开再连接 firewall - cmd zone = public add - interface = eth0 #将接口添加到public区域 , 默认接口都在public。若加上–permanet则永久生效 firewall - cmd set - default - zone = public #设置public为默认接口区域 firewall - cmd zone = pulic list - ports #查看所有打开的端口 firewall - cmd zone = pulic add - port = 80 / tcp #把tcp 80端口加入到区域 firewall - cmd zone = public add - service = http #把http服务加入到区域 firewall - cmd zone = public remove - service = http #移除http服务

部分命令共同的参数说明:

  • –zone=ZONE 指定命令作用的zone,省缺的话命令作用于默认zone
  • –permanent 有此参数表示命令只是修改配置文件,需要reload才能生效;无此参数则立即在当前运行的实例中生效,不过不会改动配置文件,重启firewalld服务就没效果了。
  • –timeout=seconds 表示命令效果持续时间,到期后自动移除,不能和–permanent同时使用。例如因调试的需要加了某项配置,到时间自动移除了,不需要再回来手动删除。也可在出现异常情况时加入特定规则,过一段时间自动解除。

参考连接:

拓展知识:Linux中的防火墙

netfilter

iptables、firewalld这些软件本身其实并不具备防火墙功能,他们的作用都是在用户空间中管理和维护规则,只不过规则结构和使用方法不一样罢了,真正利用规则进行过滤是由内核的netfilter完成的。netfilter是Linux 2.4内核引入的包过滤引擎。由一些数据包过滤表组成,这些表包含内核用来控制信息包过滤的规则集。iptables、firewalld等等都是在用户空间修改过滤表规则的便捷工具。

linux内部结构可以分为三部分,从最底层到最上层依次是:硬件–>内核空间–>用户空间

netfilter在数据包必须经过且可以读取规则的位置,共设有5个控制关卡。这5个关卡处的检查规则分别放在5个规则链中:

  • PREROUTING 数据包刚进入网络接口之后,路由之前
  • INPUT 数据包从内核流入用户空间
  • FORWARD 在内核空间中,从一个网络接口进入,到另一个网络接口去。转发过滤。
  • OUTPUT 数据包从用户空间流出到内核空间。
  • POSTROUTING 路由后,数据包离开网络接口前。

链其实就是包含众多规则的检查清单,每一条链中包含很多规则。当一个数据包到达一个链时,系统就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则就继续检查下一条规则,如果该数据包不符合链中任一条规则,系统就会根据该链预先定义的默认策略来处理数据包。

当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWAR

firewalld防火墙基础

Firewalld防火墙基础``Firewalld概述Firewalld简介支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具支持IPv4、IPv6防火墙设置以及以太网桥支持服务或应用程序直接添加防火墙规则接口拥有两种配置模式?运行时配... 查看详情

centos7的firewalld防火墙基础(代码片段)

一、Linux防火墙的基础Linux的防火墙体系主要工作在网络层,针对TCP/IP数据包实时过滤和限制,属于典型的包过滤防火墙(或称为网络层防火墙)。Linux系统的防火墙体系基于内核共存:firewalld、iptables、ebtables,默认使用firewalld... 查看详情

firewalld防火墙基础详解(代码片段)

...支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具,支持IPv4、IPv6防火墙设置以及以太网桥,支持服务或应用程序直接添加防火墙规则接口。拥有两种配置模式1.运行时配置2.永久配置Firewalld和iptables的关系n... 查看详情

如何在linux中启动/停止和启用/禁用firewalld和iptables防火墙

参考技术A清除iptables规则1如果启动的iptables防火墙不想关闭的话,可以通过iptables-F来清除防火墙关闭。然后通过iptables-L查看END关闭iptables服务如果要关闭iptables,可以通过命令/etc/init.d/iptablesstop停止除此之外,iptables的服务名称... 查看详情

iptables防火墙规则设置

#注:Linux7默认启用的是firewalld.service,要启用iptables,需要关闭firewalld.servicesystemctlstopfirewalld.service;systemctldisablefirewalld.serviceyuminstalliptables-y;systemctlstartiptables.service;systemctlenableipt 查看详情

centos7防火墙基础——理论篇(代码片段)

Centos7防火墙基础——理论篇理论结构:Firewalld概述Firewalld和iptables的关系Firewalld网络区域Firewalld防火墙的配置方法Firewalld概述支持网络区域所定义的网络连接以及接口安全等级的动态防火墙管理工具支持IPV4、IPV6防火墙设置以及... 查看详情

linux的firewalld服务(代码片段)

Firewalld防火墙基本操作#查找防火墙服务名[root@server~]#systemctllist-units|grepfirefirewalld.serviceloadedactiverunningfirewalld-dynamicfirewalldaemon#查找firewalld.service文件位置[root@server~]#find/-typef-namefirewalld.service/usr/lib/systemd/system/firewalld.service#这个脚... 查看详情

linux-firewalld使用方法(代码片段)

...uminstallfirewalld#centos/redhataptinstallfirewalld#debian/ubuntu2、操作防火墙服务systemctlstopfirewalld.service#关闭防火墙systemctlstartfirewalld.service#开户防火墙systemctldisablefirewalld.service#关闭自启systemctlenablefirewalld.service#打开自启systemctlstatusfirewalld.s... 查看详情

如何在linux中启动/停止和启用/禁用firewalld和iptables防火墙

...久关闭用systemctldisablefirewalld.service参考技术A安装firewalld防火墙yuminstallfirewalld开启服务systemctlstartfirewalld.service关闭防火墙systemctlstopfirewalld.serviceCENTOS7FIREWALLD防火墙管理 查看详情

centos7防火墙firewalld设置

添加80端口 重启后永久生效firewall-cmd--zone=public--add-port=80/tcp--permanent 查看防火墙状态systemctlstatusfirewalld.service启动防火墙systemctlstartfirewalld.service关闭防火墙systemctlstopfirewalld.service重启防火墙systemc 查看详情

linux下防火墙操作(代码片段)

一、什么是防火墙防火墙:防范一些网络攻击。有软件防火墙、硬件防火墙之分。防火墙选择让正常请求通过,从而保证网络安全性。二、firewalld防火墙的概念2.1、区域CentOS6x中防火墙叫做iptables;CentOS7.x中默认使用的防火墙是fi... 查看详情

centos7使用firewalld打开关闭防火墙与端口

CentOS升级到7之后,发现无法使用iptables控制Linuxs的端口,google之后发现Centos7使用firewalld代替了原来的iptables下面记录如何使用firewalld开放Linux端口:1、firewalld的基本使用启动:systemctlstartfirewalld关闭:systemctlstopfirewalld查看状态:... 查看详情

linux服务器firewalld防火墙配置端口转发

0背景业务应用系统的web容器无法更改IP地址,例如临时SSH端口,但是不想修改SSH配置;例如某些服务web服务需要通过公共IP进行统一访问;例如外网访问内网资源等;例如快速调整web容器的端口而不需要更改服... 查看详情

《网络安全入门到精通》-1.2-linux系统-firewalld防火墙&iptables防火墙

...专栏」:此文章已录入专栏《网络安全入门到精通》Linux防火墙Frewalld1、常用操作2、开放/关闭服务3、开放/关闭端口4、IP访问端口规则5、安全域Iptables1、常用操作2、四表五链centos6.5使用iptables防火墙,没有规则时,默认允许所... 查看详情

firewalld

...#############firewalld###########################一Firewalld概述1.动态防火墙后台程序firewalld提供了一个动态管理的防火墙,用以支持网络“zones”,以分配对一个网络及其相关链接和界面一定程度的信任。它具备对IPv4和IPv6防火墙设置的支持。... 查看详情

centos7防火墙服务(firewalld)关闭实战

CentOS7防火墙服务(Firewalld)关闭实战目录CentOS7防火墙服务(Firewalld)关闭实战#查看linux服务器防火墙状态 查看详情

firewalld防火墙(代码片段)

Firewalld防火墙一、防火墙基本概述在CentOS7系统中集成了多款防火墙管理工具,默认启用的是firewalld(动态防火墙管理器)防火墙管理工具,Firewalld支持CLI(命令行)以及GUI(图形)的两种管理方式... 查看详情

firewalld

...##########################firewalld############################概述动态防火墙后台程序firewalld提供了一个动态管理的防火墙,用以支持网络“zones”,以分配对一个网络及相关链接和界面一定程度的信任。它具备对ipv4和ipv6防火墙设置的支持... 查看详情