将内部部署系统的端口暴露给外部访问,并且仅允许指定 IP 的服务器访问该端口

ops/2025/1/19 2:11:04/

以下是实现将内部部署系统的端口暴露给外部访问,并且仅允许指定 IP 的服务器访问该端口的步骤和思路:

一、网络架构调整

  1. 防火墙设置

    • 大多数内部网络都有防火墙,首先需要在防火墙上打开所需的端口,但要限制访问该端口的 IP 地址范围。
    • 对于 Linux 系统,可以使用 iptables 或 firewalld 来配置防火墙规则;对于 Windows 系统,可以使用 Windows 防火墙。
  2. 路由器设置(如果有)

    • 如果内部系统位于一个通过路由器连接到外部网络的网络中,可能需要在路由器上进行端口转发设置。将外部网络的特定端口转发到内部系统的相应端口上,同时配置访问控制列表(ACL)限制仅允许指定 IP 的服务器访问。

二、使用 iptables 的实现步骤(适用于 Linux 系统)

# 假设要开放的端口是 8080,允许访问的外部 IP 是 203.0.113.10# 首先确保 iptables 服务已启动
sudo systemctl start iptables# 允许本地回环访问
sudo iptables -A INPUT -i lo -j ACCEPT# 允许已建立的连接和相关连接
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT# 允许指定 IP 访问端口 8080
sudo iptables -A INPUT -p tcp --dport 8080 -s 203.0.113.10 -j ACCEPT# 拒绝其他 IP 访问端口 8080
sudo iptables -A INPUT -p tcp --dport 8080 -j DROP# 保存 iptables 规则
sudo iptables-save | sudo tee /etc/iptables/rules.v4

代码解释

  • sudo systemctl start iptables:启动 iptables 服务。
  • sudo iptables -A INPUT -i lo -j ACCEPT:允许本地回环接口的访问,确保本地进程可以正常通信。
  • sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT:允许已建立和相关的连接,以保证正常通信不受影响。
  • sudo iptables -A INPUT -p tcp --dport 8080 -s 203.0.113.10 -j ACCEPT:允许来自 203.0.113.10 的 TCP 连接访问端口 8080。
  • sudo iptables -A INPUT -p tcp --dport 8080 -j DROP:拒绝其他 IP 对端口 8080 的 TCP 连接。
  • sudo iptables-save | sudo tee /etc/iptables/rules.v4:保存 iptables 规则,确保重启后规则仍然有效。

三、使用 firewalld 的实现步骤(适用于 Linux 系统)

# 假设要开放的端口是 8080,允许访问的外部 IP 是 203.0.113.10# 启动 firewalld 服务
sudo systemctl start firewalld# 允许指定 IP 访问端口 8080
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.10/32" port protocol="tcp" port="8080" accept'# 重新加载 firewalld 规则
sudo firewall-cmd --reload

代码解释

  • sudo systemctl start firewalld:启动 firewalld 服务。
  • sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="203.0.113.10/32" port protocol="tcp" port="8080" accept':添加一条永久的防火墙规则,允许来自 203.0.113.10 的 TCP 连接访问端口 8080。
  • sudo firewall-cmd --reload:重新加载 firewalld 规则,使新添加的规则生效。

四、Windows 防火墙设置

  1. 打开 Windows 防火墙高级设置。
  2. 创建一个新的入站规则:
    • 选择 “端口”,然后指定要开放的端口(例如 8080)。
    • 选择 “允许连接”,并在 “范围” 选项卡中指定允许访问的 IP 地址(例如 203.0.113.10)。

五、网络安全考虑

  1. IP 地址伪装风险:即使配置了 IP 限制,攻击者可能会尝试进行 IP 地址伪装,但这种情况在有状态的防火墙中通常难以成功,因为防火墙会检查连接的状态和源 IP 的合法性。
  2. 日志记录和监控
    • 配置日志记录,以便监控访问该端口的连接,一旦发现异常访问,可以及时采取措施。
    • 可以使用 iptables 的日志记录功能或 syslog 服务,对于 Windows 系统可以使用事件查看器等工具。

六、使用 VPN 或反向代理作为替代方案

  1. VPN 方案
    • 可以设置一个 VPN 服务器,外部服务器通过 VPN 连接到内部网络,然后访问内部系统。这样可以确保所有访问都通过安全的隧道进行,并且可以通过 VPN 服务器的用户认证和授权来控制访问。
  2. 反向代理方案
    • 在公司网络边缘部署一个反向代理服务器(如 Nginx、Apache),配置反向代理将外部请求转发到内部系统的端口,同时在反向代理服务器上配置访问控制,只允许指定 IP 的服务器访问。
# Nginx 配置示例
http {server {listen 80;server_name example.com;location / {allow 203.0.113.10;deny all;proxy_pass http://internal_system_ip:8080;}}
}

代码解释

  • listen 80;:监听端口 80。
  • server_name example.com;服务器名称。
  • allow 203.0.113.10;:只允许 IP 为 203.0.113.10 的服务器访问。
  • deny all;:拒绝其他所有 IP 的访问。
  • proxy_pass http://internal_system_ip:8080;:将请求转发到内部系统的 8080 端口。

        通过上述的一种或多种方法,可以在确保安全性的前提下将内部系统的端口暴露给外部的指定 IP 服务器。可以根据系统的具体环境和需求,选择合适的方法和工具进行配置。


http://www.ppmy.cn/ops/151245.html

相关文章

“AI 自动化效能评估系统:开启企业高效发展新征程

在当今数字化飞速发展的时代,企业面临着日益激烈的市场竞争,如何提升效率、降低成本成为了企业生存与发展的关键。AI 自动化效能评估系统应运而生,它如同一把智能钥匙,为企业开启了高效发展的新征程。 AI 自动化效能评估系统&…

基于 Electron 应用的安全测试基础 — 提取和分析 .asar 文件

视频教程在我主页简介或专栏里 目录: 提取和分析 .asar 文件 4.1. .asar 文件提取工具 4.1.1. 为什么选择 NPX? 4.2. 提取过程 4.3. 提取 .asar 文件的重要性 4.3.1 关键词 4.3.2 执行关键词搜索 4.3.2.1 使用命令行工具“grep”进行关键词搜索 4.3.2…

Vue.js组件开发-如何处理跨域请求

在Vue.js组件开发中,处理跨域请求(CORS,即跨来源资源共享)通常不是直接在Vue组件中解决的,而是需要后端服务器进行相应的配置,以允许来自不同源的请求。不过,前端开发者也需要了解一些基本的COR…

【力扣Hot 100】普通数组1

1. 最大子数组和 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,…

【Java】LinkedHashMap (LRU)淘汰缓存的使用

文章目录 **1. initialCapacity(初始容量)****2. loadFactor(加载因子)****3. accessOrder(访问顺序)****完整参数解释示例****示例验证** LinkedHashMap 在 Java 中可维护元素插入或访问顺序,并…

【达梦数据库(Oracle模式)】如何将视图中的数据导出

在某些情况下,我们需要将生产环境某个模式下的数据导入到开发电脑中,因为正式环境无法连接外网数据。 方式一:将视图查询出来,然后右键导出所有查询结果(不推荐) 优点:方便快捷 缺点&#xff1…

centos 8 中安装Docker

注:本次样式安装使用的是centos8 操作系统。 1、镜像下载 具体的镜像下载地址各位可以去官网下载,选择适合你们的下载即可! 1、CentOS官方下载地址:https://vault.centos.org/ 2、阿里云开源镜像站下载:centos安装包…

创建基于Prism框架的WPF应用(NET Framework)项目

创建基于Prism框架的WPF应用(NET Framework)项目 1、创建WPF(NET Framework)项目并整理结构 (1)、创建WPF(NET Framework)项目; (2)、添加Views和…