天翼云的每台云主机都处于一个称为虚拟私有云(CT-VPC ,Virtual Private Cloud)的逻辑隔离的网络环境之下,云主机之间以及云主机与外网之间的网络互访靠什么来保障安全呢?这就是安全组。
安全组用来实现安全组内和以及安全组之间云主机的访问控制,加强云主机安全保护。在定义安全组时,可以按照流量进出方向、协议、IP地址、端口来自定义访问规则,当云主机加入安全组后,即受到这些访问规则的保护。
当创建一台云主机时,这台云主机就自动处于某一个安全组的保护之下。如果没有额外手动创建的话,系统将自动创建一个名称为Sys-default的默认安全组。 默认的安全组有两条规则:
第一条规则的作用是允许同一个安全组内的主机互访 第二条规则的作用是允许云主机访问任意外网 其实还有第三条隐含的规则,即拒绝所有入方向的流量。 为简化配置,安全组设计为只能允许的规则,不能配置拒绝的规则,即可将安全组视为是一个默认出方向全部允许,入方向全部禁止的防火墙。 第二条规则允许云主机访问任意外网好理解,那第一条规则允许同一个安全组内的主机互访该如何理解呢? 假如我们有两台云主机 HostA和HostB,它们属于同一个VPC同一个子网,HostA的安全组为sgA,HostB的安全组为sgB
默认情况下,虽然HostA和HostB两台云主机在同一个子网,但由于两台云主机的安全组不同,导致相互之间不能互访。如果两台云主机属于同一个安全组下,则由于第一条安全组规则的作用,两台云主机相互之间可以访问。
这时候如果要实现两台云主机互访,可以把两台云主机调整到同一个安全组,或者分别在sgA安全组上添加规则允许sgB安全组,在sgB安全组上添加规则允许sgA安全组。
同一个VPC内的云主机划分到不同的安全组适用于对安全配置要求非常精细的场景。 比如有三台服务器,Web服务器对外提供80端口Web接入,Web服务器向应用服务器8080端口发起应用请求,应用服务器再向数据库服务器3306端口发起数据库请求。
这时候我们可以定义三个安全组,Web安全组允许外网访问80端口、App安全组允许Web安全组访问8080端口、DB安全组允许App安全组访问3306端口。 当然绝大多数场景下同一个VPC内的云主机配置使用同一个安全组就足够了,不需要配置得这么复杂。
下面看一个配置实例: 假如有一台Linux云主机需要运行web服务,端口使用80端口。并且需要通过ssh进行远程管理,能ping通云主机的弹性IP进行故障监控。 这时候应该怎么配置呢: 在天翼云安全组控制台,进入需要进行配置的安全组,点击“快速添加规则”。方向选择为入方向,勾选SSH、HTTP、HTTPS,源地址不修改保留为0.0.0.0/0,即源地址为所有地址,点击确定,完成添加。
这就允许所有用户访问到云主机的22、80、443端口。 再添加一条规则,方向为入方向、协议为ICMP、类型选择Any,IP地址保持默认为0.0.0.0/0,点击确认,保存。则所有用户能ping通云主机的公网IP地址,便于进行快速故障诊断。
天翼云安全组是独立于云主机操作系统的安全保护策略,在部署应用后发现应用不能访问最常见的问题就是安全组策略没有配置开放应用端口。