当前位置: 首页 > article >正文

linux安全-firewalld防火墙-基础讲解

目录

一、 防火墙技术分类

二、 firewalld

三、 firewalld支持的类型的NAT

四、 富语言

五、 firewalld配置方式

六、 firewall-cmd命令

七、 小实验


这篇文章将对 firewalld 防火墙的基础知识进行介绍

firewalld简介:firewalld的作用是为包过滤机制提供匹配规则(或称为策略),通过各种不同的规则, 告诉netfilter对来自指定源、前往指定目的或具有某些协议特征的数据包采取何种处理方式。 

一、 防火墙技术分类

1. 包过滤:linux防火墙主要工作在网络层

2. 应用代理:squid

3. 状态检测


在centos7中有几种防火墙的存在:firewalld,iptables,ebtables

firewalld和iptables的关系:

firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现。也就是说firewalld和iptables一样,他们的作用都是用于维护规则,而真正使用规 则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。 系统提供了图形化的配置工具firewall-config、system-config-firewall,提供命令行客户端firewall-cmd,用于配置firewalld永久性或非永久性运行时间的改变:它依次用iptables工具与执行数据包筛选的内核中的Netfilter通信

逻辑关系图:

从图中可以看出,iptables服务和firewalld都是通过iptables命令与内核的netfilter 进行交互的。在centos7中,我们仍然可以使用iptables命令来管理我们的防火墙。唯一不 同的是当我们重启服务器或重启firewalld时,iptables命令管理的规则不会自动加载,反而会被firewalld 的规则代替。

默认使用firewalld来管理netfilter子系统

netfilter:linux内核中实现包过滤防火墙的内部结构-内核态

firewalld:用于管理linux防火墙的命令程序-用户态

二、 firewalld

支持网络区域所定义的网络链接以及接口安全等级的动态防火墙

配置模式

  • 运行时配置
  • 永久配置

规则匹配顺序

首先检查“源地址”

  1. 若源地址关联到特定的区域,则执行该区域所制定的规则
  2. 若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所制定的规则
  3. 若网络接口未关联到特定的区域,则使用默认区域并执行该区域所制定的规则

🚨默认区域是:public

区域划分

  • 信任区域:trusted
  • 公共区域:public
  • 工作区域:work
  • 家庭区域:home
  • 内部区域:internal
  • 外部区域:external
  • 非军事区域:dmz
  • 限制区域:block
  • 丢弃区域:drop

三、 firewalld支持的类型的NAT

  1. IP地址伪装-SNAT
  2. 端口转发-DNAT(目的地址转换/端口映射)

四、 富语言

可用于表达基本的允许/拒绝原则,也可以用于配置记录,以及端口转发、伪装和速率限制

语法

  • source:限制源地址
  • destination:限制目标地址
  • service:服务
  • protocol:协议
  • icmp-block:阻断一个/多个ICMP类型
  • masquerade:IP伪装
  • forward-port:将指定的tcp/udp-本机的其他端口
  • log:日志
    • 等级:emerg、alert、crit、erroor、warning、notice、info
  • audit:审核
  • accept:允许
  • reject:拒绝
  • drop:丢弃

五、 firewalld配置方式

  1. 图形化
  2. firewalld-cmd
  3. 配置文件

六、 firewall-cmd命令

介绍一些基础命令使用以及常用的

1. 显示预定义的区域

firewall-cmd --get-zones


区域管理

  • --get-default-zone:显示网络连接或接口的默认区域
  • --set-default-zone=<zone>:设置网络连接或接口的默认区域
  • --get-active-zones:显示已激活的所有区域
  • --get-zone-of-interface=<interface>:显示 指定接口绑定的区域
  • --zone=<zone> --add-interface=<interface>:为指定的区域更改绑定的网络接口
  • --zone=<zone> --change-interface=<interface>:为指定的区域更改绑定的网络接口
  • --zone=<zone> --remove-interface=<interface>:为指定的区域删除绑定的网络接口
  • --list-all-zones:显示所有区域及其规则
  • [--zone=]--list-all:显示所有指定区域的所有规则,省略--zone=<zone>时表示仅对默认区域操作

具体操作

1. 显示当前系统中的默认区域

firewall-cmd --get-default-zone

2. 显示默认区域的所有规则

firewall-cmd --list-all

3. 显示网络接口ens33对应区域

firewall-cmd --get-zone-of-interface=ens33

4. 将网络接口ens33对应区域更改为internal区域

firewall-cmd --zone=internal --change-interface=ens33

5. 显示所有激活区域

firewall-cmd --get-active-zones


服务管理

  • [--zone=<zone>] --list-services:显示指定区域内允许访问的所有服务
  • [--zone=<zone>] --add-service=<service>:为指定区域设置允许访问的某项服务
  • [--zone=<zone>] --remove-service=<service>:删除指定区域已设置的允许访问的某项服务
  • [--zone=<zone>] --list-ports:显示指定区域内允许访问的所有端口号
  • [--zone=<zone>] --add-port=<portid>[-<portid>]/<protocol>:为指定区域设置允许访问的某个/某段端口号(包括协议名)
  • [--zone=<zone>] --remove-port=<portid>[-<portid>]/<protocol>:删除指定区域已设置的允许访问的端口号(包括协议名)
  • [--zone=<zone>] --list-icmp-blocks:显示指定区域内拒绝访问的所有ICMP类型
  • [--zone=<zone>] --add-icmp-block=<icmptype>:为指定区域设置拒绝访问的某项ICMP类型
  • [--zone=<zone>] --remove-icmp-block=<icmptype>:删除指定区域已设置的拒绝访问的某项ICMP 类型,省略-zone=<zone>时表示对默认区域操作

具体操作

1. 为默认区域设置允许访问的服务

#显示默认区域内允许访问的所有服务
firewall-cmd --list-services

#设置默认区域允许访问http服务
firewall-cmd --add-service=http

2. 为internal区域设置允许访问的服务

#设置internal区域允许访问mysql服务
firewall-cmd --zone=internal --add-service=mysql

#显示internal区域内允许访问的所有服务
firewall-cmd --zone=internal --list-services


端口管理

1. 在internal区域打开443/TCP端口

firewall-cmd --zone=internal --add-port=443/tcp

2. 在internal区域禁止443/TCP端口访问

firewall-cmd --zone=internal --remove-port=443/tcp

七、 小实验

服务端:192.168.180.110

客户端:192.168.180.120

项目需求

  1. 禁止主机ping服务器
  2. 只允许192.168.180.120访问ssh
  3. 允许所有主机访问httpd服务

实验步骤

1. 允许所有主机访问httpd

firewall-cmd --zone=public --add-service=http

#可以设置永久设置
firewall-cmd --zone=public --add-service=http –permanent	

客户端测试访问

curl 192.168.180.110

2. 只允许192.168.180.120访问ssh

#先删除在默认区域的ssh
firewall-cmd --zone=public --remove-service=ssh

#在work区域添加ssh
firewall-cmd --zone=work --add-source=192.168.180.120
firewall-cmd --zone=work --add-service=ssh

客户端访问测试

用192.168.180.120测试

用192.168.180.130测试,不行

3. 禁止ping服务器

firewall-cmd --zone=public --add-icmp-block=echo-request



http://www.kler.cn/a/421323.html

相关文章:

  • [高等数学学习记录] 泰勒公式
  • 单片机学习笔记 12. 定时/计数器_定时
  • 【python】列表
  • 黑马2024AI+JavaWeb开发入门Day04-SpringBootWeb入门-HTTP协议-分层解耦-IOCDI飞书作业
  • c++中成员变量初始化列表的使用
  • ONVIF协议网络摄像机客户端使用gsoap获取RTSP流地址GStreamer拉流播放
  • Linux Find 命令详情解释
  • cf EC 172 C(0->-1 的转化+区间和使用前缀和表示,化简式子)+ D(二维的信息,先对一维排序,另一维看情况分析)
  • 时间同步服务器--Linux中
  • leetcode--螺旋矩阵
  • 《利用 Python 和 Pyecharts 对豆瓣电影数据可视化分析》
  • 「Java EE开发指南」如何在Java EE网站中使用CodeLive?
  • mysql-为什么需要线程池
  • 爬虫获取的数据如何确保准确性?
  • CAD 二次开发入门与实践:以 C# 为例
  • 【数据库系列】Spring Boot如何配置Flyway的回调函数
  • 跨 CA 签发多个证书的 Nginx mTLS 配置
  • web安全从0到1:burp-suite4
  • 【Web】0基础学Web—html基本骨架、语义化标签、非语义化标签、列表、表格、表单
  • Qt 信号与槽:UI设计的基础
  • redis的应用--分布式锁
  • 【Spring】Spring IOCDI:架构旋律中的“依赖交响”与“控制华章”
  • 基于java+springboot+layui的流浪动物交流信息平台设计实现
  • git查看本地库对应的远端库的地址
  • opencv-mobile在幸狐RV1106部署使用
  • IDEA中MAVEN的一些设置问题