1.简介

在RHEL7里有几种防火墙共存:firewalld、iptables、ebtables,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等。——iptables的具体配置在下一章博客中会详细介绍,本章主要介绍Firewalld

Firewalld与iptables对比

firewalld 是 iptables 的前端控制器
iptables 静态防火墙 任一策略变更需要reload所有策略,丢失现有链接
firewalld 动态防火墙 任一策略变更不需要reload所有策略 将变更部分保存到iptables,不丢失现有链接
firewalld 提供一个daemon和service 底层使用iptables
基于内核的Netfilter

firewalld跟iptables比起来至少有两大好处:

1)irewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效;

2)firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。
firewalld跟iptables比起来,不好的地方是每个服务都需要去设置才能放行,因为默认是拒绝。而iptables里默认是每个服务是允许,需要拒绝的才去限制。
firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说firewalld和 iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。

一个重要的概念:区域管理

通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流。例如,互联网是不可信任的区域,而内部网络是高度信任的区域。网络安全模型可以在安装,初次启动和首次建立网络连接时选择初始化。该模型描述了主机所连接的整个网络环境的可信级别,并定义了新连接的处理方式。有如下几种不同的初始化区域:

网络区名称 默认配置
阻塞区域(block) 任何传入的网络数据包都将被阻止。拒绝所有的网络连接
工作区域(work) 相信网络上的其他计算机,不会损害你的计算机。仅接受ssh、ipp-client或dhcpv6-client服务连接
家庭区域(home) 相信网络上的其他计算机,不会损害你的计算机。用于家庭网络,仅接受ssh、mdns、ipp-client或dhcpv6-client服务连接
公共区域(public) 在公共区域内使用。仅接受ssh或dhcpv6-client服务连接
隔离区域(DMZ) 隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用。对于隔离区域,只有选择接受传入的网络连接。仅接受ssh服务连接
信任区域(trusted) 所有的网络连接都可以接受。
丢弃区域(drop) 任何传入的网络连接都被拒绝。接受的数据包都被抛弃,且没有任何回复
内部区域(internal) 信任网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。仅接受ssh、mdns、ipp-client或dhcpv6-client服务连接
外部区域(external) 不相信网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。仅接受ssh服务连接

注:FirewallD的默认区域是public。

firewalld默认提供了九个zone配置文件:block.xml、dmz.xml、drop.xml、external.xml、 home.xml、internal.xml、public.xml、trusted.xml、work.xml,他们都保存在“/usr/lib /firewalld/zones/”目录下。

2.Firewalld策略管理

1)安装软件

yum install firewalld firewall-config -y

2)基本命令

操作演示

3)火墙策略修改——图形化界面方式

firewall-config
runtime     ##临时生效,立即生效
permanent   ##更改配置文件,永久的,重新加载生效

firewall-cmd --reload

4)火墙策略修改——修改火墙配置文件

vim /etc/firewalld/zones/public.xml

演示:我把允许的服务删掉一些,只剩下ssh和3260端口,然后重启火墙,查看策略

3.火墙中端口的相关设置

1)基本命令

2)下面我们利用上面命令完成下面两个实验

实验一:通过火墙接口的设置,来实现ssh的访问控制

<1>在火墙策略中去掉ssh服务


连接失败

<2>添加火墙策略

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.6.250 -j ACCEPT
##允许172.25.6.250主机通过22端口(ssh默认端口)访问
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 22  ! -s 172.25.6.250 -j ACCEPT
##允许除了172.25.6.250主机通过22端口(ssh默认端口)访问


连接成功!

firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 22 -s 172.25.254.21 -j ACCEPT
##移除策略

实验二:利用火墙策略实现路由功能

<1>准备一台双网卡主机,并配置IP分别为172.25.6.106、1.1.1.106;一台单网卡主机,IP为1.1.1.206

双网卡主机配置

开启火墙地址伪装功能

单网卡主机配置

2)单网卡主机通过双网卡主机的路由功能,连接172.25.6.250(通过上面的配置可以实现)


那么问题来了:我明明使用1.1.1.206主机连接172.25.6.250,由于路由端开启了火墙地址伪装功能,在172.25.6.250端查询是路由端连接的;所以我怎么做才能知道访问者的IP呢?

解决方案:路由端转接

服务端:添加火墙的转接策略

firewall-cmd --permanent --zone=public --add-forward-port=port=22:proto=tcp:toport=22:toaddr=1.1.1.206
##当用户连接路由端时,转接到1.1.1.106上

测试:

我们在172.25.6.250上连接刚刚查询到的IP:172.25.6.106——查询IP后发现,IP为刚刚真正连接的主机IP

Firewalld详解相关推荐

  1. FirewallD 详解

    在CentOS7开始,默认是没有iptables的,而是使用了firewall防火墙. 与时俱进,简单的整理了一下firewall的使用方法. 关于详细的介绍参考官网,就不搬字了.这个网站有中文选项. ...

  2. 【Linux安全管理】Firewalld详解

    目录 1.与iptables不同 2.配置防火墙 3.firewalld区域概念 4.filewalld 配置生效 5.firewalld服务 firewalld 端口映射 富规则 rich-rule ...

  3. 拥抱firewalld,但也别忘了iptables——下篇(firewalld详解)

    从CentOS7(RHEL7)开始,官方的标准防火墙设置软件从iptables变更为firewalld,相信不少习惯使用iptables的人会感到十分不习惯,但实际上firewalld更为简单易用. ...

  4. Firewalld 防火墙详解

    文章目录 1. firewalld 是什么 2. 什么是动态防火墙 3. firewalld 和 iptables 之间的关系 4. firewalld 区域 4.1 firewalld 区域的概念 ...

  5. Firewalld防火墙策略详解

    Firewalld防火墙策略详解 一.Firewalld firewalld防火墙是Centos7系统默认的防火墙管理工具,取代了之前的iptables防火墙,也是工作在网络层,属于包过滤防火墙. f ...

  6. linux卸载hadoop版本,centos6.5 安装hadoop1.2.1的教程详解【亲测版】

    本篇只简单介绍安装步骤 1. 角色分配 10.11.84.4 web-crawler--1.novalocal master/slave 10.11.84.5 web-crawler--2.noval ...

  7. gogs mysql 报错_linux上Docker安装gogs私服亲测(详解)

    一.前言 有网友问我为什么要使用私服,可能大部分人都不是太懂,网上那么多存储仓库而且好用方便,但是你想过没有如果企业中的项目,放在人家的仓库上这个安全性不是太好,所以说一般企业都会有自己的私服.本章教 ...

  8. CentOS7安装Nagios并配置出图详解

    目录 开始之前 系统环境 监控内容 所需软件包 CentOS7重要变化 配置开发环境 同步时间 关闭Selinux 使用CRT上传软件包 安装邮件服务 监控主机安装 常用到的命令 安装nagios所需 ...

  9. 基于Kubernetes构建Docker集群管理详解

    from: 基于Kubernetes构建Docker集群管理详解 Kubernetes是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动 ...

最新文章

  1. 学习笔记---取得枚举项的2种方法: Enum.GetValues()-Array.GetValue()和Enum.GetNames()-Enum.Parse()...
  2. 图片html代码查看器,360度全景商品图片查看器
  3. Linux Kernel Development——列出系统中所有的进程
  4. sqlserver2010兼容sqlserver2008解决方案
  5. android bitmap xml,XML Bitmap
  6. 43秒处竟惊现刘强东!印度动作大片《WAR》终极预告曝光
  7. [状压dp]洛谷 P2157 学校食堂
  8. bloomberg用法 固定收益_干货 | 日语高考高频考点:助词を的用法
  9. WARNING:Result from SERVER not valid. Partial Result:
  10. [HDOJ]1018. Big Number
  11. 最近几年出现的新技术
  12. ExtJS 3.2 学习笔记(1)
  13. Ansible详解(十八)——Ansible使用小技巧
  14. C语言:逆转线性链表
  15. 组件、控件和插件的区别
  16. 浅谈电费电价管理中预付费系统的完善措施与应用
  17. 笑话理解之Mature
  18. numpy库的函数学习
  19. pytorch Cosine Annealing LR
  20. 换个花样玩C++(1)步步深入窥探const

热门文章

  1. android studio 真机调试连不上手机
  2. 2022广东茂名市化州市农业农村局招聘复习题及答案
  3. Kerberos协议分析
  4. 图像分割UNet系列------UNet3+(UNet3plus)详解
  5. window.onresize在vue中只能使用一次,自适应resize报错
  6. 【域名解析-hosts文件】
  7. 数据挖掘工程师的基本职责。
  8. 《花雕学AI》用Edge和chrome浏览器体验GPT-4智能聊天的神奇免费插件,Sider – 聊天机器人的新选择
  9. [转]金属拉丝工艺介绍
  10. 浏览器下载中文乱码问题目