【Linux网络编程】之配置阿里云安全组

打印 上一主题 下一主题

主题 879|帖子 879|积分 2637

配置阿里云安全组

阿里云安全组的概念

安全组是一种虚拟的防火墙,重要用于控制云服务器实例的入站(Inbound)和出站(Outbound)流量。通过配置安全组规则,你可以设置哪些流量可以访问你的云服务器,哪些流量不能访问你的云服务器。
安全组的作用:


  • 控制网络访问:你可以在安全组中配置规则,答应或拒绝指定的 IP 地址、端口、协议的流量。
  • 细粒度控制:可以根据需求设置多个安全组规则,以精确控制差别服务和客户端的访问权限。
  • 会合管理:安全组适用于一个或多个 ECS 实例,简化了多个服务器的访问控制管理。
阿里云安全组常见配置


  • 入方向规则:控制从外部网络进入服务器的流量。
  • 出方向规则:控制从服务器到外部网络的流量。
配置安全组规则

入方向

现在我们的服务器程序部署到云服务器上了还不敷,我们需要开放一些端口以及设置答应哪些IP地址的客户端访问我们的服务器:

  • 打开阿里云官网:

  • 登录后点产品,点云服务器ECS:

  • 点击管理控制台:

  • 进入控制台后,点击左边栏的实例,然后选择你想设置安全组的云服务器实例,点箭头所指的超链接:

  • 点安全组:

  • 进入安全组页面后,点击管理规则:

  • 进入该页面后,就可以设置入方向和出方向的规则了:

根本概念增补

协议类型:安全组中协议类型 用来定义答应或拒绝的通信协议。阿里云中安全组中常见通信协议:


  • TCP:传输控制协议,最常用于互联网通信,保证数据传输的可靠性。比如 HTTP(80端口)、HTTPS(443端口)、SSH(22端口)等都使用 TCP 协议。
  • UDP:用户数据报协议,属于无毗连协议,不保证数据包的到达顺序和可靠性。适用于及时应用,比如视频流、VoIP、DNS 查询等。
  • ICMP:互联网控制消息协议,通常用于网络设备间的错误报告和网络诊断,常见的如 ping 下令。
  • GRE:GRE 协议 是一种通用的隧道协议,用于将差别类型的网络层协议封装在 IP 数据包中,从而可以在现有的 IP 网络上传输。这使得 GRE 成为虚拟专用网络(VPN)和多种协议间数据传输的重要工具。

也可以设置为答应全部协议的流量访问。
端口范围安全组中的端口范围 是用来控制哪些端口可以被外部(公网)或其他网络访问,从而限制或答应对云服务器中应用程序和服务的访问。换句话说,端口范围指定了云服务器对外开放的端口,只有通过安全组规则答应的端谈锋可以被外部访问。
授权战略:有答应或拒绝规则。我们既可设置答应规则,也可设置拒绝规则,是为了提供更精细的访问控制。


  • 设置明确的 拒绝规则,先拦截掉不需要的、危险的流量。
  • 然后设置 答应规则,为信任的用户或服务提供访问权限。

优先级:规则是具有优先级的,通常拒绝规则的优先级要高于答应规则的优先级。当一个哀求到来,它既符合“全部IP均可访问”的答应规则,也符合“特定IP不能访问”的拒绝规则,如果拒绝规则的优先级高,会去优先匹配拒绝规则,不让它访问。

ICMP协议安全组配置

这个协议是网络层的协议,ICMP 协议重要用于 网络诊断错误报告,它是 TCP/IP 协议族的一部门,常用于:


  • 发送控制消息,如错误报告(例如主机不可达、时间超时等)。
  • 用于网络诊断工具,如 ping 下令和 traceroute,用于测试网络毗连是否正常。
此时我们没有删除入方向的ICMP协议的,去ping我们的云服务器的公网IP,是可以ping通的:

这是由于我们配置了ICMP协议入方向的安全组规则:



  • ICMP工作在网络层,而端口号是传输层的概念,所以它不需要配置端口号。
我们配置一个拒绝我们现在所连网络的公网IP的ICMP入方向的安全组(如果你不知道路由器的公网IP,直接源IP设置为全部):

  • 在安全组配置页面,点击手动添加:

  • 填写相关的信息后点确认,这个源IP是你当前所连网络的路由器的公网IP,背面的/跟着的子网掩码的位数,登录路由器管理界面可以查看到,这里我们乱填了一个子网掩码的位数,这个好像不影响,只要格式精确,公网IP对就行():

  • 不知道自己所连网络的公网IP,直接源IP(哀求方的IP地址,目的IP不消管)填全部的IPv4的地址:

  • 此时用我们的windows电脑(已连网络)ping我们的公网IP,发现不能ping通:


  • 删除或者修改刚刚的安全组拒绝规则中的源IP地址,又可以ping通:

  • 删除后,再次ping我们的云服务器,可以ping通:

UDP协议安全组配置

学会了UDP协议入方向的安全组配置,TCP就很相似了:

  • 点手动添加,设置好相应的参数后保存即可,目的端口我们可以开放全部的端口,但这样不安全,一样寻常只开放一部门端口:

  • 设置好安全组配置规则后,仍然不敷,还需要设置Linux云服务器主机体系中的防火墙,如果我们服务器程序使用的端口本机防火墙(如果有防火墙服务)没有开放对应的端口,纵然云服务器安全组设置了规则,外界仍然是无法访问的:

  • 此时只开放了8080端口,我们刚刚安全组规则中是开放了全部UDP的端口,我们运行服务器程序,端口号设置为8080,再让windows中的使用UDP协议的client去访问,看可否访问成功:

  • 使用以下指令,添加udp/8080端口:
    1. sudo firewall-cmd --zone=public --add-port=8000/udp  --permanent#8000端口(udp协议)
    2. sudo firewall-cmd --zone=public --add-port=8000/tcp  --permanent#8000端口(tcp协议)
    3. sudo firewall-cmd --reload
    4. #重新加载防火墙,使其生效
    5. sudo firewall-cmd --zone=public --list-ports
    6. #查看是否生效
    复制代码

  • 客户端再次访问服务器程序(可以正常访问了):

出方向

云服务器的出方向默认答应全部访问,一样寻常不消我们手动配置,如果你有特殊需求也可以配置:

配置云服务器主机的防火墙

什么是防火墙

在Linux中,防火墙是一种网络安全机制,用于控制网络流量的进出。它通过一组规则(称为防火墙规则)来决定哪些网络流量可以进入或脱离体系,哪些流量应被拒绝或限制。防火墙的焦点目的是防止恶意攻击、网络入侵,以及控制体系的网络通信。
Linux中防火墙的管理工具

iptables:这是传统的防火墙工具,用于定义和管理网络流量的规则。它基于IP数据包的头信息(源IP、目的IP、协议、端口)来进行控制和过滤。
firewalld:这是一个更现代化的防火墙管理工具,通常用于 CentOS 7+RHEL 7+Fedora 等操纵体系。它提供了更简化的管理方式,基于区域(zone)和服务(service)来定义规则。
防火墙的作用

流量过滤:通过指定规则答应或拒绝网络流量。规则可能基于IP地址、协议或端口号。
地址转换:对进入或脱离网络的数据包进行地址转换(如 NAT,Network Address Translation)。
状态检测:跟踪每个数据包的状态,判定该数据包是否属于已创建的毗连,或者是否需要创建新的毗连。
防火墙的重要应用之一就是:阻止不必要的端口开放,通过控制流量进出特定端口来防止未授权访问。
常用下令介绍(firewalld)


  • 安装firewalld。
    1. sudo apt update
    2. sudo apt install firewalld
    复制代码
  • 启动和启用firewalld服务。
    1. # 启动 firewalld 服务
    2. sudo systemctl start firewalld
    3. # 设置 firewalld 开机自启动
    4. sudo systemctl enable firewalld
    复制代码
  • 检查firewalld服务的状态:
    1. sudo systemctl status firewalld
    复制代码
    如果安装成功,可以看到类似以下输出:

  • 验证 firewalld 是否正在运行:
    1. sudo firewall-cmd --state
    复制代码
    输出应该为:

  • 停止防火墙:
    1. sudo systemctl stop firewalld
    复制代码
    停止后,防火墙不再运行:

  • 启用防火墙:
    1. sudo systemctl start firewalld
    复制代码
    启用后防火墙的状态又重新变成running:

  • 禁用防火墙服务开机自启:
    1. sudo systemctl disable firewalld
    复制代码
  • 开放端口

    • 临时开放端口(重启后失效):
      1. sudo firewall-cmd --zone=public --add-port=8080/tcp
      复制代码
    • 持久化开放端口(重启后也有效):
      1. sudo firewall-cmd --zone=public --add-port=8080/tcp
      2. --permanent
      复制代码

  • 关闭端口

    • 临时关闭端口(重启后失效):
      1. sudo firewall-cmd --zone=public --remove-port=8080/tcp#对外临时开放8080端口,tcp协议
      复制代码
    • 持久化关闭端口(重启后仍然有效)
      1. sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
      复制代码

  • 重新加载防火墙配置(更改防火墙配置后,需要重新加载才气生效):
    1. sudo firewall-cmd --reload
    复制代码
  • 查看当前区域全部开放的端口:
    1. sudo firewall-cmd --zone=public --list-ports
    复制代码

配置防火墙并不是必要步骤,如果你不需要防护墙,将其禁用后,操纵体系将不会对任何流量在主机级别做防护,所以端口都开放,只要安全组规则配置精确,外界就可以访问。
如果启用了防火墙,则需要开放对应的端口。
为什么安全组和防火墙的配置缺一不可

安全组:作为云平台层的防火墙,重要用于控制 虚拟机与外部网络 的通信。它是云平台的界限防护,帮助你防止外部未经授权的访问。
主机防火墙:操纵体系内的防火墙是 主机级别的防护,它可以进一步限制和控制 内网流量特定进程的访问、以及防止被攻破的情况下对内部服务的未经授权访问。纵然安全组开放了某个端口,操纵体系层的防火墙仍然能限制哪些进程可以访问该端口或答应哪些内部网络访问。
配置防火墙后,可以让我们的服务器更加安全。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王柳

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表