CentOS 7之FirewallD与iptables的区别

2023-05-16

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

FirewallD 即Dynamic Firewall Manager of Linux systems,Linux系统的动态防火墙管理器,是 iptables 的前端控制器,用于实现持久的网络流量规则。它提供命令行和图形界面,在大多数 Linux 发行版的仓库中都有。与直接控制 iptables 相比,使用 FirewallD 有两个主要区别:

  1. FirewallD 使用区域和服务而不是链式规则。
  2. FirewallD可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以生效。

在RHEL7里有几种防火墙共存:FirewallD、iptables、ebtables,默认是使用FirewallD来管理netfilter子系统,不过底层调用的命令仍然是iptables等。
FirewallD跟iptables比起来,不好的地方是每个服务都需要去设置才能放行,因为默认是拒绝。而iptables里默认是每个服务是允许,需要拒绝的才去限制。

FirewallD自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现,也就是说FirewallD和 iptables一样,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter,只不过FirewallD和iptables的结构以及使用方法不一样罢了。

iptables 服务在 /etc/sysconfig/iptables 中储存配置,而 FirewallD 将配置储存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 中的各种 XML 文件里,使用 iptables 的时候每一个单独更改意味着清除所有旧有的规则和从 /etc/sysconfig/iptables 里读取所有新的规则,使用 firewalld 却不会再创建任何新的规则;仅仅运行规则中的不同。因此 FirewallD 可以在运行时改变设置而不丢失现行配置。

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

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

  • 阻塞区域(block):任何传入的网络数据包都将被阻止。
    任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。
  • 工作区域(work):相信网络上的其他计算机,不会损害你的计算机。
  • 家庭区域(home):相信网络上的其他计算机,不会损害你的计算机。
  • 公共区域(public):不相信网络上的任何计算机,只有选择接受传入的网络连接。
  • 隔离区域(DMZ):隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用。对于隔离区域,只有选择接受传入的网络连接。
  • 信任区域(trusted):所有的网络连接都可以接受。
  • 丢弃区域(drop):任何传入的网络连接都被拒绝。
    任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。
  • 内部区域(internal):信任网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。
  • 外部区域(external):不相信网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。

注: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/”目录下。

配置方法

FirewallD的配置方法主要有三种:

  1. firewall-config
  2. firewall-cmd
  3. 直接编辑xml文件

其中 firewall-config是图形化工具,firewall-cmd是命令行工具,而对于linux来说大家应该更习惯使用命令行方式的操作,所以 firewall-config(适合用于桌面版)我们就不给大家介绍了。

安装配置

1、安装FirewallD

$ yum install firewalld firewall-config

2、运行、停止、禁用FirewallD

启动:

$ systemctl start  firewalld

开机启动时加载FirewallD服务

$ systemctl enable firewalld.service

查看状态:# systemctl status firewalld 或者 firewall-cmd --state

禁用:

$ systemctl disable firewalld

停止:

$ systemctl stop firewalld

systemctl mask firewalld

systemctl unmask firewalld

 

4、配置firewalld

查看版本:

$ firewall-cmd --version

查看帮助:

$ firewall-cmd --help

显示状态:

$ firewall-cmd --state

查看区域信息:

$ 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

两者的区别就是第一个无需断开连接,就是firewalld特性之一动态添加规则,第二个需要断开连接,类似重启服务

将接口添加到区域,默认接口都在public:

$ firewall-cmd --zone=public --add-interface=eth0

永久生效再加上 --permanent 然后reload防火墙

设置默认接口区域:

$ firewall-cmd --set-default-zone=public

立即生效无需重启

 

打开端口(貌似这个才最常用)

查看所有打开的端口:

$ firewall-cmd --zone=dmz --list-ports

加入一个端口到区域:

$ firewall-cmd --zone=dmz --add-port=8080/tcp

若要永久生效方法同上

打开一个服务,类似于将端口可视化,服务需要在配置文件中添加,/etc/firewalld 目录下有services文件夹,这个不详细说了,详情参考文档

$ firewall-cmd --zone=work --add-service=smtp

移除服务

$ firewall-cmd --zone=work --remove-service=smtp

还有端口转发功能、自定义复杂规则功能、lockdown

转载于:https://my.oschina.net/deanzhao/blog/3058904

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CentOS 7之FirewallD与iptables的区别 的相关文章

  • 如何将 npm(node.js 包管理器)添加到 PATH 中?

    我像这样安装了node js cd usr local bin git clone depth 1 http github com joyent node git cd node git checkout origin v0 4 optio
  • 使用apache服务器时覆盖python3默认编码器

    我正在运行一个 apache 服务器 它服务于一个名为巧妙 http inginious readthedocs io Getting UnicodeDecodeError ascii 读取带有希伯来字符的文件时 我读到您可以使用环境变量更
  • gcc 找不到 cc1plus

    我正在尝试在 CentOS 6 上安装 python 包 pandas 但我遇到了 gcc 编译器问题 sudo pip install pandas creating build temp linux x86 64 2 7 pandas
  • 脚本通过 CentOS 安装 mysql-server,无需密码提示

    我的操作系统是 CentOS 6 6 我想知道如何通过 shell 脚本自动安装 mysql server 我发现有一个主题讨论了同样的问题 但在 CentOS 6 上失败了 ubuntu安装mysql无密码提示 https stackov
  • shell_exec 不在后台运行,还有其他解决方案吗?

    我在 CentOS 上的 apache 中使用 php 我需要为用户提供服务 他们可以通过点击删除大文件 尝试使用 shell exec 但它不在后台运行 它运行并让用户等待 我的命令 D command rm rf 视频 Mdelete
  • 在 Linux 上安装 nloptr

    我正在尝试安装 R 包nloptr在没有互联网连接的 CentOS Linux 机器上 如下所示 install packages home ravi nloptr 1 0 4 tar gz repos NULL type source 该
  • 如何在 CentOS 中向 PHP 5 添加curl 支持

    如何在 CentOS 中向 PHP 5 添加curl 支持 安装curl和curl devel后 我需要做哪些事情才能在PHP 5中设置curl 有同样的问题 安装 php common 对我有用 yum install php commo
  • Centos 7 Postgres 服务的环境变量

    最近我遇到了使用自定义 PGDATA 路径启动 postgresql 服务的问题 它尝试查找未初始化的默认数据目录 var lib pgsql 9 3 data 因此触发了这些错误 问题似乎是 Centos 7 上的服务启动器删除了所有环境
  • 将 apply 的管道输出传送到 centos 中的记录

    我正在尝试自动化 websocket 客户端的一些测试 该客户端根据命令连接到服务器 该服务器基本上是一个语音到文本引擎 客户端支持来自麦克风的音频流 这样人们就可以实时录制自己的声音并将其传输到引擎 我在 centos 虚拟机中运行客户端
  • 如何解决ssh:/usr/lib64/libcrypto.so.10:没有可用的版本信息[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试执行 ssh 并收到以下消息 ssh ssh usr lib64 libcrypto so 10 no version info
  • Haproxy 性能调整?

    我们正在尝试为来自客户端 而不是浏览网络交易类型的用户 的 get 和 post 请求找到 haproxy 的最佳调整选项 使用 30k 线程运行 jmeter 测试 其中包括 5 个对服务器的调用 1 个用户注册和一些更新调用 这些通过管
  • 无法在 CentOS 7 上启动 postgresql 服务

    无法在 CentOS 7 上启动 postgresql 9 5 我关注了这个页面 https wiki postgresql org wiki YUM Installation https wiki postgresql org wiki
  • 未找到 jmap 命令

    我正在尝试使用jmap对我的命令CentOS服务器 但它一直告诉我 即使我安装了 JDK 也找不到该命令 这是命令的输出java version java version 1 7 0 25 OpenJDK Runtime Environme
  • 增加 CentOS 上的 Docker 容器存储大小

    我想增加 Docker 容器的磁盘空间 这是 docker info 的输出 Containers 3 Running 3 Paused 0 Stopped 0 Images 4 Server Version 19 03 5 Storage
  • 编译 Lua - 创建 .so 文件?

    我正在 Centos 6 5 上编译 Lua 5 2 3 编译 安装工作正常 但是 我还需要编译另一个程序的开发库 我通常会通过这样做来安装它们 yum install lua devel 问题是安装 Lua 5 1 共享库 而不是 5 2
  • phpMyAdmin + CentOS 6.0 - 禁止

    当我想访问我的 phpMyAdmin 时 我总是收到此消息 w3m localhost phpmyadmin Forbidden You don t have permission to access phpmyadmin on this
  • 在Linux中使用自定义规则在多个端口上运行的SSH服务[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在努力设置一台在多个端口上运行 SSH 服务的服务器 例如端口 22 和 5522 这些端口应该具有一组不同的规则 即 我们为端口 2
  • 无法在 CentOS 7 上的 PHP 中打开 file_put_contents 上的流

    我知道这是许多线程的常见错误 但我厌倦了搜索 但仍然没有解决它 当我尝试运行该函数时文件放置内容我收到以下错误 Warning file put contents test txt failed to open stream Permiss
  • CentOS 的 init.d celery 脚本?

    我正在编写一个使用 celery 的 Django 应用程序 到目前为止 我一直在 Ubuntu 上运行 但我正在尝试部署到 CentOS Celery 为基于 Debian 的发行版提供了一个很好的 init d 脚本 但它不适用于基于
  • 导入错误:没有名为 psycopg2 的模块

    在 OpenERP 6 的安装过程中 我想使用以下命令生成一个配置文件 cd home openerp openerp server bin openerp server py s stop after init c home opener

随机推荐

  • 使用Network Recycle Bin启用映射网络驱动器上的回收站

    前言 在内网环境中我们经常会使用NAS或者Samba在Windows中映射网络驱动器 xff0c 方便局域网用户实时共享交换数据 但当存储在网络或映射网络上的任何文件被删除时 xff0c 该文件将被永久删除 它不会去到本地计算机回收站 xf
  • 为强化机器学习性能,ARM推出两款新GPU Mali-G52和Mali-G31

    ARM于近期推出了两款图形处理器产品 xff0c 分别为Mali G52以及Mali G31 xff0c 主要应用于主流移动市场 由于移动端AI计算 图形处理需求的与日俱增 xff0c GPU之于手机SoC的作用日渐凸显 xff0c ARM
  • 判断python字典某个键的值是否为空

    2019独角兽企业重金招聘Python工程师标准 gt gt gt code if dict get key 0 61 61 0 值即为空 code 转载于 https my oschina net u 2254175 blog 37213
  • javascript中的==和===

    判断两个变量是否相等是程序设计中非常重要的运算 在处理原始值时 xff0c 这种运算相当简单 xff0c 但涉及对 象 xff0c 任务就稍有点复杂 ECMAScript提供了两套运算符处理这个问题 xff0c 等号和非等号用于处理原始值
  • 如何检测资源泄露

    Window上我们常见的资源泄露包括内存和对象句柄泄露 xff0c 下面讨论下对各类泄露的检测方法 关于内存泄漏 xff0c 我以前写过2篇文章 xff1a C 43 43 中基于Crt的内存泄漏检测 xff0c 基于WinDbg的内存泄漏
  • WPF触屏Touch事件在嵌套控件中的响应问题

    前几天遇到个touch事件的坑 xff0c 记录下来以增强理解 具体是 想把一个listview嵌套到另一个listview xff0c 这时候如果list view xff08 子listview xff09 的内容过多超过容器高度 xf
  • 设计模式-工厂模式

    xl echo编辑整理 xff0c 欢迎转载 xff0c 转载请声明文章来源 欢迎添加echo微信 微信号 xff1a t2421499075 进行交流学习 百战不败 xff0c 依不自称常胜 xff0c 百败不颓 xff0c 依能奋力前行
  • IBM AIX5.3 linux下C/C++实现HTTPS接口

    最近在工作中需要开发一个Https接口 xff0c 其不同于http soap等协议 xff0c 可以直接组织报文并发送 xff0c 不存在加密 xff0c 认证和获取密钥等安全操作 且之前开发的项目没有开发过这类接口 xff0c 所以当时
  • c语言把网络字节序转换成小端,网络编程字节序转换问题

    一 xff1a 大小端 一 大小端区别 字节 区别是依据 xff1a 计算机系统在存储数据时起始地址是高地址仍是低地址 小端 xff1a 从低地址开始存储 大端 xff1a 从高地址开始存储 补充 xff1a 这里大小端是按字节区别的 xf
  • [转载]Linux C 字符串函数 sprintf()、snprintf() 详解

    一 sprintf 函数详解 在将各种类 型的数据构造成字符串时 xff0c sprintf 的强大功能很少会让你失望 由于 sprintf 跟 printf 在用法上几乎一样 xff0c 只是打印的目的地不同而已 xff0c 前者打印到字
  • http Authorization

    MDN 文档 HTTP协议中的 Authorization 请求消息头含有服务器用于验证用户代理身份的凭证 xff0c 通常会在服务器返回401 Authorization lt type gt lt credentials gt curl
  • linux编译动态库未定义,GCC链接库的一个坑:动态库存在却提示未定义动态库的函数...

    背景 在GCC中已经指定链接库 xff0c 然而编译时却提示动态库函数未定义 xff01 测试出现的错误提示如下 xff1a GMPY 64 13 48 tmp gcc o test L lmylib test c tmp ccysQZI3
  • .inf右键没有安装菜单项解决办法

    打开我的电脑 xff0c 工具菜单中的文件夹选项 切换至文件类型选项卡 xff0c 在其中找到inf文件 xff0c 点高级按钮 xff0c 双击安装 I xff0c 没有新建一个 按如下内容修 改 用于执行操作的应用程序C WINDOWS
  • C++ : 编译单元、声明和定义、头文件作用、防止头文件在同一个编译单元重复引用、static和不具名空间...

    转 自 xff1a http www cnblogs com rocketfan archive 2009 10 02 1577361 html 1 编译单元 xff1a 一个 cc或 cpp文件作为一个编译单元 xff0c 生成 o 2
  • request方法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1request概述 request是Servlet service 方法的一个参数 xff0c 类型为javax servlet http HttpServletRequ
  • Eclipse调试:改变颜色, 背景与字体大小 和xml字体调整

    Eclipse背景颜色修改 xff1a 操作界面默认颜色为白色 对于我们长期使用电脑编程的人来说 xff0c 白色很刺激我们的眼睛 xff0c 所以我经常会改变workspace的背景色 xff0c 使眼睛舒服一些 设置方法如下 xff1a
  • ASM汇编常用跳转指令-极速查

    作者 xff1a 逆向驿站 微信公众号 xff1a 逆向驿站 知乎 xff1a 逆向驿站 若不是老鸟 xff0c 是不是经常为各种JXX汇编跳转指令查资料 xff1f 影响效率 xff0c 更影响潜意识整体分析的 34 灵光一现 34 本公
  • Android签名机制及原理

    Android签名机制及原理 Android系统在安装APK的时候 xff0c 首先会检验APK的签名 xff0c 如果发现签名文件不存在或者校验签名失败 xff0c 则会拒绝安装 xff0c 所以应用程序在发布之前一定要进行签名 给APK
  • chrome扩展获取页面dom对象信息

    chrome扩展 xff0c 在popup页面 xff0c 给页面对象绑定点击事件 xff0c 获取当前tab加载页面的DOM对象信息 本chrome扩展功能主要用于获取百度搜索输入框中用户输入的关键字 效果如下 源代码如下 注意 xff1
  • CentOS 7之FirewallD与iptables的区别

    2019独角兽企业重金招聘Python工程师标准 gt gt gt FirewallD 即Dynamic Firewall Manager of Linux systems xff0c Linux系统的动态防火墙管理器 xff0c 是 ip