公网域名流量禁用是一个涉及网络安全流量管理的复杂操作,它通常需要根据具体的网络环境和业务需求来实施。以下是一些可能的步骤和考虑因素:

一、明确禁用目标

首先,需要明确禁用公网域名流量的具体目标。这可能包括:

  • 阻止未经授权的访问。
  • 防止恶意流量攻击,如DDoS攻击。
  • 节约带宽资源,减少不必要的网络流量。
  • 特殊时期,主动对部分业务公网流量禁用

二、评估网络环境

在禁用公网域名流量之前,需要评估当前的网络环境,包括:

  • 网络架构:了解网络的拓扑结构、路由设置等。
  • 域名使用情况:确定哪些域名是业务必需的,哪些可能是非必需的或恶意的。
  • 流量分析工具:使用如tcpdump、Wireshark等工具来分析网络流量,识别异常流量。

三、实施禁用措施

根据评估结果,可以采取以下措施来禁用公网域名流量:

  1. DNS级别控制
    • 修改DNS设置,阻止对特定域名的解析。这可以通过修改本地DNS服务器设置或在DNS服务器上设置策略来实现。
    • 使用安全的DNS服务,如ISP或网络运营商提供的DNS服务器,以防止DNS劫持等安全问题。
  2. 防火墙规则
    • 网络防火墙中设置规则,阻止对特定域名的访问。这可以通过IP地址过滤、端口过滤或协议过滤等方式实现。
    • 使用iptables(Linux系统)或Windows防火墙等工具来配置这些规则。
  3. 路由控制
    • 路由器上设置路由策略,将特定域名的流量重定向到无效地址或黑洞地址。
    • 使用更高级的路由协议和策略,如BGP社区属性等,来实现更精细的流量控制。
  4. 应用层控制
    • 应用服务器上配置安全策略,禁止对特定域名的请求。
    • 使用Web应用防火墙(WAF)等安全设备来检测和阻止恶意流量。

四、注意事项

  • 在实施禁用措施时,需要确保不会误伤业务必需的域名和流量。
  • 禁用公网域名流量可能会影响用户体验和业务连续性,因此需要谨慎操作
  • 需要定期更新和维护禁用列表和防火墙规则,以应对新的安全威胁和业务需求变化。

综上所述,公网域名流量禁用是一个需要综合考虑多个因素的操作。在实施过程中,需要根据实际情况灵活调整策略和方法,以确保网络的安全和稳定。

五、域名流量禁用实战

1、需求及方案确认
  • 特殊期间,临时对公网流量进行禁用,后续业务需要继续使用
  • 公网域名为多个业务系统公用

因此,本次部分业务公网流量禁用主要通过【应用层控制】,来实现公网流量禁用。

2、修改nginx.conf配置
  • 使用server_name拒绝特定域名(域名该业务独享

虽然你不能直接“禁用”一个域名,但你可以为那个域名配置一个server块,并在其中使用return指令来返回一个错误码或重定向到其他URL

例如,如果你想要拒绝所有对test.example.com的访问,可以这样做:

nginx

server {  
    listen 80;  
    server_name test.example.com;  
    return 444; # 444 是一个非标准的错误码,用于关闭连接而不发送任何响应头或响应体  
    # 或者你可以使用 404 或 403 等标准错误码  
    # return 404;  
    # 或者重定向到另一个域名  
    # return 301 http://www.example.com;  

}

注意:444 是一个非标准的HTTP状态码,Nginx使用它来直接关闭连接而不发送任何响应给客户端。然而,并非所有的HTTP客户端都能很好地处理这个状态码,它们可能会显示一个连接错误或超时。 HTTP响应状态码详解

  • 注释模块proxy_pass(域名多业务共享

upstream liangkk {
            server 0.0.0.0:80;
        }

server {
    listen       80;
	server_name  liangkk.blog.csdn.net;
	
	location / {
          if ($request_uri !~ "\?functionId=|\?.+=.+functionId=|^/startup|^/client\.action|^/strategy|^/crashLog|^/apmRule|^/apmReport|^/statsReport|^/statsConfig|^/basicConfig|^/appPublishUpgrade|^/appPublishStats|^/getUpgradeInfo|^/jdaInfos|^/ideInfos") 
		     {
              return 403;
             }
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#              proxy_pass http://liangkk/;
              access_log /usr/local/nginx/logs/liangkk_proxy.log;
        }
    }

要禁用对通过 upstream 定义的服务器组的访问,你实际上不能直接“禁用”upstream 块本身,因为 upstream 只是一个配置指令,用于定义一组后端服务器,而不是直接处理请求的入口点。不过,你可以通过以下几种方式间接地实现禁用访问的效果:

通常,最简单最直接的方法是第1种方法:确保 Nginx 配置中没有引用该 upstreamproxy_pass 指令(即注释proxy_pass。这样,就没有任何请求会被转发到这些后端服务器上,从而实现了“禁用访问”的效果。

  1. 不引用 upstream
    在 Nginx 配置中,不要在任何 serverlocation 块中使用 proxy_pass 指令来引用这个 upstream。这样,就没有任何请求会被转发到这个 upstream 定义的服务器组。

  2. 配置返回特定状态码
    如果你想要对尝试访问该 upstream 的请求返回特定的响应(比如 404、403 或其他自定义错误页面),你可以创建一个 server 块,该块匹配所有可能转发到该 upstream 的请求,并返回一个错误码或重定向到另一个页面。

  3. 使用条件判断(不推荐)
    虽然 Nginx 的 if 指令在 serverlocation 块中通常不推荐用于复杂的条件判断,但在某些情况下,你可以用它来根据特定的请求头或变量来阻止请求。然而,对于基于 upstream 的访问控制,这种方法可能不够直接或不够灵活。

  4. 修改 DNS 或网络配置
    如果可能的话,你可以通过修改 DNS 记录或网络路由规则来确保没有任何流量能够到达这些后端服务器。这通常是一个更底层、更全局的解决方案,可能会影响到其他依赖于这些网络设置的服务。

  5. 在服务器上禁用监听
    最后,你也可以直接在后端服务器上禁用相应端口(如 80 或 443)的监听。这可以通过修改服务器的防火墙规则、停止相关的服务或修改服务的配置文件来实现。然而,这种方法需要你有权访问并修改后端服务器的配置。

3、刷新CDN缓存

源站静态文件更新后,CDN不会自动刷新缓存,而是在缓存时间过期后,才会经由用户触发回源获取最新文件。如希望在缓存过期时间之前,实现CDN节点与源站静态文件同步更新,则需要通过CDN控制台-【刷新预取】菜单,或通过API接口,选择相应的刷新操作,将对应文件在CDN节点服务器置为过期。用户下次请求时,CDN将重新向源站请求最新文件,实现缓存更新。

天翼云CDN控制台操作入口:

image.png

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部