利用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端口的访问权限,从而提升服务器的安全性。


相关推荐
北京耐用通信4 分钟前
不换设备、不重写程序:耐达讯自动化网关如何实现CC-Link IE转Modbus TCP的高效互通?
人工智能·科技·物联网·网络协议·自动化·信息与通信
志栋智能14 分钟前
超自动化巡检:实现运维“事前预防”的关键拼图
大数据·运维·网络·人工智能·机器学习·自动化
七夜zippoe21 分钟前
OpenClaw 技能开发实战:从零到一
运维·服务器·网络·openclaw·技能开发
liweiweili12622 分钟前
http数据传输过程数据编码解码问答
网络协议·http·状态模式
oi..23 分钟前
《Web 安全入门|XSS 漏洞原理、CSP 策略与 HttpOnly 防护实践》
前端·网络·测试工具·安全·web安全·xss
加勒比之杰克1 小时前
从阻塞 IO 到 epoll:把 Linux 网络 IO 一次讲透
linux·网络·windows·select·多路转接·epoll·poll
Dynadot_tech1 小时前
完成注册的域名可以做什么?
网络·域名·dynadot·网站域名
有代理ip1 小时前
动态IP的安全性优化:策略升级与隐私保护实战指南
网络·网络协议·tcp/ip
CDN3601 小时前
高防 IP 回源 502/504 异常?源站放行与健康检查修复
网络·网络协议·tcp/ip
说实话起个名字真难啊1 小时前
Docker 入门之网络基础
网络·docker·php