Linux学习整理-网络防火墙firewalld
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相关推荐
- Linux学习整理-网络防火墙ufw
Linux的防火墙的术语 先整理一下他们之间的关系 netfilter netfilter 项目是一个社区驱动的协作 FOSS 项目,为Linux 2.4.x 和更高版本的内核系列提供包过滤软件.n ...
- Linux学习整理-网络防火墙iptables-实践篇1
目录 1 实验环境 2 iptables常用用法 2.1 查看iptables链 2.2 规则追加 2.3 规则删除 2.4 规则全删除 2.5 自定义链(chain) 2.6 删除自定义链 2.7 ...
- Linux学习整理-网络命令集
目录 前提 1. 机器IP地址查询 1.1 ifconfig 1.1.1 安装包 1.1.2 执行命令 1.1.3 拓展-ifconfig的其它用法 1.1.4 常用的属性说明 1.2 ip addr ...
- Linux7查看防火墙日志,Linux入门教程:CentOS7防火墙firewalld配置,防火墙日志在哪呢...
Linux入门教程:CentOS7防火墙firewalld配置,防火墙日志在哪呢 启动: systemctl start firewalld 停止: systemctl stop firewalld ...
- Linux网络安全之网络防火墙NAT原理简析
一.网络防火墙基本架构 二.NAT表(网络地址转换) 1.概念:将内网IP翻译成外网IP的技术,支持PREROUTING,INPUT,OUTPUT,POSTROUTING四个链. 2.NAT实现分为下 ...
- Linux学习笔记 --iptables防火墙配置
iptables防火墙配置 一.防火墙简介 1.功能: 1)通过源端口,源IP地址,源MAC地址,包中特定标记和目标端口,IP,MAC来确定数据包是否可以通过防火墙 2)分割内网和外网[附带的路由器的 ...
- linux系统之网络防火墙(firewalld服务和iptables服务)
一.对于防火墙的理解 防火墙,其实就是用于实现Linux下访问控制的功能的,它分为硬件的和软件的两种. 无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘. 而我们的任务就是需要去定义到底防火墙如 ...
- Linux学习笔记 --网络配置及进程管理
目录 网络配置 ☆☆☆☆指定服务器 IP 设置主机名和 hosts 映射 主机名解析过程分析(Hosts.DNS) ☆☆☆进程管理 ps 父子进程 终止进程 kill.killall ☆☆☆服务管理 ...
- Linux学习整理(一)
自学Linux已经两个星期了(不算之前的水课),之前也学过一些Linux,但不像现在这种学习状态.这几天除了上课,我的首要任务就是学习Linux! 在这两个星期的学习中,通过看马哥教育的视频和鸟哥的私 ...
最新文章
- WinDbg用法详解
- 2.4 程序示例--线性决策边界-机器学习笔记-斯坦福吴恩达教授
- java文件名大小_java 比较指定文件夹内.txt文件名的大小
- 使用MessageFormat格式化数字,日期
- 7-8 连续因子 (20 分)
- SAP License:统计型实际结算型内部订单
- Swift on Linux —— 从源码开始安装
- 服务器主板显示B1,电脑检测卡显示b1是啥意思
- JavaWeb中的Servlet原理是什么?(存库,建议收藏)
- 精讲了33道二叉树经典题目之后,我总结了这些,帮你一举搞定二叉树
- memcached SASL验证状态安全绕过漏洞
- 数据集:各地区化妆品销量、人口数量和人均收入
- iOS常用宏定义总结 --Objective-C
- 给定经纬度计算距离_oracle 根据经纬度计算任意两地之间的距离
- java 汉字转拼音工具_java汉字转拼音工具类
- 学习笔记2011.11.8-张飞-硬件开发与设计实战-门控开关设计
- 小胖机器人宣传语_智能机器人推广宣传语
- 【实验五 一维数组】7-10 sdut-C语言实验-排序问题
- 面向对象重写理解 求值策略 -共享对象调用 面向对象原则
- linux pdf翻译
热门文章
- JS之使用Echarts画出人际关系图
- 【逗老师带你学IT】PRTG获取HUAWEI FusionServer iBMC传感器状态
- 计算机网络技术用i3可以吗,买电脑避坑第一步,i3处理器和i5等处理器有什么区别?...
- clean、install、package、deploy分别代表什么含义?
- python 中阶乘怎么打_阶乘python怎么打
- DB4AI:使能数据库原生AI计算,数据搬迁由繁至简
- 中国历史上的著名识才用才智慧
- 【 Rust 基础】控制流 —— Rust 的神级语法03
- zoj 3725 Painting Storages dp
- 推荐3篇 如何建立自己的知识体系