Linux下防火墙简介

Linux下防火墙有两种分别是iptables和firewalld,在centos7之前centos用的防火墙是iptables,自从centos7过后防火墙的使用就从iptables变成了firewalld。防火墙的作用是根据系统管理员设定的规则来控制数据的包的进出,今天我们来重点介绍firewalld防火墙

相较于传统的防火墙管理工具,firewalld加入了zone(区域)的概念,区域对我来说就是他给你整理了几套模板,我们可以通过不同的场景从而进行不同的选择,实现了防火墙策略之间的快速切换

zone区域分类

firewalld docker zone 配置 不生效 firewall zone trust_运维

         当我们创建一台Linux系统后,我们的默认firewalld防火墙的区域属于public区域,如果我们不做更改的话,后续所安装的服务将都在public区域

firewalld防火墙命令

firewalld防火墙简单命令用法

firewall-cmd --get-zones   //列出firewalld下的区域

firewalld docker zone 配置 不生效 firewall zone trust_centos_02

firewall-cmd --set-default-zone=trusted  //设置默认区域为trusted

firewalld docker zone 配置 不生效 firewall zone trust_centos_03

firewall-cmd --get-default-zone //查看当前默认区域

firewalld docker zone 配置 不生效 firewall zone trust_数据_04

systemctl stop firewalld //临时关闭防火墙

firewalld docker zone 配置 不生效 firewall zone trust_centos_05

systemctl start firewalld //启动防火墙

firewalld docker zone 配置 不生效 firewall zone trust_服务器_06

systemctl restart firewalld //重启防火墙

firewalld docker zone 配置 不生效 firewall zone trust_数据_07

systemctl enable firewalld //设置firewalld防火墙开机自启

firewalld docker zone 配置 不生效 firewall zone trust_服务器_08

systemctl disable firewalld //永久关闭防火墙

firewalld docker zone 配置 不生效 firewall zone trust_运维_09

firewall-cmd --add-service=http //临时放行服务,使其他人可以访问服务,当服务器重启过后此规则,则会没有,如果没有指定防火墙区域的话,此规则在默认区域

firewalld docker zone 配置 不生效 firewall zone trust_运维_10

firewall-cmd --permanent --add-service=http //永久放行防火墙,但是需要重启一下防火墙,或者重新加载一下防护墙规则

firewalld docker zone 配置 不生效 firewall zone trust_服务器_11

firewall-cmd --reload //重载防火墙规则

firewalld docker zone 配置 不生效 firewall zone trust_centos_12

firewall-cmd --add-port=8080/tcp //防火墙临时放行端口

firewalld docker zone 配置 不生效 firewall zone trust_运维_13

firewall-cmd --permanent --add-port=8080/tcp //防火墙永久放行防火墙端口

firewalld docker zone 配置 不生效 firewall zone trust_数据_14

firewall-cmd --remove-port=8080/tcp //防火墙移除放行端口规则

firewalld docker zone 配置 不生效 firewall zone trust_linux_15

firewall-cmd --list-all //查看防火墙默认区域的放行规则

firewalld docker zone 配置 不生效 firewall zone trust_centos_16

firewall-cmd --add-service=http --zone=trusted //指定防火墙放行服务区域

firewalld docker zone 配置 不生效 firewall zone trust_服务器_17

firewall-cmd --remove-interface=ens33 --zone=public //将网卡从默认区域中移除出来

firewalld docker zone 配置 不生效 firewall zone trust_服务器_18

firewall-cmd --add-interface=ens33 --zone=trusted //将网卡添加到指定的区域里面

firewalld docker zone 配置 不生效 firewall zone trust_centos_19

firewall-cmd --zone=trusted --list-all //查看指定防火墙区域的放行规则

firewalld docker zone 配置 不生效 firewall zone trust_服务器_20

防火墙富规则命令用法列子

firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -s 192.168.10.20 -p tcp --dport 80 -j REJECT //拒绝IP为192.168.10.20的访问tcp的80端口 --direct 规则 --add-rule 添加规则 ipv4 filter 指定为ipv4的filter表 INPUT 链 -s 数据来源 -p采用的协议 --dport 目的地端口 -j 行为动作

firewalld docker zone 配置 不生效 firewall zone trust_linux_21

客户端对这条富规则进行测试

firewalld docker zone 配置 不生效 firewall zone trust_centos_22

 防火墙下面的表和链

防火墙下四表五链介绍

防火墙下面有四个表和五个链他们分别用于防火墙处于各个地点和时间的用户

四表:filter表、nat表、mangle表、raw表

五链:PREROUTING链、INPUT链、OUTPUT链、FORWARD链、POSTROUTING链。

四个表的各个功能

filetr表负责过滤功能;

nat表负责网络地址转换;

mangle表负责拆解报文,作出修改,封装报文;

raw表负责关闭nat表上启用的连接追踪机制,确定是否对该数据包进行状态跟踪

五个链的各个功能

PREROUTING链用于数据包进入路由之前的数据;

INPUT链用于处理访问防火墙本机的数据;

OUTPUT链用于处理防火墙本机访问其他主机的数据;

FORWARD链用于处理需要经过防火墙转发的数据包,源地址,目标地址均不是防火墙本地的数据;POSTROUTING链用于处理确认路由后的数据

四表五链的对于关系

filter表中包含了三个规则链分别是:INPUT链、FORWARD链、OUTPUT链;

nat表中也是包含了三个规则链:PREROUTING链、POSTROUTING链、OUTPUT链;

mangle表中则是把五个规则链全包含了;

raw表中包含了两条规则链:OUTPUT链、PREROUTING链;

在处理各种数据包时,五个规则链的应用时间点

INPUT链:当接收到防火墙本机地址的数据包(入站)时,应用此链中的规则

OUTPUT链:当防火墙本机向外发送数据包(出战)时,应用此链中的规则

FORWARD链:当接收到需要通过防火墙发送给其他地址的数据包(转发)时,应用此链中的规则PREROUTING链:在对数据包作路由选择之前,应用此链中的规则

POSTROUTING链:在对数据包作路由选择之后,应用此链中的规则

四个表的优先级

当数据包到达防火墙时,数据会依次应用raw表、mangle表、nat表和filter表中对于的链内规则