10、防火墙、iptables、firewalld

RHCE板块

欢迎来到我的博客,这里是Linux板块,配合之前RHCSA进阶,希望我的博客可以帮助到您,感谢您的阅读,有什么问题还希望一起探讨交流,感谢各位的支持,感谢!

  1. 使用Linux搭建一个简单的论坛
  2. RHCE——一、安装部署及例行性工作
  3. RHCE——二、时间服务器
  4. RHCE——三、远程连接服务器
  5. RHCE——四、Web服务器(理论篇
  6. RHCE——五、Web服务器及内网穿透(实验篇
  7. RHCE——六、基于https协议的静态网站
  8. RHCE——七、搭建云存储器
  9. RHCE——八、DNS域名解析服务器
  10. RHCE——九、SELinux
  11. RHCE——十、防火墙、iptables、firewalld
  12. RHCE——十一、NFS服务器
  13. RHCE——十二、Mysql服务
  14. RHCE——十三、Shell自动化运维编程基础
  15. RHCE——十四、变量和引用
  16. RHCE——十五、shell条件测试
  17. RHCE——十六、流程控制之条件判断、循环
  18. RHCE——十七、文本搜索工具-grep、正则表达式
  19. RHCE——十八、shell编程之sed
  20. RHCE——十九、shell编程之awk
  21. RHCE——二十、Ansible及安装与配置
  22. RHCE——二十一、Ansible模块

一、什么是防火墙

  • 防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。

1、分类:

  • 硬件防火墙:由厂商设计好的主机硬件,其操作系统主要以提供数据包数据的过滤机制为主,并去掉不必要的功能
  • 软件防火墙:保护系统网络安全的一套软件(或称为机制),如Netfilter(数据包过滤机制)

2、Netfilter(数据包过滤)

2.1 定义
  • netfilter 是一个工作在 Linux 内核的网络数据包处理框架,用于分析进入主机的网络数据包,将数据包的头部数据(硬件地址,软件地址,TCP、UDP、ICMP等)提取出来进行分析,以决定该连接为放行或抵挡的机制,主要用于分析OSI七层协议的2、3、4层。
2.2 Netfilter分析内容
  • 拒绝让Internet的数据包进入主机的某些端口
  • 拒绝某些来源IP的数据包进入
  • 拒绝让带有某些特殊标志(flag)的数据包进入,如:带有SYN的主动连接标志
  • 分析MAC地址决定是否连接

3、防火墙无法完成的任务

  • 防火墙并不能杀毒或清除木马程序(假设主机开放了www服务,防火墙的设置是一定要将www服务的port开放给client端的。假设www服务器软件有漏洞,或者请求www服务的数据包本身就是病毒的一部分时,防火墙是阻止不了的)
  • 防火墙无法阻止来自内部LAN的攻击(防火墙对于内部的规则设置通常比较少,所以就很容易造成内部员工对于网络无用或滥用的情况)

4、iptables 与 firewalld 区别

  • netfilter数据包过滤机制是由linux内核内建的,不同的内核版本使用的设置防火墙策略的软件不一样,从红帽7系统开始firewalld服务取代了iptables服务
  • iptables 与 firewalld都不是真正的防火墙,它们都只是用来定义防火墙策略的防火墙管理工具而已,即只是一种服务,而真正使用规则干活的是内核的netfilter
  • 总之,当前Linux 系统中存在多个防火墙管理工具,旨在方便运维人员管理 Linux 系统中的防火墙策略,我们只需要配置妥当其中的一个就足够了。虽然这些工具各有优劣,但它们在防火墙策略的配置思路上是保持一致的

二、iptables

  • 早期的 Linux 系统中,默认使用 iptables 防火墙来管理服务和配置防火墙,虽然新型的 firewalld 防火墙管理服务已经被投入使用多年,但iptables 在当前生产环境中还继续使用 ,具有顽强的生命力

1、iptables执行原则

1.1 原则
  • 防火墙会从上至下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作并去执行匹配项中定义的行为(即放行或阻止)。
  • 如果在读取完所有的策略规则之后没有匹配项,就去执行默认的策略
1.2 防火墙规则
  • 通(放行、允许)
  • 堵(阻止、拒绝)(一类:返回信息后再拒绝,一类:直接丢包)
  • 当默认策略为拒绝时,就要设置允许规则,否则数据包都进不来;若默认策略为允时,就要设置拒绝规则,否则数据包都能进来,防火墙也就失去了作用

2、规则链

2.1 概念
  • iptables 服务把用于过滤流量的策略条目称之为规则,多条规则组成一个规则链
2.2 分析
  • 数据包经过iptables处理必须闯过5个控制关卡,每个关卡放置5个规则链用于检查规则和处理,每一道关卡中有多个规则,数据报文必须按顺序一个一个匹配这些规则,这些规则串起来就像一条链,所以我们把这些关卡都叫规则链
  • 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
2.3 规则链分类

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • INPUT链:数据包流入时,即数据包从内核流入用户空间
  • OUTPUT链:向外发送数据包(流出)时,即数据包从用户空间流出到内核空间,一般不配置
  • FORWARD链:处理数据包转发时,即在内核空间中,从一个网络接口进入,到另一个网络接口去(转发过滤)
  • PREROUTING链:在对数据包作路由选择之前,即互联网进入局域网
  • POSTROUTING链:在对数据包作路由选择之后,即局域网出互联网
  • 注意:从内网向外网发送的流量一般都是可控且良性的,因此使用最多的是INPUT 规则链,该规则链可以增大黑客人员从外网入侵内网的难度
  • 例:物业管理公司有两条规定:
    • 禁止小商小贩进入社区;
    • 各种车辆在进入社区时都要登记。
    • 这两条规定是用于社区正门的(流量必须经过的地方),而不是每家的防盗门。根据防火墙策略的匹配顺序,可能会存在多种情况。
    • 如:来访人员是小商小贩,则会被保安拒之门外,也就无需再对车辆进行登记。若来访人员乘坐一辆汽车进入社区正门,则“禁止小商小贩进入社区”的第一条规则就没有被匹配到,因此按照顺序匹配第二条策略,即需要对车辆进行登记。如果是社区居民要进入正门,则这两条规定都不会匹配到,因此会执行默认的放行策略
2.4 规则链之间的匹配顺序
  • 主机型防火墙:
    • 入站数据(来自外界的数据包,且目标地址是防火墙本机):PREROUTING–> INPUT --> 本机的应用程序
    • 出站数据(从防火墙本机向外部地址发送的数据包) :本机的应用程序–> OUTPUT --> POSTROUTING
  • 网络型防火墙:转发数据(需要经过防火墙转发的数据包) : PREROUTING --> FORWARD --> POSTROUTING
  • 规则链内的匹配顺序
    • 自上向下按顺序依次进行检查,找到相匹配的规则即停止(LOG策略例外,表示记录相关日志)
    • 若在该链内找不到相匹配的规则,则按该链的默认策略处理(未修改的状况下,默认策略为允许)
2.5 iptables 流量处理动作
  • 当规则链匹配后应采用以下几种动作来处理匹配流量

  • ACCEPT:允许流量通过

  • REJECT:拒绝流量通过,拒绝后回复拒绝信息

  • LOG:记录日志信息

  • DROP:拒绝流量通过,流量丢弃不响应

  • 例:若某天您正在家里看电视,突然听到有人敲门,透过防盗门的猫眼一看是推销商品的,便会在不需要的情况下开门并拒绝他们(REJECT)。但如果您看到的是债主带了十几个小弟来讨债,此时不仅要拒绝开门,还要默不作声,伪装成自己不在家的样子(DROP)

3、iptables表

  • 规则链容纳了各种流量匹配规则,规则表则存储了不同功能对应的规则链,总之表里有链,链里有规则
四种规则表
  • filter表:用于对数据包过滤(外网进入内网时),根据具体的规则决定是否放行该数据包(如DROP、ACCEPT、REJECT、LOG),包含三个规则链,INPUT、 FORWARD、 OUTPUT,所谓的防火墙其实基本上是指这张表上的过滤规则,常用
  • nat表:network address translation,网络地址转换功能,主要用于修改数据包的源、目标IP地址、端口,包含三个规则链,OUTPUT、 PREROUTING、 POSTROUTING
  • mangle表:拆解报文,做出修改,并重新封装,主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time To Live,生存周期)指以及为数据包设置Mark标记,由于需要相应的路由设备支持,因此应用并不广泛,包含全部五个规则链
  • raw表:是自1.2.9以后版本的iptables新增的表,用于是否对该数据包进行状态跟踪,在匹配数据包时,raw表的规则要优先于其他表,包含两个规则链,OUTPUT、PREROUTING
  • 注意:最终定义的防火墙规则链,都会添加到这四张表中的其中一张表中,如图:

4、安装iptables

4.1 预处理
  • RHEL(Centos)9中默认使用的是firewalld,且与iptables之间有冲突,如果需要使用 iptables 需要先停止firewalld再进行安装:
[root@server ~]# systemctl stop  firewalld
[root@server ~]# systemctl disable  firewalld
# RHEL9安装:
[root@server ~]# yum  list  |  grep  iptables  # 查询安装包名
[root@server ~]# yum  install  iptables-nft-services  -y
# RHEL8安装:
[root@server ~]# yum  install iptables-services -y

在这里插入图片描述

4.2 管理命令
[root@server ~]# systemctl start iptables
[root@server ~]# systemctl enable iptables
[root@server ~]# systemctl status iptables
[root@server ~]# service  iptables save
# 注意:保存设置的规则,否则重启后会恢复默认设置,不能用systemctl save  iptables

在这里插入图片描述

4.3 规则链存储文件
[root@server ~]# vim   /etc/sysconfig/iptables

# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

在这里插入图片描述

  • 前3行为注释:

  • filter表的规则链

5、iptables 命令

5.1 原则
  • iptables 命令根据流量的源地址、目的地址、传输协议、服务类型等信息进行匹配,若匹配成,则iptables 会根据策略规则所预设的动作来处理这些流量,由于策略规则的匹配顺序是从上至下,则要把较为严格、优先级较高的策略规则放到前面,以免发生错误
5.2 格式
  • 简化:
iptables [-t 表名] 选项 [链名] [条件] [-j 控制动作]
  • 详细:
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 控制动作
5.3 参数
**参数 **作用
**-t **对指定的表进行操作,table必须是raw,nat,filter,mangle中的一个,默认是filter
-p指定要匹配的数据包协议类型
-s匹配源地址IP/MASK,若有!表示取反
-d匹配目的地址IP/MASK
-i 网卡名匹配从这块网卡流入的数据
-o 网卡名匹配从这块网卡流出的数据
-L列出规则链上的所有规则,如果没有指定链,列出表上所有链的所有规则
-A在规则链的末尾加入新规则
-I num在规则链的头部加入新规则
-D num删除指定规则
-R num替换/修改第几条规则
-P设置默认策略,
-F清空所有规则(F:flush是“冲洗、冲掉”的意思)
-N创建新规则链
-X删除指定规则链,这个链必须没有被其它任何规则引用,而且这条链上必须没有任何规则。如果没有指定链名,则会删除该表中所有非内置的链
-E用指定的新名字去重命名指定的链
-Z把指定链,或者表中的所有链上的所有计数器清零
-j满足某条件时该执行什么样的动作
-h显示帮助信息
5.4 示例
  • 查看已有的防火墙规则链
[root@server ~]# iptables  -nvxL  --line
# 参数释义
	# -n:显示源
	# -v:详细信息
	# -x:单位自动转换为KB\MB
	# -L:写在最后,列出所有规则
	# --line:增加行号
# 显示释义
	# num:规则的行号
	# pkts:数据包数量
	# bytes:数据包字节数
	# target:动作(放行、拒绝)
	# port:端口
	# in:入站网卡
	# out:出站网卡

在这里插入图片描述

  • 清空规则
[root@server ~]# iptables  -F             # 清空规则(清空所有表的所有链)
[root@server ~]# iptables  -nvxL  --line  # 查看规则链信息
[root@server ~]# systemctl restart iptables.service  # 重启服务
[root@server ~]# iptables  -nvxL  --line   # 再次查看,恢复原状,说明未保存设置
[root@server ~]# iptables  -F    # 再次清空规则
[root@server ~]# iptables  -nvxL  --line   # 再次查看
[root@server ~]# service iptables save   # 保持设置
iptables: Saving firewall rules to /etc/sysconfig/iptables: [  OK  ]
[root@server ~]# systemctl restart iptables.service   # 重启服务
[root@server ~]# iptables  -nvxL  --line  # 再次查看,发现规则已清空
5.5 实验
  • 实验1:搭建web服务器,设置任何人都能通过80端口访问http服务
[root@server ~]# iptables  -F    # 再次清空规则
[root@server ~]# service iptables save   # 保持设置
[root@server ~]# systemctl restart iptables.service   # 重启服务

[root@server ~]# mkdir  -p  /www/web
[root@server ~]# echo  "hello world"  >  /www/web/index.html
[root@server ~]# yum  install  httpd -y
[root@server ~]# vim  /etc/httpd/conf/httpd.conf 
DocumentRoot "/www/web"
<Directory "/www/web">
    AllowOverride None
    # Allow open access:
    Require all granted
</Directory>


[root@server ~]# systemctl restart httpd

[root@server ~]# iptables  -A  INPUT  -p tcp  --dport 80  -j ACCEPT
[root@server ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables: [  OK  ]
[root@server ~]# iptables  -nvxL  --line
Chain INPUT (policy ACCEPT 236 packets, 14221 bytes)
num      pkts      bytes target     prot opt in     out     source               destination

1           3      122 ACCEPT     6    --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num      pkts      bytes target     prot opt in     out     source               destination


Chain OUTPUT (policy ACCEPT 127 packets, 10036 bytes)
num      pkts      bytes target     prot opt in     out     source               destination

[root@server ~]# systemctl restart iptables.service 
[root@server ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     6    --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

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

  • 实验2:搭建web服务器,设置任何人都不能通过80端口访问http服务(自己做)
  • 实验3:禁止所有人使用ssh进行远程登录
[root@server ~]# iptables -F  # 清空所有规则
[root@server ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables: [  OK  ]
[root@server ~]# iptables -nL   #发现没有策略了

# 插入新规则
[root@server ~]# iptables  -A  INPUT  -p  tcp  --dport  22  -j  REJECT   #当回车之后,xshell就不能用了,需要在虚拟机中进行配置
[root@server ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables: [  OK  ]
[root@server ~]# iptables  -nL

# 恢复连接(在虚拟机中配置)
[root@server ~]# iptables  -nL  --line
[root@server ~]# iptables  -D  INPUT  1    # 删除INPUT链中的1号规则
[root@server ~]# service iptables save
#保存之后,继续使用xshell进行ssh连接

在这里插入图片描述

三、firewalld

1、概述

1.1 概念
  • firewalld(Dynamic Firewall Manager of Linux systems,Linux 系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,从RHEL 7开始,用firewalld服务替代了iptables服务
  • RHEL 9采用firewalld管理netfilter子系统,默认情况,firewalld则是交由内核层面的nftables包过滤框架来处理
1.2 firewalld特点
  • firewalld可以动态修改单条规则,不需要像iptables那样,修改规则后必须全部刷新才可生效

  • firewalld默认动作是拒绝,则每个服务都需要去设置才能放行,而iptables里默认是每个服务是允许,需要拒绝的才去限制

  • iptables防火墙类型为静态防火墙firewalld 防火墙类型为动态防火墙

  • firewalld和iptables一样自身并不具备防火墙功能,它们的作用都是用于维护规则,而真正使用规则干活的是内核防火墙模块

  • firewalld 加入了区域(zone,一系列规则的集合)概念

2、区域 zone

2.1 作用
  • firewalld防火墙为了简化管理,将所有网络流量分为多个区域(zone),然后根据数据包的源IP地址或传入的网络接口等条件将流量传入相应区域,每个区域都定义了自己打开或者关闭的端口和服务列表
  • 区域:zone本质为firewalld 预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换

例:有一台笔记本电脑,每天都要在公司、咖啡厅和家里使用。

这三者的安全性按照由高到低的顺序是:家庭、公司办公室、咖啡厅。

若希望指定如下防火墙策略规则:在家中允许访问所有服务;在公司办公室内仅允许访问文件共享服务;在咖啡厅仅允许上网浏览。

以往,我们需要频繁地手动设置防火墙策略规则,而现在只需要预设好区域集合,然后只需轻点鼠标就可以自动切换了,从而极大地提升了防火墙策略的应用效率。

2.2 分析
  • firewalld的一个zone就是一个可信等级,一个等级对应一套过滤规则(规则集合)
  • 数据包必须要经过某个zone才能入站或出站
  • 每个zone都有一个处理行为(default、ACCEPT、REJECT、DROP)
  • firewalld的zone根据信任级别分成9个默认zone:
区域默认策略规则
trusted(信任区域)允许所有的传入流量
home (家庭区域)允许与SSH、MDNS(多播DNS)、IPP客户端、samba-客户端、DHCPv6客户端、cockpit(服务器管理工具)服务匹配的流量传入,其余拒绝
internal (内部区域)默认值时与homel区域相同
work(工作区域)允许 与SSH、DHCPv6客户端、cockpit服务匹配的流量传入,其余拒绝、
public (公共区域)允许与SSH或DHCPv6客户端、cockpit服务匹配的流量传入,其余拒绝 (是默认区域)
external(外部区域)允许与SSH服务匹配的流量传入,其余拒绝
dmz (隔离区域)也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用,允许与SSH服务匹配的流量传入,其余拒绝
block (阻塞区域)拒绝所有传入流量,返回icmp-host-prohibited消息
drop (丢弃区域)丢弃所有传入流量,且没有任何回复,类似DROP
  • firewalld的配置文件有两个主要的目录/usr/lib/firewalld/zones(系统配置文件,尽量不要修改)和/etc/firewalld/zones(用户配置文件,可以自行修改),每个zone单独对应一个xml配置文件,文件名为<zone名称>.xml
[root@server ~]# cd  /usr/lib/firewalld/zones
[root@server ~]# ls
[root@server zones]# cd /etc/firewalld/zones
[root@server zones]# ls
  • 用法是:把可信任的IP地址添加到trusted区域,把不可信任的IP地址添加到block区域,把要公开的网络服务添加到public区域,所以常用区域为:trusted、block、public
2.3 zone文件中的过滤规则
  • 过滤规则优先级:
    • source(最高)(IP地址)
    • interface(次之)(接口)
    • 默认zone(最低)
  • 规则:
规则作用
scource源IP地址过滤(常用)
interface网卡过滤
service服务名(实际是关联端口)过滤
port端口过滤
icmp-blockICMP报文过滤
masqueradeIP地址伪装
forward-port端口转发过滤
rule自定义规则

3、firewall-cmd可视化界面工具

3.1 安装
[root@server ~]# systemctl  start firewalld     # 启用
[root@server ~]# systemctl  enable  firewalld   # 开机启动
[root@server ~]# yum  install  firewall-config  -y  # 安装图形化界面

在这里插入图片描述

3.2 使用
# 虚拟机中执行,不要在xshell执行
[root@server ~]# firewall-config

在这里插入图片描述

4、firewall-cmd命令行工具

4.1 firewalld命令生效模式
  • runtime模式:运行时模式,立即生效,重启失效
  • permanent模式:永久模式,重启生效
4.2 管理命令
[root@server ~]# systemctl start firewalld 
[root@server ~]# systemctl disable firewalld
[root@server ~]# systemctl restart firewalld
[root@server ~]# systemctl enable firewalld
[root@server ~]# systemctl status firewalld
[root@server ~]# systemctl stop firewalld

在这里插入图片描述

4.3 设置命令: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=<端口号/协议>设置默认区域不再允许该端口的流量
  • 例1:基本命令
[root@server ~]# firewall-cmd   --version  # 查看版本
[root@server ~]# firewall-cmd   --help  # 查看帮助信息
[root@server ~]# firewall-cmd   --state  # 显示状态
[root@server ~]# firewall-cmd   --get-services   # 查看防火墙支持的服务 (不支持nginx服务,需要手动添加)
[root@server ~]# firewall-cmd   --list-all  # 查看当前区域的规则信息

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

  • 例2:设置zone
[root@server ~]# firewall-cmd   --get-default-zone  # 查看当前生效的域
[root@server ~]# firewall-cmd   --get-zones  # 查看当前支持的域
[root@server ~]# firewall-cmd  --set-default-zone=trusted  # 设置当前区域为信任区域
[root@server ~]# firewall-cmd  --set-default-zone=public  # 改回public区域
[root@server ~]# firewall-cmd  --get-default-zone

在这里插入图片描述

  • 例3:搭建web网站,配置firewall防火墙
[root@server ~]# yum  install  httpd  -y
# 使用xftp将sxhkt网页目录上传到/
[root@server ~]# ls  /sxhkt/
css  dingban.mp4  img  index.html  js  temp
[root@server ~]# vim  /etc/httpd/conf/httpd.conf 
DocumentRoot "/sxhkt"
<Directory "/sxhkt">
[root@server ~]# systemctl start httpd  # 发现网页无法访问,需要配置防火墙策略
[root@server ~]# firewall-cmd   --list-all  # 查看当前区域的放行的服务,发现无httpd
# 向域中添加http放行策略
[root@server ~]# firewall-cmd --permanent --zone=public  --add-service=http
[root@server ~]# firewall-cmd  --reload  # 配合永久生效会立即生效
[root@server ~]# firewall-cmd   --list-all  # 再次查看放行服务
# 测试:浏览器中输入IP地址可以查看到网页
[root@server ~]# firewall-cmd --permanent --zone=public  --remove-service=http   # 移除放行的服务
[root@server ~]# firewall-cmd --reload   # 配合永久生效会立即生效
[root@server ~]# firewall-cmd   --list-all

# 第二种方法:
# 以端口号/协议的方式添加到策略也可以实现放行http服务
[root@server ~]# firewall-cmd --permanent --zone=public  --add-port=80/tcp
[root@server ~]# firewall-cmd  --reload  # 配合永久生效会立即生效
# 测试:浏览器中输入IP地址可以查看到网页

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

# 总结:
# 放行服务:
firewall-cmd --permanent --zone=public  --add-service=服务名
# 放行服务端口
firewall-cmd --permanent --zone=public  --add-port=端口号/传输协议

在这里插入图片描述

  • 例4:某些服务需要编辑zone文件才能进行添加,如:添加nginx
[root@server ~]# firewall-cmd   --get-services   # 查看支持的服务列表
[root@server ~]# yum  install  nginx  -y
# 此时添加nginx服务会报错
[root@server ~]# firewall-cmd  --add-service=nginx  --permanent 
Error: INVALID_SERVICE: Zone 'public': 'nginx' not among existing services
[root@server ~]# vim  /etc/firewalld/services/nginx.xml  # 编辑服务配置文件
# 添加如下内容:
<service>
        <short>Nginx</short>
        <description>nginx</description>
        <port protocol="tcp"  port="80"/>
        <port protocol="tcp"  port="443"/>
</service>
[root@server ~]# firewall-cmd  --add-service=nginx  --permanent 
success
[root@server ~]# firewall-cmd  --reload 
success
[root@server ~]# firewall-cmd   --get-services   

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

在这里插入图片描述

  • 例5:禁止192.168.48.131 网段的地址进行ping
    • firewalld 富规则:用于更细致、更详细的防火墙策略配置,它可以针对系统服务、端口号、源地址和目标地址等诸多信息进行更有正对性的策略配置
    • 富规则优先级最高
    • 格式:
# 如:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="源IP" service name="http"   reject'
  • 你不得不吐嘈:“这是地球上最丑陋的命令形式,没有之一”,书写时很容易出错,所以建议你在文件编辑器修改到没有毛病再粘贴到shell终端窗口中
  • 可以通过输入 \ 换行书写
  • 示例:
[root@server ~]# firewall-cmd  --permanent --add-rich-rule='rule family="ipv4" source address="192.168.48.131" protocol  value="icmp"  reject'
[root@server ~]# firewall-cmd  --reload 
[root@server ~]# firewall-cmd --list-all
# 测试:定位node1中进行ping  192.168.48.130  发现目标不可达
23e03bf32e5e1c25864940eaec6e6.png)
```shell
# 如:
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="源IP" service name="http"   reject'
  • 你不得不吐嘈:“这是地球上最丑陋的命令形式,没有之一”,书写时很容易出错,所以建议你在文件编辑器修改到没有毛病再粘贴到shell终端窗口中
  • 可以通过输入 \ 换行书写
  • 示例:
[root@server ~]# firewall-cmd  --permanent --add-rich-rule='rule family="ipv4" source address="192.168.48.131" protocol  value="icmp"  reject'
[root@server ~]# firewall-cmd  --reload 
[root@server ~]# firewall-cmd --list-all
# 测试:定位node1中进行ping  192.168.48.130  发现目标不可达
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值