Linux系统中的防火墙管理是保障系统安全的重要措施之一,在Linux中,iptables和firewalld是两种常见的防火墙管理工具,本文将重点介绍如何使用这两种工具进行防火墙规则的查看、添加、删除和修改。
查看防火墙规则
使用iptables
要查看iptables中的防火墙规则,可以在终端中输入以下命令:
sudo iptables L
这个命令会列出所有当前活动的iptables规则。
使用firewalld
对于使用firewalld的系统,可以使用以下命令来查看防火墙规则:
sudo firewallcmd listall
这将会展示出所有已经激活的服务以及开放的端口。
添加防火墙规则
使用iptables
添加规则通常涉及到指定源地址、目标地址、网络接口等信息,要允许来自特定IP地址的访问,可以使用以下命令:
sudo iptables A INPUT s [IP地址] j ACCEPT
使用firewalld
在firewalld中,添加规则通常意味着开启新的服务或端口,要开启HTTP服务,可以执行:
sudo firewallcmd zone=public addservice=http permanent sudo firewallcmd reload
第一行命令将HTTP服务添加到公共区域并设置为永久生效,第二行命令重新加载防火墙规则以使更改生效。
删除防火墙规则
使用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 |
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等)。
上表中的port
和service
需要替换为实际的端口号和服务名称,zone
应替换为所需区域名称,IP
应替换为具体的IP地址,而rule
需要替换为实际的丰富规则(rich rule)。
在使用iptables时,通常需要明确指定表和链,而firewalld提供了一个更高级别的抽象,通常不需要处理这些细节。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/686820.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复