Centos7中默认将原来的防火墙iptables升级为了firewalld,firewalld跟iptables比起来至少有两大好处:

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

  2、firewalld在使用上要比iptables人性化很多,即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。

firewalld和iptables的关系

  FirewallD 提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。它支持 IPv4, IPv6 防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项。它也支持允许服务或者应用程序直接添加防火墙规则的接口。 以前的 system-config-firewall/lokkit 防火墙模型是静态的,每次修改都要求防火墙完全重启。这个过程包括内核 netfilter 防火墙模块的卸载和新配置所需模块的装载等。而模块的卸载将会破坏状态防火墙和确立的连接。

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

firewalld的结构

  我们这里所说的结构并不是firewalld软件的结构,而是配置文件的结构。

  在具体介绍firewalld配置文件结构之前学生先来给大家介绍一下firewalld的配置模式,firewalld的配置模式设计的非常巧妙,而且这种设计思路也非常值得我们借鉴和学习。

firewalld的配置模式

  firewalld的配置文件以xml格式为主(主配置文件firewalld.conf例外),他们有两个存储位置

  用户配置目录 /etc/firewalld/

  系统配置目录 /usr/lib/firewalld/services

  使用时的规则是这样的:当需要一个文件时firewalld会首先到第一个目录中去查找,如果可以找到,那么就直接使用,否则会继续到第二个目录中查找。

文件和目录的作用

  firewalld的配置文件结构非常简单,主要有两个文件和三个目录:

  文件:firewalld.conf、lockdown-whitelist.xml

  目录:zones、services、icmptypes

  另外,如果使用到direct,还会有一个direct.xml文件。我们要注意,在保存默认配置的目录“/usr/lib/firewalld/”中只有我们这里所说的目录,而没有firewalld.conf、lockdown-whitelist.xml和direct.xml这三个文件,也就是说这三个文件只存在于“/etc/firewalld/”目录中。

  • firewalld.conf:firewalld的主配置文件,是键值对的格式,不过非常简单,只有五个配置项;
  • DefaultZone:默认使用的zone,默认值为public;
  • CleanupOnExit:这个配置项非常容易理解,他表示当退出firewalld后是否清除防火墙规则,默认值为yes;
  • Lockdown: 这个选项跟D-BUS接口操作firewalld有关,firewalld可以让别的程序通过D-BUS接口直接操作,当Lockdown设置为yes的 时候就可以通过lockdown-whitelist.xml文件来限制都有哪些程序可以对其进行操作,而当设置为no的时候就没有限制了,默认值为 no;
  • IPv6_rpfilter:其功能类似于rp_filter,只不过是针对ipv6版的,其作用是判断所接受到的包是否是伪造的,检查方式主要是通过路由表中的路由条目实现的,更多详细的信息大家可以搜索uRPF相关的资料,这里的默认值为yes。
  • lockdown-whitelist.xml:当Lockdown为yes的时候用来限制可以通过D-BUS接口操作firewalld的程序
  • direct.xml:通过这个文件可以直接使用防火墙的过滤规则,这对于熟悉iptables的用户来说会非常顺手,另外也对从原来的iptables到firewalld的迁移提供了一条绿色通道
  • zones:保存zone配置文件
  • services:保存service配置文件
  • icmptypes:保存和icmp类型相关的配置文件
  • zone

    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

  • service firewalld restart   重启
  • service firewalld start    开启
  • service firewalld stop    关闭
  • systemctl stop firewalld   禁用

查看firewall服务状态

  • systemctl status firewall

  • firewall-cmd --state

查看防火墙规则

  • firewall-cmd --list-all

配置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特性之一动态添加规则,第二个需要断开连接,类似重启服务

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

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

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

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

    设置默认接口区域

立即生效无需重启

设置端口

  • 查看所有打开的端口:

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

  • 加入一个端口到区域:

    firewall-cmd --zone=dmz --add-port=80/tcp

    若要永久生效再加上 --permanent

例子

开启80端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

# 	出现success表明添加成功
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效

重启防火墙

systemctl restart firewalld.service
  • 打开一个服务,类似于将端口可视化,服务需要在配置文件中添加,/etc/firewalld 目录下有services文件夹

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

  • 移除服务

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

firewall-cmd --zone= public --remove-port=80/tcp --permanent

CentOS切换为iptables防火墙

  切换到iptables首先应该关掉默认的firewalld,然后安装iptables服务。

-** 关闭firewall**:

service firewalld stop
systemctl disable firewalld.service #禁止firewall开机启动
  • 安装iptables防火墙
yum install iptables-services #安装
  • 编辑iptables防火墙配置
vi /etc/sysconfig/iptables #编辑防火墙配置文件
  • 下边是一个完整的配置文件:
Firewall configuration written by system-config-firewall

Manual customization of this file is not recommended.

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

:wq! #保存退出

service iptables start #开启
systemctl enable iptables.service #设置防火墙开机启动

centos7的防火墙(firewalld)的更多相关文章

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

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

  2. CentOS7 默认防火墙firewalld

    firewalld基础 firewalld是CentOS7源生支持的防火墙,firewalld最大的好处有两个:支持动态更新,不用重启服务:第二个就是加入了防火墙的“zone”概念. firewall ...

  3. centos7默认防火墙firewalld

    1.开关 启动: systemctl start firewalld 查看状态: systemctl status firewalld  停止: systemctl disable firewalld ...

  4. fedora/centos7防火墙FirewallD详解

    1 使用 FirewallD 构建动态防火墙 1.1 “守护进程” 1.2 静态防火墙(system-config-firewall/lokkit) 1.3 使用 iptables 和 ip6tabl ...

  5. Centos 7防火墙firewalld开放80端口(转)

    开启80端口 firewall-cmd --zone=public --add-port=80/tcp --permanent 出现success表明添加成功 命令含义: --zone #作用域 -- ...

  6. Centos7开启防火墙并且使MYSQL外网访问开放3306端口

    http://www.cnblogs.com/kreo/p/4368811.html CentOS7默认防火墙是firewalle,不是iptables #先检查是否安装了iptables servi ...

  7. 【转载】centos7.3 防火墙配置

    firewalld介绍原文:https://www.cnblogs.com/moxiaoan/p/5683743.html 一. centos7 默认有一个防火墙 firewalld,具体使用如下: ...

  8. centos7 关闭防火墙

    centos7 关闭防火墙 1.firewall相关的操作    查看防火墙状态 firewall-cmd    --state 关闭防火墙 systemctl  stop   firewalld.s ...

  9. centos7 iptables和firewalld学习记录

    centos7系统使用firewalld服务替代了iptables服务,但是依然可以使用iptables来管理内核的netfilter 但其实iptables服务和firewalld服务都不是真正的防 ...

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

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

随机推荐

  1. FastDFS分布式存储

    分布式存储分类 通用分布式存储:mogilefs, fastdfs, ...(无文件系统接口, 通过API访问) 专用分布式存储:即分布式文件系统, moosefs, ...(有文件系统接口) GFS ...

  2. 【noip模拟】D(==)

    Portal --> who knows == Description 数轴上面有一些洞,有一些老鼠,每个洞有一个容量限制,一只位于\(x\)的老鼠进到位于\(y\)的洞要花费\(|x-y|\) ...

  3. Chapter9(顺序容器) --C++Prime笔记

    PS:删除元素的成员函数并不检查其参数.在删除元素之前,程序员必须确保它们是存在的. 1.迭代器的范围是[begin,end)左闭右开. 2.对构成迭代器的要求: ①它们指向同一个容器中的元素或者容器 ...

  4. python基础3--字符串

    字符串 1.大小写转换 >>> name 'bigberg' >>> name.capitalize() # 首字母大写 'Bigberg' >>> ...

  5. Rstudio常用快捷键

    多行注释 ctrl+shift+c 运行单行或选中代码 ctrl+enter 查看帮助 F1

  6. Git4:Git标签

    目录 简介 新建标签 查看标签详细信息 切换标签 后期添加标签 将标签推送到远端仓库 简介 Git可以对某一时间点上的版本打上标签.人们在发布某个软件版本(比如 v1.0 等等)的时候,经常这么做.本 ...

  7. [Linux]-Linux常用命令之文件解压

    不压缩方式压缩的文件需要不同的命令来解压缩,下面是Linux的各种文件解压命令. 对于.tar结尾的文件: tar -xf 对于.gz结尾的文件 : gzip -d all.gz gunzip all ...

  8. IntelliJ IDEA中Java类注释

    打开Idea,依次选择File-->Settings-->Editor-->File and CodeTemplates ,右侧tab选项卡点击Includes,选择File Hea ...

  9. python学习笔记2--list

    一.list操作 list=['xiaohei','xiaobai','xiaohong']#定义一个数组 name=[]#定义一个空数组 #查 #下标是从0开始 print(list[1]) #-1 ...

  10. protobuffer

    [protobuffer] 1.扩展名为.proto. 2.定义一个协议: 3.定义一个Service: 4.编译器为protoc,使用protoc: 5.style:所有的类型名均CamelCase ...