首页 > 其他分享 >Firewalld防火墙

Firewalld防火墙

时间:2023-02-23 14:31:28浏览次数:36  
标签:zone -- cmd Firewalld rule 防火墙 firewall add

一、Firewalld概述

Filewalld(动态防火墙)作为redhat7系统中变更对于netfilter内核模块的管理工具

iptables service 管理防火墙规则的模式(静态):

用户将新的防火墙规则添加进 /etc/sysconfig/iptables 配置文件当中,再执行命令 /etc/init.d/iptables reload 使变更的规则生效。在这整个过程的背后,iptables service 首先对旧的防火墙规则进行了清空,然后重新完整地加载所有新的防火墙规则,如果加载了防火墙的模块,需要在重新加载后进行手动加载防火墙的模块; ​

firewalld 管理防火墙规则的模式(动态):

任何规则的变更都不需要对整个防火墙规则列表进行重新加载,只需要将变更部分保存并更新到运行中的 iptables 即可。还有命令行和图形界面配置工具,它仅仅是替代了 iptables service 部分,其底层还是使用 iptables 作为防火墙规则管理入口。

二、Firewalld与iptables对比

firewalld 是 iptables 的前端控制器

iptables 静态防火墙 任一策略变更需要reload所有策略,丢失现有链接

firewalld 动态防火墙 任一策略变更不需要reload所有策略 将变更部分保存到iptables,不丢失现有链接

firewalld 提供一个daemon和service 底层使用iptables

基于内核的Netfilter

1.配置Firewalld

1.配置方式

firewall-config 图形界面

firewall-cmd 命令行工具

2.运行时配置和永久配置

firewall-cmd - –zone=public - –add-service=smtp 运行时配置,重启后失效(临时)
firewall-cmd - –permanent - –zone=public - –add-service=smtp 永久配置,不影响当前连接,重启后生效
firewall-cmd - –runtime-to-permanent 将运行时配置保存为永久配置

三、ZONE

区域

默认策略规则

trusted

允许所有的数据包

home

拒绝流入的流量,除非与流出的流量相关;如果流量与ssh、mdns、ipp-client、amba-client、与dhcpv6-client服务相关,则允许流量

internal

等同于home区域

work

拒绝流入的流量,除非与流出的流量数相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量

public

拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量

external

拒绝流入的流量,除非与流出流量相关;而如果流量与ssh服务相关,则允许流量

dmz

拒绝流入的流量,除非与流出的流量相关;

block

拒绝流入的流量,除非与流出的流量相关;

drop

拒绝流入的流量,除非与流出的流量相关;

服务管理

yum -y install firewalld firewall-config #安装firewalld

systemctl enable|disable firewalld #开机启动|关闭firewalld

systemctl start|stop|restart firewalld #启动、停止、重启firewalld

如果想使用iptables配置防火墙规则,要先安装iptables并禁用firewalld

yum -y install iptables-services #安装iptables

systemctl enable iptables #开机启动

systemctl start|stop|restart iptables #启动、停止、重启iptables

四、终端管理工具

1、firewall-cmd

firewall-cmd命令一般使用长格式选项,所以命令比较长,但是不用担心,在7系列系统当中firewall-cmd命令的选项可以利用tab补齐

2、firewall-cmd命令中使用的参数以及作用

# 查看默认的区域名称
firewall-cmd --get-default-zone

#设置默认的区域,使其永久生效
firewall-cmd --set-default-zone=<区域名称>

#显示可用的区域
firewall-cmd --get-zones

#显示预先定义的服务
firewall-cmd --get-services

#显示当前正在使用的区域与网卡名称
firewall-cmd --get-active-zones

#将源自此IP或子网的流量导向指定的区域
firewall-cmd --add-source=

#不再将源自此IP或子网的流量导向指定的区域
firewall-cmd --remove-source=

#将源自该网卡的所有流量都导向某个指定区域
firewall-cmd --add-interface=<网卡名称>

#将某个网卡与区域进行关联
firewall-cmd --change-interface=<网卡名称>

#显示当前区域的网卡配置参数、资源、端口以及服务等信息
firewall-cmd --list-all

#显示所有区域的网卡配置参数,资源、端口以及服务等信息
firewall-cmd --list-all-zones

#设置默认区域允许该服务的流量
firewall-cmd --add-service=<服务名>

#设置默认区域允许该端口的流量
firewall-cmd --add-port=<端口号/协议>

#设置默认区域不再允许该服务的流量
firewall-cmd --remove-service=<服务名>

#设置默认区域不再允许该端口的流量
firewall-cmd --remove-port=<端口号/协议>

#让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
firewall-cmd --reload

#开启应急状况模式(将断开与当前主机的所有连接,进入维护模式\脱机模式)
firewall-cmd --panic-on

#关闭应急状况模式
firewall-cmd --panic-off

3、命令演示

查看firewall服务当前所使用的区域
[root@linuxli ~]# firewall-cmd --get-default-zone
public
查询ens33网卡在firewall服务中的区域
[root@linuxli ~]# firewall-cmd --get-zone-of-interface=ens33
public
把firewalld服务中ens33网卡的默认区域修改为external,并在系统重启后生效,分别查看当前与永久模式下的区域名称
[root@linuxli ~]# firewall-cmd --permanent --zone=external --change-interface=ens33
The interface is under control of NetworkManager, setting zone to 'external'.
success
[root@linuxli ~]# firewall-cmd --get-zone-of-interface=ens33
external
启动/关闭firewalld防火墙服务的应急状况模式,阻断一切网络连接(当远程控制服务器时请慎用!)
[root@linuxli ~]# firewall-cmd --panic-on
success
[root@linuxli ~]# firewall-cmd --panic-off
success
查询区域是否允许请求SSH和HTTPS协议的流量:
[root@linuxli ~]# firewall-cmd --zone=public --query-service=ssh
yes
[root@linuxli ~]# firewall-cmd --zone=public --query-service=https
no
把firewalld服务中请求HTTPS协议的流量设置为永久允许,并立即生效:
[root@linuxli ~]# firewall-cmd --zone=public --add-service=https
success
[root@linuxli ~]# firewall-cmd --permanent --zone=public --add-service=https
success
[root@linuxli ~]# firewall-cmd --reload
success
把firewalld服务中请求HTTP协议的流量设置为永久拒绝,并立即生效:
[root@linuxli ~]# firewall-cmd --permanent --zone=public --remove-service=http
success
[root@linuxli ~]# firewall-cmd --reload
success
把在firewalld服务中访问8080和8081的端口流量策略设置为允许,但仅限当前生效:
[root@linuxli ~]# firewall-cmd --zone=public --add-port=8080-8081/tcp
success
[root@linuxli ~]# firewall-cmd --zone=public --list-ports
8080-8081/tcp
把原本访问本机888端口的流量转发到22端口,且要求当前和长期均有效(SNAT)
注:流量转发命令格式为firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:porto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>
[root@linuxli ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.100.1
success
[root@linuxli ~]# firewall-cmd --reload
success

富规则

firewalld中的富规则表示更细致,它可以针对系统服务、端口号、源地址和目标地址等诸多信息的策略配置。
firewall-cmd --list-rich-rules 列出所有规则
firewall-cmd [--zone=zone] --query-rich-rule=’rule’ 检查一项规则是否存在
firewall-cmd [--zone=zone] --remove-rich-rule=’rule’ 移除一项规则
firewall-cmd [--zone=zone] --add -rich-rule=’rule’ 新增一项规则

复杂规则配置案例

firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=192.168.0.14 accept' 允许来自主机 192.168.0.14 的所有 IPv4 流量

firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.168.100.10" port port=22 protocol=tcp reject' 拒绝来自主机 192.168.100.10 到 22 端口的 IPv4 的 TCP 流量

firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 source address=10.1.0.3 forward-port port=80 protocol=tcp to-port=6532' 允许来自主机 10.1.0.3 到 80 端口的 IPv4 的 TCP 流量,并将流量转发到 6532 端口上

firewall-cmd --zone=public --add-rich-rule 'rule family=ipv4 forward-port port=80 protocol=tcp to-port=8080 to-addr=172.31.4.2' 将主机 172.31.4.2 上 80 端口的 IPv4 流量转发到 8080 端口(需要在区域上激活 masquerade)
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.122.0" accept' 允许192.168.122.0/24主机所有连接
firewall-cmd --add-rich-rule='rule service name=ftp limit value=2/m accept' 每分钟允许2个新连接访问ftp服务
firewall-cmd --add-rich-rule='rule service name=ftp log limit value="1/m" audit accept' 同意新的IPv4和IPv6连接FTP ,并使用审核每分钟登录一次
firewall-cmd --add-rich-rule='rule family="ipv4" source address="192.168.122.0/24" service name=ssh log prefix="ssh" level="notice" limit value="3/m" accept' 允许来自1192.168.122.0/24地址的新IPv4连接连接TFTP服务,并且每分钟记录一次
firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop' 丢弃所有icmp包
firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.122.0/24 reject' --timeout=10 当使用source和destination指定地址时,必须有family参数指定ipv4或ipv6。如果指定超时,规则将在指定的秒数内被激活,并在之后被自动移除
firewall-cmd --add-rich-rule='rule family=ipv6 source address="2001:db8::/64" service name="dns" audit limit value="1/h" reject' --timeout=300 拒绝所有来自2001:db8::/64子网的主机访问dns服务,并且每小时只审核记录1次日志
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.122.0/24 service name=ftp accept' 允许192.168.122.0/24网段中的主机访问ftp服务
firewall-cmd --add-rich-rule='rule family="ipv6" source address="1:2:3:4:6::" forward-portto-addr="1::2:3:4:7" to-port="4012" protocol="tcp" port="4011"' 转发来自ipv6地址1:2:3:4:6::TCP端口4011,到1:2:3:4:7的TCP端口4012

实用:

1、查看访问网站次数最多的IP地址:
cat /etc/httpd/logs/access_log |awk '{print $1}' |sort |uniq -c |sort -nr

2、禁止访问网站最多的陌生IP访问网站:
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.100.1" port port="80" protocol="tcp" reject"

五、图形管理工具(须安装firewall-config工具,然后reboot重启生效)

1.firewalld界面如图所示,其功能具体如下:

  1. 选择”立即生效“或”重启后依然生效“配置。
  2. 区域列表。
  3. 服务列表。
  4. 当前选中的区域。
  5. 被选中区域的服务。
  6. 被选中区域的端口。
  7. 被选中区域的伪装。
  8. 被选中区域的端口转发。
  9. 被选中区域的ICMP包。
  10. 被选中区域的富规则。
  11. 被选中区域的网卡设备。
  12. 被选中区域的服务,前面有√的表示允许。
  13. firewalld防火墙的状态

Firewalld防火墙_重启

乱码:执行 LANG=en_US 命令(原因:不支持中文,将其默认语言改成英文)

firewall-config图形化管理工具中没有保存/完成按钮,只要修改就会生效。

允许其他主机访问http服务,仅当前生效:

Firewalld防火墙_linux_02

​允许其他主机访问8080-8088端口且重启后依然生效:

Firewalld防火墙_linux_03

Firewalld防火墙_重启_04

开启伪装功能,重启后依然生效:

firewalld防火墙的伪装功能实际就是SNAT技术,即让内网用户不必在公网中暴露自己的真实IP地址。

Firewalld防火墙_IP_05

将向本机888端口的请求转发至本机的22端口且重启后依然生效:

Firewalld防火墙_IP_06

过滤所有”echo-reply”的ICMP协议报文数据包,仅当前生效:

ICMP即互联网控制报文协议”Internet Control Message Protocol“,归属于TCP/IP协议族,主要用于检测网络间是否可通信、主机是否可达、路由是否可用等网络状态,并不用于传输用户数据。

Firewalld防火墙_linux_07

仅允许192.168.10.20主机访问本机的1234端口,仅当前生效:

富规则代表着更细致、更详细的规则策略,针对某个服务、主机地址、端口号等选项的规则策略,优先级最高。

Firewalld防火墙_重启_08

查看网卡设备信息:

Firewalld防火墙_IP_09























标签:zone,--,cmd,Firewalld,rule,防火墙,firewall,add
From: https://blog.51cto.com/u_15947631/6081205

相关文章

  • 一文弄清楚Web应用防火墙,以及作用是什么?
    如今,基于Web环境的互联网应用越来越广泛,企业信息化过程中各种应用都架设在Web平台上,Web应用系统已深入客户所在的各个行业,成为重要的IT资产,而传统网络层的防护已经无法保障......
  • iptables防火墙
    目录防火墙是什么安装iptables五表五链iptables参数规则运用禁止其他主机访问本机80端口禁止192.168.152.101这个ip访问本机禁止他人PING,只允许自己ping防火墙是什么简......
  • 短记:为何最近OpenWRT防火墙设置找不到自定义规则了
    原因非常简单:最近的OpenWRT分支版本将原本基于iptables的firewall3换成了基于nftables的firewall4。防火墙设置的luciapp还不支持firewall4的nftables规则编辑,便干脆无法......
  • Linux之iptables防火墙
    一、安全技术1.安全技术分类入侵检测系统(IntrusionDetectionSystems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供......
  • 基于firewalld的防爆shell脚本
    统计ssh非法暴破源ip在维护linux服务器中,当开启sshd服务时,总会有一些不怀好意的访问者要来试探一下弱口令,假若访问失败的日志文件为/var/log/secure,总是手动来翻日志,也是麻......
  • centos7防火墙 使用命令
     一、防火墙的开启、关闭、禁用命令(1)设置开机启用防火墙:systemctlenablefirewalld.service(2)设置开机禁用防火墙:systemctldisablefirewalld.service(3)启动防火墙:syst......
  • 由于公司里的服务器做了防火墙限制,无法下载软件
    由于公司里的服务器做了防火墙限制,无法下载软件服务端1、我们在自己的虚拟机上进行下载[[email protected]]#head/etc/yum.conf[main]cachedir=/chen#设置保......
  • 西部数码服务器iptables防火墙配置缺失导致无法访问
    问题:域名解析到服务器却依然没法访问系统是装的CentOS7.9纯净版,添加了服务器白名单,程序也在服务器正常运行,但是域名接口访问不到。通过联系工作人员才得知,服务器默认运行......
  • linux 防火墙
    前言centos7已经开始使用firewall作为防火墙,而不是iptablessystemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体查看防火墙的状......
  • C++ 修改防火墙firewall设置(Linux、Ubuntu、CentOS)
    1、简介1.1Ubuntuhttps://ubuntu.com/download/desktopUbuntu是一个以桌面应用为主的Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu"一词,意思是“人性”“......