1 概念

1-1. firewall简介

firewalld是Linux系统的一款防火墙管理工具。通过充当netfilter的前端来提供防火墙功能,默认后端是iptables/ntftables。开发语言是python。firewalld=firewall+daemon。实际上就是一个守护进程。操作firewalld的是firewalld-cmd命令。

       CentOS              Ubuntu★              openSUSE+--------------+    +------------+    +---------------------+   -*-| firewall-cmd |    |     ufw    |    |    SUSEfirewall2    |    |+--------------+    +------------+    +---------------------+    |用户空间+-----------------------------------------------------------+    ||                     iptables command                      |    |+-----------------------------------------------------------+   -*-+-----------------------------------------------------------+   -*-|                                                           |    ||                      OS(Netfilter)                        | 内核空间|                                                           |    |+-----------------------------------------------------------+   -*-

firewalld主要是在centos7以后才作为默认的防火墙管理工具的。像Ubuntu,Debian也可以安装firewalld。

  • firewall-cmd 是一个命令行的客户端,通过D-Bus来操作后端。
  • firewall-config是一个图形界面的客户端,也是通过D-Bus来操作后端。
  • firewall-applet也是一个图形界面客户端,也是通过D-Bus来操作后端。

firewall-applet是firewalld中可选的状态栏小图标程序,它能够显示防火墙日志通知,同时也是一种打开 firewall-config 的快捷方式

  • firewall-offline-cmd是一个命令行客户端,不需要通过D-Bus来操作后端。

firewalld 的配置储存在 /usr/lib/firewalld/ 和 /etc/firewalld/ 里的各种 XML 文件里,这样保持了这些文件被编辑、写入、备份的极大的灵活性,使之可作为其他安装的备份等等。

1-2. 运行时和永久

  • 运行时(runtime)

firewalld配置的防火墙策略默认为运行时(Runtime)模式,就是设置完立刻生效,但是系统的重启会导致失效。要想设置完立刻生效,重启也不失效需要--runtime-to-permanent属性。

  • 永久(permanent)

如果想让配置策略一直存在,方法就是在firewall-cmd命令后面添加–permanent属性,这样配置的防火墙策略就可以永久生效了。但是,永久生效模式有一个“不近人情”的特点,就是使用它设置的策略只有在系统重启后才会生效。如果想让配置的永久策略立即生效,需要手动执行firewall-cmd --reload命令。

1-3. 对网络区域的理解

firewalld的网络区域可以理解成windows联网时,弹出来的对话框,让选择网络。

  • drop(丢弃)

任何接收的网络数据包都被丢弃,没有任何回复。仅能有发送出去的网络连接。

可以用firewall-cmd --list-all-zones来查看各个网络区域的设置。

droptarget: DROPicmp-block-inversion: nointerfaces: sources: services: ports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: 
  • block(限制)

任何接收的网络连接都被 IPv4 的 icmp-host-prohibited 信息和 IPv6 的 icmp6-adm-prohibited 信息所拒绝。

blocktarget: %%REJECT%%icmp-block-inversion: nointerfaces: sources: services: ports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
  • public(公共)

在公共区域内使用,不能相信网络内的其他计算机不会对您的计算机造成危害,只能接收经过选取的连接。

public (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources: services: dhcpv6-client http sshports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
  • external(外部)

特别是为路由器启用了伪装功能的外部网。您不能信任来自网络的其他计算,不能相信它们不会对您的计算机造成危害,只能接收经过选择的连接。

externaltarget: defaulticmp-block-inversion: nointerfaces: sources: services: sshports: protocols: masquerade: yesforward-ports: source-ports: icmp-blocks: rich rules:
  • dmz(非军事区)

用于您的非军事区内的电脑,此区域内可公开访问,可以有限地进入您的内部网络,仅仅接收经过选择的连接。

dmztarget: defaulticmp-block-inversion: nointerfaces: sources: services: sshports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules: 
  • work(工作)

用于工作区。您可以基本相信网络内的其他电脑不会危害您的电脑。仅仅接收经过选择的连接。

worktarget: defaulticmp-block-inversion: nointerfaces: sources: services: dhcpv6-client sshports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
  • home(家庭)

用于家庭网络。您可以基本信任网络内的其他计算机不会危害您的计算机。仅仅接收经过选择的连接。

hometarget: defaulticmp-block-inversion: nointerfaces: sources: services: dhcpv6-client mdns samba-client sshports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
  • internal(内部)

用于内部网络。您可以基本上信任网络内的其他计算机不会威胁您的计算机。仅仅接受经过选择的连接。

internaltarget: defaulticmp-block-inversion: nointerfaces: sources: services: dhcpv6-client mdns samba-client sshports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:
  • trusted(信任)

可接受所有的网络连接。

trustedtarget: ACCEPTicmp-block-inversion: nointerfaces: sources: services: ports: protocols: masquerade: noforward-ports: source-ports: icmp-blocks: rich rules:

1-4. 总结

  • target

target: { default , ACCEPT , DROP , REJECT }

zone target 说明
drop DROP 拒绝请求,不会回复信息,访问者处于等待状态,直到timeout
block REJECT 拒绝请求,会明确告诉访问者,请求被拒绝
trusted ACCEPT 接受请求。
其它网络区域 default(默认跟REJECT一样)
  • icmp-block-inversion

icmp-block-inversion: { yes , no }

yes icmp-blocks里面记述的接受,没记述的拒绝,也就是反转
no icmp-blocks里面记述的拒绝。
  • interfaces

interfaces: { 网卡名称 }

用ifconfig或者ip addr查询到的网卡名称

例:interfaces: ens33

  • sources

sources: { IP or CIDR}

例:sources:192.168.0.211

sources:192.168.0.0/24

  • services

services: { servicetype}

firewall-cmd --get-services命令 可以查询到所有的service。但是只能看到名字。除了大家熟悉的http,ssh等,其余的可以去/usr/lib/firewalld/services/ 下查询。

例:zabbix-server 可以用 cat /usr/lib/firewalld/services/zabbix-server.xml 去看端口号

  • ports

ports: { port/protocol }

像http,https,ssh一类的可以用上面的services来定义。

像一些非常用端口,比如20001一类的,可以用ports定义。

例:ports:20001/tcp

  • protocols

protocols: { protocol }

protocol协议就是普通的熟知的协议,比如说tcp udp icmp。

  • masquerade

这个东西是端口地址转发用的,比如说从别的机器访问本机的9090端口相当于访问另一台机器的80端口。这种情况下,需要开启masquerade,当数据流量返回来的时候可以自动返回。

例:也就是说目标地址转换以后,从A(访问机)->B(本机)->C(地址转换后的机器),这个route是通的,但是数据从C(地址转换后的机器)->B(本机)->A(访问机),如果不开启masquerade,就需要源地址转换。

firewall-cmd --add-masquerade       开启

firewall-cmd --remove-masquerade 关闭

  • forward-ports

forward-ports: { port=port:proto=protocol:toport=转换后的端口:toaddr=转换后的IP }

例:forward-ports: port=8080:proto=tcp:toport=80:toaddr=192.168.1.1

就是到达本机8080端口的数据都会转发到192.168.1.1:80。这个时候如果上面的masquerade不开启,从192.168.1.1:80返回的数据就不能到达本机的8080端口。

  • source-ports

source-ports:{ port/protocol }

跟前面的ports一样的格式,这个指的是源port,ports指的是本机的port。

  • icmp-blocks

icmp-blocks: { ICMP Type }

ICMP type 可以用 firewall-cmd --get-icmptypes 来查看。具体的定义情报的话 参照

/usr/lib/firewalld/icmptype 下的xml文件

  • rich-rules

rich-rules: {rich rule}

前面的那些属性设置不了规则了,可以用这个属性来设置详细规则。

例:firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.200.0/24 port port=135 protocol=tcp accept'

来自192.168.200.0/24网段的访问本机端口135的tcp协议,都接受。

充分理解上面的东西以后剩下的就是命令的用法了。

2 firewalld的启动和关闭

# firewalld状态查询(两个都可以)
firewall-cmd --state
systemctl status firewalld#firewalld启动
systemctl start firewalld#firewalld开机启动
systemctl enable firewalld#firewalld关闭
systemctl stop firewalld

3 firewalld的命令使用

3-1. 更改运行时设置,然后将它们永久化

firewall-cmd <other options>
firewall-cmd --runtime-to-permanent

3-2. 设置永久设置并将设置重新加载到运行时模式

firewall-cmd --permanent <other options>
firewall-cmd --reload

3-3. 小技巧,规则过期,例如下面的例子,增加ssh的规则,但是15分之后失效。

firewall-cmd --add-service=ssh --timeout 15m

3-4. 列出当前active zone的全属性

firewall-cmd --list-all# 扩展
# 列出指定zone的全属性
firewall-cmd --list-all --zone=block#列出所有的zone的全属性
firewall-cmd --list-all-zones

3-5. 列出当前active zone的各种属性值

firewall-cmd --list-[option]

option可以取下面的值
  interfaces
  sources 
  services
  ports
  protocols
  forward-ports
  source-ports
  icmp-blocks
  rich-rules

# 列出所有service
firewall-cmd --list-services
# 列出所有icmptype
firewall-cmd --list-icmp-blocks
# 列出所有pors
firewall-cmd --list-ports

3-6. 其它的command可以用下面的命令来看帮助文档。

man firewall-cmdfirewall-cmd --help

Linux学习整理-网络防火墙firewalld相关推荐

  1. Linux学习整理-网络防火墙ufw

    Linux的防火墙的术语 先整理一下他们之间的关系 netfilter ​netfilter 项目是一个社区驱动的协作 FOSS 项目,为Linux 2.4.x 和更高版本的内核系列提供包过滤软件.n ...

  2. Linux学习整理-网络防火墙iptables-实践篇1

    目录 1 实验环境 2 iptables常用用法 2.1 查看iptables链 2.2 规则追加 2.3 规则删除 2.4 规则全删除 2.5 自定义链(chain) 2.6 删除自定义链 2.7 ...

  3. Linux学习整理-网络命令集

    目录 前提 1. 机器IP地址查询 1.1 ifconfig 1.1.1 安装包 1.1.2 执行命令 1.1.3 拓展-ifconfig的其它用法 1.1.4 常用的属性说明 1.2 ip addr ...

  4. Linux7查看防火墙日志,Linux入门教程:CentOS7防火墙firewalld配置,防火墙日志在哪呢...

    Linux入门教程:CentOS7防火墙firewalld配置,防火墙日志在哪呢 启动: systemctl start firewalld 停止: systemctl stop firewalld ...

  5. Linux网络安全之网络防火墙NAT原理简析

    一.网络防火墙基本架构 二.NAT表(网络地址转换) 1.概念:将内网IP翻译成外网IP的技术,支持PREROUTING,INPUT,OUTPUT,POSTROUTING四个链. 2.NAT实现分为下 ...

  6. Linux学习笔记 --iptables防火墙配置

    iptables防火墙配置 一.防火墙简介 1.功能: 1)通过源端口,源IP地址,源MAC地址,包中特定标记和目标端口,IP,MAC来确定数据包是否可以通过防火墙 2)分割内网和外网[附带的路由器的 ...

  7. linux系统之网络防火墙(firewalld服务和iptables服务)

    一.对于防火墙的理解 防火墙,其实就是用于实现Linux下访问控制的功能的,它分为硬件的和软件的两种. 无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘. 而我们的任务就是需要去定义到底防火墙如 ...

  8. Linux学习笔记 --网络配置及进程管理

    目录 网络配置 ☆☆☆☆指定服务器 IP 设置主机名和 hosts 映射 主机名解析过程分析(Hosts.DNS) ☆☆☆进程管理 ps 父子进程 终止进程 kill.killall ☆☆☆服务管理 ...

  9. Linux学习整理(一)

    自学Linux已经两个星期了(不算之前的水课),之前也学过一些Linux,但不像现在这种学习状态.这几天除了上课,我的首要任务就是学习Linux! 在这两个星期的学习中,通过看马哥教育的视频和鸟哥的私 ...

最新文章

  1. WinDbg用法详解
  2. 2.4 程序示例--线性决策边界-机器学习笔记-斯坦福吴恩达教授
  3. java文件名大小_java 比较指定文件夹内.txt文件名的大小
  4. 使用MessageFormat格式化数字,日期
  5. 7-8 连续因子 (20 分)
  6. SAP License:统计型实际结算型内部订单
  7. Swift on Linux —— 从源码开始安装
  8. 服务器主板显示B1,电脑检测卡显示b1是啥意思
  9. JavaWeb中的Servlet原理是什么?(存库,建议收藏)
  10. 精讲了33道二叉树经典题目之后,我总结了这些,帮你一举搞定二叉树
  11. memcached SASL验证状态安全绕过漏洞
  12. 数据集:各地区化妆品销量、人口数量和人均收入
  13. iOS常用宏定义总结 --Objective-C
  14. 给定经纬度计算距离_oracle 根据经纬度计算任意两地之间的距离
  15. java 汉字转拼音工具_java汉字转拼音工具类
  16. 学习笔记2011.11.8-张飞-硬件开发与设计实战-门控开关设计
  17. 小胖机器人宣传语_智能机器人推广宣传语
  18. 【实验五 一维数组】7-10 sdut-C语言实验-排序问题
  19. 面向对象重写理解 求值策略 -共享对象调用 面向对象原则
  20. linux pdf翻译

热门文章

  1. JS之使用Echarts画出人际关系图
  2. 【逗老师带你学IT】PRTG获取HUAWEI FusionServer iBMC传感器状态
  3. 计算机网络技术用i3可以吗,买电脑避坑第一步,i3处理器和i5等处理器有什么区别?...
  4. clean、install、package、deploy分别代表什么含义?
  5. python 中阶乘怎么打_阶乘python怎么打
  6. DB4AI:使能数据库原生AI计算,数据搬迁由繁至简
  7. 中国历史上的著名识才用才智慧
  8. 【 Rust 基础】控制流 —— Rust 的神级语法03
  9. zoj 3725 Painting Storages dp
  10. 推荐3篇 如何建立自己的知识体系