Centos7.6(1810)之firewalld防火墙简单使用

简介

firewalld防火墙具体是什么,发挥什么作用,这里就不在赘述。这里简单介绍了public区域及其它几个常用的知识点。

关键知识点

accept(允许)、drop(丢弃)、reject(拒绝),--permanent(永久生效)
富规则的基本逻辑是,除services和ports中涉及服务和端口,默认只要不reject和drop,就是拒绝。

查看防火墙信息

[root@localhost services]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33 #哪个网卡生效
sources:
services: ssh http #允许的服务
ports: #允许的端口
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules: #富规则,本次重点说明。

注意:

1、首先说明services和ports配置项的生效优先级是,只有富规则不写明确的拒绝和丢弃,就是允许所有人都可以访问serivces和ports中的端口。
2、富规则是不像iptables是从上往下执行,富规则中只要有reject和drop,就优先执行拒绝动作。
3、富规则中,如果不存在services和port冲突设置,此时如果允许了源ip可以链接此服务器的22端口,有设置了允许源ip可以访问此服务器的所有端口,规则全部生效,没有前后之分

常用命令

// 查看防火墙状态
systemctl status firewalld
// 开启防火墙
systemctl start firewalld
// 开机自启动
systemctl enable firewalld
// 开机关闭
systemctl disable firewalld
//重新加载
firewall-cmd --reload
//查看规则
firewall-cmd --list-all
//默认允许的流量
firewall-cmd --list-services

services和ports简介

services
**#添加删除默认许可ssh服务,富规则不drop和reject,就允许所有。这里说的就是--list-all中的services。
firewall-cmd --add-service=ssh --permanent
firewall-cmd --remove-service=ssh --permanent
#删除默认许可dhcpv6-client服务,富规则不drop和reject,就允许所有。
firewall-cmd --add-service=dhcpv6-client --permanent
firewall-cmd --remove-service=dhcpv6-client --permanent

ports
#添加删除10022端口通行,富规则不drop和reject,就允许所有。这里说的就是--list-all中的ports。
firewall-cmd --add-port=10022/tcp --permanent
firewall-cmd --remove-port=10022/tcp --permanent

网卡管理

#增加网卡
firewall-cmd --zone=public --add-interface=lo --permanent
#删除网卡(删除网卡需要使用systemctl restart firewalld命令重启
firewall-cmd --zone=public --remove-interface=lo --permanent

services中的端口管理

##添加或者修改ssh块的配置(默认ssh端口号是22,如果把ssh端口更改以后此条失效,如果需要继续使用,必须在下面路径中更改22为10022(新ssh端口))
#/usr/lib/firewalld/services目录下有127个xml,都是默认服务的配置文件,例如service=http,那就是http.xml(有的web服务可能是8080等端口)
vi /usr/lib/firewalld/services/ssh.xml

富规则写法

#允许三个ip地址访问对应的端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.20.10.22/32" port port="10022" protocol="tcp" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.20.10.12/32" port port="10022" protocol="tcp" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.20.10.22/32" port port="80" protocol="tcp" accept"
说明,rule family="ipv4" source address="172.20.10.22/32" port port="10022" protocol="tcp" accept是生效的命令,前面的firewall-cmd --permanent --add-rich-rule=是规定写法,add增加,remove删除。
允许以下ip地址访问所有该服务器端口
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.20.10.12/32" accept"

public.xml配置文件和命令对比

/etc/firewalld/zones,配置文件public.xml,每一条规则在public.xml中的呈现方式如下:

点击查看代码
该规则的命令是:firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.20.10.12/32" port port="10022" protocol="tcp" accept"
<rule family="ipv4">
    <source address="172.20.10.12/32"/>
    <port protocol="tcp" port="10022"/>
    <accept/>
</rule>
该规则的命令是:firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="172.20.10.12/32"  accept",注意,这里没有像上方写具体的端口号和协议,,也就是说这个源ip地址可以访问此台服务器上的所有端口。
<rule family="ipv4">
    <source address="172.20.10.12/32"/>
    <accept/>
  </rule>
该规则的命令式是:firewall-cmd --add-service=ssh(注意,该服务的具体端口号要在vi /usr/lib/firewalld/services/ssh.xml修改)
<service name="ssh"/>
该规则的命令是:firewall-cmd --add-port=10022/tcp
<port protocol="tcp" port="10022"/>

总结

一般情况下使用防火墙都是为了封堵漏洞,比如只允许一些ip或一些段的ip地址访问指定端口,必须常见的SSH服务的漏洞,和后台管理页面的漏洞,这些漏洞都是只需要某些人访问就行。如果是对互联网访问端口,这里就需要踏踏实实的整改漏洞了。
所以,先把services和ports中的服务和端口remove掉,然后使用富规则,添加只允许某些ip地址访问指定的端口,比如ssh端口被改成10022了,就算services中有ssh也是不生效,需要vi /usr/lib/firewalld/services/ssh.xml改一下默认的22端口。
为了防止改完以后ssh断开连接,物理机建议首次去机房里添加,如果是云上虚拟机,建议保证远程登陆可用,否则一旦有问题,就失联了。
如果ssh默认端口号被更改了,可以在启动firewalld服务前,在/etc/firewalld/zones的public.xml中先把允许ssh的端口号开放,防止启动服务后直接失联。

备注:

注销行的写法如下

<!--<service name="ssh"/>-->
<!--<service name="http"/>-->
<!--<rule family="ipv4">
    <source address="20.80.202.235/32"/>
    <accept/>
  </rule>
-->
posted @   Charles.L  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示