一、Windows网络测试工具
CMD(命令提示符)中,ping和tracert是两个非常有用的网络诊断工具
1.1.ping命令
ping
命令是Windows和其他操作系统中用于测试主机之间网络连接是否可达的基本命令行工具。它通过发送ICMP(Internet Control Message Protocol)回显请求消息到目标主机,并等待回显响应来工作。
- 基本用法:ping 目标主机名或IP地址
- -t 参数可以让ping命令连续发送回显请求,直到手动停止或超时
- -n 参数后跟一个数字,表示发送回显请求的次数
- -w 参数后跟超时时间(毫秒),表示等待回显响应时间
- -l 参数后跟数据包大小(字节),表示发送的数据包大小
- -r 参数表示使用路由器的回显请求,可以绕过TTL(Time to Live)限制
1.2.tracert命令
tracert
命令(在某些操作系统中可能被称为traceroute
)是一个网络诊断工具,用于显示数据包从你的计算机到目标主机所经过的路由路径。这个命令可以帮助识别网络中的瓶颈、路由问题或确定数据包丢失的位置。
- 基本用法:tracert 目标主机名或IP地址
- -h 参数后跟一个数字,表示最大跳数限制,即数据包在网络中可以经过的最大路由器数量
- -d 参数表示不尝试将IP地址解析为主机名,这样可以加快命令的执行速度
- -i 参数后跟接口的索引号,表示通过特定的网络接口发送数据包
TTL是“Time to Live”的缩写,意为“生存时间”。在网络技术中,TTL是一个与IP数据包相关的重要概念,它用来表示数据包在网络中可以经过的最大路由器数量。TTL的值随着数据包经过的每个路由器而递减,当TTL值减到0时,数据包将被丢弃,不再被转发。
- Windows系统的默认TTL值通常是128
- Linux系统的默认TTL值可能是64,但这个值可以通过修改/proc/sys/net/ipv4/ip_default_ttl文件来改变
- macOS的默认TTL值也是64
- 传统的Unix系统,如FreeBSD和Solaris,通常使用64作为默认TTL值
二、IP实验内容
2.1 实验一
首先记住自己笔记本的本地连接网卡自动获取所有的网络参数,并手工配置IP地址(同自动获取),要求手工配置完毕后依然可以上网。注意:实验完后再改为自动获取状态!
首先,打开cmd,使用命令ipconfig,记录当前的网络参数,或者直接找到网络,右键查看状态
这样,我们就获取到了IPv4地址,子网掩码,默认网关
首先我们来到设置,更改适配器
选择我们的网络,右键选择属性
找到IPv4协议,再次选择属性
这时我们得到了以上页面,我们可以开始手动配置IP了
将我们之前得到的信息填入,如果DNS在之前没有显示,可以使用ipconfig /all来显示全部信息
注意:此时可能会出现“缺东西”的现象,如配置完后可能右键显示详细信息,发现缺少默认网关或DNS等。这都会导致一个后果——无法正常上网
无法正常上网一般是两个原因导致:缺少网关和缺少缺少DNS,即“无法访问外部网络”和“无法通过域名访问网站”。对于此类错误的排查,我们可以使用ping命令
ping 172.16.130.128 //ping 本地IP地址----缺少网关通常是因为本地IP地址分配错误,导致不在同一网段无法连通,自然就无法上网,这一步就是检查IP配置是否正确
----------------------------------------------------------------
ping 223.5.5.5 //ping 任意公网地址----这一步是检测是否“能出去”,例如访问阿里云的地址,如果能ping通,其实说明这个实验是成功的
随便访问一个网站,可以上网,没问题。实验结束,记得将IP改回自动获取状态
2.2 实验二
为两台虚拟主机配置IP地址,验证IP地址是否生效,验证同一网段的两台主机可以互通,不同网段的主机不能互通
我选择了win10和win server来进行实验,在正式开始实验前,可以先使用ping命令测试本机循环,测试一下IP地址是否生效
这样就说明IP地址已生效,另一个一样的,不展示了。接下来我们正式开始验证同一网段的两台主机是否可以互通
用一台主机ping另一台主机的IP地址
ping通了!本地连接正常,无网络故障,这说明在同一网段的两台主机可以互通
现在我们来看一下另一种情况,我修改了win server的子网掩码,使其和win10不处于同一网段,之后再ping,发现显示超时,实验成功,说明不在同一网段的两台主机不可互通
三、用户与组管理
3.1 用户与账户概述
不同的用户身份拥有不同的权限,每个用户包含一个名称和一个密码,用户账户拥有唯一的安全标识
Windows系统中,每个用户账户都有一个独特的安全标识符(SID,Security Identifier)它在系统内部用于控制对各种资源的访问权限。我们可以通过不同的方法查看用户的SID:
1.使用命令提示符(CMD)
- 这里的CMD就是我们常用的命令提示符(类似于终端的那个窗口),输入命令来查看当前登陆用户的SID
whoami /user
- 如果需要查看特定用户的SID,可以使用命令
wmic useraccount where name='用户名' get sid
//用户名替换为实际的windows账户名
2.使用Windows PowerShell
- PowerShell是由微软开发的一个命令行shell以及脚本环境,用于系统管理和配置管理。它提供了一组命令(称为cmdlets),这些命令以.NET框架为基础,允许用户执行管理任务,如自动化脚本、配置系统设置、管理网络服务等
- 打开PowerShell(可以在菜单栏搜索)
- 输入命令来查看所有用户的SID
Get-WmiObject Win32_UserAccount | Select-Object Name,SID
- 这将使用WMI(Windows Management Instrumentation)获取所有用户账户的名称和SID
- 如果只需要查看特定用户的SID,可以加上特定用户名
Get-WmiObject Win32_UserAccount | Where-Object {$_.Name -eq '⽤户名'} | Select-Object SID
3.PowerShell和命令提示符(CMD)差异
- PowerShell和CMD是Windows环境中两种常用的命令行界面,它们各自具有特殊的特点和功能。虽然在某些基础命令上有重叠,但它们的设计目的、能力均有不同
-
CMD 的扩展性相对有限,主要依赖外部脚本或程序来扩展其功能。PowerShell 可以⽆缝集成.NET框架,允许直接在脚本中创建和操作.NET对象,提供了强⼤的扩展性和灵活性。此外,PowerShell模块和第三⽅库极⼤地扩展了其功能。
-
CMD 的错误处理相对简单,主要依赖错误代码。PowerShell 提供了复杂的异常处理机制,可以捕获、处理和传递错误,与现代编程语⾔中的错误处理类似。
-
CMD 虽然在很多系统和环境中仍被⼴泛使⽤,但微软已明确表示不会在CMD中引⼊新功能,其开发重⼼已转向PowerShell。PowerShell 被视为未来的⽅向,得到了微软的积极开发和⽀持,同时拥有⼀个活跃的社区和⼤量的在线资源。
-
CMD(Command Prompt)是⼀个基于⽂本的命令⾏界⾯,主要⽤于执⾏简单的命令和批处理脚本。它继承⾃早期的MS-DOS系统。PowerShell 是⼀个跨平台的任务⾃动化和配置管理框架,包括⼀个命令⾏壳界⾯和脚本语⾔。它是为了解决更复杂的系统管理任务⽽设计的,集成了深层的.NET框架⽀持。
-
CMD 提供的命令相对简单,主要⽤于⽂件操作、系统任务和简单的配置更改。它的命令和语法较为直观,易于学习。PowerShell 提供了⼀个全⾯的脚本语⾔,⽀持复杂的逻辑、流程控制、函数等。它可以直接调⽤.NET库的对象和⽅法,能够执⾏复杂的数据操作和系统管理任务。
-
CMD 使⽤的是传统的命令⾏语法,如 dir、copy、del 等。PowerShell 使⽤了基于对象的命令(称为cmdlet),如 Get-ChildItem、Copy-Item、RemoveItem 等。这些cmdlet 输出的是对象,可以通过管道传递给其他cmdlet进⾏进⼀步操作。
CMD和PowerShell虽然都是Windows命令⾏界⾯,但它们与Windows内核的交互⽅式存在根本区别, 主要由它们的架构和设计决定
4.使用注册表编辑器(regedit)
- 打开注册表编辑器,导航到以下路径
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
- 在ProfileList下,有多个以SID命名的子健。点击每个子键,查看ProfileImagePath条目,它显示了与该SID关联的用户的配置文件路径,通常包含用户名称
- 注意:使用CMD或PowerShell查看SID通常更加直接切易于操作;注册表更加繁琐,且直接修改注册表有风险,需要谨慎处理
5. SID结构
- S:这是SID的前缀,表示这是一个安全标识符(Security Identifier)
- 1:这是SID版本号,目前,Windows的版本号始终为1
- 5:这是SID的“领域”标识符(也称为权威部分)。数字5代表NT权威机构,这是⼤多数Windows系统使⽤的标准
-
21-1832910653-3277107840-89476188:这是域或本地计算机的唯⼀标识符,称为⼦权威部分或者域标识符。这⼀部分的具体数字代表创建该SID的特定域或本地计算机。每个域或计算机在创建时,系统会⽣成这样⼀个独特的数字序列,以确保全局的唯⼀性
- 1002:这是相对标识符(Relative Identifier, RID)。这是分配给具体⽤户、组或其他安全主体的唯⼀编号。RID⽤于区分同⼀域/计算机内的不同⽤户或组。例如,常⻅的RID有:
- 500:表示域的管理员账户
- 501:表示来宾账户
- 1000以上的数字通常表示普通用户或账户
- 域标识符的作用:确保了在全网络或多个系统中的唯一性;保证了安全性;方便管理
3.2 用户管理
右键选择各种权限,选择属性,我们可以看到详细信息,这里的用户表示“哪些用户拥有关闭系统的权限”即哪些用户可以关机,在这里我们还可以添加或删除用户
除此之外,还可以进行很多设置,如在账户权限--密码策略中,我们可以进行对用户密码的约束,例如密码强度约束,强制更新密码时间等等
简而言之,在服务管理器中,我们可以:
- 创建用户
- 为用户重置密码
- 重命名用户
- 启用、禁用用户账户
- 删除用户账户
- 为用户设置权限
- ……
了解了本地安全策略后,我们还需要了解一个很重要的编辑器———本地组策略
- 可以直接搜索gpedit.msc打开
- 可以在CMD或powershell中输入gpedit.msc打开
- 可以通过文件资源管理器在地址栏中输入gpedit.msc打开
- 注意:使用家庭版的win系统是没有gpedit.msc的,但是可以使用一些批处理脚本自动安装在Windows系统中找到特定更新包,此处不做展示
gpedit.msc名为本地组策略编辑器,与本地安全策略几字之差,但用处大有不同
在此之前,我们先来了解一下用户和组
在计算机管理中,我们可以看到,在本地用户和组中,计算机已经内置了一些默认的用户。在Windows系统中,服务可以运⾏在不同的账户下,这些账户被称为“服务账户”或“内置账户”。这些账户是系统内置的,⽤于提供特定的权限和限制,以确保服务可以安全有效地运⾏。
系统会默认有几个初始用户,Administrator是计算机的内置管理员账户,拥有对计算机进行管理的完全权限 ;DefaultAccount通常是一个特殊的用户账户,可能用于特定的系统任务或服务;Guest是一个受限的内置账户,通常用于允许未经授权的用户访问计算机,但限制了对系统资源的访问,Guest一开始是默认禁用的;WDAGUtilityAccount是Windows Defender应用程序控制(WDAG)使用的账户,用于隔离应用程序的运行环境
如果我们想创建新用户,可以右键选择新用户进行添加,注意设置密码时需要符合系统对密码的强度要求
除了我们可以一眼看到的用户外,还有一些内置用户:
- Local System Account(本地系统账户):这是⼀个拥有⼴泛权限的账户,可以访问系统上⼏乎所有资源。它⽐管理员账户拥有更⾼的权限。通常,只有核⼼系统服务才运⾏在此账户下,因为它的权限⾮常⾼,可能带来安全⻛险
- Local Service Account(本地服务账户):这个账户具有⽐Local System更低的权限,⽤于运⾏不需要⼴泛本地权限的服务。它具有匿名⽹络身份验证能⼒,但不能访问⽹络资源
- Network Service Account(网络服务账户):这个账户⽤于运⾏需要访问⽹络资源但不需要⼴泛本地权限的服务。它具有较低的权限,但能够以计算机的身份在⽹络上进⾏认证
- Virtual Account(虚拟账户):虚拟账户是在Windows 7和Windows Server 2008 R2中引入的。服务可以运⾏在⼀个特定的虚拟账户下,该账户⾃动具有服务所需的最⼩权限。每个服务都有其独⽴的虚拟账户,⽆需密码管理
- Managed Service Accounts (MSA) 和 Group Managed Service Accounts (gMSA) :这些账户为服务提供⾃动密码管理和更简化的服务主体名称(SPN)管理。MSA适⽤于单⼀系统,⽽gMSA可以在多个系统上使⽤,适合在多服务器环境中提供服务
3.3 用户增删改查
最简单的方法就是使用计算机管理器:
- 搜索计算机管理并打开
- 展开系统工具部分,然后选择本地用户和组
- 点击用户或组,就可以在这里看到所有的用户账户和组,包括内置的Administrator、Guest等
- 例如此时,我就可以对我刚刚新建的text用户进行操作,如删除修改等
第二种方法,我们可以搜素运行,再用运行打开mmc
下拉文件,点击添加/删除管理员,选中本地用户和组,点击添加,最后选中本地计算机,确定
除此之外,我们还可以使用命令提示符来添加
例如使用net user命令,可以查看本地所有用户账户,包括内置用户
注意:net user命令只能查看而不能修改,若想要查看特定用户详细信息,可以使用
net user 账户名
例如:
net user Guest
还有一种方法,就是使用我们之前提到的PowerShell
使用Get-LocalUser命令列出所有本地账户
查看特定用户的详细信息使用: Get-LocalUser -Name "账户名"
如果你想查看运行特定服务的账户,可以通过服务管理界面或使用命令行工具
- 在开始菜单搜索服务打开它
- 在服务列表中右键选择任意服务并选择属性
- 在登陆标签中,就可以看到该服务使用的账户
3.4 增加用户
方法一:使用计算机管理器
方法二:使用PowerShell
一旦用户创建成功,就可以进一步配置用户属性,例如,要使密码永不过期,使用set
wmic useraccount where name='text2' set PasswordExpires=false
方法三:使用Active Directory 用户和计算机(域环境下)
如果您的服务器是作为域控制器配置的,或者您需要在域环境中创建⽤户,可以使⽤“Active Directory⽤户和计算机”管理⼯具
3.5 修改用户属性
对于本地用户可以使用计算机管理工具
通过命令提示符也可以修改用户属性,尤其是密码
net user 用户名 新密码
PowerShell也提供了很多选项来修改用户属性
$user = Get-LocalUser -Name "exampleuser"
$user.FullName = "New Full Name"
$user.Description = "New Description"
$user | Set-LocalUser
3.6 删除用户
- 使用计算机管理器
- 使用命令提示符
- 使用PowerShell
3.7 组账户概述
在Windows操作系统中,组账户(Group Account)是一种特殊类型的用户账户,它代表一组用户,而不是单个用户。组账户可以用于简化权限和资源访问的管理,通过将权限分配给组,而不是单独的个体用户。
组账户类型:在Windows Server 2012 R2中,主要有两种类型的组账户:本地组和域组
简单来说,本地组是针对一台电脑的,而域组是针对很多电脑的,它们都可以用来决定谁可以做什么
需要手动添加的管理员组
- Administrators:拥有最高级权限。可以对系统进行全面控制,包括安装软件、更改系统设置、管理所有用户账户等
- Guests:通常权限非常限制,用于临时访问,无法更改系统设置或安装应用程序
- Power Users:有一些管理员权限,但少于Administrators,在较新版本的Windows中已基本弃用
- Users:标准用户权限,限制进行对系统关键部分的更改
动态包含成员的内置组
- Authenticated Users:包含所有已验证的用户账户,这意味着只要用户成功登陆,就会自动成为此组的成员
- Interactive Users:包含直接与系统交互的用户,通常指通过物理或远程桌面登陆的用户
- Network Users:通过网络访问系统资源的用户自动成为此组的成员
- Everyone:
组账户的作用
- 权限管理:通过将用户添加到具有特定权限的组中,可以简化权限管理过程。例如,将用户添加到“域管理员”组中,可以让这些用户在域中的所有计算机上拥有管理员权限
- 资源访问:可以控制组成员访问网络资源(如共享文件夹、打印机等)的权限
- 策略实施:组策略可以应用于特定的组,允许管理员为组内的所有用户统一配置安全策略和操作环境
管理组账户
- 创建和管理组:可以通过Active Directory用户和计算机(对于域组)
- 添加和移除成员:通过响应的管理工具,可以向组中添加或从组中移除用户。这些变更将自动应用到用户的权限设置中
- 组嵌套:组嵌套是将一个组作为另一个组的成员的做法。这可以用来创建复杂的权限层级和灵活的管理策略
如何访问组账户管理
- 对于本地组:打开“计算机管理”(compmgmt.msc)导航至 本地用户和组>组
- 对于域组:使用Active Directory用户和计算机(dsa.msc)来访问和管理域组
3.8 组账户增删改查
查看组账户:
- Administrators:具有完全且不受限制的访问权限,可以执行所有管理任务
- Users:标准用户账户,拥有执行基本任务的权限,但无法修改系统关键部分
- Guests:权限非常低,通常用于临时访问,不允许更改系统设置或安装软件
- Power Users:拥有比普通用户更多的权限,但少于管理员。可以运行旧版应用程序及其他任务,但不能修改系统关键设置
安全域监控相关组:
- Backup Operators:可以绕过文件系统权限以备份和恢复文件
- Cryptographic Operators:管理加密设置和加密服务
- Event log Readers:允许读取事件日志
- Performance Log Users:可以管理性能日志和警报
- Performance Monitor Users:允许查看系统性能计数器
网络和分布式操作系统:
- Network Configuration Operators:允许用户对网络配置进行更改
- Distributed COM Users:允许分布式组件对象模型(DCOM)应用程序通过网络通信
- Certificate Service DCOM Access:允许用户连接到证书服务使用DCOM
远程访问和服务组:
- Remote Desktop Users:允许⽤户通过远程桌⾯连接到服务器。
- Remote Management Users:允许⽤户远程管理服务器。
- WinRMRemoteWMIUsers__ :允许通过Windows远程管理服务进⾏WMI操作。
特殊功能和服务相关组:
- Hyper-V Administrators:允许管理Hyper-V和执⾏所有虚拟化任务。
- IIS_IUSRS:IIS服务的⽤户组,⽤于管理Internet信息服务。
- Print Operators:管理打印队列和控制打印服务器。
- Replicator:⽤于⽂件复制服务。
RDS(远程桌面服务)相关组:
# 添加成员到组
Add-ADGroupMember -Identity "GroupName" -Members "username"
# 从组中移除成员
Remove-ADGroupMember -Identity "GroupName" -Members "username" -Confirm:$false
# 修改组描述
Set-ADGroup -Identity "GroupName" -Description "New Description"
net localgroup GroupName UserName /add
net localgroup GroupName UserName /delete
net localgroup [组名] /delete
Remove-LocalGroup -Name "GroupName"
注意:删除⽤户组是⼀个敏感操作,可能会影响到依赖这个组进⾏权限管理的⽤户或服务。在删除任何组之前,确保此操作不会对系统安全或运⾏造成负⾯影响。考虑到可能的依赖性和权限问题,最好在进⾏此类更改前进⾏适当的审查和备份。
四、实操题:设置安全文件共享的访问权限
- 创建本地组有很多方式,可以通过计算机管理器创建,当然也可以通过CMD或PowerShell,这里演示通过计算机管理来创建本地组
- 打开计算机管理(运行compmgmt.msc)
- 在左侧导航栏中,展开“本地用户和组”,然后选择“组”
- 右键点击组,选择新建组
- 输入组名FinanceReports,可以为组添加描述,成功创建
- 在C盘上创建一个文件夹,命名为Financial Data
- 右键点击文件夹,选择属性,然后转到“安全”选项
- 点击“编辑”以修改权限,然后移除除“Administrators”和“System”之外的所有用户或组
- 点击“添加”,输入FinanceReports,然后点击“检查改名称”,无误后点击确定
- 为FinanceReports组选择适当的权限,如“修改”或“读取和执行”,点击应用、确定
中间可能会遇到一种情况:提示继承权限无法删除,这时可以选择高级设置,禁用继承再删除
3.配置共享权限:
- 在Financial Data文件夹的属性中,切换到“共享”选项
- 点击“高级共享”,勾选“共享次文件夹”,然后点击“权限”
- 确保Everyone组的权限被移除,只有FinanceReports组有读取或完全控制的权限
4.添加用户到组
- 返回到“计算机管理”的“本地用户和组”中的“组”
- 双击“FinanceReports”组,添加成员
- 输入需要访问财务数据的用户账户名,点击“检查名称”后应用并确定
5.测试配置的安全性:
- 使用财务部⻔员⼯的账户尝试访问“Financial Data”⽂件夹,确保可以正常访问
- 使⽤⾮财务部⻔员⼯的账户尝试访问,确认是否被拒绝