操作系统安全:Windows与Linux的安全标识符,身份鉴别和访问控制

「作者简介」:2022年北京冬奥会中国代表队,CSDN Top100,学习更多干货,请关注专栏《网络安全自学教程》

在这里插入图片描述

操作系统有4个安全目标,也就是说想要保证操作系统的安全,就必须实现这4个需求:

  1. 标识系统中的用户和进行身份鉴别。
  2. 依据系统安全策略对用户的操作进行访问控制,防止用户和外来入侵者对计算机资源的非法访问。
  3. 审计系统运行的安全性。
  4. 保证系统自身的安全性和完整性。

标识与鉴别就是用来实现这些需求的安全机制之一。

这一章节我们需要知道系统用什么标识用户,怎么验证用户身份,怎么做访问控制。

标识与鉴别

  • 1、Windows系统标识
    • 1.1、安全标识符
  • 2、Windows身份鉴别
    • 2.1、本地鉴别
    • 2.2、远程鉴别
  • 3、Windows访问控制
  • 4、Linux系统标识
  • 5、Linux 身份鉴别
  • 6、Linux访问控制

1、Windows系统标识

为了保证系统安全,Windows从操作和被操作的角度,将系统分为主体和客体两个部分

「主体」是指主动发起操作的实体,比如用户账户、计算机以及用户或计算机运行的服务等。

  • 账户:登录操作系统使用的用户或账号。
  • 计算机:系统调用底层资源使用的特殊服务。
  • 服务:本质是进程,服务本身跟用户没有直接交互,

「客体」是被操作的对象,Windows的安全客体有文件、目录、数据等。

1.1、安全标识符

Windows用SID来标识安全主体。
「安全标识符」(Security Identifiers,SID)是一串标识用户、组和计算机账户的唯一号码。

cmd中使用 whoami /all 命令,可以查看用户和用户组的SID。

在这里插入图片描述

格式解析:S-1-5-21-1300873792-771181552-3550813123-1001

  • S:标识这个字符串时SID。
  • 1:标识SID的版本号。
  • 5:标识颁发机构。
  • 21-1300873792-771181552-3550813123:标识子颁发机构。
  • 1001:相对标识符。500和1000表示管理员。

系统在生成SID时,会始终保持「唯一」,不会生成两个同样的SID或者重复使用已删除用户的SID。

2、Windows身份鉴别

Windows使用 SAM 管理用户信息,在用户登录时,用来识别用户身份。

SAM (Security Accounts Manager)是「安全账户管理数据库」,保存加密后的密码hash值。 SAM 本质上是一个数据库类型的文件,保存在 C:\Windows\System32\config\ 目录下。

在这里插入图片描述

2.1、本地鉴别

本地登录时,由管理用户登录的winlogon.exe进程显示登录界面,将用户输入的明文密码「发送」给负责本地安全登录的lsass.exe进程处理。

lsass.exe使用身份认证协议NTML hash「加密」密码,拿加密后的结果去 SAM 数据库比较,相同就认证成功,登录;不同就认证失败。

2.2、远程鉴别

通过网络远程登录时,Windows使用远程登录协议来鉴别用户身份,远程登录协议有四种:SMB、LM、NTLM、Kerberos。

SMB(Server Message Block)是服务器消息块协议,早期用来远程登录Windows系统,因为口令是明文传输的,很不安全,已经废弃不用了。

LM(LAN Manager)局域网管理器,替代SMB用来远程登录Windows系统的协议,比如Windows NT 和 Windows 95。LM用DES算法加密,强度不高,现在也弃用了。

NTLM(NT LAN Manager)NT 局域网管理器,替代LM用来远程登录Windows系统的协议,是目前的「主流协议」。Windows Vista 和 Windows 2008 开始,默认禁用LM hash,只存储NTLM hash。

NTLM加密分为三步:NTLM Hash =md4(unicode(hex(password)))

  1. 先把明文密码转成16进制。
  2. 在把16进制字符串转成Unicode编码。
  3. 最后把Unicode编码的16进制字符串用MD4单向加密,生成 NTLM hash。

Kerberos 是身份验证协议,常用在分布式网络中,比如域控。

3、Windows访问控制

Windows用访问令牌(Access Token)做访问控制。

用户通过身份鉴别登录成功后,系统会生成一个「访问令牌」,用户运行的每个进程都会携带这个访问令牌的「副本」,当安全主体与进程交互时,就通过访问令牌来验证安全主体是否有「访问权限」

访问令牌是类似数组的一串数据,包含SID和权限列表等信息,详细内容如下:

  • 用户的安全标示符SID
  • 用户属组的SID
  • 标识当前登录会话的SID
  • 用户或用户组的权限列表
  • 所有者SID
  • 主要组的SID
  • 访问控制列表
  • 访问令牌的来源
  • 令牌是授权令牌还是模拟令牌
  • 限制SID的可选列表
  • 当前模拟级别
  • 其他统计信息

访问令牌分为授权令牌和模拟令牌两种:

  1. 授权令牌:也叫主令牌,用于交互式登录(比如本地登录、用户桌面)。
  2. 模拟令牌:用于非交互式登录(比如 net use 访问共享文件)。

访问令牌只有在系统重启或关机时才会清除,用户注销时,那么访问令牌就会由授权令牌变成「模拟令牌」,始终存放在进程里面,我们复制进程中的访问令牌,就能窃取令牌,实现提权。如果域管理账号登录这台电脑后没有重启,被我们窃取令牌,就能控制整个域。

访问令牌里有一个字段是「访问控制列表」。根据访问控制列表决定谁可以访问什么资源、可以执行什么操作。

访问控制列表(Access Control List,ACL)用来管理和控制访问权限,列表里有很多访问控制条目(ACEs),每个条目都定义了一个用户、用户组或角色相关联的权限,每个权限都指定了对资源的特定操作,比如读取、写入、执行、删除。

ACL分为DACL和SACL两种:

  1. DACL(Discretionary Access Control List)是自由访问控制列表,用来设定谁可以访问什么资源、做什么操作。
  2. SACL(System Access Control List)是系统访问控制列表,用来记录对资源的访问和操作事件,以便追踪和分析系统的安全情况。

4、Linux系统标识

Linux使用 UID 来标识安全主体。

UID 是一个0~65535之间的整数,用来唯一标识用户身份,用户身份有三种。

  • 超级用户(UID=0):超级管理员,默认只有root,拥有最高权限,完全控制系统。
  • 内置用户(UID=1~499):系统保留的特殊服务,用来运行系统服务或进程。
  • 普通用户(UID=500~65535):权限受限,usermod -u 0 username 可以通过修改用户UID的方式将普通用户提升为管理员权限,但这并不是完整的root权限,需要做其他配置和授权才能完全控制系统。

id 用户名 可以查看指定用户的UID。
cat /etc/passwd | grep :0 查看具有管理员权限的用户。

在这里插入图片描述

UID是单向自增的,我们可以使用 usermod -u [新UID] 用户名 修改用户的UID,但不能重复使用,即使那个UID已经没人用了。

在这里插入图片描述

5、Linux 身份鉴别

Linux使用文件来管理用户信息,也就是把用户信息保存在一个文件里,毕竟Linux的核心理念就是"一切结文件"。

Linux的用户账号保存在 /etc/passwd,密码加密后保存在/etc/shadow

cat /etc/passwd 查看用户账号信息,这个文件对所有用户可读,一行对应一个用户,用冒号分割字段。

在这里插入图片描述
字段从左到右依次是:

  1. root:用户名,大小写字母或数字组成,不超过位。
  2. x:密码,加密后放到/etc/shadow
  3. 0:用户标识(UID)。
  4. 0:用户组标识(GID)。
  5. root:注释,用来描述用户信息。
  6. /root:主目录(用户家目录),用户登录后默认进入主目录。
  7. /bini/bash:登录的shell。

cat /etc/shadow 查看用户密码信息,字段从左到右依次是:

  1. 用户名,与/etc/passwd一 一对应。
  2. 密码,使用DES+MD5加密后保存,如果为空,登录就不需要密码。
  3. 最后一次修改时间,距离1970年1月1日有多少天。
  4. 最小时间间隔,两次修改密码之间的最小天数,0表示没有限制。
  5. 最大时间间隔,密码有效期,过期后需要修改密码,空或99999表示没有限制。
  6. 警告时间,密码过期提前多少天提醒,0表示没有限制。
  7. 账号闲置时间,密码过期后,仍然可以使用该密码登录的天数,空字段表示不强制过期。
  8. 失效时间,失效后锁定用户,禁止登录。
  9. 标志,一般不用。

扩展:设置/修改密码时,密码加密后,先由pwunconv将加密后的密码写到/etc/passwd,再由pwconv从/etc/passwd转换到/etc/shadow中。

6、Linux访问控制

Linux用 UGO 管理机制做访问控制。

UGO 是User、Group、0ther首字母的简写,它把文件的操作者分为三种

  1. U:文件属主权限
  2. G:文件属组权限
  3. O:其他组用户的权限

每种操作者拥有三种权限:读(r)、写(w)、执行(x)。

三种操作者的9种权限共同组成一个文件的完整权限。

ls 可以查看文件的属性,属性左边第二列显示文件的权限

在这里插入图片描述

在权限lrwxr-xr-x中,从左到右;

  • 第一位,表示文件类型
  • 第二三四位,表示属主的权限,这里的rwx表示文件属主有读写执行权限。
  • 第伍六七位,表示属组的权限,这里的r-x表示文件属组有读和执行权限。
  • 第八九十位,表示其他组用户权限,这里的r-x表示其他组对文件有读和执行权限。

权限的设置,可以参考我的另一篇文章 Linux修改文件权限

扩展:目录的权限与文件的权限含义有些不同:r 是可以查看目录中的内容,w 是可以增删目录中的内容,x 是可以进入目录。

除了rwx这三个常用权限位,Linux还有几个「特殊权限」 s(suid)、s (sgit)、t(Sticky Bit)。
比如 passwd 文件属主的第三个权限是s(suid),这表示其他用户在执行该文件时具有属主的权限。这样的好处是,普通用户没有修改shadow文件的权限,当普通用户用执行passwd命令修改密码时,具有了属主root的权限,就能修改shadow文件了。sgid也是同样的效果。

:~$ ls -l /usr/bin/passwd 
-rwsr-xr-x 1 root root  /usr/bin/passwd
:~$ ls -l /etc/shadow
-rw-r----- 1 root shadow  /etc/shadow

新建文件或目录的默认权限,由系统掩码umask决定。「掩码」的相关资料,可以参考我的另一篇文章 Linux修改文件默认访问权限

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

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

相关文章

系统安全与应用(1)

目录 1、账号安全管理 (1)禁止程序用户登录 (2)锁定禁用长期不使用的用户 (3)删除无用的账号 (4)禁止账号和密码的修改 2、密码安全管理 设置密码有效期 1)针对已…

一句话或一张图讲清楚系列之——ISERDESE2的原理

主要参考: https://blog.csdn.net/weixin_50810761/article/details/137383681 xilinx原语详解及仿真——ISERDESE2 作者:电路_fpga https://blog.csdn.net/weixin_45372778/article/details/122036112 Xilinx ISERDESE2应用笔记及仿真实操 作者&#x…

K8S Prometheus Springboot Actuator ServiceMonitor配置

用于展示Springboot Actuator监控内容 引入Springboot相关的监控配置包 Springboot pom配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><depende…

K8s: Ingress对象, 创建Ingress控制器, 创建Ingress资源并暴露服务

Ingress对象 1 &#xff09;概述 Ingress 是对集群中服务的外部访问进行管理的 API 对象&#xff0c;典型的访问方式是 HTTPIngress-nginx 本质是网关&#xff0c;当你请求 abc.com/service/a, Ingress 就把对应的地址转发给你&#xff0c;底层运行了一个 nginx但 K8s 为什么不…

modelsim波形高度异常,值为X

一、问题 波形高度异常&#xff0c;忽高忽低&#xff0c;正常波形高电平和低电平是统一高度的 timescale 1ns/1nsmodule key_test_tb();//parameter define parameter CLK_PERIOD 20; parameter CNT_MAX 25d25; //仅用于仿真,对应 500nsreg sys_clk; //周期 20ns reg d; wir…

ffmpeg初体验

一&#xff1a;安装 sudo yum install epel-release -y sudo yum update -ysudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpmyum -y install …

Vs Code npm install 报错解决方法

用的人家的前端框架发现是封装过的&#xff0c;要修改人家前端的话还得把前端源码放在Vs Code 上运行&#xff0c;后端放在IDEA上运行&#xff0c;然后前后端并行开发&#xff0c;在配置前端环境时遇到&#xff1a; npm install 这个的原因是我把node下载到D盘了权限不够框框爆…

android学习笔记(五)-MVP模式

1、MVP模式demo的实现&#xff0c;效果下&#xff1a; 2、创建一个Fruit类&#xff1a; package com.example.listview; //Fruit类就是Model&#xff0c;表示应用程序中的数据对象。 public class Fruit {private int imageId;private String name;private String price;publi…

代码随想录算法训练营Day6 | 242.有效的字母异位词 ●349. 两个数组的交集 ● 202. 快乐数● 1. 两数之和

基础&#xff1a; 1.哈希表是根据关键值进行直接访问的数据结构&#xff0c;时间复杂度是O(1)&#xff0c;也就是通过数组的索引下标&#xff0c;直接访问数组中的元素哈希表的作用就是用来快速判断一个元素是否出现在集合里。 2.常见的哈希结构&#xff1a; 数组set &#…

计算机视觉 | 交通信号灯状态的检测和识别

Hi&#xff0c;大家好&#xff0c;我是半亩花海。本项目旨在使用计算机视觉技术检测交通信号灯的状态&#xff0c;主要针对红色和绿色信号灯的识别。通过分析输入图像中的像素颜色信息&#xff0c;利用OpenCV库实现对信号灯状态的检测和识别。 目录 一、项目背景 二、项目功能…

CalcPad(2) 单位设置和绘制图表

CalcPad(2) 单位设置和绘制图表 Hi uu们&#xff0c;CalcPad用的还好吗&#xff1f;有发现一些问题吗&#xff1f; 在我的使用中&#xff0c;经常需要指定一些计算结果的符号&#xff0c;比如说我希望ADC最小分辨率的计算结果是以uV展示&#xff0c;那我们该怎么操作呢&#…

DB索引B+树SQL优化

数据库的索引就像一本书的目录&#xff0c;查数据快人一步&#xff0c;快速定位&#xff0c;精准打击&#xff01; 什么是数据库的索引&#xff1f; 官方介绍索引是帮助MySQL高效获取数据的数据结构。更通俗的说&#xff0c;数据库索引好比是一本书前面的目录&#xff0c;能加…

入坑 Node.js 1

原文&#xff1a;https://blog.iyatt.com/?p14717 前言 前面刚刚对 Spring Boot 有了个概念&#xff0c;再来学学 Node.js&#xff0c;顺便当学 JavaScript&#xff0c;为后面入前端做准备。 环境 Node.js 20.12.2 官方 API 文档&#xff1a;https://nodejs.org/docs/lat…

IBM SPSS Statistics for Mac:强大的数据分析软件

IBM SPSS Statistics for Mac是一款功能强大的数据分析软件&#xff0c;专为Mac用户设计&#xff0c;提供了一系列专业的统计分析和数据管理功能。无论是科研人员、数据分析师还是学生&#xff0c;都能从中获得高效、准确的数据分析支持。 IBM SPSS Statistics for Mac v27.0.1…

day_8题解

利用最大公约数求最小公倍数 #include<iostream> using namespace std;int gcd(int a,int b) {return b?gcd(b,a%b):a; }int main() {long long a,b;cin>>a>>b;long long ansgcd(a,b);cout<<(a*b)/ans<<endl;return 0; }排序遍历&#xff0c;记…

支持中文繁体,支持同时配置并启用飞书和Lark认证,JumpServer堡垒机v3.10.8 LTS版本发布

2024年4月22日&#xff0c;JumpServer开源堡垒机正式发布v3.10.8 LTS版本。JumpServer开源项目组将对v3.10 LTS版本提供长期的支持和优化&#xff0c;并定期迭代发布小版本。欢迎广大社区用户升级至v3.10 LTS最新版本&#xff0c;以获得更佳的使用体验。 在v3.10.8 LTS版本中&…

一款支持串口、网口自定义协议的调试软件

ComMax通讯调试软件是一款支持自定义串口&#xff0c;网口通讯协议的调试软件&#xff0c;用户可以根据需要&#xff0c;自定义协议包&#xff0c;然后根据接受的数据选择要发送的数据包。是一款强大、好用的调试软件。 点击下载 提取码&#xff1a;wmfg 不用安装 下载解压即…

《史铁生》-随记

史铁生的文案进一段总是刷到&#xff0c;文字在某些时候真的是一种无形的动力。小时候学过的书&#xff0c;长大了才会更加理解其中的蕴意。如看到的文字所说&#xff0c;教育具有长期性和滞后性&#xff0c;就像一个闭环&#xff0c;多年后你有一个瞬间突然意识到什么&#xf…

怎么通过微信小程序实现远程控制包间内的电器

怎么通过微信小程序实现远程控制包间内的电器呢&#xff1f; 本文描述了使用微信小程序调用HTTP接口&#xff0c;实现控制包间内的电器&#xff0c;专用的包间控制器&#xff0c;可独立控制包间内的全部电器&#xff0c;包括空调。 可选用产品&#xff1a;可根据实际场景需求&…

ChatGPT在线网页版(与GPT Plus会员完全一致)

ChatGPT镜像 今天在知乎看到一个问题&#xff1a;“平民不参与内测的话没有账号还有机会使用ChatGPT吗&#xff1f;” 从去年GPT大火到现在&#xff0c;关于GPT的消息铺天盖地&#xff0c;真要有心想要去用&#xff0c;途径很多&#xff0c;别的不说&#xff0c;国内GPT的镜像…