云服务器内容精选

  • 修复验证 漏洞修复后,建议您立即进行验证。 表3 修复验证 验证方式 操作方法 手动验证 通过漏洞详情页面的“验证”,进行一键验证。 执行以下命令查看软件升级结果,确保软件已升级为最新版本。 CentOS/Fedora /Euler/Redhat/Oracle操作系统:rpm -qa | grep 软件名称 Debian/Ubuntu操作系统:dpkg -l | grep 软件名称 Gentoo操作系统:emerge --search 软件名称 在HSS中进行手动执行漏洞检测,查看漏洞修复结果。 自动验证 如果您未进行手动验证,HSS每日凌晨进行全量检测,您修复后需要等到次日凌晨检测后才能查看修复效果。
  • 约束与限制 HSS各版本支持的漏洞处理操作请参见支持扫描和修复的漏洞类型。 CentOS 6和CentOS 8官方已停止维护,HSS使用Red Hat的补丁公告替代扫描,因此这两个操作系统的漏洞无法修复,建议您切换为正在维护的操作系统。 Ubuntu 18.04及以下版本目前已不支持免费补丁更新,需要购买配置Ubuntu Pro后才能安装升级包,未配置Ubuntu Pro会导致漏洞修复失败。 CCE、MRS、BMS的主机不能修复内核漏洞,贸然修复可能导致功能不可用。 CCE主机的内核漏洞不支持自动修复,主机安全服务在执行批量自动修复漏洞任务时会自动过滤不修复这类漏洞。 处理漏洞时需保证目标服务器的“服务器状态”为“运行中”、“Agent状态”为“在线”、“防护状态”为“防护中”。
  • 操作场景 当扫描到服务器存在漏洞时,您需要及时根据漏洞的危害程度结合实际业务情况处理漏洞,避免漏洞被入侵者利用入侵您的服务器。 不同类型漏洞修复方式不同,请根据漏洞类型选择对应修复方法。漏洞修复方法建议如下: 表1 漏洞修复方法建议 漏洞类型 修复方式建议 Linux软件漏洞 可以使用以下方式进行处理: 使用安全云脑控制台上的“修复”功能进行修复。 根据界面提供的修复建议进行手动修复。 修复完成后,可通过“验证”功能,快速验证漏洞是否修复成功。 Windows系统漏洞 Web-CMS漏洞 根据界面提供的修复建议进行手动修复。 应用漏洞 执行主机漏洞修复可能存在漏洞修复失败导致业务中断,或者中间件及上层应用出现不兼容等风险,并且无法进行回滚。为了防止出现不可预料的严重后果,建议您通过云备份(CBR)为ECS创建备份,详细操作请参见创建云服务器备份。然后,使用空闲主机搭建环境充分测试,确认不影响业务正常运行后,再对主机执行漏洞修复。 在线修复主机漏洞时,需要连接Internet,通过外部镜像源提供漏洞修复服务。如果主机无法访问Internet,或者外部镜像源提供的服务不稳定时,可以使用华为云提供的镜像源进行漏洞修复。为了保证漏洞修复成功,请在执行在线升级漏洞前,确认主机中已配置华为云提供的对应操作系统的镜像源,详细的配置操作请参见配置镜像源。
  • 手动修复系统软件漏洞 对于Web-CMS漏洞、应用漏洞,不支持一键自动修复,您可以参考漏洞详情页面的修复建议,登录服务器手动修复。 漏洞修复命令 进入到漏洞的基本信息页,可根据修复建议修复已经被识别出的漏洞,漏洞修复命令可参见表2。 “Windows系统漏洞”和“Linux系统Kernel类的漏洞”修复完成后需要手动重启,否则系统仍可能为您推送漏洞消息。 不同的漏洞请根据修复建议依次进行修复。 如果同一主机上的多个软件包存在同一漏洞,您只需修复一次即可。 表2 漏洞修复命令 操作系统 修复命令 CentOS/Fedora /Euler/Redhat/Oracle yum update 软件名称 Debian/Ubuntu apt-get update && apt-get install 软件名称 --only-upgrade Gentoo 请参见漏洞修复建议。 漏洞修复方案 漏洞修复有可能影响业务的稳定性,为了防止在修复漏洞过程影响当前业务,建议参考以下两种方案,选择其中一种执行漏洞修复: 方案一:创建新的虚拟机执行漏洞修复 为需要修复漏洞的ECS主机创建镜像,详细操作请参见通过云服务器创建整机镜像。 使用该镜像创建新的ECS主机,详细操作请参见通过镜像创建云服务器。 在新启动的主机上执行漏洞修复并验证修复结果。 确认修复完成之后将业务切换到新主机。 确定切换完成并且业务运行稳定无故障后,可以释放旧的主机。如果业务切换后出现问题且无法修复,可以将业务立即切换回原来的主机以恢复功能。 方案二:在当前主机执行修复 为需要修复漏洞的ECS主机创建备份,详细操作请参见创建云服务器备份。 在当前主机上直接进行漏洞修复。 如果漏洞修复后出现业务功能问题且无法及时修复,立即使用备份恢复功能将主机恢复到修复前的状态,详细操作请参见使用备份恢复服务器。 方案一适用于第一次对主机漏洞执行修复,且不确定漏洞修复的影响。新创建的ECS主机建议采用按需计费的方式创建,待业务切换完成后可以根据需要转换为包周期计费模式。如果漏洞修复不成功可以随时释放以节省开销。 方案二适用于已经有同类主机执行过修复,漏洞修复方案已经比较成熟可靠的场景。
  • API概览 通过使用漏洞管理服务提供的接口,您可以完整的使用漏洞管理服务的所有功能。 类型 说明 网站域名管理 网站域名相关接口,包含创建域名、获取域名、删除域名,以及更新或获取域名配置。 网站任务管理 网站任务相关接口,包含创建扫描任务并启动、获取扫描任务详情、取消或重启扫描任务和获取域名的历史扫描任务。 网站报告管理 网站报告相关接口,包含获取扫描结果、业务风险扫描结果,以及更新漏洞的误报状态。 主机管理 主机相关接口,包含创建主机,获取主机,删除主机。 主机任务管理 主机任务相关接口,包含启动或停止扫描任务。 主机报告管理 主机报告相关接口,包含主机扫描结果获取。 主机组管理 主机组相关接口,包含主机组创建,获取,删除。
  • AK/SK认证 AK/SK签名认证方式仅支持消息体大小12MB以内,12MB以上的请求请使用Token认证。 AK/SK认证就是使用AK/SK对请求进行签名,在请求时将签名信息添加到消息头,从而通过身份认证。 AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 使用AK/SK认证时,您可以基于签名算法使用AK/SK对请求进行签名,也可以使用专门的签名SDK对请求进行签名。详细的签名方法和SDK使用方法请参见API签名指南。 签名SDK只提供签名功能,与服务提供的SDK不同,使用时请注意。
  • Token认证 Token的有效期为24小时,需要使用一个Token鉴权时,可以先缓存起来,避免频繁调用。 Token在计算机系统中代表令牌(临时)的意思,拥有Token就代表拥有某种权限。Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。 Token可通过调用获取用户Token接口获取,调用本服务API需要project级别的Token,即调用获取用户Token接口时,请求body中auth.scope的取值需要选择project,如下所示。 { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxx" } } } } 获取Token后,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”,其值即为Token。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 Content-Type: application/json X-Auth-Token: ABCDEFJ....
  • 调用API获取项目ID 项目ID可以通过调用查询指定条件下的项目信息API获取。 项目ID可以通过调用IAM服务的“查询指定条件下的项目信息”API获取。 获取项目ID的接口为“GET https://{Endpoint}/v3/projects”,其中{Endpoint}为IAM的终端节点,可以从管理员处地区和终端节点获取。接口的认证鉴权请参见认证鉴权。 响应示例如下,其中projects下的“id”即为项目ID。 { "projects": [ { "domain_id": "65382450e8f64ac0870cd180d14e684b", "is_domain": false, "parent_id": "65382450e8f64ac0870cd180d14e684b", "name": "xxxxxxxx", "description": "", "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects/a4a5d4098fb4474fa22cd05f897d6b99" }, "id": "a4a5d4098fb4474fa22cd05f897d6b99", "enabled": true } ], "links": { "next": null, "previous": null, "self": "https://www.example.com/v3/projects" } }
  • 从控制台获取项目ID 在调用接口的时候,部分URL中需要填入项目编号,所以需要获取到项目编号。项目编号获取步骤如下: 登录管理控制台。 单击用户名,在下拉列表中单击“基本信息”。 在基本信息页面单击“管理我的凭证”。 在“API凭证”“我的凭证”页面的项目列表中查看项目ID。 单击用户名,在下拉列表中单击“我的凭证”“My Credential”。 在“我的凭证”“My Credential”页面的项目列表中查看项目ID。 图1 查看项目ID 图2 查看项目ID 图3 查看项目ID 图4 查看项目ID
  • 响应示例 状态码: 200 OK { "total" : 1, "data" : [ { "risk_id" : "fff18e42a6deeffb83f9e37f741e687ed2a3dd1a", "risk_url" : "https://127.0.0.1:8080/links/index.php1", "risk_type" : "dead_link", "risk_content" : "http://evilllllllllll.com/code.txt700", "risk_status" : "repairing", "find_time" : "2021-09-18 16:26:24" } ] }
  • URI GET /v3/{project_id}/webscan/results/business-risk 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 用户的project_id,获取方法请参见获取项目ID。 最小长度:32 最大长度:32 表2 Query参数 参数 是否必选 参数类型 描述 task_id 是 String 任务ID 最小长度:32 最大长度:50 offset 否 Integer 分页查询,偏移量,表示从此偏移量开始查询 最小值:0 最大值:10000 缺省值:0 limit 否 Integer 分页查询,每页显示的条目数量 最小值:1 最大值:10000 缺省值:5
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 total Integer 业务风险总数 最小值:0 最大值:100000 data Array of BusinessRiskItem objects 业务风险列表 数组长度:0 - 100000 表5 BusinessRiskItem 参数 参数类型 描述 risk_id String 业务风险ID 最小长度:40 最大长度:40 risk_url String 有风险的URL 最小长度:1 最大长度:256 risk_type String 业务风险类型: text - 不合规文字 image - 不合规图片 dead_link - 不合规链接(死链) dark_link - 不合规链接(暗链) business_risk - 业务风险 枚举值: text image dead_link dark_link business_risk find_time String 业务风险发现时间 最小长度:0 最大长度:19 risk_content String 业务风险内容 最小长度:0 最大长度:100000 risk_status String 漏洞状态: repairing - 未修复 repaired - 已修复 false_report - 误报,已忽略 枚举值: repairing repaired false_report 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 最小长度:0 最大长度:50 error_msg String 错误描述 最小长度:0 最大长度:256 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 最小长度:0 最大长度:50 error_msg String 错误描述 最小长度:0 最大长度:256 状态码: 418 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 最小长度:0 最大长度:50 error_msg String 错误描述 最小长度:0 最大长度:256
  • URI GET /v3/{project_id}/hostscan/groups 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String project_id 最小长度:32 最大长度:32 表2 Query参数 参数 是否必选 参数类型 描述 offset 否 Integer 分页查询,偏移量,表示从此偏移量开始查询 最小值:0 最大值:200 缺省值:0 limit 否 Integer 分页查询,每页显示的条目数量 最小值:1 最大值:100 缺省值:5
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 total Integer 群组总数 最小值:0 最大值:1000 items Array of Group objects 群组列表 数组长度:0 - 1000 表5 Group 参数 参数类型 描述 id String 群组ID 最小长度:1 最大长度:64 name String 群组名称 最小长度:1 最大长度:24 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 最小长度:0 最大长度:50 error_msg String 错误描述 最小长度:0 最大长度:256 状态码: 401 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 最小长度:0 最大长度:50 error_msg String 错误描述 最小长度:0 最大长度:256 状态码: 418 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 最小长度:0 最大长度:50 error_msg String 错误描述 最小长度:0 最大长度:256
  • 响应示例 状态码: 200 OK { "task_id" : "017281b97c9845b08174895992ba179643028", "task_name" : "测试任务1", "url" : "https://127.0.0.1:8080", "task_type" : "normal", "domain_name" : "127.0.0.1:8080", "task_settings" : { "task_config" : { "scan_mode" : "normal", "port_scan" : false, "weak_pwd_scan" : false, "cve_check" : false, "text_check" : false, "picture_check" : false, "malicious_code" : false, "malicious_link" : false } }, "create_time" : "2021-09-18 16:26:24", "start_time" : "2021-09-18 16:26:24", "end_time" : "2021-09-18 17:00:00", "task_status" : "success", "progress" : 100, "reason" : "Successful. Your website is very safe!", "pack_num" : 5, "score" : 100, "safe_level" : "safety", "statistics" : { "high" : 0, "middle" : 0, "low" : 0, "hint" : 0 } }