系统安全 - Linux 安全模型及实践

news2024/10/2 18:32:34

文章目录

  • 导图
  • Linux 安全模型
  • 用户层权限管理的细节
    • 多用户环境中的权限管理
    • 文件权限与目录权限
  • 最小权限原则的应用
  • Linux 系统中的认证、授权和审计机制
    • 认证机制
    • 授权机制
    • 审计机制
  • 主机入侵检测系统(HIDS)_ Host-based Intrusion Detection System
    • HIDS 的概念和功能
    • HIDS 分类与技术差异
    • HIDS 最佳实践
    • 常用 HIDS 工具
  • 总结

在这里插入图片描述


导图

在这里插入图片描述

Linux 安全模型

Linux 系统可以分为内核层用户层

  • 内核层负责对资源的直接管理,包括进程调度、内存管理、文件系统和硬件控制等。它的安全机制主要通过内置的权限管理、进程隔离和内存保护来确保稳定和安全。
    • 如果黑客能够成功突破内核层安全(例如通过漏洞获取 root 权限),他们可以绕过用户层的所有安全措施。这时,即使我们在用户层配置再复杂的权限,也无济于事。
  • 用户层是我们日常操作的主要部分,提供对系统资源的访问。开发者和运维人员通过用户层访问内核提供的服务。我们日常关注的安全措施,如文件权限、进程权限、日志管理等,都在用户层进行。

内核层安全重点

  • 内核层安全是通过定期更新和修补漏洞来维护的。Linux 社区会发布安全更新来修复内核中的已知漏洞,定期使用官方发行的镜像、打补丁来防止攻击者利用漏洞。

用户层安全重点

  • 权限配置:用户层的权限设置确保不同用户之间的数据和进程隔离,防止越权访问。
  • 进程隔离:Linux 通过权限和用户身份管理实现进程之间的隔离,确保一个用户的进程不会影响其他用户的进程或数据。

用户层权限管理的细节

多用户环境中的权限管理

在 Linux 多用户环境中,用户层的安全性依赖于正确的权限配置。Linux 系统使用 UID(用户 ID)和 GID(组 ID)来标识用户及其所属的组,权限则通过用户、组和其他人三类身份来控制文件和进程的访问。

主体 -> 请求 -> 客体模型

  • 主体是用户(或进程),请求是操作(如读、写、执行),客体是文件、目录或系统资源。
  • 例如,当一个用户试图读取 /etc/passwd 文件时,Linux 会检查该用户是否有权限执行这个请求,只有具备合适权限,操作才会成功。

文件权限与目录权限

Linux 中,所有文件和目录都有与之关联的权限,权限分为:

  • r(读):用户是否能读取文件或查看目录内容。
  • w(写):用户是否能修改文件或在目录中创建、删除文件。
  • x(执行):用户是否能执行文件或进入目录。
    在这里插入图片描述

权限通过 ls -l 命令可以查看,并通过 chmod 命令进行修改。对于文件和目录的权限作用有所不同:

  • 文件的权限:决定谁可以读取、修改和执行该文件。
  • 目录的权限:决定谁可以查看、添加、删除目录中的文件。

除了基本权限,Linux 还提供了额外的权限控制手段:

  • SUID/SGID:用于文件时,这些位允许用户以文件所有者或组的权限运行程序,常用于特定的系统命令。
  • 粘滞位(Sticky Bit):常用于共享目录(如 /tmp),确保用户只能删除自己创建的文件,防止滥用删除他人文件。 chmod +t /tmp可以阻止删除 /tmp 目录下其他用户的文件

最小权限原则的应用

在 Linux 系统中,最小权限原则是安全管理的核心。即为每个用户或进程分配最少的权限,以减少潜在的攻击面。尤其是在多用户共用服务器时,过多的权限可能会导致数据泄露或服务滥用。

以下是几种常见的实践:

  1. 使用普通用户而非 root 用户运行服务
    例如,运行 MySQL 服务时,使用 mysqld 命令以 mysql 用户启动进程,而不是 root。这样,即使 MySQL 服务出现漏洞,攻击者也无法直接获取 root 权限。

    sudo -u mysql mysqld_safe
    
  2. 服务进程的权限隔离
    在启动 Nginx 时,Nginx 的工作进程使用 nobody 用户身份运行。这种方法确保了即使 Web 服务遭到攻击,也无法轻易危害到系统其他部分。

    # Nginx 进程运行状态
    ps aux | grep nginx
    root      7083  0.0  0.0 61032  5324 ?        Ss   Aug12   0:01 nginx: master process
    nobody   331122 0.0  0.0 90768  31776 ?       S    11:44   0:00 nginx: worker process
    

    nobody 通常拥有整个操作系统中最小的权限

  3. 通过文件属性保护关键文件
    使用 chattr +i 命令可以为重要的文件添加不可修改属性(immutable),防止即使有权限的用户修改关键配置文件。

    sudo chattr +i /etc/passwd
    

Linux 系统中的认证、授权和审计机制

认证机制

认证确保用户的身份合法,防止未经授权的用户访问系统资源。在 Linux 系统中,用户信息存储在 /etc/passwd/etc/shadow 文件中。

  • /etc/passwd:保存用户账户信息,但不会存储密码,而是将密码占位为 x

  • /etc/shadow:保存加密后的用户密码和密码策略(如密码有效期、密码失效天数等)。
    配置密码策略可以有效提升安全性,如使用 chage 命令设置密码过期时间:

    sudo chage -M 60 testuser  # 强制 testuser 每 60 天更改密码
    

弱密码检测
为了防止弱密码攻击,可以使用工具如 John the Ripper 对密码进行审计:

unshadow /etc/passwd /etc/shadow > mypasswd
john mypasswd  # 开始检测弱密码
john --show mypasswd  # 显示已破解的密码

授权机制

授权是在用户通过认证后,系统根据权限决定其能访问哪些资源。Linux 系统通过读、写、执行权限,控制用户对文件和目录的访问。除此之外,Linux 还提供了 ACL(访问控制列表)来实现更精细的权限控制。

最小权限原则的扩展
滥用 root 是 Linux 安全中的普遍问题,所有长时间运行的进程(如数据库、Web 服务)应尽量避免使用 root 权限,而使用特定用户账户来运行这些进程。例如:

sudo -u redis redis-server  # 使用非 root 账户运行 Redis

审计机制

审计是指对系统操作进行记录和分析,以便在出现问题时能够追踪到源头。在 Linux 系统中,主要的日志文件位于 /var/log 目录下,常见的日志包括:

  • /var/log/wtmp/var/run/utmp:记录用户登录和注销事件。 用户登录日志本身为二进制文件,我们无法直接通过文本方式查看,但是可以配合who/users/last/lastlog这样的命令来获取
  • /var/log/secure:记录与安全相关的事件,如用户的认证尝试。
  • /var/log/messages:记录系统及应用的普通信息。

可以通过命令 wholast 来查看用户登录日志。例如:

last  # 查看最近的用户登录记录

日志管理与分析

默认情况下,Linux 会通过 logrotate 对日志执行相应的保留策略(比如日志切割和旧日志删除等)。通过配置/etc/logrotate.conf可以对不同日志的保留策略进行修改日志可以通过 logrotate 来管理,定期归档旧日志,避免日志文件过大。

此外,使用日志分析工具如 ELK 或 Zabbix,可以对系统日志进行实时监控,配置安全报警规则来检测潜在的攻击行为。


主机入侵检测系统(HIDS)_ Host-based Intrusion Detection System

HIDS 的概念和功能

主机入侵检测系统(HIDS)是一种监控和分析单个计算机或服务器的活动日志、文件完整性、配置更改、系统调用等,以检测入侵行为或异常活动的安全工具。它与网络入侵检测系统(NIDS)不同,侧重于主机层面的检测,帮助识别未经授权的操作或潜在攻击。


HIDS 分类与技术差异

HIDS 主要分为以下两种类型:

  • 基于签名的 HIDS:通过匹配已知攻击模式或签名来检测入侵。这种方法对已知威胁有效,但对未知攻击或零日漏洞可能不敏感。
  • 基于行为的 HIDS:通过分析系统的正常行为基线,检测异常的操作或活动。这种方法能够发现未知威胁,但可能会产生更多的误报。

HIDS 最佳实践

为了有效实施 HIDS,可以参考以下最佳实践:

  1. 系统选择与资源规划:选择适合的 HIDS 工具,并考虑主机的资源占用问题。过高的资源消耗可能影响系统性能。
  2. 配置日志收集与分析:配置 HIDS 以收集关键日志,如认证、文件系统变更、系统调用等,并定期分析。结合 Syslog、Auditd 等工具可以进一步增强日志记录的深度。
  3. 文件完整性监控:HIDS 通过文件完整性监控(FIM)来检测关键文件的异常更改。可以利用工具如 Tripwire 或 AIDE 来实现。
  4. 基线建立与异常检测:设置基线行为,定义正常的操作模式,并通过 HIDS 监控这些基线是否出现异常。
  5. 警报管理:配置灵敏但不冗余的报警规则,避免误报过多。结合邮件、短信或其他告警系统,确保及时响应。
  6. 定期更新与维护:定期更新 HIDS 规则库,确保可以识别最新的威胁。

常用 HIDS 工具

  • OSSEC:一个开源且功能强大的 HIDS,支持日志分析、文件完整性监控和实时警报,适用于 Linux、Windows、macOS 等操作系统。
  • Tripwire:专注于文件完整性监控,广泛用于检测文件篡改、配置变更等,适合企业环境。
  • AIDE(Advanced Intrusion Detection Environment):轻量级 HIDS 工具,专注于文件完整性监控和日志分析。
  • Wazuh:基于 OSSEC 的扩展,提供增强的日志管理、威胁检测功能,且支持可视化仪表板。

总结

Linux 安全体系的核心是正确的权限配置和最小权限原则的实践。通过配置合适的权限、使用非 root 账户运行服务,以及对日志的有效监控,可以大大提升系统的安全性。配合 HIDS 等安全工具,为 Linux 系统提供额外的保护层。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2184846.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android问题笔记五十:构建错误-AAPT2 aapt2-7.0.2-7396180-windows Daemon

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列Scratch编程案例软考全系列Unity3D学习专栏蓝桥系列ChatGPT和AIGC 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分…

jmeter中token测试

案例: 网站:http://shop.duoceshi.com 讲解:用三个接口来讲解 第一个接口code:GET http://manage.duoceshi.com/auth/code 第二个登录接口:http://manage.duoceshi.com/auth/login 第三个接口:http://…

iOS中的链表 - 双向链表

iOS中的链表 - 单向链表_ios 链表怎么实现-CSDN博客​​​​​​​ 引言 在数据结构中,链表是一种常见的且灵活的线性存储方式。与数组不同,链表的元素在内存中不必连续存储,这使得它们在动态内存分配时更加高效。其中,双向链表…

Pikachu-Cross-Site Scripting-DOM型xss_x

查看代码&#xff0c;输入的内容&#xff0c;通过get请求方式&#xff0c;用text 参数带过去&#xff1b; 获取text内容&#xff0c;赋值给xss 然后拼接到 dom 里&#xff1b;构造payload的关键语句&#xff1a; <a href"xss">就让往事都随风,都随风吧</a&…

【SQL】DDL语句

文章目录 1.SQL通用语法2.SQL的分类3.DDL3.1数据库操作3.2 表操作3.2.1 表操作--数据类型3.2.2 表操作--修改3.2.3 表操作--删除 SQL 全称 Structured Query Language&#xff0c;结构化查询语言。操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数据库统一标准 。…

【Python语言初识(六)】

一、网络编程入门 1.1、TCP/IP模型 实现网络通信的基础是网络通信协议&#xff0c;这些协议通常是由互联网工程任务组 &#xff08;IETF&#xff09;制定的。所谓“协议”就是通信计算机双方必须共同遵从的一组约定&#xff0c;例如怎样建立连接、怎样互相识别等&#xff0c;…

解决MySQL报Incorrect datetime value错误

目录 一、前言二、问题分析三、解决方法 一、前言 欢迎大家来到权权的博客~欢迎大家对我的博客进行指导&#xff0c;有什么不对的地方&#xff0c;我会及时改进哦~ 博客主页链接点这里–>&#xff1a;权权的博客主页链接 二、问题分析 这个错误通常出现在尝试将一个不…

基于C++和Python的进程线程CPU使用率监控工具

文章目录 0. 概述1. 数据可视化示例2. 设计思路2.1 系统架构2.2 设计优势 3. 流程图3.1 C录制程序3.2 Python解析脚本 4. 数据结构说明4.1 CpuUsageData 结构体 5. C录制代码解析5.1 主要模块5.2 关键函数5.2.1 CpuUsageMonitor::Run()5.2.2 CpuUsageMonitor::ComputeCpuUsage(…

Python库matplotlib之五

Python库matplotlib之五 小部件(widget)RangeSlider构造器APIs应用实列 TextBox构造器APIs应用实列 小部件(widget) 小部件(widget)可与任何GUI后端一起工作。所有这些小部件都要求预定义一个Axes实例&#xff0c;并将其作为第一个参数传递。 Matplotlib不会试图布局这些小部件…

【数学分析笔记】第4章第1节 微分和导数(1)

4. 微分 4.1 微分和导数 考虑一个函数 y f ( x ) yf(x) yf(x)&#xff0c;当 x x x做一些微小的变动&#xff0c;函数值也会有微小的变动&#xff0c;比如&#xff1a; x → x △ x x\to x\bigtriangleup x x→x△x&#xff0c;则 f ( x ) → f ( x △ x ) f(x)\to f(x\bi…

足球青训俱乐部管理:Spring Boot技术驱动

摘 要 随着社会经济的快速发展&#xff0c;人们对足球俱乐部的需求日益增加&#xff0c;加快了足球健身俱乐部的发展&#xff0c;足球俱乐部管理工作日益繁忙&#xff0c;传统的管理方式已经无法满足足球俱乐部管理需求&#xff0c;因此&#xff0c;为了提高足球俱乐部管理效率…

数据结构——“AVL树”的四种数据旋转的方法

因为上次普通的二叉搜索树在极端情况下极容易造成我们的链式结构&#xff08;这会导致我们查询的时间复杂度变为O(n)&#xff09;&#xff0c;然而AVL树就很好的解决了这一问题&#xff08;归功于四种旋转的方法&#xff09;&#xff0c;它让我们的树的查询的时间复杂度变得接近…

TIM(Timer)定时器的原理

一、介绍 硬件定时器的工作原理基于时钟信号源提供稳定的时钟信号作为计时器的基准。计数器从预设值开始计数&#xff0c;每当时钟信号到达时计数器递增。当计数器达到预设值时&#xff0c;定时器会触发一个中断信号通知中断控制器处理相应的中断服务程序。在中断服务程序中&a…

无人化焦炉四大车系统 武汉正向科技 工业机车无人远程控制系统

焦炉四大车无人化系统介绍 采用格雷母线光编码尺双冗余定位技术&#xff0c;炉门视觉定位自学习技术&#xff0c;wifi5G无线通讯技术&#xff0c;激光雷达安全识别技术&#xff0c;焦化智慧调度&#xff0c;手机APP监控功能。 焦炉四大车无人化系统功能 该系统能自动生成生产…

遥感图像垃圾处理场分割,北京地区高分2图像,3500张图像,共2GB,分割为背景,空地,垃圾,垃圾处理设施四类

遥感图像垃圾处理场分割&#xff0c;北京地区高分2图像&#xff0c;3500张图像&#xff0c;共2GB&#xff0c;分割为背景&#xff0c;空地&#xff0c;垃圾&#xff0c;垃圾处理设施四类 遥感图像垃圾处理场分割数据集 规模 图像数量&#xff1a;3500张数据量&#xff1a;2G…

黑科技!Llama 3.2多模态AI震撼发布

黑科技&#xff01;Llama 3.2多模态AI震撼发布 Meta发布Llama 3.2模型&#x1f680;&#xff0c;引领AI新潮流&#xff01;它能处理文字、图片、视频&#x1f4f8;&#xff0c;满足不同需求&#xff0c;性能媲美大牌选手✨。一键启动包已准备好&#xff0c;让你轻松体验AI的魔…

模版and初识vector

一、引言 在C语言中&#xff0c;不论是数组&#xff0c;还是结构体定义的数组&#xff0c;功能都比较欠缺&#xff0c;不是单纯的添加几个变量就能够解决的。缺少增删查改的功能&#xff0c;为了解决这个问题&#xff0c;C决定填上C语言这个坑&#xff0c;但是填过坑的人都知道…

秋招突击——算法练习——复习{双指针:移动零、盛最多的水、三数之和}——新作{接雨水}

文章目录 引言复习移动零盛最多的水三数之和 新作接雨水个人实现参考实现 总结 引言 这段时间还是很迷茫的&#xff0c;秋招到了一个阶段&#xff0c;但是收获并不是很多&#xff0c;基本上都在泡池子&#xff0c;没有意向。也就没有在坚持刷题&#xff0c;只是整理一些专门的…

Arduino UNO R3自学笔记15 之 Arduino如何驱动数码管?

注意&#xff1a;学习和写作过程中&#xff0c;部分资料搜集于互联网&#xff0c;如有侵权请联系删除。 前言&#xff1a;学习使用数码管。 1.数码管介绍 数码管的一种是半导体发光器件&#xff0c;数码管可分为七段数码管和八段数码管&#xff0c;区别在于八段数码管比七段数…

【数据结构】图论基础

文章目录 图的概念图的基本概念图的类型图的表示方法 图的相关基本概念1. 路径&#xff08;Path&#xff09;2. 连通性&#xff08;Connectivity&#xff09;3. 图的度&#xff08;Degree&#xff09;4. 子图&#xff08;Subgraph&#xff09;5. 生成树&#xff08;Spanning Tr…