Linux 防火墙端口设置常用命令

本文介绍了如何在Linux系统中通过firewalld服务管理防火墙,包括检查启动防火墙、开放和关闭特定端口、验证端口状态、设置IP白名单以及删除规则,以增强服务器安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        应对安全检查,服务器启用防火墙,关闭端口访问,以IP白名单方式对内开发

        在Linux系统中设置防火墙端口通常涉及到以下步骤。这里以常用的firewalld服务为例进行说明,适用于大多数现代Linux发行版如RHEL、CentOS、Fedora等。如果您使用的是较旧的系统或配置了其他防火墙软件(如iptables),操作可能会有所不同。以下是针对firewalld的端口设置流程。

一、检查并启动防火墙服务

确保防火墙服务(firewalld)正在运行,并根据需要进行启动或设置为开机自启。

1、查看防火墙状态:

firewall-cmd --state

如果输出为running,则防火墙已启动;若为not running,则需启动防火墙。

2、启动防火墙(如未运行):

systemctl start firewalld

3、设置防火墙开机自启(如尚未设置):

systemctl enable firewalld

二、开放特定端口

要允许外部访问特定端口(例如,这里以开放TCP端口8080为例),执行以下命令:

firewall-cmd --zone=public --add-port=8080/tcp --permanent

解释:
--zone=public 指定作用域为公共区域(默认区域)。根据您的网络配置,可能需要选择其他区域,如internal、dmz等。
--add-port=8080/tcp 表示添加一个允许访问的端口,此处为TCP协议的8080端口。
--permanent 参数表示该规则应持久化保存,即在系统重启后仍然生效。

三、重新加载防火墙配置


更改防火墙规则后,需要重新加载配置以使改动生效:

firewall-cmd --reload

四、验证端口是否已开放

1、查看防火墙中已开放的端口列表:

firewall-cmd --zone=public --list-ports

输出应包含您刚刚添加的端口(如8080/tcp)。

2、使用netstat命令确认端口监听状态:

netstat -tuln

在输出中查找与目标端口(如8080)相关联的行,确认其处于监听(LISTEN)状态。

五、关闭特定端口

如果需要关闭已开放的端口,可以使用类似命令移除端口规则:

firewall-cmd --zone=public --remove-port=8080/tcp --permanent
firewall-cmd --reload

注意事项
对于生产环境,请谨慎管理防火墙规则,仅开放必要的端口以保证系统安全。
如果您的应用程序依赖其他协议(如UDP),请将上述命令中的tcp替换为udp。
如果系统使用的是SELinux,确保相应的端口和应用程序在SELinux上下文中也被正确配置和授权,否则即使防火墙允许,也可能因为SELinux限制而无法访问。
遵循以上步骤,您应该能够成功地在Linux系统中使用firewalld防火墙管理端口设置。

六、IP白名单

1、为端口新增白名单

iptables -I INPUT -m iprange --src-range 10.94.2.0-10.94.2.255 -p tcp --dport 3306 -j ACCEPT

该iptables命令是用来在INPUT链的开始插入一条新的规则,用于允许指定IP范围内的主机通过TCP协议访问3306端口。命令详细解释如下:

  • iptables -I INPUT: 使用 -I 参数表示在INPUT链的头部插入一条新规则。

  • -m iprange: 使用iprange模块来处理IP范围。

  • --src-range 10.94.2.0-10.94.2.255: 指定源IP地址范围从10.94.2.0到10.94.2.255。这意味着所有在这个范围内IP地址的主机都将受到此规则的影响。

  • -p tcp: 指定使用的协议为TCP。

  • --dport 3306: 表示目标端口号为3306,即只允许访问此端口的流量。

  • -j ACCEPT-j参数后面跟的是动作(target),这里设为ACCEPT,表示对满足上述条件的流量予以放行。

综上所述,这条命令的作用是:允许IP地址在10.94.2.0至10.94.2.255范围内的主机通过TCP协议访问本机的3306端口。

2、查看当前白名单

iptables -L --line-numbers
iptables -nL --line-numbers

上述命令将会显示所有的iptables规则,包括INPUT、OUTPUT、FORWARD链的规则,并且不解析IP地址到主机名(-n 参数)。通过查看输出结果,你可以找到类似这样的规则,它们指示了白名单中的IP地址。

3、删除当前白名单

1、删除已知规则编号的规则

        如果你已经通过iptables -L --line-numbers命令查看规则并得知了规则的编号,可以直接通过编号删除它:

        其中 <rule_number> 是你想删除规则的行号。

sudo iptables -D INPUT <rule_number>

        例子:删除第二行

# 例子:删除第二行
sudo iptables -D INPUT 2

2、根据规则内容删除: 

        如果只知道规则的一部分内容,比如允许特定IP地址访问,可以尝试按条件删除:

# 删除允许特定IP地址访问的规则
sudo iptables -D INPUT -s <specific_ip_address> -j ACCEPT

        例如,删除允许10.0.0.1访问所有端口的规则:

sudo iptables -D INPUT -s 10.0.0.1 -j ACCEPT

        或者删除允许一个IP地址段访问特定端口的规则:

sudo iptables -D INPUT -s 10.0.0.0/24 -p tcp --dport 80 -j ACCEPT

注意

  • 在执行删除操作前,请确保你完全理解你正在删除的规则,以免误删其他重要规则。
  • 删除规则后,为了使更改永久生效,尤其是在系统重启后仍然生效,需要保存规则到配置文件(如在Red Hat/CentOS系统中):
sudo iptables-save > /etc/sysconfig/iptables

        对于使用firewalld管理防火墙的系统,删除白名单规则的方法有所不同:

# 删除rich规则(假设已有对应的rich rule)
sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="<specific_ip_address>" accept'
sudo firewall-cmd --reload

        记得替换 <specific_ip_address> 为实际的IP地址。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

轩小川

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值