前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS7-firewall防火墙使用 原

CentOS7-firewall防火墙使用 原

作者头像
拓荒者
发布2019-03-11 17:41:01
1.7K0
发布2019-03-11 17:41:01
举报
文章被收录于专栏:运维经验分享运维经验分享

一、Firewalld防火墙

红帽RHEL7系统已经用firewalld服务替代了iptables服务,新的防火墙管理命令firewall-cmd与图形化工具firewall-config。特点是拥有运行时配置与永久配置选项且能够支持动态更新以及”zone”的区域功能概念,使用图形化工具firewall-config或文本管理工具firewall-cmd,下面实验中会讲到~

另外,你可以可以安装iptables-services服务,这样就可以按照之前的操作来操作iptables了。可以使用service save iptables来保存规则,也可以使用service iptables start|stop来开启和关闭iptables了。

1

$ yum install iptables-services

1)区域概念与作用

防火墙的网络区域定义了网络连接的可信等级,我们可以根据不同场景来调用不同的firewalld区域,区域规则有:

区域

默认规则策略

trusted

允许所有的数据包。

home

拒绝流入的数据包,除非与输出流量数据包相关或是ssh,mdns,ipp-client,samba-client与dhcpv6-client服务则允许。

internal

等同于home区域

work

拒绝流入的数据包,除非与输出流量数据包相关或是ssh,ipp-client与dhcpv6-client服务则允许。

public

拒绝流入的数据包,除非与输出流量数据包相关或是ssh,dhcpv6-client服务则允许。

external

拒绝流入的数据包,除非与输出流量数据包相关或是ssh服务则允许。

dmz

拒绝流入的数据包,除非与输出流量数据包相关或是ssh服务则允许。

block

拒绝流入的数据包,除非与输出流量数据包相关。

drop

拒绝流入的数据包,除非与输出流量数据包相关。

简单来讲就是为用户预先准备了几套规则集合,我们可以根据场景的不同选择合适的规矩集合,而默认区域是public

2)字符管理工具

如果想要更高效的配置妥当防火墙,那么就一定要学习字符管理工具firewall-cmd命令,命令参数有:

参数

作用

–get-default-zone

查询默认的区域名称。

–set-default-zone=<区域名称>

设置默认的区域,永久生效。

–get-zones

显示可用的区域。

–get-services

显示预先定义的服务。

–get-active-zones

显示当前正在使用的区域与网卡名称。

–add-source=

将来源于此IP或子网的流量导向指定的区域。

–remove-source=

不再将此IP或子网的流量导向某个指定区域。

–add-interface=<网卡名称>

将来自于该网卡的所有流量都导向某个指定区域。

–change-interface=<网卡名称>

将某个网卡与区域做关联。

–list-all

显示当前区域的网卡配置参数,资源,端口以及服务等信息。

–list-all-zones

显示所有区域的网卡配置参数,资源,端口以及服务等信息。

–add-service=<服务名>

设置默认区域允许该服务的流量。

–add-port=<端口号/协议>

允许默认区域允许该端口的流量。

–remove-service=<服务名>

设置默认区域不再允许该服务的流量。

–remove-port=<端口号/协议>

允许默认区域不再允许该端口的流量。

–reload

让“永久生效”的配置规则立即生效,覆盖当前的。

特别需要注意的是firewalld服务有两份规则策略配置记录,必需要能够区分:

RunTime:当前正在生效的。

Permanent:永久生效的。

当下面实验修改的是永久生效的策略记录时,必须执行”–reload”参数后才能立即生效,否则要重启后再生效。

查看当前的区域:

1 2

$ firewall-cmd --get-default-zone public

查询eno16777728网卡的区域:

1 2

$ firewall-cmd --get-zone-of-interface=eno16777728 public

在public中分别查询ssh与http服务是否被允许:

1 2 3 4

$ firewall-cmd --zone=public --query-service=ssh yes $ firewall-cmd --zone=public --query-service=http no

设置默认规则为dmz:

1

$ firewall-cmd --set-default-zone=dmz

让“永久生效”的配置文件立即生效:

1 2

$ firewall-cmd --reload success

启动/关闭应急状况模式,阻断所有网络连接:

应急状况模式启动后会禁止所有的网络连接,一切服务的请求也都会被拒绝,当心,请慎用。

1 2 3 4

$ firewall-cmd --panic-on success $ firewall-cmd --panic-off success

如果您已经能够完全理解上面练习中firewall-cmd命令的参数作用,不妨来尝试完成下面的模拟训练吧。

4)规则配置实战

模拟训练A:允许https服务流量通过public区域,要求立即生效且永久有效。

方法一:分别设置当前生效与永久有效的规则记录

1 2

$ firewall-cmd --zone=public --add-service=https $ firewall-cmd --permanent --zone=public --add-service=https

方法二:设置永久生效的规则记录后读取记录

1 2

$ firewall-cmd --permanent --zone=public --add-service=https $ firewall-cmd --reload

模拟训练B:不再允许http服务流量通过public区域,要求立即生效且永久生效。

1 2

$ firewall-cmd --permanent --zone=public --remove-service=http success

使用参数”–reload”让永久生效的配置文件立即生效:

1 2

$ firewall-cmd --reload success

模拟训练C:允许8080与8081端口流量通过public区域,立即生效且永久生效。

1 2

$ firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp $ firewall-cmd --reload

模拟训练D:查看模拟实验C中要求加入的端口操作是否成功。

1 2 3 4

$ firewall-cmd --zone=public --list-ports 8080-8081/tcp $ firewall-cmd --permanent --zone=public --list-ports 8080-8081/tcp

模拟实验E:将eno16777728网卡的区域修改为external,重启后生效。

1 2 3 4

$ firewall-cmd --permanent --zone=external --change-interface=eno16777728 success $ firewall-cmd --get-zone-of-interface=eno16777728 public

端口转发功能可以将原本到某端口的数据包转发到其他端口:

1

firewall-cmd --permanent --zone=<区域> --add-forward-port=port=<源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标IP地址>

将访问192.168.10.10主机888端口的请求转发至22端口:

1 2

$ firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10 success

使用客户机的ssh命令访问192.168.10.10主机的888端口:

1 2 3 4 5 6 7

$ ssh -p 888 192.168.10.10 The authenticity of host '[192.168.10.10]:888 ([192.168.10.10]:888)' can't be established. ECDSA key fingerprint is b8:25:88:89:5c:05:b6:dd:ef:76:63:ff:1a:54:02:1a. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[192.168.10.10]:888' (ECDSA) to the list of known hosts. root@192.168.10.10's password: Last login: Sun Jul 19 21:43:48 2015 from 192.168.10.10

再次提示:请读者们再仔细琢磨下立即生效与重启后依然生效的差别,千万不要修改错了。

模拟实验F:设置富规则,拒绝192.168.10.0/24网段的用户访问ssh服务。

firewalld服务的富规则用于对服务、端口、协议进行更详细的配置,规则的优先级最高。

1 2

$ firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject" success

二、图形管理工具

执行firewall-config命令即可看到firewalld的防火墙图形化管理工具,真的很强大,可以完成很多复杂的工作。

1

$ yum install firewall-config

firewalld防火墙图形化管理工具界面详解:

CentOS7-firewall防火墙使用
CentOS7-firewall防火墙使用

①:选择”立即生效”或”重启后依然生效”配置。

②:区域列表。

③:服务列表。

④:当前选中的区域。

⑤:被选中区域的服务。

⑥:被选中区域的端口。

⑦:被选中区域的伪装。

⑧:被选中区域的端口转发。

⑨:被选中区域的ICMP包。

⑩:被选中区域的富规则。

⑪:被选中区域的网卡设备。

⑫:被选中区域的服务,前面有√的表示允许。

⑬:firewalld防火墙的状态。

请注意:firewall-config图形化管理工具中没有保存/完成按钮,只要修改就会生效。

允许其他主机访问http服务,仅当前生效:

CentOS7-firewall防火墙使用
CentOS7-firewall防火墙使用

允许其他主机访问8080-8088端口且重启后依然生效:

CentOS7-firewall防火墙使用
CentOS7-firewall防火墙使用
CentOS7-firewall防火墙使用
CentOS7-firewall防火墙使用

开启伪装功能,重启后依然生效:

firewalld防火墙的伪装功能实际就是SNAT技术,即让内网用户不必在公网中暴露自己的真实IP地址。

CentOS7-firewall防火墙使用
CentOS7-firewall防火墙使用

将向本机888端口的请求转发至本机的22端口且重启后依然生效:

CentOS7-firewall防火墙使用
CentOS7-firewall防火墙使用

过滤所有”echo-reply”的ICMP协议报文数据包,仅当前生效:

ICMP即互联网控制报文协议”Internet Control Message Protocol“,归属于TCP/IP协议族,主要用于检测网络间是否可通信、主机是否可达、路由是否可用等网络状态,并不用于传输用户数据。

CentOS7-firewall防火墙使用
CentOS7-firewall防火墙使用

仅允许192.168.10.20主机访问本机的1234端口,仅当前生效:

富规则代表着更细致、更详细的规则策略,针对某个服务、主机地址、端口号等选项的规则策略,优先级最高

CentOS7-firewall防火墙使用
CentOS7-firewall防火墙使用

查看网卡设备信息:

CentOS7-firewall防火墙使用
CentOS7-firewall防火墙使用

firewall-config图形管理工具真的非常实用,很多原本复杂的长命令被用图形化按钮替代,设置规则也变得简单了,日常工作中真的非常实用。所以有必要跟读者们讲清配置防火墙的原则——只要能实现需求的功能,无论用文本管理工具还是图形管理工具都是可以的。

三、服务的访问控制列表

在Linux中不光可以使用iptables来做安全控制,其实简单的控制也可以使用tcp_wrappers来进行。

Tcp_wrappers(即Transmission Control Protocol(TCP)Wrappers)是一款基于IP层的ACL访问控制列表流量监控程序,它能够根据来访主机地址与本机目标服务程序做允许或拒绝规则,控制列表修改后会立即生效,系统将会先检查允许规则,如果匹配允许则直接放行流量,若拒绝规则中匹配则直接拒绝,都不匹配默认也会放行。

允许名单:/etc/hosts.allow

拒绝名单:/etc/hosts.deny

指定客户端的规则如下:

客户端类型

示例

满足示例的客户端列表

单一主机

192.168.10.10

IP地址为192.168.10.10的主机。

指定网段

192.168.10.

IP段为192.168.10.0/24的主机。

指定网段

192.168.10.0/255.255.255.0

IP段为192.168.10.0/24的主机。

指定DNS后缀

.linuxprobe.com

所有DNS后缀为.linuxprobe.com的主机

指定主机名称

boss.linuxprobe.com

主机名称为boss.linuxprobe.com的主机。

指定所有客户端

ALL

所有主机全部包括在内。

限制只有192.168.10.0/24网段的主机可以访问本机的sshd服务:

编辑允许规则:

1 2

$ cat /etc/hosts.allow sshd:192.168.10.

拒绝其他所有的主机:

1 2

$ cat /etc/hosts.deny sshd:*

PS:对于Firewall防火墙,后面持续增加内容……..

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017/11/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Firewalld防火墙
  • 二、图形管理工具
  • 三、服务的访问控制列表
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档