一、firewalld和iptables

netfilter/iptables是集成在linux2.4.x版本内核中的包过滤防火墙系统。该框架可以实现数据包过滤,网络地址转换以及数据包管理功能。linux中的防火墙系统包括两个部分:netfilte和iptables。netfilte可以对本机所有流入、流出、转发的数据包进行查看、修改、丢弃、拒绝等操作。由于netfilter在内核空间中,用户通常无法接触内核和修改内核,此时需要命令行工具,一般使用iptables、firewalld等工具。使用iptables可以添加、删除具体的过滤规则,iptables默认维护四个表和五个链,所有的防火墙策略规则都将被分别写入表和链中。
centos7系统防火墙模块存放在/lib/modules/3.10.0-514.el7.x86_64/kernel/net/netfilter/目录下,当需要某个模块功能时,可以通过modprobe加载。centos7在原有的netfilter/iptables架构上又增加了firewalld。iptables工具是一个比较低级别的工具,仅可以调整ipv4的防火墙规则,所以在centos7上使用了firewalld作为默认的用户防火墙工具,但当用户使用firewalld编写ipv4防火墙规则时,firewalld依然是调用了底层的iptables实现具体的功能,只是这个调用过程对用户是透明的。

iptables service在 /etc/sysconfig/iptables中储存配置,而 firewalld将配置储存在 /usr/lib/firewalld/(系统配置,尽量不要修改) 和/etc/firewalld/(用户配置地址)中的各种 XML 文件里。

二、firewalld

1. 对网络区(zone)的理解

firewalld将所有的网络流量都分类汇聚到zones中,它通过zones管理防火墙规则,每一个进入系统的数据包,都会首先检查源IP地址和接口,如果与某个zone匹配,则该zone的规则将生效。而每个zone都会有开启或关闭服务和端口的列表,以实现允许或拒绝链接服务和端口。如果数据包的源IP地址和网卡接口都不能和任何zone匹配,则该数据包将匹配默认zone,一般情况下是一个public的默认zone。

firewalld会提供block,dmz,drop,external,home,internal,public,trusted,work这九个zone。比如有一个数据包从eno1网卡进入本机,根据规则进入work这个zone,而在work这个zone中有允许访问http服务的规则,则最后该数据包将可以进入本机并访问http服务

大部分zone都定义的有自己的允许规则,规则通过端口/协议(631/udp)或者预定义的服务(ssh)这种形式设置,如果数据包没有匹配这些允许的规则,则该数据包一般会被防火墙拒绝。但是如果有名为trusted的zone,默认会运行所有的数据流量,如果有一个数据包进入了该zone,则被允许访问所有的资源。

由firewalld 提供的区域按照从不信任到信任的顺序排序:

丢弃区域(Drop Zone)
任何接受的网络数据包都被丢弃,没有任何回复,仅能有发送出去的网络连接(数据包不能进来,但是可以出去)。这个类似与我们之前使用iptables -j drop。

阻塞/限制区域(Block Zone)
阻塞区域会拒绝进入的网络连接,返回 icmp-host-prohibited(ICMP-主机-禁止),只有服务器已经建立的连接会被通过,即只允许由该系统初始化的网络连接。
任何接收的网络连接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-admprohibited 信息所拒绝。

公共区域(Public Zone)
只接受那些被选中的连接,默认只允许 ssh 和 dhcpv6-client。这个 zone 是缺省(即默认)zone。
在公共区域内使用,不能相信网络内其他计算机不会对你造成危害,只能接受经过选取的连接。。

外部区域(External Zone)
这个区域相当于路由器的启用伪装(masquerading)选项。只有指定的连接会被接受,即ssh,而其它的连接将被丢弃或者不被接受。
特别是为路由器启用了伪装功能的外部网,你不能信任来自网络的其他计算,不能相信他们不会对你造成伤害,只能接受经过选择的连接。

隔离区域(DMZ Zone)
如果想要只允许给部分服务能被外部访问,可以在DMZ区域中定义。它也拥有只通过被选中连接的特性,即ssh。
用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过 选择的连接。

工作区域(Work Zone)
在这个区域,我们只能定义内部网络。比如私有网络通信才被允许,只允许ssh,ipp-client和 dhcpv6-client。用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接。

家庭区域(Home Zone)
这个区域专门用于家庭环境。它同样只允许被选中的连接,即ssh,ipp-client,mdns,samba-client和 dhcpv6-client。
用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接。

内部区域(Internal Zone)
这个区域和工作区域(Work Zone)类似,只有通过被选中的连接,和home区域一样。
用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接。

信任区域(Trusted Zone)
信任区域允许所有网络通信通过。记住:因为trusted是最被信任的,即使没有设置任何的服务,那么也是被允许的,因为trusted是允许所有连接的

2. Firewalld的原则:(如果一个客户端访问服务器,服务器根据以下原则决定使用哪个 zone 的策略去匹配)

1)如果一个客户端数据包的源 IP 地址匹配 zone 的 sources,那么该 zone 的规则就适用这个客户端。一个源只能属于一个zone,不能同时属于多个zone。但是一个zone里可以有多个source。

2)如果一个客户端数据包进入服务器的某一个接口(如eth0)匹配zone的interfaces(接口),则么该 zone 的规则就适用这个客户端;一个接口只能属于一个zone,不能同时属于多个zone。但是一个zone里可以有多个接口。

3)如果上述两个原则都不满足,那么缺省的 zone 将被应用。

我们可以使用任何一种 firewalld 配置工具来配置或者增加区域,以及修改配置。工具有 firewall-cmd 这样的命令行工具,或者你也可以在配置文件目录中创建或者拷贝区域文件,/usr/lib/firewalld/zones 被用于默认和备用配置,/etc/firewalld/zones被用于用户创建和自定义配置文件。命令行工具firewall-cmd支持全部防火墙特性。

三、firewall-cmd常用命令及存储位置

1、安装Firewall 命令:

yum install firewalld firewalld-configFirewall

2、区域管理类命令

firewall-cmd --set-default-zone=trusted  #设置默认区域为trusted,允许所有的通过,会改变防火墙配置文件:/etc/firewalld/firewalld.conf中的默认值
firewall-cmd --get-default-zone         #查看默认区域
firewall-cmd --get-active-zones         #查看(活动区域)默认接口和区域
firewall-cmd --get-zones                #列出所有可用的区域
firewall-cmd --list-all --zone=public   #查看public区域已配置的规则(只显示/etc/firewalld/zones/public.xml中防火墙策略)
firewall-cmd --list-all-zones           #查看所有的防火墙策略(即显示/etc/firewalld/zones/下的所有策略)

3、端口管理:

firewall-cmd --permanent --list-port --zone=public            #查看端口,不加zone就是查询默认zone
firewall-cmd --zone=public --add-port=3306/tcp --permanent    #允许tcp的3306端口到public区域。
#–zone:作用域;–add-port=80/tcp:添加端口,格式为:端口/通讯协议;–permanent:永久生效,没有此参数重启后失效
firewall-cmd --reload                                         #重新加载防火墙配置,并不中断用户连接,即不丢失状态信息
firewall-cmd --zone=public --remove-port=3306/tcp--permanent  #从public区将tcp的3306端口移除
firewall-cmd --add-port=2048-2050/udp --zone=public           #允许某一范围的端口,如允许udp的2048-2050端口到public区域

4、服务管理:

firewall-cmd --get-services                                #查看预定义服务 :
firewall-cmd --add-service=http --zone=public --permanent  #添加http服务到public区域
systemctl restart firewalld                                #重启防火墙服务才生效(permanent状态):
firewall-cmd --remove-service=http --permanent --zone=public #移除public区域的http服务,不使用--zone指定区域时使用默认区域:
firewall-cmd --add-service=http --add-service=https        #将多个服务添加到某一个区域,不添加--permanent选项表示是即时生效的临时设置

5、伪装ip:

firewall-cmd --query-masquerade                # 检查是否允许伪装IP
firewall-cmd --permanent --add-masquerade      # 允许防火墙伪装IP
firewall-cmd --permanent --remove-masquerade   # 禁止防火墙伪装IP

6、端口转发:

当我们想把某个端口隐藏起来的时候,就可以在防火墙上阻止那个端口访问,然后再开一个不规则的端
口,之后配置防火墙的端口转发,将流量转发过去。
例:

1. firewall-cmd --permanent --add-masquerade                     #开启地址伪装。
2. firewall-cmd --add-forward-port=port=8080:proto=tcp:toport80  #添加转发8080--》80
3. firewall-cmd --add-port=8080/tcp
4. firewall-cmd --remove-service=http                            #删除80端口的协议。

7、多区域的应用:

1)可以根据不同的接口配置不同的区域
2)可以对同一个接口,对不同网段的ip/流量,配置不同的访问
例:

1. 一个接口只能对应一个区域,将接口与指定区域关联:
firewall-cmd --change-interface=ens75 --zone=drop
2. 根据不同的访问来源网段,设定至不同的区域规则:
firewall-cmd --add-source=192.168.75.0/24 --zone=public
firewall-cmd --add-source=192.168.85.0/24 --zone=drop
firewall-cmd --get-active-zones :查看(活动区域)默认接口和区域。

centos7防火墙(firewalld、iptables)相关推荐

  1. Linux7查看防火墙日志,Linux入门教程:CentOS7防火墙firewalld配置,防火墙日志在哪呢...

    Linux入门教程:CentOS7防火墙firewalld配置,防火墙日志在哪呢 启动: systemctl start firewalld 停止: systemctl stop firewalld ...

  2. linux firewalld配置文件,Linux CentOS7防火墙firewalld使用说明

    文章目录 [隐藏] firewalld配置文件 firewalld规则 firewalld的9个zone介绍 firewalld zone相关命令的用法 firewalld service介绍 Cen ...

  3. Centos7 防火墙 firewalld 实用操作

    一.前言 Centos7以上的发行版都试自带了firewalld防火墙的,firewalld去带了iptables防火墙.其原因是iptables的防火墙策略是交由内核层面的netfilter网络过滤 ...

  4. CentOS7防火墙firewalld和iptable的设置和使用

    再部署了服务器环境之后,服务器正常启动,日志也正常打印,但是服务不能访问,对问题逐一进行排查,最后发现是服务器防火墙设置的问题.于是将防火墙的一些设置方法总结记录如下: 1.firewalld的基本使 ...

  5. centos7防火墙firewalld配置,干货直接上手

    2019独角兽企业重金招聘Python工程师标准>>> [流程简介] centos7开始使用firewalld防火墙,防火墙规则在配置文件中加载,因此修改防火墙只需要[修改配置文件] ...

  6. Linux centos7防火墙firewalld相关操作

    systemctl stop firewalld.service:关闭防火墙服务 systemctl start firewalld.service:开启防火墙服务 systemctl status ...

  7. Centos7防火墙与IPTABLES详解

    防火墙定义 防火墙分类 无状态包过滤防火墙 基于单个IP报文进行操作,每个报文都是独立分析 默认规则 一切未被允许的都是禁止的 一切未被禁止的都是允许的 规则特征 协议类型,如TCP.UDP.ICMP ...

  8. CentOS7防火墙firewalld开放指定端口

    查看防火墙开放端口: firewall-cmd --list-port 开放端口: firewall-cmd --zone=public --add-port=80/tcp --permanent 命 ...

  9. Linux中防火墙firewalld

    Linux中防火墙firewalld 一.什么是防火墙 二.防火墙的作用 三.Linux中的防火墙分类 四.firewalld防火墙 1. 区域 2.运行模式和永久模式 五.防火墙设置 1.防火墙的启 ...

  10. 服务器安全设置Centos7 防火墙firewall与iptables

    一.>>>>>>启用centos7 iptables防火墙Centos7 防火墙firewall设置方法 我们Sinesafe在处理客户服务器Linux Cento ...

最新文章

  1. Java项目:考试管理系统(java+Springboot+Maven+Jpa+Vue+Mysql)
  2. linux下uptime命令详解
  3. 4次迭代!10w行级别数据的Excel导入优化记录
  4. java继承父类执行顺序_java中子类继承父类程序执行顺序问题
  5. 学习spring必须java基础知识-动态代理
  6. C# Windows异步I/O操作
  7. 免安装mysql5.7.22_windows环境下安装MySQL5.7.22免安装版
  8. maven 项目搭建
  9. .htaccess 语法以及应用
  10. OpenCasCade将鼠标点映射到OCC三维视图中的三维点(鼠标点转换为OCC三维坐标)
  11. java实现文件移动_java实现文件的复制,移动
  12. HDU 6441 Find Integer 费马大定理
  13. 【Games101】Lecture05 光栅化 笔记
  14. 3个酷到没同学的冷门专业,开始逆袭了?
  15. python打字测速_【pygame游戏编程】第四篇-----打字测速游戏
  16. domoticz添加和风天气,让domoticz显示天气信息
  17. DeepMind AI碾压《星际争霸2》人类职业玩家 但它还不完美
  18. 能源管理系统助力工业企业绿色低碳发展
  19. 安装centos7.0时电脑进入黑屏的解决方法
  20. 笔记本电脑Wifi功能突然消失

热门文章

  1. STM32CubeMX串口中断偶校验问题
  2. 如何让pbootcms模板自动生成当前页面二维码-教程
  3. MVC设计模式与JavaWeb的三层架构
  4. Towards End-to-end Text Spotting with Convolutional Recurrent Neural Networks
  5. Chrome浏览器解决插件安装CRX-INVALID-HEAD问题
  6. 全球首款搭载鸿蒙操作系统的设备是什么,全球首款搭载华为鸿蒙系统的智能空调首发上市!美的创造...
  7. Jetson NX挂载nvme固态硬盘
  8. Mybatis是什么以及Mybatis和JDBC的关系?
  9. 【转载】html网页字体颜色代码大全
  10. vue中调用百度地图api