官方文档地址:

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html#sec-Introduction_to_firewalld1

修改防火墙配置文件之前,需要对之前防火墙做好备份

重启防火墙后,需要确认防火墙状态和防火墙规则是否加载,若重启失败或规则加载失败,则所有请求都会被防火墙拦截

1
2
3
4
5
6
7
8
9
10
systemctl status firewall   
    #查看firewall服务状态
firewall-cmd --state        
    #查看firewall的状态
firewall-cmd --list-all 
    #查看防火墙规则(只显示/etc/firewalld/zones/public.xml中防火墙策略)
firewall-cmd --list-all-zones 
    #查看所有的防火墙策略(即显示/etc/firewalld/zones/下的所有策略)
firewall-cmd --reload
    #重新加载配置文件

方法1、修改配置文件/etc/firewalld/zones/public.xml,重启或重新加载配置生效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
[root@nginx01 zones]# cat 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>
  <rule family="ipv4">
    <source address="122.x.x.234"/>
    <port protocol="udp" port="514"/>
    <accept/>
  </rule>
  <rule family="ipv4">
    <source address="123.x.x.14"/>
    <port protocol="tcp" port="10050-10051"/> ##可以开放端口地址范围"10050-10051",不单只限定一个端口
    <accept/>
  </rule>
 <rule family="ipv4">
    <source address="192.x.x.114"/>      ##放通指定ip,指定端口、协议
    <port protocol="tcp" port="80"/>
    <accept/>
  </rule>
<rule family="ipv4">                        ##放通任意ip访问服务器的9527端口
    <port protocol="tcp" port="9527"/>
    <accept/>
  </rule>
</zone>
 
 
firewall-cmd --reload
service firewalld restart    #使配置文件重新加载

方法2、命令行修改防火墙策略,仍需重启firewalld.service或重新加载防火墙配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
firwall-cmd --permanent --add-port=9527/tcp    插入防火墙规则,放通9527端口。
success 
 
#命令执行成功同时,在/etc/firewall/zones/public.xml中自动生成该规则。
<zone>
  <short>xx.</short>
  <description>xxx.</description>
  <port protocol="tcp" port="9527"/>
</zone>
 
service firewalld restart
firewall-cmd --reload         #重启或重新加载配置文件,使配置生效   
firewall-cmd --list-all
firewall-cmd --permanent --query-port=9527/tcp    #查询刚插入的规则是否生效

firewall-cmd --zone=public --add-port=80/tcp --permanent    添加防火墙规则;

firewall-cmd --reload    重新加载防火墙;

firewall-cmd --permanent --zone=public --add-masquerade    允许内网上网;

/etc/firewalld/zones/public.xml添加策略标准规则:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=122.x.x.234/24 port port=5423 protocol=tcp drop'    
firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=122.x.x.234 port port=80 protocol=tcp accept'    
firewall-cmd --reload
[root@nginx02 ~]# firewall-cmd --list-all
public (default, active)
  interfaces: em1
  sources: 
  services: 
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 
    rule family="ipv4" source address="122.x.x.234" port port="5234" protocol="tcp" drop
    rule family="ipv4" source address="122.x.x.234" port port="80" protocol="tcp" accept
    rule family="ipv4" source address="123.x.x.14" port port="10050-10051" protocol="tcp" accept

二、以服务的形式(例如:ssh.xml/http.xml)添加新的防火墙策略

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
cat /etc/firewalld/zones/ssh.xml
<?xml version='1.0' encoding='utf-8'?>
<zone>
  <short>ssh</short>
  <description>ssh.</description>
#fortress-new
  <source address='122.x.x.2/29'/>
  <service name='ssh'/>
</zone>
 
firewall-cmd --list-all-zones
...
ssh
  interfaces: 
  sources: 122.x.x.2/29 
  services: ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules:
...

因为在/usr/lib/firewalld/services/中事先定义了ssh.xml的相应的规则

1
2
3
4
5
6
7
8
9
cat /usr/lib/firewalld/services/ssh.xml 
 
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" port="22"/>
</service>
##定义ssh.xml服务使用的协议,和通信的端口信息。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
自定义服务(mongo.xml)模块
cat /usr/lib/firewalld/services/mongo.xml
<service>
  <short>mongo</short>
  <description>The service of mongo.</description>
  <port protocol="tcp" port="27017"/>
</service>
 
防火墙应用服务器模块
cat /etc/firewalld/zones/mongo.xml
<zone>
  <short>mongo</short>
  <description>mongo service</description>
  <source address="2.2.2.2/24"/>
  <service name="mongo"/>
</zone>
 
查看mongo.xml服务的防火墙生效情况
firewall-cmd --list-all-zones
...
mongo
  interfaces: 
  sources: 2.2.2.2/24 
  services: mongo
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules:
...

PS:如果一个IP同时应用在多个.xml服务,则只会在最先匹配的服务生效,之后的服务则不匹配该IP。若需要将该IP应用在多个服务,则需要另开服务,将该IP应用的服务都绑定在该服务下。

例如:10.10.86.44同时需要放通ssh、http、mysql等服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
cat multi.xml 
 
<zone>
  <short> multi services</short>
  <description>IP of 10.10.86.44 apply in multi srevices.</description>
  <source address="10.10.86.44"/>
  <service name="ssh"/>
  <service name="mysql"/>
  <service name="http"/>        ##同时添加多个服务
</zone>
 
firewall-cmd --list-all-zones
...
multi
  interfaces: 
  sources: 10.10.86.44
  services: http mysql ssh
  ports: 
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules:
...

总结:

(1)修改配置文件的方法和命令行添加防火墙策略的方法,都不能立即生效,需要重启或重新加载防火墙配置文件,是新的策略生效。

service firewalld restart

firewall-cmd --reload

(2)修改完防火墙后,一定要检查防火墙状态和策略加载状态,若失败则可能拦截所有请求。

(3)以服务(ssh.xml)的方式添加防火墙,可以方便管理。前提需要先查看/usr/lib/firewalld/services中是否定义相应的服务。

(4)若一个IP同时应用多个了服务,则会最先匹配第一个应用了该ip的服务,之后的服务中则不匹配。若需要同时应用到多个服务,则需要另开服务,在该服务(multi.xml)下同时应用多个服务(ssh/http/mysql等)

扩展文档:

1.CentOS7下Firewall防火墙配置用法详解

http://www.centoscn.com/CentOS/Intermediate/2015/0313/4879.html

2.在CentOS7.0 中默认的防火墙 “firewall” 使用方法

http://f.dataguru.cn/thread-473492-1-1.html

3.CentOS 7 巨大变动之 firewalld 取代 iptables

http://blog.csdn.net/smstong/article/details/39317277(外文官方文档)

4.CentOS 7 中firewall-cmd命令

http://blog.sina.com.cn/s/blog_43b39e250102v4zt.html

5.CentOS7 Firewall防火墙配置用法详解

http://www.111cn.net/sys/linux/75503.htm

CentOS7下Firewall防火墙配置用法详解的更多相关文章

  1. CentOS7 Firewall防火墙配置用法详解

    centos 7中防火墙是一个非常的强大的功能了,但对于centos 7中在防火墙中进行了升级了,下面我们一起来详细的看看关于centos 7中防火墙使用方法.   FirewallD 提供了支持网络 ...

  2. CentOS7下的YUM源服务器搭建详解,过程写的很详细(转)

    因为近期公司需要搭建一个YUM源服务器给大量的linux(mini)使用,所以因此在网上找了很多的教程,却没有一个特别详细的,很多都有遗漏,参差不齐.所以,打算自己做完之后方便以后查阅,特出此文档. ...

  3. CentOS7下rsync服务的基本详解和使用

    第1章 Rsync基本概述 1.1 什么是Rsync rsync是一款开源,快速,多功能的可实现增量的本地或远程的数据镜像同步备份的优秀工具.适用于多个平台.从软件名称可以看出来是远程同步的意思(re ...

  4. Centos7下Firewalld防火墙配置命令

    前    言 服务端口日常被拦截,记录一下常用的命令便于查询 Firewalld服务管理 查看防火墙状态   1 systemctl status firewalld 开机启用/禁用防火墙   1 s ...

  5. Windows下SVN权限配置过程详解

    本节讲解一下Windows下SVN权限配置说明,针对的是一个目录下多库的情况,下面是具体的介绍,希望通过本文的学习,你能够对SVN权限配置问题有更加深刻的认识. 1.本文档适用于对Subvesion的 ...

  6. Linux下nl命令的用法详解

    Linux中nl命令和cat命令很像,不过nl命令会打上行号,属于比较不常用的命令,下面随小编一起来了解下这个鲜为人知的nl命令吧. nl命令在linux系统中用来计算文件中行号.nl 可以将输出的文 ...

  7. Linux centos7环境下安装MySQL的步骤详解

    Linux centos7环境下安装MySQL的步骤详解 安装MySQL mysql 有两个跟windows不同的地方 1).my.ini 保存到/etc/my.ini 2).用户权限,单独用户执行 ...

  8. Linux centos7环境下安装JDK的步骤详解

    Linux centos7环境下安装JDK的步骤详解 测试root用户下JAVA版本 输入命令:   java –version 1.先到Oracle官网里下载好jdk,网址如下: http://ww ...

  9. (转)windows 下安装配置 Nginx 详解

    windows 下安装配置 Nginx 详解 本文转自https://blog.csdn.net/kingscoming/article/details/79042874 nginx功能之一可以启动一 ...

随机推荐

  1. C#画表格

    下面给一个简单的例子,至于多个单元格合并,请自己去实现,也就是坐标计算的事情. 至于画图,用GDI,还是DirectX画,自己选择,不过这里主要讲的是算法:坐标计算以及画的过程. 注意不要每个列都画一 ...

  2. 关于viewport

    最近无聊的很,买了本教材,学习响应式网站设计. 因为有多年css的编程基础,前面的媒介查询学的很顺利.当学到viewport这个mata标签的时候,教程讲的比较简单. 今天,百度了不少资料,基本搞清楚 ...

  3. JAVA多线程基础知识(一)

    一. 基础知识 要了解多线程首先要知道一些必要的概念,如进程,线程等等.开发多线程的程序有利于充分的利用系统资源(CPU资源),使你的程序执行的更快,响应更及时. 1. 进程,一般是指程序或者任务的执 ...

  4. [HDU3709]Balanced Number

    [HDU3709]Balanced Number 试题描述 A balanced number is a non-negative integer that can be balanced if a ...

  5. [HDU2089]不要62

    [HDU2089]不要62 试题描述 杭州人称那些傻乎乎粘嗒嗒的人为62(音:laoer).杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就 ...

  6. IE盒模型

    IE5.5及更早的版本使用的是IE盒模型,在在IE6及以上版本的浏览器中,浏览器支持一种解决了这种差异的可选的渲染模式,也开始遵循标准模式. IE盒模型和W3C盒模型的差异: IE盒模型,块元素的实际 ...

  7. 单臂路由与三层交换机实现VLAN通信

    不同VLAN之间相互通信的两种方式 (单臂路由.三层交换) 试验环境:东郊二楼第三机房 试验设备:Catalyst 2950-24(SW3)                   Cisco 2611( ...

  8. BZOJ 3665: maths

    Sol 矩阵乘法+快速幂+欧拉定理. 首先观察题目可以发现 \(A_n\) 可以表示成关于 \(K\) 和 \(A_0\) 的几次幂的形式. \(A_0\) 就比较简单了 \(m^n\) 所以第一部分 ...

  9. Dom终

    l创建DOM元素 •createElement(标签名)  创建一个节点 •appendChild(节点)  追加一个节点 –例子:为ul插入li <!DOCTYPE html PUBLIC & ...

  10. 深度分析Linux下双网卡绑定七种模式 多网卡的7种bond模式原理

    http://blog.csdn.net/abc_ii/article/details/9991845多网卡的7种bond模式原理 Linux网卡绑定mode共有七种(~) bond0.bond1.b ...