在Linux系统中,常用的防火墙状态命令主要是iptables
和firewalld
,以下为你详细介绍:
一、iptables
- 查看iptables规则状态
- 命令:
iptables -L -n
- 作用:列出当前iptables的规则表内容。
-L
表示列出(list)规则,-n
表示以数字形式显示地址和端口等信息,这样可以避免DNS解析带来的延迟并且使输出更加简洁明了。 - 示例输出可能包含输入链(INPUT)、转发链(FORWARD)和输出链(OUTPUT)等不同链中的规则,例如允许特定IP地址的访问或者特定端口的流量通过等规则。
- 查看iptables是否开启(实际上iptables是内核模块,一直存在,这里查看是否有规则生效来表示状态)
- 可以通过查看规则数量来判断,如果
iptables -L -n
输出中各链下有较多规则且不是默认的空规则状态,可认为防火墙处于有规则管控的状态。
- iptables的优势
- 灵活性高:可以精确地定制规则,对每个链中的每个规则进行细致的设置,比如针对不同的协议(TCP、UDP等)、源地址、目的地址、端口号等进行过滤。
- 广泛兼容性:作为Linux内核自带的防火墙工具,在大多数Linux发行版中都可以使用。
- iptables的类型(从规则角度看)
- 基于源地址的规则:例如允许来自特定网段(如192.168.1.0/24)的流量进入。
- 基于目的地址的规则:限制发往某个特定IP地址的流量。
- 基于端口的规则:像允许外部访问本地的80端口(HTTP服务)。
- 应用场景
- 网络安全防护:防止外部未经授权的访问,保护本地服务器资源。
- 网络访问控制:例如在企业网络环境中,限制员工只能访问特定的互联网资源。
二、firewalld
- 查看firewalld状态
- 命令:
firewall - cmd --state
- 如果输出为
running
,则表示firewalld正在运行,防火墙处于工作状态;如果输出为not running
,则表示未运行。
- firewalld的优势
- 动态加载规则:不需要重启防火墙就可以更新规则,对网络连接的影响较小。
- 区域概念:将网络接口划分到不同的区域(如public、internal等),每个区域有不同的默认规则,方便管理不同类型的网络连接。
- firewalld的类型(从区域角度看)
- public区域:通常用于外部网络连接,有较为严格的默认规则。
- internal区域:适用于内部信任网络之间的连接,默认规则相对宽松。
- 应用场景
- 服务器安全防护:无论是Web服务器还是数据库服务器等,都可以通过firewalld来控制访问权限。
- 网络隔离:在企业内部不同部门的网络之间进行有效的隔离和安全管控。
如果在查看防火墙状态或者配置规则时遇到问题:
- 权限问题:很多防火墙操作需要超级用户权限,确保使用
sudo
或者以root用户身份执行命令。 - 规则冲突:如果同时使用iptables和firewalld,可能会出现规则冲突的情况。一般建议选择其中一种方式来管理防火墙规则。如果要切换,需要先清理原有的规则。例如从iptables切换到firewalld时,可以先清空iptables规则(
iptables -F
),然后再启动firewalld。 - 配置错误:如果按照预期防火墙没有生效,检查规则的语法是否正确。对于iptables,规则的语法比较严格,一个小的错误可能导致规则无法生效。可以参考官方文档或者在线教程仔细检查规则的编写。