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


相关推荐
Fanmeang13 小时前
华为防火墙基础功能详解:构建网络安全的基石
运维·网络·安全·华为·防火墙·策略·安全域
铭哥的编程日记13 小时前
【Linux网络】传输层协议TCP
linux·网络·tcp/ip
MarkHD13 小时前
蓝牙钥匙 第69次 蓝牙钥匙安全与便捷性平衡:从理论到实践的全方位解析
网络·人工智能·安全
教练、我想打篮球13 小时前
29 ip查询工具 并发送邮件通知目标用户
tcp/ip·ip·query
深圳佛手13 小时前
几种限流算法介绍和使用场景
网络·算法
拾忆,想起14 小时前
超时重传 vs 快速重传:TCP双保险如何拯救网络丢包?
java·开发语言·网络·数据库·网络协议·tcp/ip·php
2021_fc14 小时前
WebSocket技术分享
网络·websocket·网络协议
zizisuo14 小时前
为什么TCP设计中要设计ACK不重传?
网络·网络协议·tcp/ip
偶像你挑的噻15 小时前
Linux应用开发-17-套接字
linux·网络·stm32·嵌入式硬件
AI分享猿15 小时前
小白学规则编写:雷池 WAF 配置教程,用 Nginx 护住 WordPress 博客
java·网络·nginx