FIREWALLD

Firewall(防火墙)

别名:iptables(redhat6),Firewalld(redhat7)

注:以下全是以redhat7使用为主,6和具体的文档见《Linux就该这么学——防火墙篇》

概述:

RHEL 7 系统中集成了多款防火墙管理工具,其中 firewalld(Dynamic Firewall Manager of Linux systems,Linux 系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有基于 CLI(命令行界面)和基于 GUI(图形用户界面)的两种管理方式

相较于传统的防火墙管理配置工具,firewalld 支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是 firewalld 预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换

安装配置:
/etc/firewalld/firewalld.conf  主配置文件

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

如何使用:

查看 firewalld 服务当前所使用的区域:

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

查询 ens32网卡在 firewalld 服务中的区域:

[root@cs-A ~]# firewall-cmd --get-zone-of-interface=ens32 
public

把 firewalld 服务中 ens32 网卡的默认区域修改为 external,并立即生效:

[root@cs-A ~]# firewall-cmd --permanent --zone=external --change-interface=ens32 
The interface is under control of NetworkManager, setting zone to 'external'.
success
[root@cs-A ~]# firewall-cmd --reload 
success
[root@cs-A ~]# firewall-cmd --get-zone-of-interface=ens32 
external

把 firewalld 服务的当前默认区域设置为 public:

[root@cs-A ~]# firewall-cmd --set-default-zone=public 
Warning: ZONE_ALREADY_SET: public
success
[root@cs-A ~]# firewall-cmd --get-default-zone 
public
(因为默认本来就是public,所以会Warning)

启动/关闭 firewalld 防火墙服务的应急状况模式,阻断一切网络连接(当远程控制服务器时请慎用):

[root@cs-A ~]# firewall-cmd --panic-on
success
[root@cs-A ~]# firewall-cmd --panic-off
success

查询 public 区域是否允许请求 SSH 和 HTTPS 协议的流量:

[root@cs-A ~]# firewall-cmd --zone=public --query-service=ssh
yes
[root@cs-A ~]# firewall-cmd --zone=public --query-service=https
no

把 firewalld 服务中请求 HTTPS 协议的流量设置为永久允许,并立即生效:

[root@cs-A ~]# firewall-cmd --zone=public --add-service=https
success  (临时)
[root@cs-A ~]# firewall-cmd --permanent --zone=public --add-service=https
success  (永久)
[root@cs-A ~]# firewall-cmd --reload
success

把 firewalld 服务中请求 HTTP 协议的流量设置为永久拒绝,并立即生效:

[root@cs-A ~]# firewall-cmd --permanent --zone=public --remove-service=https
success
[root@cs-A ~]# firewall-cmd --reload 
success

把在 firewalld 服务中访问 8080 和 8081 端口的流量策略设置为允许,但仅限当前生效:

[root@cs-A ~]# firewall-cmd --zone=public --add-port=8080-8081/tcp
success
[root@cs-A ~]# firewall-cmd --zone=public --list-all 
[root@cs-A ~]# firewall-cmd --zone=public --list-ports 
8080-8081/tcp

把原本访问本机 888 端口的流量转发到 22 端口,要且求当前和长期均有效:

[root@cs-A ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.230.15
success
[root@cs-A ~]# firewall-cmd --reload
success

在客户端使用 ssh 命令尝试访问 192.168.230.15 主机的 888 端口:

[root@cs-B ~]# ssh -p 888 192.168.230.15
root@192.168.230.15's password: 
Last login: Mon Jan  7 12:56:39 2019 from 192.168.230.16
[root@cs-A ~]# 

firewalld 中的富规则表示更细致、更详细的防火墙策略配置,它可以针对系统服务、端口号、源地址和目标地址等诸多信息进行更有正对性的策略配置。它的优先级在所有的防火墙策略中也是最高的。比如,我们可以在 firewalld 服务中配置一条富规则,使其拒绝192.168.10.0/24 网段的所有用户访问本机的 ssh 服务(22 端口):

[root@cs-A ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.230.0/24" service name="ssh" reject"
success
[root@cs-A ~]# firewall-cmd --reload 
success

验证:
[root@cs-B ~]# ssh root@192.168.230.15
ssh: connect to host 192.168.230.15 port 22: Connection refused

注意:--permanent选项必须要加

改为接受:

[root@cs-A ~]# firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4" source address="192.168.230.0/24" service name="ssh" reject"
success
[root@cs-A ~]# firewall-cmd --reload 
success
验证:
[root@cs-B ~]# ssh root@192.168.230.15
root@192.168.230.15's password: 
Last login: Mon Jan  7 14:26:48 2019 from 192.168.230.16
[root@cs-A ~]# 

注:(若想移除某一条规则,把那条命令里面的add改为remove即可)

查看某个区域所有的配置:

[root@cs-A ~]# firewall-cmd --zone=public --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens32
  sources: 
  services: ssh dhcpv6-client
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值