Linux防火墙--Firewalld防火墙基础(firewalld防火墙字符管理工具、firewalld防火墙图形管理工具)

一、 firewalld 概述

支持网络区域所定义的网络链接以及接口安全等级的动态防火墙管理工具
支持IPv4、IPv6 防火墙设置以及以太网桥
支持服务或应用程序直接添加防火墙规则接口
拥有两种配置模式

  • 一种是运行时配置(runtime)
    指正在运行生效的状态,在runtime状态添加新的防火墙规则,这些规则会立即生效,但是重新加载防火墙配置或者再重启系统后这些规则将会失效
  • 另一种是永久配置(permanent)
    指永久生效的状态,在permanent状态添加新的防火墙规则,这些规则不会马上生效,需要重新加载防火墙配置或者重启系统后生效

1.1 区域的概念

firewalld防火墙为了简化管理,将所有网络流量分为多个区域(zone)。然后根据数据包的源IP地址或传入的网络接口条件等将流量传入相应区域。每个区域都定义了自己打开或关闭的端口和服务列表。

firewalld防火墙预定义区域
区域名称 默认配置说明
drop(丢弃) 任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接
block(限制) 人和接受的网络连接都被IPv4的imcp-host-prohibited 信息和IPv6的icmp6-adm-prohibited 信息所拒绝
public(公共) 在公共区域内使用,不能详细网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的内容
external(外部) 特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算机,不能相信他们不会对您的计算机造成危害,只能接收经过选择的链接
dmz(非军事区) 用于您的非军事区内的电脑,此区域内可公开访问,可以有限的进入您的内部网络,仅仅接收经过选择的链接
work(工作) 用于工作区。您可以基本详细网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的链接
home(家庭) 用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的链接
internal(内部) 用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接收经过选择的连接
trusted(信任) 可接受所有的网络连接

1.2 firewalld数据处理流程

检查数据来源的源地址

  • 若源地址关联到特定的区域,则执行该区域所指定的规则
  • 若源地址未关联到特定的区域,则使用传入网络接口的区域
    并执行该区域所指定的规则
  • 若网络接口未关联到特定的区域,则使用默认区域并执行该
    区域所指定的规则

1.3 firewalld 和 iptales 的关系

  • netfilter
    位于linux内核中的包过滤功能体系
    被称为linux防火墙的“内核态”
  • firewalld/iptabldes
    centos7 默认的管理防火墙规则的工具(firewalld)
    称为linux防火墙的“用户态”
    在防火墙中,发挥作用的是netfilter(内核态),不可以直接管理,只能间接管理,使用firewalld或者iptables

使用工具或者操作去管理进程和服务
进程服务去控制封装的iptables命令,间接的去管理内核中的netfiler
真正能跟netfilter交互的是iptables,firewalld去管理iptables

1.4 firewalld 和 iptales 的区别

区别 firewalld iptables
配置文件 /usr/lib/firewalld/ /etc/firewalld etc/firewalld /etc/sysconfig/iptables
对规则的修改 不需要全部刷新策略,不丢失现行连接 需要全部刷新策略,丢失连接
防火墙类型 动态防火墙 静态防火墙

二、 字符管理工具

2.1 firewall-cmd

firewall-cmd是firewalld防火墙自带的字符管理工具,可以用来设置firewalld防火墙的各种规则

在使用firewall-cmd命令管理防火墙时,需要添加为永久生效的规则需在配置规则时添加–permanent选项(否则所有命令都是作用于runtime,运行时配置)

如果让永久生效规则立即覆盖当前规则生效使用,还需要使用firewall-cmd --reload命令重新加载防火墙配置。

firewall-config 是图形化工具
firewall-cmd 是字符命令

常用firewall--cmd命令
命令选项 说明
–get-default-zone 显示网络连接或接口的默认区域
–set-default-zone=区域类型 设置网络连接或接口的默认区域
–get-active-zones 显示已激活的所有区域
–get-zone-of-interface=接口(网卡) 显示指定接口绑定的区域
–zone=区域类型 --add-interface=接口(网卡) 为指定接口绑定区域
–zone=区域类型 --change-interface=接口(网卡) 为指定的区域更改绑定的网络接口
–zone=区域类型 --remove-interface=接口(网卡) 为指定的区域删除绑定的网络接口
–query-interface=接口(网卡) 查询区域中是否包含某接口
–list-all-zones 显示所有区域及其规则
[–zone=区域类型] --list-all 显示所有指定区域的所有规则

2.2 区域管理

2.2.1 查看默认区域

[root@localhost ~]# firewall-cmd --get-default-zone
public

2.2.2 列出当前正在使用的区域及其对应的网卡接口

[root@localhost ~]# firewall-cmd --get-active-zone
public
  interfaces: ens33

2.2.3 列出所有可用区域

[root@localhost ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work

2.2.4 设置默认区域

[root@localhost ~]# firewall-cmd --set-default-zone=home
success
[root@localhost ~]# firewall-cmd --get-default-zone
home

2.3 服务管理

2.3.1查看预定义服务

[root@localhost ~]# firewall-cmd --get-service
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry docker-swarm dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target jenkins kadmin kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls managesieve mdns minidlna mongodb mosh mountd ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius redis rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh syncthing syncthing-gui synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

2.3.2 添加httpd服务到public区域

[root@localhost ~]# firewall-cmd --add-service=http --zone=public --permanent     //加permanent是指永久配置,不加表示即时生效的临时配置
success
[root@localhost ~]# firewall-cmd --reload
success

2.3.3 查看public区域已设置规则

[root@localhost ~]# firewall-cmd --list-all --zone=public
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client http
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

2.3.4 移除public区域的httpd服务,不指定区域表示使用默认区域

[root@localhost ~]# firewall-cmd --remove-service=httpd --permanent
success
也可以同时添加多个服务
[root@localhost ~]# firewall-cmd --add-service=httpd --add-service=https
success

2.4 端口管理

2.4.1 允许TCP的3360端口到public区域

[root@localhost ~]# firewall-cmd --add-port=3360/tcp 
success
[root@localhost ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens33
  sources: 
  services: ssh dhcpv6-client http https
  ports: 3360/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 

2.4.2 从public区域将TCP的3360端口移除

[root@localhost ~]# firewall-cmd --remove-port=3360/tcp
success

2.4.3 允许某一范围的端口

[root@localhost ~]# firewall-cmd --add-port=2048-2050/udp 
success
[root@localhost ~]# firewall-cmd --list-ports
2048-2050/udp

三、 图形管理工具

在这里插入图片描述

3.1 设置为临时或永久

在这里插入图片描述

3.2 图形界面工具中选项窗口

3.2.1 重载防火墙

设置新的防火墙规则,并设置为永久时,我们需要使用“firewall-cmd --reload”重载防火墙,在图形界面设置如图所示。
在这里插入图片描述

3.2.2 关联网卡到指定区域

在这里插入图片描述
在这里插入图片描述

3.2.3 修改默认区域

在这里插入图片描述
在这里插入图片描述

3.3 区域选项卡

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/kimowinter/article/details/107657782