Linux-防火墙管理工具firewalld

防火墙作为网络安全的防护工具,在保障数据和服务安全方面发挥着重大作用。

提到防火墙,接触Linux较早的朋友首先想到的是iptables(centos 6版本),centos 7推荐使用的是firewalld。然而,不管是iptalbes还是firewalld,其本身并不是防火墙,而是防火墙配置管理工具

本文介绍的是firewalld工具的使用方法,对于具体的原理这里不作深究,iptables相关的内容也不在讨论范围内。

1.firewalld安装

使用yum安装

sudo yum install -y firewalld

使用systemctl启动firewalld

# 启动
sudo systemctl start firewalld
# 开机启动
sudo systemctl enable firewalld

如果要停止或禁用firewalld

# 停止
sudo systemctl stop firewalld
# 禁用
sudo systemctl enable firewalld

2.firewalld基本概念

2.1 Zones

区域:定义了网络连接的信任级别,firewalld提供了几种预先定义好的区域,我们可以根据需要选择合适的区域。

区域 默认规则策略
trusted 允许所有的数据包
home 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许流量
internal 等同于home区域
work 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许流量
public 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许流量
external 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
dmz 拒绝流入的流量,除非与流出的流量相关;而如果流量与ssh服务相关,则允许流量
block 拒绝流入的流量,除非与流出的流量相关
drop 拒绝流入的流量,除非与流出的流量相关
2.2 Services

Service可以是一个local ports、protocols、destinations列表,使用预定义的服务使用户更容易启用和禁用对服务的访问。

2.3 ICMP types

Internet Control Message Protocol在IP协议中交换信息。ICMP types可以用来在firewalld中限制交换信息。

# 显示预定义的ICMP types
firewall-cmd --get-icmptypes
2.4 Runtime configuration

运行时配置:此配置在系统或服务重启后会失效。

2.5 Permanent configuration

永久配置 :此配置永久生效,使用firewall-cmd配置防火墙策略时需要添加--permanent选项才会将配置永久保存到配置文件中,另外使用firewall-cmd --reload可以将永久配置覆盖到运行配置并生效。

2.6 Direct interface

直接接口:此方式主要是为了适应对iptables比较熟悉却不适应firewalld的用户,使用--direct选项可以传递原始的iptables命令来配置防火墙策略。

3.firewalld命令行工具

firewall-cmd是firewalld的CLI版本管理工具,用来通过命令行配置防火墙策略。
完整的firewall-cmd使用手册可以使用man firewall-cmdfirewall-cmd -h查看,这里介绍部分常用操作选项。

3.1 Status Options
# 检查firewalld状态
firewall-cmd --state
# 重新加载防火墙规则,保持状态信息
firewall-cmd --reload
# 重新加载防火墙规则,包括netfilter内核模块(仅当出现严重的防火墙问题时使用,会中断活动的网络连接)
firewall-cmd --complete-reload
# 将运行时配置永久保存到配置文件
firewall-cmd --runtime-to-permanent
3.2 Zone Options
# 显示预定义的zones
firewall-cmd --get-zones
# 查看默认区域
firewall-cmd --get-default-zone
# 修改默认区域
firewall-cmd --set-default-zone=<zone>
# 查看网络接口使用的区域
firewall-cmd --get-active-zones
# 查看所有区域的所有配置
sudo firewall-cmd --list-all-zones
# 创建一个新的区域
sudo firewall-cmd --new-zone=<zone> --permanent
# 移除一个已存在的区域
sudo firewall-cmd --delete-zone=<zone>
# 指定区域(如果未指定则为默认区域)使用其它选项(见本文3.4章节)
firewall-cmd --zone=<zone>
# 查看指定区域的所有配置
sudo firewall-cmd --zone=<zone> --list-all
3.3 Service Options
# 显示预定义的services
sudo firewall-cmd --get-services
# 显示指定service允许的端口和协议
sudo firewall-cmd --service=<service> --get-ports --permanent
# 为指定的service添加允许的端口和协议
sudo firewall-cmd --service=<service> --add-port=<portid>[-<portid>]/<protocol>
# 从指定的service移除允许的端口和协议
sudo firewall-cmd --service=<service> --remove-port=<portid>[-<portid>]/<protocol>
# 检查端口号和协议在指定的service是否允许
sudo firewall-cmd --service=<service> --query-port=<portid>[-<portid>]/<protocol>
3.4 Options to Adapt and Query Zones
# 显示指定zone的所有策略
sudo firewall-cmd --zone=<zone> --list-all 
# 显示指定zone的所有service
sudo firewall-cmd --zone=<zone> --list-services
# 向指定zone添加允许的service
sudo firewall-cmd --zone=<zone> --add-service=<service>
# 从指定zone移除允许的service
sudo firewall-cmd --zone=<zone> --remove-service=<service>
# 显示指定zone的所有端口号和协议
sudo firewall-cmd --zone=<zone> --list-ports
# 向指定zone添加允许的端口和协议
sudo firewall-cmd --zone=<zone> --add-port=<portid>[-<portid>]/<protocol>
# 从指定zone移除允许的端口和协议
sudo firewall-cmd --zone=<zone> --remove-port=<portid>[-<portid>]/<protocol>
3.5 实例

3.5.1 放行8080-8100的所有入口流量

# 允许8080-8100端口的所有TCP流量,永久生效
sudo firewall-cmd --zone=public --add-port=8080-8100/tcp --permanent
# 立即生效
sudo firewall-cmd --reload
# 查看允许的端口号和协议
sudo firewall-cmd --zone=public --list-ports

3.5.2 放行8080-8081的所有http入口流量

# 从public区域上移除允许的8080-8100的TCP入口流量
# 如果没有进行3.5.1的操作,这一步可以忽略
sudo firewall-cmd --zone=public --remove-port=8080-8081/tcp --permanent
# 允许http服务上8080-8100端口的所有TCP流量,永久生效
sudo firewall-cmd --service=http --add-port=8080-8100/tcp --permanent
# 查看http服务上允许的端口号和协议
sudo firewall-cmd --service=http --get-ports --permanent
# 允许http服务的入口流量,永久生效
sudo firewall-cmd --zone=public --add-service=http --permanent
# 立即生效
sudo firewall-cmd --reload

3.5.3 仅允许本机通过TCP协议访问27017端口

sudo firewall-cmd --add-rich-rule="rule family="ipv4" source address="127.0.0.1" port protocol="tcp" port="27017" accept" --permanent

这里使用了--add-rich-rule来设置防火墙策略,关于详细的介绍可以使用man firewalld.richlanguage查看。

4.firewalld图形界面工具

firewall-config是firewalld的图形界面管理工具,即使不熟悉Linux命令也可以妥善配置防火墙策略。不过,本文对图形界面的操作就不一一赘述了,有需要的自行自行摸索或查阅相关资料。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 225,928评论 6 523
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 97,032评论 3 410
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 173,382评论 0 370
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 61,580评论 1 304
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,558评论 6 403
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,018评论 1 316
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,261评论 3 432
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 41,328评论 0 281
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,858评论 1 328
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,843评论 3 351
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,954评论 1 358
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,565评论 5 352
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,251评论 3 342
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,677评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,834评论 1 278
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,558评论 3 383
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,033评论 2 368