CentOS 7 Firewall 防火墙详解
CentOS 7 默认使用firewalld
作为其防火墙管理工具,相较于传统的iPTAbles
,firewalld
提供了更加直观和灵活的配置方式,本文将详细介绍如何在 CentOS 7 上使用firewalld
进行防火墙规则的设置和管理,以确保系统的安全性。
基本配置结构
1、区域(Zones):区域是firewalld
的核心概念,用于定义网络接口和源 IP 地址的组合,通过将接口和源地址绑定到特定的区域,可以对该区域定义特定的安全规则,默认情况下,有一个名为public
的区域。
2、服务(Services):服务是预定义的网络流量过滤规则,用于允许或拒绝某个网络端口或协议的访问。http
和https
是常见的服务。
3、端口(Ports):端口是网络通信的端点,用于标识特定的应用程序或服务,HTTP 使用 TCP 80 端口。
4、规则(Rules):规则是定义在区域、服务或端口上的条件语句,用于指定在满足特定条件时执行的操作。
基本规则指令
开放端口:要允许某个端口的流量通过防火墙,可以使用以下命令:
firewallcmd permanent addport=80/tcp zone=public firewallcmd reload
要永久允许 TCP 80 端口的流量通过public
区域,可以执行上述命令。
关闭端口:要禁止某个端口的流量通过防火墙,可以使用以下命令:
firewallcmd permanent removeport=443/tcp zone=public firewallcmd reload
要永久禁止 TCP 443 端口的流量通过public
区域,可以执行上述命令。
允许 IP 访问:要允许特定 IP 地址的流量通过防火墙,可以使用以下命令:
firewallcmd permanent addsource=192.168.1.100 zone=public firewallcmd reload
要永久允许 IP 地址为192.168.1.100
的流量通过public
区域,可以执行上述命令。
拒绝 IP 访问:要拒绝特定 IP 地址的流量通过防火墙,可以使用以下命令:
firewallcmd permanent removesource=192.168.1.100 zone=public firewallcmd reload
要永久拒绝 IP 地址为192.168.1.100
的流量通过public
区域,可以执行上述命令。
高级配置
定义新的区域:可以通过以下命令创建一个名为myzone
的新区域:
firewallcmd permanent newzone=myzone
将接口添加到新的区域:要将eth1
接口添加到myzone
区域,可以使用以下命令:
firewallcmd zone=myzone addinterface=eth1 permanent
允许特定源地址访问:要允许192.168.1.0/24
网段的源地址访问myzone
区域,可以使用以下命令:
firewallcmd zone=myzone addsource=192.168.1.0/24 permanent
删除规则:要从myzone
区域中移除eth1
接口,可以使用以下命令:
firewallcmd zone=myzone removeinterface=eth1 permanent
防火墙日志和高级设置
启用防火墙日志:要启用所有拒绝的连接的日志记录,可以使用以下命令:
firewallcmd setlogdenied=all
日志将保存在/var/log/firewalld
目录下。
高级规则设置:firewalld
支持更复杂的规则设置,包括限制连接的数量、使用 rich rules 等,要限制每秒钟只允许一个连接,最多允许 5 个突发连接,可以使用以下命令:
firewallcmd direct addrule ipv4 filter INPUT 0 p tcp syn source 0/0 destination 0/0 limit 1/s limitburst 5 j ACCEPT
通过本文的介绍,您应该已经了解了如何在 CentOS 7 中使用firewalld
设置强大而灵活的防火墙规则,合理配置防火墙规则是保护服务器安全的重要一环,希望本文对您有所帮助。
FAQs
Q1: 如何查看当前活动的防火墙区域?
A1: 可以使用以下命令查看当前活动的区域列表:
firewallcmd getactivezones
通常默认是public
。
Q2: 如何更改默认的防火墙区域?
A2: 可以使用以下命令查看或修改默认的防火墙区域:
查看默认区域:firewallcmd getdefaultzone
修改默认区域:firewallcmd setdefaultzone=<新区域名>
。