首页 文章 精选 留言 我的

精选列表

搜索[注册保护],共10000篇文章
优秀的个人博客,低调大师

用 Identity Server 4 (JWKS 端点和 RS256 算法) 来保护 Python web api

[新添加] 本文对应的源码 (多个flow, clients, 调用python api):https://github.com/solenovex/Identity-Server-4-Python-Hug-Api-Jwks 目前正在使用asp.net core 2.0 (主要是web api)做一个项目, 其中一部分功能需要使用js客户端调用python的pandas, 所以需要建立一个python 的 rest api, 我暂时选用了hug, 官网在这: http://www.hug.rest/. 目前项目使用的是identity server 4, 还有一些web api和js client. 项目的早期后台源码:https://github.com/solenovex/asp.net-core-2.0-web-api-boilerplate 下面开始配置identity server 4, 我使用的是windows. 添加ApiResource: 在 authorization server项目中的配置文件添加红色部分, 这部分就是python hug 的 api: public static IEnumerable<ApiResource> GetApiResources() { return new List<ApiResource> { new ApiResource(SalesApiSettings.ApiName, SalesApiSettings.ApiDisplayName) { UserClaims = { JwtClaimTypes.Name, JwtClaimTypes.PreferredUserName, JwtClaimTypes.Email } }, new ApiResource("purchaseapi", "采购和原料库API") { UserClaims = { JwtClaimTypes.Name, JwtClaimTypes.PreferredUserName, JwtClaimTypes.Email } }, new ApiResource("hugapi", "Hug API") { UserClaims = { JwtClaimTypes.Name, JwtClaimTypes.PreferredUserName, JwtClaimTypes.Email } } }; } 修改js Client的配置: // Sales JavaScript Client new Client { ClientId = SalesApiSettings.ClientId, ClientName = SalesApiSettings.ClientName, AllowedGrantTypes = GrantTypes.Implicit, AllowAccessTokensViaBrowser = true, AccessTokenLifetime = 60 * 10, AllowOfflineAccess = true, RedirectUris = { $"{Startup.Configuration["MLH:SalesApi:ClientBase"]}/login-callback", $"{Startup.Configuration["MLH:SalesApi:ClientBase"]}/silent-renew.html" }, PostLogoutRedirectUris = { Startup.Configuration["MLH:SalesApi:ClientBase"] }, AllowedCorsOrigins = { Startup.Configuration["MLH:SalesApi:ClientBase"] }, AlwaysIncludeUserClaimsInIdToken = true, AllowedScopes = { IdentityServerConstants.StandardScopes.OpenId, IdentityServerConstants.StandardScopes.Profile, IdentityServerConstants.StandardScopes.Email, SalesApiSettings.ApiName, "hugapi" } } 修改js客户端的oidc client配置选项: 添加 hugapi, 与authorization server配置对应. { authority: 'http://localhost:5000', client_id: 'sales', redirect_uri: 'http://localhost:4200/login-callback', response_type: 'id_token token', scope: 'openid profile salesapi hugapi email', post_logout_redirect_uri: 'http://localhost:4200', silent_redirect_uri: 'http://localhost:4200/silent-renew.html', automaticSilentRenew: true, accessTokenExpiringNotificationTime: 4, // silentRequestTimeout:10000, userStore: new WebStorageStateStore({ store: window.localStorage }) } 建立Python Hug api (可选) 安装virtualenv: pip install virtualenv 然后在某个地方建立一个目录: mkdir hugapi && cd hugapi 建立虚拟环境: virtualenv venv 激活虚拟环境: venv\Scripts\activate 然后大约这样显示: 安装hug: pip install hug 这时, 参考一下hug的文档. 然后建立一个简单的api. 建立文件main.py: import hug @hug.get('/home') def root(): return 'Welcome home!' 运行: hug -f main.py 结果好用: 然后还需要安装这些: pip install cryptography pyjwt hug_middleware_cors 其中pyjwt是一个可以encode和decode JWT的库, 如果使用RS256算法的话, 还需要安装cryptography. 而hug_middleware_cors是hug的一个跨域访问中间件(因为js客户端和这个api不是在同一个域名下). 添加需要的引用: import hug import jwt import json import urllib.request from jwt.algorithms import get_default_algorithms from hug_middleware_cors import CORSMiddleware 然后正确的做法是通过Authorization Server的discovery endpoint来找到jwks_uri, identity server 4 的discovery endpoint的地址是: http://localhost:5000/.well-known/openid-configuration, 里面能找到各种节点和信息: 但我还是直接写死这个jwks_uri吧: response = urllib.request.urlopen('http://localhost:5000/.well-known/openid-configuration/jwks') still_json = json.dumps(json.loads(response.read())['keys'][0]) identity server 4的jwks_uri, 里面是public key, 它的结构是这样的: 而我使用jwt库, 的参数只能传入一个证书的json, 也可就是keys[0]. 所以上面的最后一行代码显得有点....... 如果使用python-jose这个库会更简单一些, 但是在我windows电脑上总是安装失败, 所以还是凑合用pyjwt吧. 然后让hug api使用cors中间件: api = hug.API(__name__) api.http.add_middleware(CORSMiddleware(api)) 然后是hug的authentication部分: def token_verify(token): token = token.replace('Bearer ', '') rsa = get_default_algorithms()['RS256'] cert = rsa.from_jwk(still_json) try: result = jwt.decode(token, cert, algorithms=['RS256'], audience='hugapi') print(result) return result except jwt.DecodeError: return False token_key_authentication = hug.authentication.token(token_verify) 通过rsa.from_jwk(json) 就会得到key (certificate), 然后通过jwt.decode方法可以把token进行验证并decode, 算法是RS256, 这个方法要求如果token里面包含了aud, 那么方法就需要要指定audience, 也就是hugapi. 最后修改api 方法, 加上验证: @hug.get('/home', requires=token_key_authentication) def root(): return 'Welcome home!' 最后运行 hug api: hug -f main.py 端口应该是8000. 运行js客户端,登陆, 并调用这个hug api http://localhost:8000/home: (我的js客户端是angular5的, 这个没法开源, 公司财产, 不过配置oidc-client还是很简单的, 使用) 返回200, 内容是: 看一下hug的log: token被正确验证并解析了. 所以可以进入root方法了. 其他的python api框架, 都是同样的道理. [新添加]本文对应的源码 (多个flow, clients, 调用python api):https://github.com/solenovex/Identity-Server-4-Python-Hug-Api-Jwks 可以使用这个例子自行搭建 https://github.com/IdentityServer/IdentityServer4.Samples/tree/release/Quickstarts/7_JavaScriptClient 官方还有一个nodejs api的例子:https://github.com/lyphtec/idsvr4-node-jwks 今日修改后的代码: import json import hug import jwt import requests from jwt.algorithms import get_default_algorithms from hug_middleware_cors import CORSMiddleware api = hug.API(__name__) api.http.add_middleware(CORSMiddleware(api)) def token_verify(token): access_token = token.replace('Bearer ', '') token_header = jwt.get_unverified_header(access_token) res = requests.get( 'http://localhost:5000/.well-known/openid-configuration') jwk_uri = res.json()['jwks_uri'] res = requests.get(jwk_uri) jwk_keys = res.json() rsa = get_default_algorithms()['RS256'] key = json.dumps(jwk_keys['keys'][0]) public_key = rsa.from_jwk(key) try: result = jwt.decode(access_token, public_key, algorithms=[ token_header['alg']], audience='api1') return result except jwt.DecodeError: return False token_key_authentication = hug.authentication.token(token_verify) @hug.get('/identity', requires=token_key_authentication) def root(user: hug.directives.user): print(user) return user 我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan下面是我的关于ASP.NET Core Web API相关技术的公众号--草根专栏:

优秀的个人博客,低调大师

【聚能聊】网络安全事件频发,怎么保护自己的生物识别信息

聚能聊有奖话题:https://yq.aliyun.com/roundtable/59358?spm=5176.8091938.0.0.ZCJ5o4 随着科技的进步,越来越多的生物识别技术被应用到生活和工作中。像最常见的指纹识别和人脸识别,还有三星S8的虹膜识别,以及部分语音应用的声纹识别。当然,在公安系统还有步态特征识别等等。这些生物识别技术确实为人们提供了巨大的便利,但是他们真的足够安全吗? 上周有幸参加了一个互联网+的网络安全研修班,从公安部门网安总队的总工程师到阿里安全应急响应的负责人贤唐,都有来讲课、演示。上完全部课程后,才真正意识到现在的网络安全问题有多严重。课上的内容非常敏感,所以都是禁止拍照的。从这一点也可以看出,我们现在所谓的安全,基本上都是处在一个自欺欺人的状态。 比较著名的,有近期广为人知的系统漏洞引起的勒索病毒敲诈案,和软件系统漏洞导致个人信息泄露而引发精准犯罪的徐玉玉案以及其他众多更加严重的案件。现在的大多系统都非常脆弱。如果被利用,基本上后果都不堪设想,大家也是挺震惊的。 对于个人呢?基本上,大家的各种信息,像姓名、手机号码、身份证号码以及现在新兴的各种生物识别信息,也都处在裸奔状态。黑市上,这种信息一直在倒卖。比如你的银行卡信息,犯罪份子买过去后,只需要几分钟时间,就能做出一张能够正常使用的银行卡。不同的是,密码可以修改,手机号码可以换,银行卡也能注销,但生物识别信息具有唯一性和不可更改性,会跟随你一辈子。一旦这些信息泄露…… PS:欢迎在底部评论区进行讨论。点赞最多的前两位,特别送出小礼品哟。技术书籍、阿里云代金券等,随你挑~

优秀的个人博客,低调大师

事件还原 | 苹果iOS 10系统“激活锁”绕过漏洞,丢失保护功能形同虚设?

想必读者们已经在雷锋网 (公众号:雷锋网) (公众号:雷锋网)看到了关于iOS 10.1.1 系统“激活锁”被绕过漏洞的报道(见于雷锋网昨日报道:《 iOS 10.1发现新漏洞:可绕过“激活锁”强行进入主屏》 ) 本着求真和好奇的心态,此次宅客频道将带领读者们讲述此次事件的来龙去脉、破解流程以及相关细节,试图将完整的故事呈现给读者们,让读者了解到: 漏洞是什么,可导致何种后果? 这个漏洞最早是如何被发现的? 复现漏洞的具体步骤是怎样的? 我们是否会受影响,该怎么做? 该漏洞有何后果? 从iOS 7开始,苹果设备就具有一项“激活锁”功能, 当用户的设备不慎被偷,只要激活"丢失模式”(Lost mode),盗窃者在没有得到合法机主许可就无法激活设备到正常工作状态,这使得丢失的苹果设备很难被直接转卖,不仅提高安全性还降低了失窃率。 这也是许多人在丢失苹果

优秀的个人博客,低调大师

车牌地域查询-车辆属地解析-车牌归属筛查-车辆注册地核验API接口介绍

# 前言 不用死记数百组车牌编码,不用区分燃油车与新能源车牌,输入任意合法车牌号,即刻精准返回**「省份+地级市」**归属信息。 适合日常辨异地车辆、车主自查信息、物业安保车辆核验、车险汽修办公初审、交管日常排查。 ![](https://developer.qcloudimg.com/http-save/yehe-12007261/d5b1e901f2f2aaee8e6810aac3892755.png) # 核心优势 - **全量数据覆盖**:同步车管所最新规则,全国省市号段无盲区 - **无需手动分类**:蓝牌绿牌统一入口,不用切换查询通道 - **实时更新**:紧跟新号段政策,杜绝数据滞后、查询失效 # API介绍 ## 请求说明 |名称|类型|必须|说明| | --- | --- | --- | --- | |plateNo|String|是|车牌号| ## 返回样例 ``` { "msg": "成功", //返回码对应描述 "code": 200, //返回码,详见返回码说明 "taskNo": "160883284224238817155533", //本次请求号 "data": { "province": "四川省",//省 "city": "成都市" //市 } } ```

优秀的个人博客,低调大师

腾讯云国际站注册:服务器公网突然连不上?问题可能不只出在安全组

# 腾讯云防火墙端口不通排查:访问控制与NAT链路详解 一台通过NAT网关对外暴露的云服务器,在开启腾讯云防火墙后,原本稳定的80/443端口突然从公网无法访问,安全组和ACL策略却全部放行——这类“端口消失”的故障在运维圈并不少见。问题通常指向防火墙默认拒绝规则与NAT流量的叠加盲区,因为防火墙检测位于VPC流量转发链的最前端,配置不当会让合法请求在进入实例前就被静默丢弃。以下梳理故障现象和根因,帮你把排查路径缩短到分钟级。 本文由 云国际站代理商『云老大 飞弟:@yunlaoda360 / YunLaoDa-服务器服务商•撰写』如需转载请注明! ![](https://developer.qcloudimg.com/http-save/yehe-12607574/b751e2de667485f931713b4b03a8708d.png) ## 1. 防火墙开启后端口不通的现象与原因 ### 哪些业务会受影响?为什么公网入站流量最先感到异常? 所有依赖公网入站访问的业务都可能瞬间中断,特别是Web服务的80/443端口、远程管理的SSH 22端口,甚至基于TCP的自定义端口。故障的典型表现是公网IP的`telnet`卡在连接阶段,但同一台机器在VPC内网的私网IP却完全可达。根源在于腾讯云防火墙采用“默认拒绝全部”的逻辑,任何未被“访问控制”白名单匹配的入站流量,会直接丢弃,不会进入安全组和网络ACL的后续检测。很多用户误以为安全组放行了端口就万事大吉,忽略了防火墙在流量路径上拥有更高优先级拦截能力,是造成“安全组已开、端口仍不通”这种割裂感的直接原因。 ### 常见原因有哪些?为什么“放通规则已加”仍会出现阻断? 从处理过的案例看,主要原因集中在三个层面。一是规则优先级设计失误,新建的“允许”规则如果排在“拒绝”规则之后,则永远无法生效,因为防火墙按规则列表从上到下匹配。二是NAT网关的子网关联不全,当主网段绑定后,若未将实例所在的扩展子网一并关联,防火墙不会为这部分IP执行策略,形成事实上的路由黑洞,让回包丢失。三是用户只关注单一层策略,误以为防火墙可以独立解决所有问题,忽略了NAT网关路由表、弹性IP绑定等基础网络配置的正确性,导致排查时反复在错误方向兜圈。把这几项交叉检查一遍,多数端口不通问题可以在十分钟内锁定位置。 ## 2. 腾讯云防火墙访问控制规则检查 防火墙是腾讯云网络架构中第一道流量闸门,它在流量进入VPC之前就完成了检测。这意味着:安全组配置正确,不代表流量能到达实例。笔者在协助团队排查时发现,至少有六成的端口不通问题,根源都出在防火墙访问控制规则的配置盲区。 ### 如何查看规则列表 进入防火墙控制台后,“访问控制”菜单下区分了入站规则和出站规则。常规端口排查只需关注入站部分。这里有一个多数人忽略的细节:规则列表默认是按创建时间排序,而非优先级顺序。建议先点击列表上方“优先级”字段排序,才能看清实际的检测顺序。另外,每条规则右侧的“命中次数”列是实锤指标——如果数字始终为零,基本可以判定流量没走到这条规则,问题出在更上游或规则本身未匹配到对应流量特征。 ### 规则优先级怎么判断 腾讯云防火墙采用自上而下的顺序匹配机制,一旦某条规则匹配成功,后续规则不再检测。一个典型的翻车场景是:管理员添加了一条放通80/443端口的“允许”规则,但这条规则在列表中排在系统默认的“拒绝全部”规则之后。结果是流量先命中拒绝规则,直接被丢弃,根本没机会走到后面那条放行规则。解决方法很直接:将放通规则拖拽至列表顶端,让它在拒绝规则之前生效。这个操作在控制台依靠鼠标拖拽完成,没有额外的“优先级数字”配置项,比很多海外云厂商的逻辑更直观,但也更容易被忽视。 ![](https://developer.qcloudimg.com/http-save/yehe-12607574/de7beb51ec047118205f585ffc9b585d.png) ### 允许放行是否生效 即便规则顺序正确、源目IP和端口匹配无误,仍可能出现“策略显示放行但端口不通”的情况。这时候需要确认两个隐藏变量。一是防火墙的“状态化检测”特性:出站回包自动放行,前提是入站放行规则的协议类型选择正确。如果只放行了TCP而业务实际走了UDP,回包同样会被拦截。二是NAT网关与防火墙的关联关系——防火墙规则只对关联了该防火墙的NAT网关生效。如果NAT网关未绑定此防火墙实例,或者子网关联中漏掉了目标实例所在网段,防火墙规则再完善也形同虚设。排查时记得对比防火墙开启与关闭两种状态下的连通性差异,这是区分“防火墙拦截”和“路由黑洞”最快的方法。 ## 3. NAT网关与路由链路排查 防火墙规则再正确,流量能走多远还取决于它能否顺利抵达 NAT 网关,以及从 NAT 网关出去之后能不能回来。在实际工单中,至少有四成端口不通的案例最终定位在路由指向错误或子网关联遗漏,而非防火墙本身——尤其是在多 VPC、多子网混合部署的外贸独立站场景,这类问题往往藏在一次“随手创建”的子网里。 ### NAT网关配置是否正确 NAT 网关几乎不做安全过滤,但前提是流量已经路由到它。常见的陷阱是,NAT 绑定的弹性公网 IP 已经在防火墙侧放通,但控制台上该弹性 IP 对应的“NAT 网关状态”显示未关联任何子网,或只关联了业务部署网段之外的测试网段。2024 年腾讯云底层做了一次路由优化后,未关联子网的 NAT 网关不再被防火墙放通的弹性 IP 隐含覆盖,必须显式地将实例所在子网加入 NAT 网关关联列表,否则流量直接在 VPC 内部黑洞丢弃,telnet 会一直卡在 Syn-Sent,日志里却抓不到任何拒绝记录。 ### 路由表指向哪里 很多人排查时只看 NAT 网关本身,却忽略了路由表里的“下一跳”。最常见误区是:公网出口确实走了 NAT,但用户习惯性地在本地路由里加了一条 0.0.0.0/0 指向云联网或 VPN 网关,导致去往互联网的回程路由与出去不一致,形成不对称路由。这种场景下,防火墙会记录“Outbound Allow”但没有回包,表现得就像端口不通。快速验证的方法是,在实例上 tcpdump 抓特定端口包,如果 SYN 发出后没有 SYN-ACK,再看路由表是不是有比 NAT 更高优先级的条目。若业务需要多出口,必须用策略路由明确源地址匹配,不能依赖默认路由堆叠。 ![](https://developer.qcloudimg.com/http-save/yehe-12607574/b868269e36b3086af02e42db6ac3ed79.png) ### 子网关联是否遗漏 这个问题在扩地域部署时尤其高发。比如某创业公司新增一个广州七区子网做数据库只读节点,但忘记将该子网关联到原本正常运行的 NAT 网关,结果新节点能出站拉取公网镜像,但业务从公网主动访问时直接路由黑洞。更隐蔽的是,防火墙“放通全部 IP”的规则看起来生效了,测试旧子网端口全通,唯独新子网失败——原因正是 NAT 网关的子网关联列表没有更新。如果是用云老大这类服务商托管,这类链路配置在交付阶段就会做全量拓扑校验,但自建环境下,建议每次新建子网后立刻核对一遍 NAT 关联,写成运维 Checklist 比事后抓包高效得多。 ## 4. 安全组与ACL叠加影响分析 在腾讯云的访问控制体系里,一个常被忽视的事实是:防火墙的阻断发生在安全组和网络ACL之前。这意味着即使你在安全组里把所有端口都敞开了,只要防火墙层面没有显式放通,流量在进入VPC的第一道关口就会被丢弃。很多运维人员在控制台看到安全组规则全绿,就以为万事大吉,这恰恰是排查方向跑偏的起点。 ### 安全组是否拦截 安全组的逻辑是“白名单制”,只做允许规则,默认拒绝其余。排查时先确认两条:规则方向是否正确,源IP是否精确。我们见过不少案例,用户在入方向规则里填了`0.0.0.0/0`放通443端口,但实际请求来自特定公网IP段,却被更上层防火墙拦截了——安全组本身没毛病,但根本轮不到它发挥作用。正确的验证方法是,从内网同一VPC内的另一台机器直接telnet目标实例的内网IP加端口,如果通了,说明安全组没问题,问题出在上游;如果内网都不通,再回头看安全组规则里是否绑定了正确的实例、端口协议是否选成了TCP而非UDP,以及是否误操作将规则关联到了错误的实例上。 云老大在协助客户做这类排查时,通常会先把安全组临时放宽到内网全通,做一个快速二分排除,几秒钟就能把安全组这个变量剔除出去。 ### 网络ACL规则冲突 网络ACL是子网级的无状态访问控制,这一点和安全组有本质区别。无状态意味着你放行了入站,还得单独放行出站回包,许多端口不通的问题恰恰是出站在ACL层面被丢弃了。常见情况是,入站ACL规则允许了`0.0.0.0/0`访问80端口,但出站规则忘记配对应的高位端口回程策略,导致TCP三次握手完成后数据传不回来。另外,ACL是规则优先级匹配的,数字越小越优先,如果你有一条`优先级10`的拒绝规则覆盖了某段IP,后面`优先级20`的允许规则永远不会对该段IP生效。 排查ACL冲突最直接的办法,是看VPC流量日志。如果日志显示“ACCEPT”但实际不通,那位置大概在ACL出站;如果日志直接显示“REJECT”,冲突所在就一目了然。 ### 多层限制如何排查 当安全组、ACL、防火墙三层叠加时,逐层剥离依然是最高效的方法。我们的建议是按“先外后内、先上后下”的顺序:先关防火墙看通不通,通了就锁定防火墙规则;不通就保持防火墙关闭,再临时将ACL改为全通测试,最后动安全组。还有一个容易被遗漏的检查点是NAT网关的路由表关联——如果实例所在子网没有被关联到正确的路由表,或者路由表里缺少指向NAT网关的默认路由,那么即使三层策略全部放行,流量也会陷入路由黑洞。用`traceroute`从公网尝试追踪路径,结合VPC内`tcpdump`抓包,能比较清晰地看到报文丢在哪一跳。 ![](https://developer.qcloudimg.com/http-save/yehe-12607574/8283dd34c8e61f40a85383d7de14c7d6.png) ## 5. 端口不通实战排查步骤 腾讯云防火墙的默认策略是“拒绝全部”,这个设计本身没问题,问题在于太多人把安全组配通就以为万事大吉。安全组在防火墙之后才生效,一旦防火墙把流量丢掉,安全组根本没机会参与判断。实操中最快的验证方式,就是临时关闭防火墙,如果业务立刻恢复,可以100%确定是规则问题,不要再花时间查路由和NAT。 ### 使用telnet测试端口 telnet卡住超过5秒基本就是TCP SYN包被丢弃,没到目标主机。这个时候不仅要测公网IP,一定要同时从同VPC内另一台机器telnet目标实例的内网IP,如果内网通、公网不通,锁定防火墙或NAT。如果内网也不通,问题大概率在安全组、ACL或实例本身的监听状态,别在防火墙上浪费时间。另外,有个容易被忽略的点:telnet默认走TCP,如果你在防火墙规则里只放通了UDP,测试结果一样“不通”,但实际是协议没匹配。 ### 检查云监控与日志 防火墙的“入侵防御”日志是判断端口不通的关键证据,尤其是“丢弃”类型的记录,会明确标注命中哪条规则、源IP和目标端口。我见过不少案例,日志里清清楚楚显示流量被“默认拒绝规则”拦截,但运维还在反复查NAT路由。云监控里的连接数、丢包率指标也能辅助判断:如果防火墙开启后,对应端口的连接数直接跌到零,而关闭后迅速回升,定位效率远超逐条核对规则。 ### 联系技术支持前准备 把实例ID、NAT网关ID、防火墙规则列表截图、VPC拓扑图(含子网路由)打包好,再加一份公网和内网的telnet结果对比。如果你的业务是放在服务商那里托管,类似云老大这类服务商通常会要求客户提供“防火墙开启/关闭对比测试”的结果,这个动作能直接筛掉一半以上的非防火墙类故障。准备好这些信息,工单响应时间能缩短至少半天,而不是来回沟通“你防火墙开了吗”这种基础问题。 ## 6. 预防端口不通的优化建议 端口不通的问题一旦出现在生产环境,排查成本往往远高于预防投入。基于过去两年我们在多个VPC项目中观察到的故障案例,有三条实践被反复验证过有效性。 ### 合理规划规则顺序 防火墙规则是顺序匹配的,第一条命中即生效,后续不再判断。这意味着把“拒绝全部”放在列表首位,所有放行规则形同虚设。常见的失误是新增“允许”规则后忘记拖拽到“拒绝”之前,尤其在批量导入几十条规则时更容易出错。实操上,有两件事值得养成习惯:一是新建规则后立即在控制台确认优先级序号,二是对“放通全部IP”这类兜底规则设置单独的生效时段标签,避免它与临时测试规则产生冲突。 ### 定期巡检配置变更 安全组、网络ACL、防火墙三层策略叠加后,最大的风险不是策略本身,而是“谁改了什么却没人知道”。一个典型的场景是:运维人员在凌晨三点为某个子网加了一条临时 ACL 拒绝规则,事后忘了回滚,第二天业务方报障时才翻出操作记录。建议每月至少做一次全量规则审计,重点对比防火墙开启/关闭状态下端口连通性的差异,同时关注 NAT 网关的子网关联是否覆盖了所有需要的实例网段。如果团队规模不大,找像云老大这类服务商做一次配置巡检,比等出问题再逐个排查要划算得多。 ### 建立应急预案 端口不通的应急流程没必要复杂,但必须区分两个核心路径:防火墙拦截还是路由黑洞。最直接的验证手段是临时关闭防火墙(在业务低峰期执行),如果端口恢复,问题边界立刻收窄到防火墙规则或入侵防御策略;如果仍不通,则快速检查 NAT 网关的弹性 IP 是否与路由表下一跳一致、子网关联是否完整。团队内部最好维护一份标准排查清单,包含防火墙规则截图、VPC 拓扑图以及 telnet 双向测试结果,这样一来,即便轮到不熟悉网络架构的值班同事接手,也能在 10 分钟内完成初步定位,不至于卡在“不知道往哪查”的环节反复试探。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册