在CentOS系统中配置防火墙是确保网络安全的关键步骤,CentOS 7使用firewalld作为默认的防火墙管理工具,它提供了一个动态的、基于区域的防火墙管理框架,使得防火墙的配置更加灵活和强大,以下是对CentOS配置防火墙的详细介绍:
基础概念
1、Zone的概念:在firewalld中,zone(区域)定义了防火墙对某个连接、网口或源地址的信任等级,不同的zone有不同的规则,从而允许防火墙针对不同的连接、网口或源地址做出不同的行为。
2、Service的概念:firewalld中的service配置文件用于定义服务相关的指令,这些指令可以用于添加或删除防火墙规则。
3、ipset的概念:ipset是一种IP集合,它可以用于定义一组IP地址,并在防火墙规则中使用这些集合来简化规则的编写和管理。
4、direct.xml:direct.XML是firewalld中的一个配置文件,用于直接定义防火墙规则。
配置文件位置
CentOS 7中的firewalld配置文件存放在两个位置:/etc/firewalld和/usr/lib/firewalld,前者是用户配置目录,后者是系统配置目录,用户配置目录下的配置文件才会生效,而系统配置目录下的配置文件一般不随意改变。
预定义的Zone
CentOS 7中firewalld为用户预定义了9个zone,分别为drop, block, public, external, dmz, work, home, internal, trusted,每个zone的防火墙规则是通过/etc/firewalld/zones目录下的xml配置文件来配置的。
四、将Interface和Source划分到Zone
可以使用firewallcmd命令将某个source或interface划分到某个zone,将某个IP地址划分到trusted zone的命令为:firewallcmd permanent zone=trusted addsource=<IP地址>
;将某个网口划分到block zone的命令为:firewallcmd permanent zone=block addinterface=<接口名>
。
常用命令
1、启动firewalld:systemctl start firewalld
。
2、关闭firewalld:systemctl stop firewalld
。
3、查看状态:systemctl status firewalld
。
4、设置开机启动:systemctl enable firewalld
。
5、取消开机启动:systemctl disable firewalld
。
6、查看版本:firewallcmd version
。
7、查看帮助:firewallcmd help
。
8、显示状态:firewallcmd state
。
9、更新防火墙规则:firewallcmd reload
。
10、查看区域信息:firewallcmd getactivezones
。
11、查看指定接口所属区域:firewallcmd getzoneofinterface=<接口名>
。
12、拒绝所有包:firewallcmd panicon
。
13、取消拒绝状态:firewallcmd panicoff
。
14、查看是否拒绝:firewallcmd querypanic
。
15、开启端口:开启80端口的命令为:firewallcmd permanent addport=80/tcp
。
16、删除端口:删除80端口的命令为:firewallcmd permanent removeport=80/tcp
。
17、查看已开启端口:firewallcmd listports
。
18、查看防火墙规则:firewallcmd listall
。
19、查看允许协议:firewallcmd listprotocols
。
20、获取所有支持的服务:firewallcmd getservices
。
21、增加服务:firewallcmd permanent addservice=<服务名>
。
22、删除服务:firewallcmd permanent removeservice=<服务名>
。
23、允许指定IP访问所有流量:firewallcmd permanent addrichrule="rule family="ipv4" source address="<IP地址>" accept"
。
24、允许指定IP访问指定端口:firewallcmd permanent addrichrule="rule family="ipv4" source address="<IP地址>" port protocol="<协议>" port="<端口号>" accept"
。
25、允许指定IP访问指定协议:firewallcmd permanent addrichrule="rule family="ipv4" source address="<IP地址>" protocol value="<协议>" accept"
。
26、允许指定IP访问指定服务:firewallcmd permanent addrichrule="rule family="ipv4" source address="<IP地址>" service name="<服务名>" accept"
。
27、移除某个服务:firewallcmd removerichrule="rule family="ipv4" source address="<IP地址>" service name="<服务名>" drop"
。
FAQs
1、如何查看当前防火墙的状态?:使用命令systemctl status firewalld
可以查看当前防火墙的状态,如果显示“active (running)”,则表示防火墙正在运行;如果显示“inactive (dead)”,则表示防火墙已经关闭。
2、如何开启一个特定的端口?:要开启一个特定的端口,例如80端口,可以使用命令firewallcmd permanent addport=80/tcp
,使用命令firewallcmd reload
重新加载防火墙规则以使更改生效。