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


相关推荐
昊昊昊昊昊明12 分钟前
10天学会嵌入式技术之51单片机-day-7
linux·运维·网络
达斯维达的大眼睛27 分钟前
如何在Linux用libevent写一个聊天服务器
linux·运维·服务器·网络
Zhuai-行淮39 分钟前
施磊老师基于muduo网络库的集群聊天服务器(七)
服务器·网络·php
Sunlight_7772 小时前
第六章 QT基础:5、QT的UDP网络编程
网络·qt·udp
virelin_Y.lin4 小时前
系统与网络安全------弹性交换网络(2)
网络·安全·web安全·链路聚合·lacp·eth-trunk
EasyDSS9 小时前
视频监控从安装到优化的技术指南,视频汇聚系统EasyCVR智能安防系统构建之道
大数据·网络·网络协议·音视频
rufeike10 小时前
UDP协议理解
网络·网络协议·udp
江理不变情11 小时前
海思ISP调试记录
网络·接口隔离原则
世界尽头与你11 小时前
【安全扫描器原理】网络扫描算法
网络·安全
GKoSon11 小时前
加入RPC shell指令 温箱长时间监控
网络·网络协议·rpc