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

news/2025/2/8 14:47:29 标签: linux, 网络, 阿里云

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

  • 配置阿里云安全组
    • 阿里云安全组的概念
    • 配置安全组规则
      • 入方向
        • 基本概念补充
        • ICMP协议安全组配置
        • UDP协议安全组配置
      • 出方向
  • 配置云服务器主机的防火墙
    • 什么是防火墙
    • Linux中防火墙的管理工具
    • 防火墙的作用
    • 常用命令介绍(firewalld)
    • 为什么安全组和防火墙的配置缺一不可

配置阿里云安全组

阿里云安全组的概念

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

安全组的作用:

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

阿里云安全组常见配置

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

配置安全组规则

入方向

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

  1. 打开阿里云官网:

    image-20250110133201278

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

    image-20250110133242585

  3. 点击管理控制台:

    image-20250110133334796

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

    image-20250110133702572

  5. 点安全组:

    image-20250110133819828

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

    image-20250110133908600

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

    image-20250110135008090

基本概念补充

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

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

image-20250110140513580

也可以设置为允许全部协议的流量访问。

端口范围安全组中的端口范围 是用来控制哪些端口可以被外部(公网)或其他网络访问,从而限制或允许对云服务器中应用程序和服务的访问。换句话说,端口范围指定了云服务器对外开放的端口,只有通过安全组规则允许的端口才可以被外部访问。

授权策略:有允许或拒绝规则。我们既可设置允许规则,也可设置拒绝规则,是为了提供更精细的访问控制。

  • 设置明确的 拒绝规则,先拦截掉不需要的、危险的流量。

  • 然后设置 允许规则,为信任的用户或服务提供访问权限。

    image-20250110140242723

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

image-20250110140259370

ICMP协议安全组配置

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

  • 发送控制消息,如错误报告(例如主机不可达、时间超时等)。
  • 用于网络诊断工具,如 ping 命令和 traceroute,用于测试网络连接是否正常。

此时我们没有删除入方向的ICMP协议的,去ping我们的云服务器的公网IP,是可以ping通的:

image-20250110141433614

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

image-20250110141523574

  • ICMP工作在网络层,而端口号是传输层的概念,所以它不需要配置端口号。

我们配置一个拒绝我们目前所连网络的公网IP的ICMP入方向的安全组(如果你不知道路由器的公网IP,直接源IP设置为所有):

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

    image-20250110143247305

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

    image-20250110143340891

  3. 不知道自己所连网络的公网IP,直接源IP(请求方的IP地址,目的IP不用管)填所有的IPv4的地址:

    image-20250110143646261

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

image-20250110143909884

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

    image-20250110144045219

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

    image-20250110144151364

UDP协议安全组配置

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

  1. 点手动添加,设置好相应的参数后保存即可,目的端口我们可以开放所有的端口,但这样不安全,一般只开放一部分端口:

    image-20250110144352817

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

    image-20250110144820532

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

    image-20250110145311599

  4. 使用以下指令,添加udp/8080端口:

    sudo firewall-cmd --zone=public --add-port=8000/udp  --permanent#8000端口(udp协议)
    sudo firewall-cmd --zone=public --add-port=8000/tcp  --permanent#8000端口(tcp协议)
    sudo firewall-cmd --reload#重新加载防火墙,使其生效
    sudo firewall-cmd --zone=public --list-ports#查看是否生效
    

    image-20250110150204016

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

    image-20250110150429149

出方向

云服务器的出方向默认允许所有访问,一般不用我们手动配置,如果你有特殊需求也可以配置:

image-20250110150543564

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

什么是防火墙

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

Linux中防火墙的管理工具

iptables:这是传统的防火墙工具,用于定义和管理网络流量的规则。它基于IP数据包的头信息(源IP、目的IP、协议、端口)来进行控制和过滤。

firewalld:这是一个更现代化的防火墙管理工具,通常用于 CentOS 7+RHEL 7+Fedora 等操作系统。它提供了更简化的管理方式,基于区域(zone)和服务(service)来定义规则。

防火墙的作用

流量过滤:通过指定规则允许或拒绝网络流量。规则可能基于IP地址、协议或端口号。

地址转换:对进入或离开网络的数据包进行地址转换(如 NAT,Network Address Translation)。

状态检测:跟踪每个数据包的状态,判断该数据包是否属于已建立的连接,或者是否需要建立新的连接。

防火墙的主要应用之一就是:阻止不必要的端口开放,通过控制流量进出特定端口来防止未授权访问。

常用命令介绍(firewalld)

  1. 安装firewalld

    sudo apt update
    sudo apt install firewalld
    
  2. 启动和启用firewalld服务。

    # 启动 firewalld 服务
    sudo systemctl start firewalld
    # 设置 firewalld 开机自启动
    sudo systemctl enable firewalld
    
  3. 检查firewalld服务的状态:

    sudo systemctl status firewalld
    

    如果安装成功,可以看到类似以下输出:

    image-20250110172316877

  4. 验证 firewalld 是否正在运行:

    sudo firewall-cmd --state
    

    输出应该为:

    image-20250110172406387

  5. 停止防火墙:

    sudo systemctl stop firewalld
    

    停止后,防火墙不再运行:

    image-20250110172522860

  6. 启用防火墙:

    sudo systemctl start firewalld
    

    启用后防火墙的状态又重新变成running

    image-20250110173216405

  7. 禁用防火墙服务开机自启:

    sudo systemctl disable firewalld
    
  8. 开放端口

    • 临时开放端口(重启后失效):

      sudo firewall-cmd --zone=public --add-port=8080/tcp
      
    • 持久化开放端口(重启后也有效):

      sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
      
  9. 关闭端口

    • 临时关闭端口(重启后失效):

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

      sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
      
  10. 重新加载防火墙配置(更改防火墙配置后,需要重新加载才能生效):

    sudo firewall-cmd --reload
    
  11. 查看当前区域所有开放的端口:

    sudo firewall-cmd --zone=public --list-ports
    

    image-20250110175219142

配置防火墙并不是必要步骤,如果你不需要防护墙,将其禁用后,操作系统将不会对任何流量在主机级别做防护,所以端口都开放,只要安全组规则配置正确,外界就可以访问。

如果启用了防火墙,则需要开放对应的端口。

为什么安全组和防火墙的配置缺一不可

安全组:作为云平台层的防火墙,主要用于控制 虚拟机与外部网络 的通信。它是云平台的边界防护,帮助你防止外部未经授权的访问。

主机防火墙:操作系统内的防火墙是 主机级别的防护,它可以进一步限制和控制 内网流量特定进程的访问、以及防止被攻破的情况下对内部服务的未经授权访问。即使安全组开放了某个端口,操作系统层的防火墙仍然能限制哪些进程可以访问该端口或允许哪些内部网络访问。

配置防火墙后,可以让我们的服务器更加安全。


http://www.niftyadmin.cn/n/5844981.html

相关文章

搜维尔科技:Movella数字化运动领域的领先创新者

下一代游戏、视觉效果、直播、工作场所人体工程学、运动表现、海洋和机器人技术。前所未有的运动成就。让所有年龄段的观众惊叹不已的艺术创新。Movella 的全栈技术用于捕捉、数字化和分析运动,正在让世界变得更美好。 数字艺术家的创造力得到释放 灯光、摄像机、…

C++自研3D教程OPENGL版本---动态批处理的基本实现

又开始找工作了&#xff0c;借机休息出去旅行两个月&#xff0c;顺便利用这段时间整理下以前写的东西。 以下是一个简单的动态批处理实现&#xff1a; #include <GL/glew.h> #include <GLFW/glfw3.h> #include <iostream> #include <vector>// 顶点结…

大语言模型遇上自动驾驶:AsyncDriver如何巧妙解决推理瓶颈?

导读 这篇论文提出了AsyncDriver框架&#xff0c;致力于解决大语言模型在自动驾驶领域应用中的关键挑战。论文的主要创新点在于提出了大语言模型和实时规划器的异步推理机制&#xff0c;实现了在保持性能的同时显著降低计算开销。通过设计场景关联指令特征提取模块和自适应注入…

mapbox进阶,添加绘图扩展插件,绘制圆形

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️MapboxDraw 绘图控件二、🍀添加绘图扩…

JVM 中的四类引用:强、软、弱、虚

导言 在 Java 开发中&#xff0c;垃圾收集&#xff08;GC&#xff09;机制通过自动管理内存提升了开发效率。但你是否知道 JVM 通过四种引用类型&#xff08;强、软、弱、虚&#xff09;精细控制对象生命周期&#xff1f; 强引用&#xff08;Strong Reference&#xff09; 特…

什么是可观测性?

现代服务架构常常谈及三个性&#xff1a; 弹性&#xff0c;韧性&#xff0c;可观测性。今天且按下其他两性不表&#xff0c;着重聊一聊可观测性。本文就几个主题对可观测性展开讨论&#xff1a; 可观测性是什么可观测性是必须的吗企业的可观测性落地 可观测性理念 可观测性是…

web直播弹幕抓取分析 signature

声明: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 前言 最近遇到太多难点了卡了很久&am…

122,【6】buuctf web [护网杯2018] easy_tornado

进入靶场 出现了3个文件 点击看看 都点击看看 得知flag所在目录 render在 Web 开发框架中常常出现 cookie_secret 是一个用于对 Cookie 进行签名或加密的密钥。 意味着我们现在需要先找到 cookie_secret 在请求里有cookie&#xff0c;但都不显示cookie&#xff0c;反观三个…