利用Firewalld和Iptables实现IP端口限制与开放

前言
在服务器管理中,防火墙是保护系统安全的重要工具。通常,我们可能会关闭firewalld,但在某些情况下,我们需要利用firewalld或iptables来限制IP请求。本文将详细介绍如何使用firewalld和iptables来实现IP端口限制与开放。

一、FirewalldIP端口限制

1.1 确认启动状态

首先,我们需要确认firewalld的启动状态

sudo systemctl status firewalld

1.2 启动Firewalld

如果firewalld未启动,执行以下命令启动:

sudo systemctl start firewalld

1.3 查看当前连接到Nacos的IP

以Nacos为例,查看当前连接到Nacos的IP:

netstat -antp | grep ':8848' | awk '{print $5}' | cut -d':' -f1 | sort | uniq

此处查询的ip仅供参考,可作为梳理后的补充

1.4 添加访问规则
添加访问规则,允许特定IP访问Nacos服务:

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="172.1.1.3" port port=8848 protocol=tcp accept'

其中,address是需要连接到Nacos的服务器的IP(内网/弹性都要加),port指定Nacos端口。多个IP可多次执行上面代码。

1.5 重新加载配置

添加规则后,重新加载配置:

sudo firewall-cmd --reload

1.6 查看当前活动的规则列表

查看当前活动的规则列表:

sudo firewall-cmd --list-all

输出示例:

public (active)
target: default
icmp-block-inversion: no
interfaces: ens3
sources:
services: cockpit dhcpv6-client mdns ssh
ports: 8848/tcp 6379/tcp 8012/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family=“ipv4” source address=“172.1.1.1” port port=“8848” protocol=“tcp” accept
rule family=“ipv4” source address=“172.1.1.2” port port=“8848” protocol=“tcp” accept
rule family=“ipv4” source address=“172.1.1.3” port port=“8848” protocol=“tcp” accept
rule family=“ipv4” source address=“172.1.1.4” port port=“8848” protocol=“tcp” accept

1.7 移除某个规则

1.查看当前的rich rules

sudo firewall-cmd --list-rich-rules

移除 rich rule

sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.1.1.4" port port="8848" protocol="tcp" accept'

重新加载防火墙

sudo firewall-cmd --reload

验证规则是否已移除

sudo firewall-cmd --list-rich-rules

二、Firewalld 开放端口

上一节是针对ip开放端口,那么如何直接开放端口,所有ip都可访问?

2.1 开放 6379端口

sudo firewall-cmd --permanent --add-port=6379/tcp

2.2 重新加载防火墙

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

sudo firewall-cmd --reload

2.3 验证规则

您可以通过以下命令来验证当前的防火墙规则,确保 Redis 的端口已经被成功开放:

sudo firewall-cmd --list-all

2.4 移除规则

firewall-cmd --permanent --remove-port=6379/tcp
firewall-cmd --reload

三、Iptables限制ip端口(未验证)

3.1 添加规则允许特定IP访问Nacos服务:

sudo iptables -A INPUT -p tcp -s 172.16.17.33 --dport 8848 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 8848 -s 172.16.61.83 -j ACCEPT

3.2 保存 iptables 规则

Ubuntu/Debian:

sudo iptables-save > /etc/iptables.up.rules

CentOS/RHEL:

sudo service iptables save

3.3 解决浏览器无法访问Nacos页面的问题
添加完规则之后,可能浏览器依然无法访问Nacos页面,并且对应服务器可能ping通,但curl无法访问。可能是因为有一条规则导致的,去掉后可以正常访问。

REJECT all – 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

总结
在服务器管理中,梳理清楚当前服务器有哪些需要对外访问的服务非常重要。类似1.3中查看连接IP并不全面,因此需要结合实际情况进行规则配置。通过firewalld和iptables,我们可以灵活地控制IP端口的访问权限,从而提升服务器的安全性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值