Centos7 防火墙Firewalld

目录

描述

FIrewalld架构
Firewall配置方法
  需要关闭禁用其他2个防火墙
  第一种图形化  firewall-config
  第二种 命令行 firewall-cmd
    防火墙常用查看命令
    常用的规则配置
    富规则(可以自定义规则)

描述

RHEL7同时存在3种防火墙,firewalld (系统默认);iptables;ebtables 3种防火墙之间是相互冲突的,所以,要选择一种防火墙,需要关闭其他2中防火墙,Centtos7推荐使用Firewalld,其他的2个防火墙关掉即可,firewalld和iptables配置方法不同,但是底层还是调用iptables。

FIrewalld架构

Firewalld默认有9个zone,每个网卡必须一对一对应一个zone,每一个zone都默认有相应的规则,以下是9个相应的规则

drop (丢弃) 任何接收到的网络数据都被丢弃,没有任何回复,公有发送出去的网络连接
block(限制)任何接收的网络连接都被IPV4 的icmp-host-prohibited信息和IPV6的icmp6-adm-prohibited信息所拒绝
public (公共) 在公共区域内使用,不能相信网络内的其它计算机不会对你的计算机造成危害,只接收经过选取的连接
external (外部)特别是为路由器启用了伪装功能的外部网。你不能信任来自网络的其它计算,不能信任它们不会对你的计算机造成危害,只能接收经过选择的连接。
dmz (非军事区) 用于你的非军事区的电脑 ,此区域内可公开访问,可以有限的进入你的内部网络,仅接收经过选择的连接。
work (工作) 可以基本信任网络内的其它计算机不会危害你的计算机,仅接收经过选择的连接。
home (家庭) 用于家庭网络,可以基本信任网络内的其它计算机不会危害你的计算机,仅接收经过选择的连接。
internal (内部)用于内部网络,可以基本信任网络内的其它计算机不会危害你的计算机,仅接收经过选择的连接
trusted (信任) 可接收所有的网络连接

Firewall配置方法

需要关闭禁用其他2个防火墙

systemctl stop ipatbels.service
systemctl mask iptables.service
systemctl stop ebtables.service
systemctl mask ebtables.service

第一种图形化 firewall-config

图形化比较简单,比如我添加sshd的22号端口

第二种 命令行 firewall-cmd

防火墙常用查看命令

查看firewalld支持的服务

firewall-cmd --get-services

查看当前zone开启的服务

firewall-cmd --list-services

查看其他zone开启的服务

firewall-cmd --list-services --zone=home

查看网络接口绑定到了哪个zone上

firewall-cmd --get-zone-of-interface=eno16777736(设备名字)

查看默认zone的全部规则

firewall-cmd --list-all(查看默认zone的所有设置)

查看默认的zone

firewall-cmd --get-default-zone

设置默认的zone

firewall-cmd --set-default-zone=home

查看网络接口在哪个zone

firewall-cmd --get-zone-of-interface=eno16777736

查看http服务在public zone 上是否开启了?

firewall-cmd --zone=public --query-service=http

查看public zone上服务的详细信息

firewall-cmd --zone=public --list-all

查看80端口在home zone上是否开启?

firewall-cmd --zone=home --query-port=80/tcp

常用的规则配置

如何临时加入/删除服务

firewall-cmd --add-service=samba

firewall-cmd --remove-service=samba

`firewall-cmd --reload(立即生效,否则重启生效)

如何永久加入/删除服务

firewall-cmd --permanent --add-service=samba

firewall-cmd --permanent --remove-service=samba

firewall-cmd --reload(立即生效,否则重启生效)

在默认zone 中永久临时添加3307;允许tcp 3306端口

firewall-cmd --add-port=3307/tcp

firewall-cmd --permanent --add-port=3306/tcp

firewall-cmd --reload

添加默认 zone允许某个网段例如192.168.1.0/24网段的流量

firewall-cmd --permanent --zone=public --add-source=192.168.1.0/24

firewall-cmd --reload

firewall-cmd --zone=public --list-all

如何把端口改到其他的zone上

firewall-cmd --remove-interface=eno33xxxx

firewall-cmd --zone=home --change-interface=eno333xxxxx

firewall-cmd --reload

富规则(可以自定义规则)

firewall的自定义规则(富规则  rich rules)
firewall-cmd --add-rich-rule=“规则”
     rule  family=ipv4或者ipv6
     source address=IP地址 或者 destination address=IP地址
     port port=端口
     protocol=tcp或者udp
     accept或者reject或者drop
    
例子
创建rich rule(源地址是192。168.0.0/24网段协议是tcp来放我的80端口我的动作是允许的)
firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source address=192.168.0.0/24 port port=80 protocol=tcp accept"

删除rich rule(源地址是192。168.0.0/24网段协议是tcp来放我的80端口我的动作是允许的)
firewall-cmd --permanent --remove-rich-rule="rule family=ipv4 source address=192.168.0.0/24 port port=80 protocol=tcp accept"


在默认zone中,允许192.168.0.0/24网端的客户访问http服务
firewall-cmd --permanent --add-rich-rule "rule family=ipv4 source address=192.168.0.0/24 service name=http accept"

在默认zone中,删除允许192.168.0.0/24网端的客户访问http服务的富规则
firewall-cmd --permanent --add-rich-rule "rule family=ipv4 source address=192.168.0.0/24 service name=http accept"

反转功能,加入NOT
source NOT address=192.168.0.0/24和source NOT address=192.168.0.0/24中加入NOT
来源只要不是192.168.0.0/24的都访问我的http服务,我的动作是接受的

firewall-cmd --add-rich-rule “rule family=ipv4 source NOT address=192.168.0.0/24 service name=http accept”

原文链接:,转发请注明来源!