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>
-->
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下