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


相关推荐
qianshang2332 小时前
SQL注入学习总结
网络·数据库·渗透
云小逸3 小时前
【网络通信】同一网段与不同网段的通信原理
网络·网络安全
zr5268554475 小时前
PCIe-PN卡(三格电子)
网络
无名的小三轮5 小时前
防火墙基础实验:智能选路下的透明DNS选路配置
网络
一轮弯弯的明月5 小时前
TCP传输大致过程、流量控制与拥塞控制
网络·tcp/ip·计算机网络·学习心得
犀思云5 小时前
如何通过网络即服务平台实现企业数字化转型?
运维·网络·人工智能·系统架构·机器人
皇帝要考研5 小时前
【ISO 13400-2:2019】核心配置项
网络·网络协议
犀思云6 小时前
企业端到端NaaS连接的优势与应用
网络·人工智能·机器人·智能仓储·专线
Godspeed Zhao6 小时前
现代智能汽车系统——总线技术1
网络·汽车·php
JoySSLLian6 小时前
IP SSL证书:一键解锁IP通信安全,高效抵御网络威胁!
网络·人工智能·网络协议·tcp/ip·ssl