一、firewall

1、从CentOS7开始,默认使用firewall来配置防火墙,没有安装iptables(旧版默认安装)。

2、firewall的配置文件是以xml的格式,存储在 /usr/lib/firewalld/ 和 /etc/firewalld/ 目录中。

 (1)系统配置目录,目录中存放定义好的网络服务和端口参数,系统参数,不要修改。

 /usr/lib/firewalld/
/usr/lib/firewalld/services
/usr/lib/firewalld/zones

 (2)用户配置目录

 /etc/firewalld/
/etc/firewalld/services
/etc/firewalld/zones

3、特性

(1)firewalld是centos7的一大特性,最大的好处有两个:

  • 支持动态更新,不中断用户连接
  • 加入了防火墙的“zone”概念 ,可以理解为 firewalld 的单位、规则集:

   1️⃣ drop(丢弃),任何接受的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网路连接。

   2️⃣ block(限制),任何接收的网络连接都被IPv4的icmp-host-prohibited信息和IPv6的icmp6-adm-prohibited信息所拒绝。

   3️⃣ public(公共),在公共区域内使用,不能相信网络内的其他计算机不会对你的计算机造成危害,只能接收经过选取的连接。  

  4️⃣ external(外部),特别是为路由器启动了伪装功能的外部网。你不能相信来自网络的其他计算机,不能相信他们不会对你的计算机造成危害,只能接收经过选择的连接。

   5️⃣ dmz(非军事区),用于你的非军事区内的电脑,此区域内可公开访问,可以有限的进入你的内部网络,仅仅接收经过选择的连接。

   6️⃣ work(工作),用于工作区。你可以基本相信网络内的其他计算机不会危害到你。仅仅接收经过选择的连接。

   7️⃣ home(家庭),用于家庭网络。你可以基本相信网络内的其他计算机不会危害到你。仅仅接收经过选择的连接。

   8️⃣ internal(内部),用于内部网络。你可以基本相信网络内的其他计算机不会危害到你。仅仅接收经过选择的连接。

   9️⃣ trusted(信任),可接受所有的网络连接。

   说明:firewalld 的缺省区域是 public。

(2)firewalld有图形界面和工具界面

(3)firewalld的字符界面管理工具是 firewall-cmd

二、配置防火墙

设置防火墙的方式有两种:firewall命令 、 直接修改配置文件

1、firewall命令

例如:对外开放/停止3306端口,供外部的计算机访问。该命令方式添加的端口,可在/etc/firewalld/zones中的对应配置文件中得到体现

#开放
firewall-cmd --zone=public --add-port=/tcp --permanent #删除
firewall-cmd --zone=public --remove-port=/tcp --permanent #别忘记重启防火墙
systemctl restart firewalld

说明:

  • firewall-cmd:Linux中提供的操作firewall的工具。
  • –zone:指定作用域。
  • –add-port=3306/tcp:添加的端口,格式为:端口/通讯协议。
  • –permanent:表示永久生效,没有此参数重启后会失效。

2、直接修改配置文件

比如:修改 /etc/firewalld/zones/public.xml

<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
<service name="ssh"/>
<service name="dhcpv6-client"/>
<port protocol="tcp" port=""/>
<port protocol="tcp" port=""/>
<port protocol="tcp" port=""/>
<port protocol="tcp" port=""/>
<port protocol="tcp" port=""/>
<port protocol="tcp" port="39000-40000"/>
<port protocol="tcp" port=""/>
</zone>

如上,需要开放的端口,已经添加再public这个区域里了。

三、firewall常用命令

1、查看状态

service firewalld status 

systemctl status firewalld

firewall-cmd --state

2、启动、停止、重启

# 启动
service firewalld start

systemctl start firewalld # 停止
service firewalld stop

systemctl stop firewalld # 重启
service firewalld restart

systemctl restart firewalld

3、开机自启动

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

4、查看防火墙规则

firewall-cmd --list-all

四、其他命令

1、其他基本命令

firewall-cmd --version          #查看版本
firewall-cmd --help #查看帮助
firewall-cmd --panic-on #拒绝所有包
firewall-cmd --panic-off #取消拒绝状态
firewall-cmd --query-panic #查看是否拒绝
firewall-cmd --reload #重新加载防火墙,并不中断用户连接(firewalld特性之一动态添加规则)
firewall-cmd --complete-reload #重新加载防火墙并中断用户连接(类似于重启服务)

2、zone相关

firewall-cmd --get-zones                    #显示支持的区域列表
firewall-cmd --get-active-zones #查看当前的区域
firewall-cmd --get-default-zone #查看默认区域
firewall-cmd --set-default-zone=home #设置默认区域为 home
firewall-cmd --zone=public --list-interfaces #显示显示公共区域(public)所有接口
firewall-cmd --zone=public --list-all #显示公共区域(public)所有设置
firewall-cmd --get-zone-of-interface=ens33 #查看指定接口 ens33 所属区域
firewall-cmd --zone=internal --change-interface=ens33 #临时修改网络接口 ens33 为内部区域(internal),永久修改加上 --permanent 参数
firewall-cmd --zone=public --add-interface=ens37 #为公共区域(public)增加一个接口 ens37

3、service相关

firewall-cmd --get-service                           #显示服务列表
firewall-cmd --list-service #显示当前服务
firewall-cmd --enable service=ssh #允许SSH服务通过
firewall-cmd --disable service=ssh #禁止SSH服务通过
firewall-cmd --enable service=samba --timeout= #临时允许 samba 服务通过 秒
firewall-cmd --permanent --zone=internal --add-service=http #添加 http 服务到内部区域(internal)
firewall-cmd --zone=work --add-service=smtp #把 smtp 服务加入工作区域(work)
firewall-cmd --zone=work --remove-service=smtp #从工作区域(work)移除 smtp 服务

4、地址伪装

firewall-cmd --zone=external --query-masquerade     #查询外部区域(external)是否能伪装ip,结果为yes
firewall-cmd --zone=external --add-masquerade #外部区域(external)启用IP伪装(masquerade)
firewall-cmd --zone=external --remove-masquerade #外部区域(external)禁用用IP伪装

5、端口转发

# 打开端口转发,首先需要打开IP地址伪装
firewall-cmd --zone=external --add-masquerade # example :把外部区域(external)的 端口 转发至
firewall-cmd --zone=external --add-forward-port=:porto=tcp:toport= # example :把外部区域(external)的 端口转发到 192.168.1.20 的同一端口
firewall-cmd --zone=external --add-forward-port=:porto=tcp:toaddr=192.168.1.20 # example :把外部区域(external)的 端口转发到 192.168.1.20 的 端口
firewall-cmd --zone=external --add-forward-port=port=:proto=tcp:toport=:toaddr=192.168.1.20

Centos7 配置防火墙 firewall的更多相关文章

  1. Linux Centos7配置防火墙开启端口

    在使用centos7安装完mysql.tomcat.nginx后,都需要配置防火墙才能正常访问. 下面系统的学习一下防火墙的配置. centos7默认使用firewall,需要关闭,然后使用iptab ...

  2. CentOS7配置防火墙

    使用命令的方式配置 ##Add firewall-cmd --permanent --zone=public --add-port=/tcp ##Remove firewall-cmd --perma ...

  3. Centos7,配置防火墙,开启端口

    原文链接:https://blog.csdn.net/u013410747/article/details/61696178 适用于CentOS 7 64位的指令: .查看已开放的端口(默认不开放任何 ...

  4. Centos7安装防火墙firewall

    安装 1.下载 yum install -y firewalld yum install -y firewall-config 2.启动 systemctl start firewalld # 启动 ...

  5. Centos7:配置防火墙

    firewalld的基本使用 启动: systemctl start firewalld 关闭:systemctl stop firewalld 查看状态: systemctl status fire ...

  6. CentOS7.3防火墙firewalld简单配置

    今天安装了centos7.3, 想用iptables的save功能保存规则的时候发现跟rhel不一样了,  后来度娘说centos用的是firewalld而不是iptables了, 平时工作都是用re ...

  7. linux配置防火墙,开启端口

    Centos7,配置防火墙,开启端口 1.查看已开放的端口(默认不开放任何端口) firewall-cmd --list-ports 2.开启80端口 firewall-cmd --zone=publ ...

  8. Centos7启动防火墙时报错Failed to start IPv4 firewall with iptables

    今天在虚拟机的Linux系统(centos7)里安装Redis,准备学习一下布隆过滤器呢,安装完后使用Windows本机访问不了虚拟机里的Redis,telnet不通能够ping通.于是就去看防火墙, ...

  9. CentOS7 下使用 Firewall防火墙系统封禁允许IP和端口的访问 端口转发 IP转发方法

    CENTOS7的防火墙系统默认已经从iptable改成了firewall,使用方法也有所不同,下面是详细介绍 一.管理端口 列出 dmz 级别的被允许的进入端口 # firewall-cmd --zo ...

随机推荐

  1. leetcode-832翻转图像

    翻转图像 思路: 先对图像进行水平翻转,然后反转图片(对每个像素进行异或操作) 代码: class Solution: def flipAndInvertImage(self, A: List[Lis ...

  2. noip模拟赛 斐波那契

    分析:暴力分有90,真良心啊. a,b这么大,连图都建不出来,肯定是有一个规律.把每个点的父节点写出来:0 1 1 12 123 12345 12345678,可以发现每一个循环的长度刚好是斐波那契数 ...

  3. android开发里跳过的坑-AS导入NDK工程提示错误 No such property: sdkHandler for class: com.android.build.gradle.LibraryPlugin

    接到一个NDK工程需要调试,导入后发现总是提示错误 Error:(37, 1) A problem occurred evaluating project ':libuvccamera'.> N ...

  4. TYVJ1716 上帝造题的七分钟

    时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 裸体就意味着身体. 描述 “第一分钟,X说,要有矩阵,于是便有了一个里面写满了0的n×m矩阵.第二分钟,L说, ...

  5. Linux下C编程入门(7)

    Linux下项目同步工具介绍git和github 一.远程仓库工具github 1. 一.本地操作工具git 1.

  6. MongoDB学习day01--非关系型数据库

    1.数据库和文件的主要区别: 1.1数据库有数据库表/行和列的概念,让我们存储操作数据方便 1.2数据库提供了方便的接口,让java.php..net.nodejs很方便的实现增删改查 2.NoSQL ...

  7. python之SocketServer编程

    编写一个SocketServer需要实现以下步骤 编写一个handler类,继承BaseRequestHandler,重写handle()方法 针对是TCP还是UDP,生成一个server对象 调用s ...

  8. SGU 439 A Secret Book

    解法: 对于第二个串,循环移动能得到的字典序最小的串,可以直接用最小表示法搞定. 然后用最小表示的第二个串和第一个串做两次扩展KMP,一次正常求,另外一次将两个串都反转一下,然后扫一遍ex[]数组 # ...

  9. A* Pathfinding Project (Unity A*寻路插件) 使用教程

    Unity4.6 兴许版本号都已经内置了寻路AI了.之前的文章有介绍 Unity3d 寻路功能 介绍及项目演示 然而两年来项目中一直使用的是 A* Pathfinding 这个插件的.所以抽时间来写下 ...

  10. 《Java设计模式》之接口模式

    -----------模式是思想的体现,而非详细的实现. 抽象的讲,类的接口是类同意其它类对象訪问的方法与字段集.接口通常代表一种承诺,即方法须要实现接口方法名表示的操作,遵循代码凝视和其它文档说明. ...