云计算百科
云计算领域专业知识百科平台

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

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

一、网络架构调整

  • 防火墙设置:

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

    • 如果内部系统位于一个通过路由器连接到外部网络的网络中,可能需要在路由器上进行端口转发设置。将外部网络的特定端口转发到内部系统的相应端口上,同时配置访问控制列表(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 防火墙设置

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

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

  • VPN 方案:
    • 可以设置一个 VPN 服务器,外部服务器通过 VPN 连接到内部网络,然后访问内部系统。这样可以确保所有访问都通过安全的隧道进行,并且可以通过 VPN 服务器的用户认证和授权来控制访问。
  • 反向代理方案:
    • 在公司网络边缘部署一个反向代理服务器(如 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 服务器。可以根据系统的具体环境和需求,选择合适的方法和工具进行配置。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 将内部部署系统的端口暴露给外部访问,并且仅允许指定 IP 的服务器访问该端口
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!