Linux防火墙规则的查看、添加、删除和修改

Linux防火墙管理包括查看、添加、删除和修改规则。使用iptables或firewalld命令查看当前规则,通过指定参数来添加新规则或修改现有规则,并可利用特定命令删除不必要规则,以维护系统安全和网络流量控制。

Linux系统中的防火墙管理是保障系统安全的重要措施之一,在Linux中,iptables和firewalld是两种常见的防火墙管理工具,本文将重点介绍如何使用这两种工具进行防火墙规则的查看、添加、删除和修改。

Linux防火墙规则的查看、添加、删除和修改
(图片来源网络,侵删)

查看防火墙规则

使用iptables

要查看iptables中的防火墙规则,可以在终端中输入以下命令:

sudo iptables L

这个命令会列出所有当前活动的iptables规则。

使用firewalld

对于使用firewalld的系统,可以使用以下命令来查看防火墙规则:

sudo firewallcmd listall

这将会展示出所有已经激活的服务以及开放的端口。

Linux防火墙规则的查看、添加、删除和修改
(图片来源网络,侵删)

添加防火墙规则

使用iptables

添加规则通常涉及到指定源地址、目标地址、网络接口等信息,要允许来自特定IP地址的访问,可以使用以下命令:

sudo iptables A INPUT s [IP地址] j ACCEPT

使用firewalld

在firewalld中,添加规则通常意味着开启新的服务或端口,要开启HTTP服务,可以执行:

sudo firewallcmd zone=public addservice=http permanent
sudo firewallcmd reload

第一行命令将HTTP服务添加到公共区域并设置为永久生效,第二行命令重新加载防火墙规则以使更改生效。

删除防火墙规则

Linux防火墙规则的查看、添加、删除和修改
(图片来源网络,侵删)

使用iptables

要从iptables中删除规则,首先需要知道规则的位置(通常是链中的序号),假设我们要删除的规则位于INPUT链的位置3,可以使用以下命令:

sudo iptables D INPUT 3

使用firewalld

要从firewalld中删除规则,可以使用以下命令:

sudo firewallcmd zone=public removeservice=http permanent
sudo firewallcmd reload

这将移除之前添加的HTTP服务规则。

修改防火墙规则

使用iptables

修改iptables规则通常涉及到先删除旧的规则,然后添加一个新的规则,如果之前允许了某个IP地址的访问,现在想要拒绝该IP地址的访问,可以先删除之前的允许规则,然后添加拒绝规则:

sudo iptables D INPUT [规则序号]
sudo iptables A INPUT s [IP地址] j DROP

使用firewalld

在firewalld中,修改规则可能涉及到改变服务的状态或是修改服务的参数,如果想要限制某个服务的访问范围,可以使用以下命令:

sudo firewallcmd zone=public addrichrule='rule family="ipv4" source address="[IP地址]" port protocol="tcp" port="[端口号]" accept'

这个命令将为特定的IP地址和端口号添加一个接受规则。

FAQs

Q1: 如何临时关闭Linux上的防火墙?

A1: 临时关闭防火墙可以用以下命令:

对于iptables:

sudo iptables F

这将清空所有规则,但不会保存这些更改,重启后,防火墙将恢复到之前的状态。

对于firewalld:

sudo systemctl stop firewalld.service

这会停止firewalld服务,但不会从系统中卸载它,重启后,服务将自动启动。

Q2: 如何永久关闭Linux上的防火墙?

A2: 永久关闭防火墙通常涉及禁用相关的服务,以下是操作方法:

对于iptables:

由于iptables不是作为服务运行的,因此没有“永久关闭”的概念,可以通过不加载任何规则来模拟这一行为,确保/etc/iptables/rules.v4(针对IPv4)和/etc/iptables/rules.v6(针对IPv6)文件为空或不存在。

对于firewalld:

sudo systemctl disable firewalld.service
sudo systemctl stop firewalld.service

第一行命令禁用firewalld服务,使其在启动时不会自动运行;第二行命令立即停止正在运行的服务。

下面是一个关于如何在Linux中使用firewalld和iptables进行防火墙规则查看、添加、删除和修改的介绍。

动作 firewalld命令(运行时) firewalld命令(永久配置) iptables命令
查看状态 firewallcmd state N/A N/A
开启服务 systemctl start firewalld N/A systemctl start iptables
关闭服务 systemctl stop firewalld N/A systemctl stop iptables
重启服务 systemctl restart firewalld N/A systemctl restart iptables
查看规则 firewallcmd listall firewallcmd permanent listall iptables L n
查看区域 firewallcmd getdefaultzone N/A N/A
设置默认区域 firewallcmd setdefaultzone=zone firewallcmd permanent setdefaultzone=zone N/A
添加端口 firewallcmd addport=port/tcp firewallcmd permanent addport=port/tcp iptables A INPUT p tcp dport port j ACCEPT
删除端口 firewallcmd removeport=port/tcp firewallcmd permanent removeport=port/tcp iptables D INPUT p tcp dport port j ACCEPT
添加服务 firewallcmd addservice=service firewallcmd permanent addservice=service N/A(需要手动添加对应的规则)
删除服务 firewallcmd removeservice=service firewallcmd permanent removeservice=service N/A(需要手动删除对应的规则)
添加规则 firewallcmd addrichrule='rule' firewallcmd permanent addrichrule='rule' 根据需求编写复杂的iptables命令
删除规则 firewallcmd removerichrule='rule' firewallcmd permanent removerichrule='rule' 根据需求删除对应的iptables规则
重新加载 firewallcmd reload N/A iptablesrestore< /etc/iptables/rules.v4
IP白名单 firewallcmd permanent zone=public addsource=IP firewallcmd reload iptables A INPUT s IP j ACCEPT

说明:

firewalld的运行时配置(runtime configuration)不会在系统重启后保留,而永久配置(permanent configuration)会在每次启动时加载。

iptables规则在系统重启后通常会保留,因为它们通常被保存到/etc/iptables/rules.v4文件中,并在系统启动时通过iptablesrestore命令恢复。

对于iptables,具体的规则配置取决于所使用的表(例如filter、nat等)和链(例如INPUT、FORWARD等)。

上表中的portservice需要替换为实际的端口号和服务名称,zone应替换为所需区域名称,IP应替换为具体的IP地址,而rule需要替换为实际的丰富规则(rich rule)。

在使用iptables时,通常需要明确指定表和链,而firewalld提供了一个更高级别的抽象,通常不需要处理这些细节。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/686820.html

(0)
未希的头像未希新媒体运营
上一篇 2024-06-13 19:21
下一篇 2024-06-13 19:23

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入