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

这里写目录标题

  • 前言
  • 一、FirewalldIP端口限制
    • [1.1 确认启动状态](#1.1 确认启动状态)
    • [1.2 启动Firewalld](#1.2 启动Firewalld)
    • [1.3 查看当前连接到Nacos的IP](#1.3 查看当前连接到Nacos的IP)
    • [1.4 添加访问规则](#1.4 添加访问规则)
    • [1.5 重新加载配置](#1.5 重新加载配置)
    • [1.6 查看当前活动的规则列表](#1.6 查看当前活动的规则列表)
    • [1.7 移除某个规则](#1.7 移除某个规则)
  • [二、Firewalld 开放端口](#二、Firewalld 开放端口)
    • [2.1 开放 6379端口](#2.1 开放 6379端口)
    • [2.2 重新加载防火墙](#2.2 重新加载防火墙)
    • [2.3 验证规则](#2.3 验证规则)
  • 三、Iptables限制ip端口(未验证)
    • [3.1 添加规则允许特定IP访问Nacos服务:](#3.1 添加规则允许特定IP访问Nacos服务:)
    • [3.2 保存 iptables 规则](#3.2 保存 iptables 规则)
    • [3.3 解决浏览器无法访问Nacos页面的问题](#3.3 解决浏览器无法访问Nacos页面的问题)
  • 总结

前言

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

一、FirewalldIP端口限制

1.1 确认启动状态

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

shell 复制代码
sudo systemctl status firewalld

1.2 启动Firewalld

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

shell 复制代码
sudo systemctl start firewalld

1.3 查看当前连接到Nacos的IP

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

shell 复制代码
netstat -antp | grep ':8848' | awk '{print $5}' | cut -d':' -f1 | sort | uniq

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

1.4 添加访问规则

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

shell 复制代码
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 重新加载配置

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

shell 复制代码
sudo firewall-cmd --reload

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

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

shell 复制代码
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

bash 复制代码
sudo firewall-cmd --list-rich-rules
  1. 移除 rich rule
bash 复制代码
sudo firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="172.1.1.4" port port="8848" protocol="tcp" accept'
  1. 重新加载防火墙
bash 复制代码
sudo firewall-cmd --reload
  1. 验证规则是否已移除
bash 复制代码
sudo firewall-cmd --list-rich-rules

二、Firewalld 开放端口

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

2.1 开放 6379端口

bash 复制代码
sudo firewall-cmd --permanent --add-port=6379/tcp

2.2 重新加载防火墙

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

bash 复制代码
sudo firewall-cmd --reload

2.3 验证规则

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

bash 复制代码
sudo firewall-cmd --list-all

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

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

bash 复制代码
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:

bash 复制代码
sudo iptables-save > /etc/iptables.up.rules

CentOS/RHEL:

bash 复制代码
sudo service iptables save

3.3 解决浏览器无法访问Nacos页面的问题

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

bash 复制代码
5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

总结

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


相关推荐
2501_9159214329 分钟前
iOS IPA 混淆实测分析:从逆向视角验证加固效果与防护流程
websocket·网络协议·tcp/ip·http·网络安全·https·udp
2501_9159184130 分钟前
打造可观测的 iOS CICD 流程:调试、追踪与质量保障全记录
websocket·网络协议·tcp/ip·http·网络安全·https·udp
Absinthe_苦艾酒2 小时前
计算机网络(三)传输层TCP
网络·tcp/ip·计算机网络
GLAB-Mary3 小时前
AI会取代网络工程师吗?理解AI在网络安全中的角色
网络·人工智能·web安全
敲敲敲-敲代码4 小时前
【ArcGIS10.2】网络数据集构建---最短路径分析
网络·arcgis
2501_915909064 小时前
调试 WebView 旧资源缓存问题:一次从偶发到复现的实战经历
websocket·网络协议·tcp/ip·http·网络安全·https·udp
向明天乄5 小时前
在小程序中实现实时聊天:WebSocket最佳实践
websocket·网络协议·小程序
cliffordl5 小时前
MCP 传输机制(Streamable HTTP)
网络·网络协议·http
晨曦丿5 小时前
双11服务器
linux·服务器·网络
wanhengidc6 小时前
UDP服务器主要是指什么意思?
服务器·网络协议·udp