日志相关
Windows系统是否被重启的方法
方式一 systemifno
系统启动时间: 2021/7/7, 5:51:51
注意:此方法不可查看关机时间
方式二:通过事件查看器查看
Windows 日志 -> 应用程序中,ID为 1531 为开机记录
Windows 日志 -> 应用程序中,ID为 1532 为关机记录
方式三:通过事件查看器查看
Windows 日志 -> 系统中,ID为 6005,6006 为开关机记录
备注:6005表示开机,6006表示关机。
查看登录 IP
Windows 日志 -> 安全中,ID为 4648 可以查看登录 IP
常用事件 ID
# 审计目录服务访问
4934 - Active Directory 对象的属性被复制
4935 - 复制失败开始
4936 - 复制失败结束
5136 - 目录服务对象已修改
5137 - 目录服务对象已创建
5138 - 目录服务对象已删除
5139 - 目录服务对象已经移动
5141 - 目录服务对象已删除
4932 - 命名上下文的AD的副本同步已经开始
4933 - 命名上下文的AD的副本同步已经结束
# 审计登录事件
4634 - 帐户被注销
4647 - 用户发起注销
4624 - 帐户已成功登录
4625 - 帐户登录失败
4648 - 试图使用明确的凭证登录
4675 - SID被过滤
4649 - 发现重放攻击
4778 - 会话被重新连接到Window Station
4779 - 会话断开连接到Window Station
4800 - 工作站被锁定
4801 - 工作站被解锁
4802 - 屏幕保护程序启用
4803 - 屏幕保护程序被禁用
5378 - 所要求的凭证代表是政策所不允许的
5632 - 要求对无线网络进行验证
5633 - 要求对有线网络进行验证
# 审计对象访问
5140 - 网络共享对象被访问
4664 - 试图创建一个硬链接
4985 - 交易状态已经改变
5051 - 文件已被虚拟化
5031 - Windows防火墙服务阻止一个应用程序接收网络中的入站连接
4698 - 计划任务已创建
4699 - 计划任务已删除
4700 - 计划任务已启用
4701 - 计划任务已停用
4702 - 计划任务已更新
4657 - 注册表值被修改
5039 - 注册表项被虚拟化
4660 - 对象已删除
4663 - 试图访问一个对象
# 审计政策变化
4715 - 对象上的审计政策(SACL)已经更改
4719 - 系统审计政策已经更改
4902 - Per-user审核政策表已经创建
4906 - CrashOnAuditFail值已经变化
4907 - 对象的审计设置已经更改
4706 - 创建到域的新信任
4707 - 到域的信任已经删除
4713 - Kerberos政策已更改
4716 - 信任域信息已经修改
4717 - 系统安全访问授予帐户
4718 - 系统安全访问从帐户移除
4864 - 名字空间碰撞被删除
4865 - 信任森林信息条目已添加
4866 - 信任森林信息条目已删除
4867 - 信任森林信息条目已取消
4704 - 用户权限已分配
4705 - 用户权限已移除
4714 - 加密数据复原政策已取消
4944 - 当开启Windows Firewall时下列政策启用
4945 - 当开启Windows Firewall时列入一个规则
4946 - 对Windows防火墙例外列表进行了修改,添加规则
4947 - 对Windows防火墙例外列表进行了修改,规则已修改
4948 - 对Windows防火墙例外列表进行了修改,规则已删除
4949 - Windows防火墙设置已恢复到默认值
4950 - Windows防火墙设置已更改
4951 - 因为主要版本号码不被Windows防火墙承认,规则已被忽视
4952 - 因为主要版本号码不被Windows防火墙承认,部分规则已被忽视,将执行规则的其余部分
4953 - 因为Windows防火墙不能解析规则,规则被忽略
4954 - Windows防火墙组政策设置已经更改,将使用新设置
4956 - Windows防火墙已经更改主动资料
4957 - Windows防火墙不适用于以下规则
4958 - 因为该规则涉及的条目没有被配置,Windows防火墙将不适用以下规则:
6144 - 组策略对象中的安全政策已经成功运用
6145 - 当处理组策略对象中的安全政策时发生一个或者多个错误
4670 - 对象的权限已更改
# 审计特权使用
4672 - 给新登录分配特权
4673 - 要求特权服务
4674 - 试图对特权对象尝试操作
# 审计系统事件
5024 - Windows防火墙服务已成功启动
5025 - Windows防火墙服务已经被停止
5027 - Windows防火墙服务无法从本地存储检索安全政策,该服务将继续执行目前的政策
5028 - Windows防火墙服务无法解析的新的安全政策,这项服务将继续执行目前的政策
5029 - Windows防火墙服务无法初始化的驱动程序,这项服务将继续执行目前的政策
5030 - Windows防火墙服务无法启动
5032 - Windows防火墙无法通知用户它阻止了接收入站连接的应用程序
5033 - Windows防火墙驱动程序已成功启动
5034 - Windows防火墙驱动程序已经停止
5035 - Windows防火墙驱动程序未能启动
5037 - Windows防火墙驱动程序检测到关键运行错误,终止。
4608 - Windows正在启动
4609 - Windows正在关机
4616 - 系统时间被改变
4621 - 管理员从CrashOnAuditFail回收系统,非管理员的用户现在可以登录,有些审计活动可能没有被记录
4697 - 系统中安装服务器
4618 - 监测安全事件样式已经发生
日志存储位置
C:\Windows\System32\winevt\Logs
使用事件查看器工具可以将这些EVTX事件日志文件导出为evtx,xml,txt和csv格式的文件。
用户相关
查看用户
cmd -> net user
-------------------------------------------------------------------------------
Administrator DefaultAccount Guest
WDAGUtilityAccount
命令成功完成。
DefaultAccount: 可能是初次升级安装系统后,自动添加的一个默认账户。在进行过重置系统的操作后可能会消失。
WDAGUtilityAccount:为了Windows Defender的正常运行而创建的用户。
主动进入安全模式的方法
当系统感染病毒或者有其他需要进入到安全模式时,用户可以主动设置进入Windows安全模式启动系统。 设置如下:
1.打开有管理员权限的命令行工具, 输入"msconfig", 进入到"系统配置"界面,勾选如下图所示
2.点击"应用",点击"确定"后,重启操作系统,系统自动进入安全模式,安全模式下,桌面四角有"安全模式"的水印,如下图所示
3.当操作完毕之后, 需要恢复到正常启动的模式。 重新打开"系统配置"界面,将启动选择修改成"正常启动"即可
Windows 内核转储设置
在某些特定的情况下,比如蓝屏、黑屏、系统hang住,研发人员需要借助转储文件才能快速定位问题点,从而快速处理问题。
在小内存转储的设置下, Dump文件会存放在%SystemRoot%\Minidump(e.g. C:\Windows\Minidump)目录底下,这些文件的历史记录按照日期命名,查找带有当前系统日期的文件名,即可找到当前的Dump文件。
此外,内存转储还有其他几种方式:核心内存转储、完全内存转储、自动内存转储,其dump文件均是%SystemRoot%\MEMORY.DMP(e.g. C:\Windows\MEMORY.DMP),此文件会自动覆盖前一次产生的dump。
可以通过下列的方式手工修改产生转储文件的方式
1.打开"控制面板",点击"系统",在系统页面双击"高级系统设置"
2.在"高级系统设置"页面下,点击"高级"页面,设置 "启动和故障恢复"
3.在"启动和故障恢复"页面,选择"写入调试信息"的方式
注意:
如果C盘空间不足,建议可以将转储文件放到其它磁盘中
Windows 系统重启后显示系统恢复选项
Windows 系统有可能会遇到重新启动后,无法正常载入系统的情况,这个时候,用户首先会看到"系统恢复"界面。
当进入到"系统恢复"界面的时候, 说明此时的系统,已经无法维持正常的运转,原因有很多,如注册表损坏,系统文件损坏,BCD出现问题等等。这些情况很多时候是由于安装的第三方杀毒软件,误操作,异常重启,第三方应用软件引起的。
"系统恢复"界面会引导客户进入Windows的修复模式(Windows Recovery Environment) ,修复模式资料参考 Understanding Windows Recovery
Windows 蓝屏宕机的一般处理
蓝屏又称为蓝屏死机(Blue screen of Death-BSoD), 英文文档提到的Stop error,也是这个意思。是指微软的Windows操作系统没有办法从错误中恢复过来,或者已经达到不能安全操作的状态,为保护数据不被破坏而强制显示的界面。百度智能云采用小内核转储方式,蓝屏发生经过搜集信息后会存在%SystemRoot%\Minidump(e.g. C:\Windows\Minidump)目录底下,具体参照[Windows 内核转储设置](#Windows 内核转储设置)
产生蓝屏宕机的原因
Windows内核态程序出错
操作系统文件,注册表的损坏
杀毒软件导致的异常
病毒感染
第三方软件和系统不兼容
硬件损坏
资源不足
蓝屏信息
在蓝屏界面,通常可以得到蓝屏错误码 如下图所示 Win32k.sys是当时内存出错时,指向的程序;0x00000050代表的是PAGE_FAULT_IN_NONPAGED_AREA错误,以及相应的参数。 具体错误码对应的意义在微软的官方网站上有相应的说明 Bug Code Rerference
当Crash Dump 收集完毕之后, 就可以重启计算机。更多的蓝屏信息,可以在启动计算机之后,查看系统事件簿。如果无法重新启动,请尝试从快照或者备份中还原系统(这可能会丢失一部分数据)
查看系统事件簿, 可以看到事件ID 为1001的BugCheck类型的事件记录了蓝屏宕机的相关信息, 此外在之前应该还有一个ID为41的来源kernel-power的电源事件,说明系统曾经发生过重启。 如果客户曾经修改过内核转储设置为不生成Dump文件, 则会有一个ID为46的内核转储失败的来源为volmgr的事件。
处理方式
由于蓝屏的分析需要比较长的时间, 建议发生蓝屏后,重启机器,以便快速恢复业务。
定时创建系统盘和数据盘快照
定期运行系统更新,确保当前系统安装了最新的更新包
使用商业版本的杀毒软件,并定期更新杀毒软件
尽量使用数据盘保护数据系统,并定期备份
避免修改您不了解的系统文件,注册表。若确实需要修改,请先备份
在处理蓝屏的经验中, 一般发生蓝屏比较多的原因是:
1.Windows内核态程序出错(例如:系统驱动程序出错)
2.病毒感染
3.操作系统文件损坏
针对病毒感染的问题,我们建议
- 安装Windows系统更新到最新补丁包
- 在安全模式下,运行杀毒软件进行杀毒 [Windows 主动进入安全模式的方法](#Windows 主动进入安全模式的方法)
针对文件系统损坏的问题,我们建议
- 若系统能重启成功,进入系统后,运行有管理员权限的CMD, 输入
sfc /scannow
进行系统完整性的检查和修复 - 若无法进入系统,一般会进入系统恢复选项界面
针对Windows系统驱动程序出错的问题
- 一般情况下, 重启计算机程序即可恢复
内存不一致的处理
问题分析
这种情况是可用内存被限制了,Windows系统本身有最大的支持内存,同时Windows支持内存的限制使用,以帮助系统或者内核调试的场景- 即有足够的调试内存,同时可以在不改变硬件的情况下,修改内存的使用大小。百度智能云的虚拟机不会对内存的使用进行限制,一般情况下是客户对这部分内容主动进行过修改
解决方法
只要将内存的限制去掉即可,步骤如下
1.【开始】->【运行】 , 输入"msconfig"打开微软系统配置
2.在"引导"页面,选择当前系统, 点击“高级选项”, 去掉“最大内存”的勾选项
3.重启计算机,可以看到可用内存不再被限制
Windows 虚拟内存的设置
由于内存本身的价格要远超硬盘的价格, Windows 提供 了一种增加内存的方式,Windows 可以将硬盘上的的一块区域(以分页文件的方式)当作RAM来使用。这部分RAM的大小就是Windows虚拟内存的大小。
由于开启虚拟内存会导致IO性能的下降,用户可以自由选择是否打开虚拟内存。
可以通过以下方式来设置改变这个虚拟内存默认的大小值
1.打开"控制面板",点击"系统",在左侧窗口,点击"高级系统设置"
2.在"高级系统设置"窗口的"高级"页面下,点击"性能"设置,进入"高级"页面,双击"更改"修改虚拟内存
3.修改分页文件的大小,并且点击"设置"来确认修改文件的大小,再点击"确定"按钮,重启计算机
根据微软的推荐策略
- 分页内存最好是比物理内存大一些,但是不超过两倍内存
- 尽量将页面交换文件设置在非系统磁盘,IO性能会好一些
- 根据系统宕机时候Dump时候的需求。
注意:
增加虚拟内存会导致磁盘IO性能下降,建议尽量通过升级物理内存来解决。在申请较大的物理内存时,建议关闭虚拟内存的使用。
关闭虚拟内存的方法是在虚拟内存设置页选择"无分页文件"
系统黑屏处理方法
Windows 桌面一直显示黑色背景屏幕的处理
问题现象
Windows计算机打开之后,一直显示黑屏,没有任何左面图标,鼠标可以正常移动
与此同时,点击右上角的Alt + Ctrl + Del 按钮可以显示出面板
问题分析
现象表明Windows无法显示相关的文件和界面。Windows explorer.exe是Windows文件资源管理器,管理着Windows图形界面,文件系统,这个程序的异常会导致Windows GUI异常,用户可以通过重新启动explorer.exe来修复问题。
explorer.exe位于C:\Windows目录底下,如果这个目录底下没有这个文件, 说明Windows的系统文件已经被破坏,需要进行修复。
解决方法
1.点击右上角的Alt + Ctrl + Del 按钮可以显示出面板, 选择"任务管理器"
2.如果在"任务管理器"里面可以看到explorer.exe程序,则重启explorer.exe即可, 如果没有,则直接启动explorer.exe
3.重启explorer.exe -先关闭explorer,如果有的话
4.启动explorer.exe
5.这个时候, Windows桌面就应该启动起来了。 如果在第四步里面输入explorer.exe执行失败, 则很有可能是系统损坏,需要进行修复
6.修复过程
a.和第四步一样,运行新任务, 输入cmd.exe, 运行命令行工具
b.在命令行中,输入 dir explorer.exe /s 看看在C:\Windows 目录有没有 explorer.exe,已经WinSxS里面有多少个存档
c.运行sfc /scannow 目录修复系统文件
d.如果修复完毕, 在C:\Windows 目录仍然没有explorer.exe文件。 重装
关闭IE增强机制教程
安装WINDOWS server 系统以后,用浏览器打开网址时,系统总是提示“Internet Explorer 增强安全配置正在阻止下列网站的内容。如果把所有网址添加到信任列表是可以打开网址的,但是用起来很吃力。那么如何解决呢?
首先,我们打开IE,看到IE显示的警告信息,这就是增强IE所引起的。
解决方法
WindowsServer2008
1.点击”WIN“打开"管理工具",找到”服务器管理器“:
2.在”服务器管理器“中找到“配置IEESC”
3.点击关闭即可。
4.可以正常使用IE浏览器访问网站了。
WindowsServer2012
1.点击左下角的"WIN",找到"服务器管理器"。
2.在”服务器管理器“中点击"本地服务器",找到"IE增强的安全配置"。
3.点击"IE增强的安全配置"后面的"启用",点击关闭即可。
4.完成上述步骤后,即可正常使用IE浏览器访问网站了。
使用xshell连接windows服务器
本教程主要讲述如何使用xshell连接windows服务器,以windows2008为例。
此教程一共分为四步骤:
第一步:远程登录服务器
第二步:下载对应服务端软件在BCC内进行解压并安装
第三步:防火墙放行22端口
第四步:使用xshell连接windows服务器
第一步:远程登录服务器
第二步:下载对应服务端软件在BCC内进行解压并安装
1.登录该网页下载对应版本的OpenSSH。下载地址:https://github.com/PowerShell/Win32-OpenSSH/releases
2.上传该文件到windwos服务器并解压
3.在解压后的文件夹内按住shift,同时鼠标右键,打开cmd,执行:
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
4.点击开始-服务-找到OpenSSH Authen...和OpenSSH SSH Se...这两个服务。右键点击启动。
第三步:防火墙放行22端口
1.在服务器内点击-开始-管理工具-高级安全windows防火墙
2.右击入站规则-新建规则
3.选择端口-点击下一步
4.选择TCP-特定本地端口-端口内填写22-点击下一步
5.一直点击下一步直到”名称“环节,名称中填写xshell远程端口,之后点击完成即可。
第四步:使用xshell连接windows服务器
1.在xshell左上角-文件-新建
2.在会话中设置对应名称和对应的主机IP(服务器的IP地址)。
3.点击用户身份验证,输入对应的远程连接账号密码之后点击确定。
4.点击文件-打开进入会话页面。
5.双击之前创建的会话连接即可。
6.测试成功连接。
修改默认连接远程端口
更改注册表信息
找到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
路径下的 "PortNumber"用十进制方式显示,默认为3389,改为自己需要的端口,比如修改为3388(前提是修改的端口未被其他服务占用)
点击"入站规则",点击"新建规则",编辑新建入站规则,开放自定义的端口
允许单个用户连接多个会话的方法
本文介绍了如何使用 Windows 允许单个用户连接多个会话方式,以 Windows Server 2008 R2 为例。
问题描述
服务器默认只允许单个用户连接一个远程桌面会话,如果已有连接登陆,另外的连接再登陆会踢掉之前的连接。
即出现以下界面:
解决方法
步骤一 通过注册表调整会话
1.WIN键+R键打开运行,然后输入cmd,回车进入命令提示符,执行 regedit 可以打开注册表。
2.找到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server
,右侧找到fSingleSessionPerUser 键值,右键可以修改键值,默认键值是1,修改为 0 ,不需要重启服务器。
3.测试开启两个远程。
(注意:以上方法超过两个就会出现中断)
步骤二 部署远程桌面会话服务
超过两个或者两个以上连接,可以部署Windows 远程桌面会话主机配置,具体如下:
1.打开左下角的服务器管理器添加角色。
2.勾选远程桌面服务,之后下一步安装即可。
3.依次找到远程桌面会话主机配置。
4.取消限制每个用户只能进行一个会话(如果想重复通过administrator登入的话,请取消)。
5.验证。
注意:部署此方式只允许120天免费,如果想超出120天限制,建议购买微软的授权。
配置多用户访问Windows服务器
本文档以 Windows Server 2012 R2 操作系统为例,指导配置多用户远程登录 Windows 云服务器。
安装远程桌面服务
1.打开服务器管理器,选择 “添加角色和功能向导”,选择 “远程桌面服务”,点击下一步。
2.接下来不用选择,连续3次点击下一步,在角色服务页面勾选 “远程桌面会话主机”,然后在弹出的对话框中点击 “添加功能”。
3.继续点击下一步,点击安装,等待安装完成后点击关闭。
设置本地组策略编辑器
打开 “本地组策略编辑器”。
选择"计算机配置">"管理模板">"Windows 组件">"远程桌面服务">"远程桌面会话主机">"连接",双击打开"限制连接的数量"。
在弹出的"限制连接的数量"窗口中,"选择"已启用",并在"允许的RD最大连接数"处输入最大的同时远程连接用户数,完成设置后,点击"应用",点击"确定"。
选择"计算机配置">"管理模板">"Windows 组件">"远程桌面服务">"远程桌面会话主机">"连接",双击打开"将远程桌面服务用户限制到单独的远程桌面服务会话"。
在弹出的"将远程桌面服务用户限制到单独的远程桌面服务会话"窗口中,选择"已禁用",完成设置后点击"应用",点击"确定"。
设置完毕后,可以关闭本地组策略编辑器。
新建用户并加入到Administrators组
双击"计算机管理"。弹出"计算机管理"窗口后,点击"本地用户和组"→"用户",鼠标右键点击右侧空白处,点击"新用户"。
输入用户名称,输入用户名的登录密码,然后取消勾选"用户下次登录时须更改密码",勾选"密码永不过期",最后点击"创建"。
创建完成后,鼠标右键点击新创建的用户,点击"属性"
选择"隶属于",点击左下角的"添加"按钮,将该用户添加到Administrators组中,点击"应用"、"确定"。
重启服务器
本地播放Windows服务器中的声音
选择本地资源-远程音频-设置,勾选在此计算机上播放,然后点击确认。
进行连接并且验证声音效果
1.远程连接后查看右下角音频显示正常。
2.播放声音,进行验证。
若是使用上述方案,还是无法播放声音,请参考下列步骤进行操作
1.使用vnc或者远程连接方式进入Windows系统。
2.使用Win+R,输入命令gpedit.msc或者在搜索栏输入编辑组策略,进入本地组策略编辑器。
3.依次点击计算机配置->管理模板->Windows组件->远程桌面服务。
4.选择远程桌面会话主机->设备和资源重定向。
5.左键双击允许音频录制重定向 和 允许音频和视频播放重定向。
6.选择已启用后,点击应用、确定。
7.使用Win+R,输入:services.msc。
或者点击左下角的服务器管理器,在配置->服务中进入服务管理界面。
8.找到服务WindowsAudio与WindowsAudioEndpointBuilder,把启动类型修改成自启动,也检查下是否已经是运行状态。
9.重启服务器,然后远程连接至服务器,检测声音设置是否正常。
远程连接无法使用剪切板
找到rdpclip.exe进程,结束任务
新建rdpclip任务
运行新任务,输入rdpclip,点击确定。
验证是否可以粘贴内容
首先看下任务管理器中是否有"RDP剪切板监视程序"在运行,如果正常运行的话,直接复制本机内容,然后在服务器中进行粘贴,测试功能是否正常。
Windows服务器ping不通
故障现象
Windows服务器ping不通
故障原因
由于Windows server默认禁止ping,请您打开高级安全防火墙入站的“文件和打印机共享(回显请求 - ICMPv4-In)”规则。
故障处理
您可参考如下位置开启windows实例的高级安全防火墙的入站规则。
2012 防火墙位置: 服务器管理器--工具--高级安全windows防火墙--入站规则
禁止国外IP访问服务器
IP 地址与国家对应关系
https://www.ipdeny.com/ipblocks/
https://blog.kieng.cn/774.html
https://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
获取国外IP地址
# 获取最新中国 IP
wget -q --timeout=60 -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /root/china_ssr.txt
# 获取最新国外 IP
wget -q --timeout=60 -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | grep -v CN | grep -v asn | grep ipv4 | awk -F\| '{ printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /root/china_ssr.txt
powershell 缓存限制
8192,当命令行超过 8192 就会无输出。
一个IP地址占用字符:255.255.255.255/25 共19个字符,姑且算占用20个字符。
8000/20 = 400
每行可以放下 400 个 IP 地址段。
cmd = f"PowerShell -NoLogo -NonInteractive -Command New-NetFirewallRule -DisplayName 'Block IP address GUOWAI-{number}' -Direction Inbound -LocalPort Any -Protocol TCP -Action Block -RemoteAddress {ip} "
这里的 就可以添加 400 个左右
数组参数样例:
@('数值','数组二'......)
powershell 命令操作系统防火墙
# 在域环境中启用防火墙
Set-NetFirewallProfile -Profile Domain -Enabled True
# 添加防火墙规则
New-NetFirewallRule -DisplayName "Block IP address 146.185.220.0/23" -Direction Inbound -LocalPort Any -Protocol TCP -Action Block -RemoteAddress 146.185.220.0/23
New-NetFirewallRule -DisplayName "Block IP address 146.185.220.0/23" -Direction Outbound –LocalPort Any -Protocol TCP -Action Allow -RemoteAddress 146.185.220.0/23
New-NetFirewallRule -DisplayName "Block IP address" -Direction Outbound –LocalPort Any -Protocol TCP -Action Block -RemoteAddress 146.185.220.0/23
New-NetFirewallRule -DisplayName "Allow Inbound OpenVPN Client Requests" -Direction Inbound -LocalPort 1194 -Protocol UDP -Action Allow
# 列出当前所有的Groups
Get-NetFirewallRule |Select-Object DisplayGroup -Unique
# 添加一条规则
New-NetFirewallRule -DisplayName "Allow Inbound OpenVPN Client Requests" -Direction Inbound -LocalPort 1194 -Protocol UDP -Action Allow
New-NetFirewallRule -DisplayName "Block Outbound itunes.exe" -Direction Outbound -Program "C:\Program Files\apple\itunes\itunes.exe" -Action Block
# 启用或者禁用存在的某条规则
Set-NetfirewallRule -DisplayName "Allow Inbound OpenVPN Client Requests" -Enabled True
Set-NetfirewallRule -DisplayName "Allow Inbound OpenVPN Client Requests" -Enabled False
# 删除一条规则,这会永久的删除一条规则,如果你只是禁用一条规则,可以参考前面使用set-netfirewallrule的的例子。
Remove-NetfirewallRule -DisplayName "Allow Inbound OpenVPN Client Requests"
# 获取防火墙环境配置信息
Get-NetFirewallProfile -name Domain
# 远程管理规则,任意的命令都可以通过New-CimSession命令远程使用。假设你的防火墙已经启用了我们上面列出过的组规则“Windows Firewall Remote Management“(必要的)。
$TargetComputer=New-CIMSession -Computername MYCOMPUTER
Set-NetFirewallRule -DisplayGroup "Remote Event Log Management" -Enabled True -CimSession $TargetComputer
启用预制的组规则
# 一个Group是用于特定用途的规则集合,下面是Windows系统上附带的几个常用的组规则:
Set-NetFirewallRule -DisplayGroup "Remote Event Log Management" -Enabled True
Set-NetFirewallRule -DisplayGroup "Windows Firewall Remote Management" -Enabled True
Set-NetFirewallRule -DisplayGroup "Windows Management Instrumentation(WMI)" -Enabled True
Set-NetFirewallRule -DisplayGroup "Remote Desktop" -Enabled True
Set-NetFirewallRule -DisplayGroup "Windows Remote Management" -Enabled True
Set-NetFirewallRule -DisplayGroup "Remote Administration" -Enabled True
python 控制Windows防火墙(FireWall)
import os
from glob import glob
import subprocess
class PowerShell:
# from scapy
def __init__(self, coding, ):
cmd = [self._where('PowerShell.exe'),
"-NoLogo", "-NonInteractive", # Do not print headers
"-Command", "-"] # Listen commands from stdin
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
print(cmd)
self.popen = subprocess.Popen(cmd, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.STDOUT, startupinfo=startupinfo)
self.coding = coding
def __enter__(self):
return self
def __exit__(self, a, b, c):
self.popen.kill()
def run(self, cmd, timeout=15):
b_cmd = cmd.encode(encoding=self.coding)
try:
b_outs, errs = self.popen.communicate(b_cmd, timeout=timeout)
except subprocess.TimeoutExpired:
self.popen.kill()
b_outs, errs = self.popen.communicate()
outs = b_outs.decode(encoding=self.coding)
return outs, errs
@staticmethod
def _where(filename, dirs=None, env="PATH"):
"""Find file in current dir, in deep_lookup cache or in system path"""
if dirs is None:
dirs = []
if not isinstance(dirs, list):
dirs = [dirs]
if glob(filename):
return filename
paths = [os.curdir] + os.environ[env].split(os.path.pathsep) + dirs
try:
return next(os.path.normpath(match)
for path in paths
for match in glob(os.path.join(path, filename))
if match)
except (StopIteration, RuntimeError):
raise IOError("File not found: %s" % filename)
if __name__ == '__main__':
# with open("ip", "r", encoding="utf-8") as f:
# for i in f:
# with PowerShell('GBK') as ps:
# ip = i.strip("\r").strip("\r\n").strip("\n")
# cmd = f"New-NetFirewallRule -DisplayName 'Block IP address {ip}' -Direction Inbound -LocalPort Any -Protocol TCP -Action Block -RemoteAddress {ip} 2>&1>$null"
# print(cmd)
# outs, errs = ps.run(cmd)
# print('error:', os.linesep, errs)
# print('output:', os.linesep, outs)
# with open("ip", "r", encoding="utf-8") as f:
# for i in f:
# ip = i.strip("\r").strip("\r\n").strip("\n")
# cmd = f"PowerShell -NoLogo -NonInteractive -Command New-NetFirewallRule -DisplayName 'Block IP address {ip}' -Direction Inbound -LocalPort Any -Protocol TCP -Action Block -RemoteAddress {ip} 2>&1>$null"
# print(cmd)
# os.system(cmd)
# NonInteractive 非交互模式
# nologo 启动不显式版权标志的powershell
# 对于文件里的换行:
# (1)Windows系统里,文件每行结尾是"<回车><换行>""\r\n"
# (2)Mac系统里,文件每行结尾是"<回车>",即'\r'
# (3)Unix系统里,文件每行结尾是"<换行>",即'\n'
with open("ip", "r", encoding="utf-8") as f:
ip = ""
index = 0
n = 0
for i in f:
ip += "'" + i.strip()+"',"
index += 1
if index == 400:
ip = ip[:-1]
ip = "@(" + ip + ")"
n +=1
if n < 10:
number = f"0{n}"
else:
number = n
cmd = f"PowerShell -NoLogo -NonInteractive -Command New-NetFirewallRule -DisplayName 'Block IP address GUOWAI-{number}' -Direction Inbound -LocalPort Any -Protocol TCP -Action Block -RemoteAddress {ip} "
os.system(cmd)
# print(number)
index = 0
ip = ""
# print(ip)
# cmd = f"PowerShell -NoLogo -NonInteractive -Command New-NetFirewallRule -DisplayName 'Block IP address GUOWAI' -Direction Inbound -LocalPort Any -Protocol TCP -Action Block -RemoteAddress {ip} 2>&1>$null"
win系统cmd读取较大txt文件
在处理服务器上查看txt日志文件的时候,由于部分时候txt文本非常大,直接编辑器无法打开,可以使用命令方式,通过管道方式进行输出
进入到对应的日志存放的路径,按住shift 鼠标右键选择,在此处打开命令窗口。
在对应的窗口运行一下命令,
type www.lnmpweb.cn.log | findstr "11/Mar/2020:21:38:03" | more
# findstr 后面是要查找的内容
本次操作由于这台计算机的限制而被取消.请与您的系统管理员联系
重启计算机,在启动时按下F8键,选择“带命令行提示的安全模式”启动,系统会自动运行CMD命令窗口,现在你可以在提示符下运行:mmc c:windowssystem32gpedit.msc,这将打开组策略。展开“用户配置→管理模板→系统”,在右侧找到“只运行许可的Windows应用程序”策略,将它设置成“未配置”,再“确定”即可.
应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序。
SFC检查系统完整性来尝试修复丢失文件
-
点击“开始”->在搜索栏内输入“cmd”,右键点击cmd.exe,选择以管理员身份运行,跳出提示框时选择继续。
-
键入sfc /scannow ,然后按 Enter。系统开始扫描,请您耐心等待。
Tds-Tcp 和 RDP-Tcp 区别
注册表信息如下:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
区别:
相同的协议!一个是无线网下传输的通道,一个是普通的传输通道。
关闭连接设备平台服务
CDPUserSvc服务禁用方法
运行regedit打开这个子项
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\
将下面子项属性修改
OneSyncSvc 的start属性修改为4
OneSyncSvc_随机数字 的start属性修改为4
UserDataSvc 的start属性修改为4
UserDataSvc_随机数字 的start属性修改为4
CDPSvc 的start属性修改为4
CDPUserSvc 的start属性修改为4
CDPUserSvc_随机数字 的start属性修改为4
之的我们再重启,这个服务就不会启动了,如果要恢复,改回原值即可。
查看当前登录用户
C:\Users\Administrator>whoami
10_0_8_12\administrator
``
## 查看所有已登录用户
```bash
C:\Users\Administrator>query user
用户名 会话名 ID 状态 空闲时间 登录时间
>administrator rdp-tcp#1 2 运行中 . 2021/12/7 12:26
通过任务管理器查看
任务管理器查看 --> 用户标签 --> 可以查看已登录用户信息以及运行的程序
Windows Server 安全
安全策略
组策略中的ip安全策略和系统自带的windows防火墙有什么区别?
简单理解,ip安全策略更高级有效,IP安全策略效率更高
配置好 IP 安全策略,就相当于拥有了一个免费的功能完善的防火墙。
IP 安全策略与 Windows 的防火墙不同,在于它提供了一个更底层的 TCP/IP 访问策略,可以更有效的对操作系统与外界系统间的网络联系进行控制。
windows 防火墙侧重于对应用程序的网络访问进行控制。
IP 安全策略只在乎操作系统的数据流的访问策略。
相比之下,IP 安全策略对于网络的限制是绝对的,比 Windows 防火墙更为绝对。而且,启用该策略,无需开启防火墙。
ip安全策略:其实可以理解为简单版的防火墙,使用操作上没有防火墙软件那么方便,因为是简单的网络访问控制,功能上也稍逊防火墙。
使用 netsh ipsec 管理本地安全策略
# 允许其他人访问我的WEB服务器,端口TCP(80);允许其他人远程连接到我的桌面,端口TCP(3389);
# 允许我打开其他网站,例如 BINGUN.BLOG.51CTO.COM ,需要使用的端口有 UDP(53)TCP(53)TCP(80)
# 创建策略
netsh ipsec static add policy name="My Policy" description="Port accessed policy."
# 创建两个过滤器
netsh ipsec static add filterlist name="Trust" description="Permit accessed rules."
netsh ipsec static add filterlist name="Distrust" description="Block accessed rules."
# 分别为过滤器创建规则
netsh ipsec static add filter filterlist="Trust" srcaddr=any srcport=53 dstaddr=me dstport=0 protocol=udp mirrored=yes description="Permit Any UDP(53) accessed Me UDP(All) ports."
netsh ipsec static add filter filterlist="Trust" srcaddr=any srcport=53 dstaddr=me dstport=0 protocol=tcp mirrored=yes description="Permit Any TCP(53) accessed Me TCP(all) ports."
netsh ipsec static add filter filterlist="Trust" srcaddr=any srcport=80 dstaddr=me dstport=0 protocol=tcp mirrored=yes description="Permit Any TCP(80) accessed Me TCP(all) ports."
netsh ipsec static add filter filterlist="Trust" srcaddr=any srcport=0 dstaddr=me dstport=80 protocol=tcp mirrored=yes description="Permit Any TCP(all) accessed Me TCP(80) ports."
netsh ipsec static add filter filterlist="Trust" srcaddr=any srcport=0 dstaddr=me dstport=3389 protocol=tcp mirrored=yes description="Permit Any TCP(all) accessed Me TCP(3389) ports."
netsh ipsec static add filter filterlist="Distrust" srcaddr=any srcport=0 dstaddr=me dstport=0 protocol=tcp mirrored=no description="Block Any TCP(all) accessed Me TCP(all) ports."
netsh ipsec static add filter filterlist="Distrust" srcaddr=any srcport=0 dstaddr=me dstport=0 protocol=udp mirrored=no description="Block Any(all) accessed Me UDP(all) ports."
# 创建过滤动作
netsh ipsec static add filteraction name="Permit" action=permit
netsh ipsec static add filteraction name="Block" action=block
# 将过滤器与过滤动作关联
netsh ipsec static add rule name="Trusted rules" policy="My Policy" filterlist="Trust" filteraction="Permit"
netsh ipsec static add rule name="Distrust rules" policy="My Policy" filterlist="Distrust" filteraction="Block"
# 启用和停止策略
netsh ipsec static set policy name="My Policy" assign=y
netsh ipsec static set policy name="My Policy" assign=n
-----------------------------------------------------------------
IP SEC 中的优先级是按所建规则的严格程度来区分的,规则越严格优先级越高。
=================================================================
# 以下是新添加的部分
netsh ipsec static add policy name=mypolicy (建一个安全策略)
netsh ipsec static add filterlist name=myaccess (允许筛选列表)
netsh ipsec static add filterlist name=myrefuse (拒绝筛选列表)
netsh ipsec static add filter filterlist=myaccess……(为myaccess添加一个筛选器)不建筛选器,建规则时会失败
netsh ipsec static add filter filterlist=myrefuse…… (为myrefuse添加一个筛选器)不建筛选器,建规则时会失败
netsh ipsec static add filteraction name=ok action=permit (建一个允许筛选操作)
netsh ipsec static add filteraction name=not action=block (建一个拒绝筛选操作)
netsh ipsec static add rule name=允许规则 policy=mypolicy filterlist=myaccess filteraction=ok (建一个规则,并将其添加到mypolicy策略中,并关联筛选操作)
netsh ipsec static add rule name=拒绝规则 policy=mypolicy filterlist=myrefuse filteraction=not (建一个规则,并将其添加到mypolicy策略中,并关联筛选操作)
netsh ipsec static set policy name=mypolicy assign=y (激活策略)
netsh ipsec static show policy all(显示所有安全策略)
netsh ipsec static show policy name=mypolicy(显示mypolicy安全策略)
netsh ipsec static show policy name=mypolicy level=verbose(显示mypolicy策略及相关筛选器及筛选操作等相关信息)
netsh ipsec static show filterlist name=myaccess lever=verbose(显示myaccess筛选列表等相关信息)
netsh ipsec static delete policy name=mypolicy(删除某个安全策略)
netsh ipsec static delete filterlist name=myaccess(删除某个筛选器列表)
程序实现,增加列表后然后才执行,每次执行前先删除现有的规则。
筛选器(filter)的参数及含义如下:
filterlist 筛选器要添加到的筛选器列表的名称。
srcaddr 源 ip 地址,dns 名称或 server 类型。
dstaddr 目标 ip 地址,dns 名称或 server 类型。
description 筛选器的简短信息。
protocol 可以是 ANY,ICMP,TCP,UDP,RAW,或者一个整数。
mirrored 值为 yes 将创建两个筛选器,每个方向一个。
srcmask 源地址掩码或一个 1 到 32 的前缀。
dstmask 目标地址掩码一个 1 到 32 的前缀。
srcport 数据包的源端口。值为 0 意味着任意端口。
dstport 数据包的目标端口。值为 0 意味着任意端口。
筛选器动作(filteraction)
name 筛选器操作的名称。
description 筛选器操作类别的简短信息。
qmpfs 设置快速模式完全向前保密的选项。
inpass 接受不安全的通讯,但是总是用 IPSec响应。这接受 yes 或 no。
soft 允许与没有 IPSec 的计算机进行不安全的通讯。可以是 yes 或 no。
action 可以是 permit,block 或 negotiate。
巧用netsh命令实现端口转发(端口映射)
好处:即时生效,随意修改删除,不影响其他ip映射
netsh interface portproxy add v4tov4 listenport=701 connectaddress=192.168.157.130 connectport=701
netsh interface portproxy add v4tov4 listenport=2463 connectaddress=192.168.157.130 connectport=2468
netsh interface portproxy add v4tov4 listenport=1993 connectaddress=192.168.157.130 connectport=1982
netsh interface portproxy add v4tov4 listenport=50003 connectaddress=192.168.157.130 connectport=55555
netsh interface portproxy show all
# 查看所有端口转发代理参数:
netsh interface portproxy show all
# 单ip转发
# 将本地的8080端口的数据转发至192.168.56.101上的8080端口,也可以转发到其他外网ip
# 添加:
netsh interface portproxy add v4tov4 listenport=8080 connectaddress=192.168.56.101 connectport=8080
# 删除:
netsh interface portproxy delete v4tov4 listenport=8080
# 双ip 多ip可以用下面
# 添加一个IPV4到IPV4的端口映射,也就是指定一个ip
# 添加:
netsh interface portproxy add v4tov4 listenaddress=192.168.193.1 listenport=701 connectaddress=192.168.192.128 connectport=701
# 指定监听ip和端口可以删除
netsh interface portproxy delete v4tov4 listenaddress=192.168.193.1 listenport=701
# 使用ipv4 to ipv4模式将源地址是10.252.167.136(内网服务器)的22端口代理到本服务器的所有地址的12345端口上。
netsh interface protproxy add v4tov4 listenaddress=* listenport=12345 connectaddress=10.252.167.136 connectport=22
netsh interface portproxy show all
侦听 ipv4: 连接到 ipv4:
地址 端口 地址 端口
* 12345 10.252.167.136 22
端口转发配置完成后,直接访问本机的公网地址的12345端口,实际访问的为内网服务器10.252.167.136的22端口。
使用实例
如何通过本地安全策略阻止IP访问
1、在 组件管理 里面 选择 本地安全策略 ,然后右键 IP安全策略,在本地机器 选择 创建IP安全策略 点击 下一步 ,输入策略名称 (如输入“阻止”),然后点击 下一步,直到出现提示框,点击 完成 ,此时就创建了一个名为“阻止”的策略。
2、选择“阻止”的策略右键选择 属性 ,然后选择 添加 -- 下一步 -- 下一步 然后 网络类型 选择 所有网络连接,在点击 下一步,出现 安全规则向导 ,点击 添加 ;
使用Legacy IPSec Policy 限制指定IP连接的方法
打开 组策略管理器 选择:计算机配置 -- Windows设置-- 安全设置 -- IP安全策略 ,如图:
右键 IP安全策略 选择创建IP策略出现配置窗口,点 下一步,进入配置页面输入需要的策略名。如图:
选择 下一步 ,一直到策略属性的编辑选项卡处,建议 配置时取消添加向导 ,然后点击 添加 进入编辑模式,如图:
进入 IP筛选器列表 (注意:不要选择 使用 添加向导 ) 然后点击 添加 ,开始配置IP范围,如图:
其中:源地址指在网络中发起请求的一端称源地址;目标地址是指访问的对象称目标地址; 在这里源地址选择 一个特定的IP或者子网 ,目标为 我的IP地址 ,镜像选择后,这条策略会将源地址与目标地址反转一次,与我们这次的配置无关可以忽略。如下图:
点击 IP 筛选器 属性 中的 协议,默认是任何,这会拒绝所有的访问,也可以额外配置,在这里可以配置是否拒绝这个IP对服务器某个协议,或者某个协议的端口的操作。点两次回到我们IP规则的属性中,点 筛选器操作,在配置是对刚才的这些配置的处理行为。
在筛选器操作中,取消 使用 添加向导 ,后点 添加 ,弹出选项卡的操作属性,这里选择 阻止 ,如图:
这样,这台服务器就不会对某个IP提供服务了,即针对我们刚刚设置的源IP ,都不会提供服务了。
Windows防火墙
日志位置
首先要在设置中开启日志
windows 防火墙日志位置,首先要开启防火墙日志记录
%systemroot%\system32\LogFiles\Firewall\pfirewall.log
限制端口/IP/应用访问的方法以及例外的配置
如何允许程序或功能通过Windows防火墙
调出 允许的程序和功能 里面选择 允许运行另一个程序 ;
点击 浏览 选择应用的执行文件,我们选择的是IE浏览器实,际使用中可以根据自身需求自行选择,之后点击添加就可以了;
如何通过防火墙开启和关闭端口
点击 入站规则 -- 新建规则;
选择 端口,点击 下一步 ;
选择 端口类型 -- 输入要开启/关闭的端口然后点击 下一步 ;
选择 阻止连接/允许连接 并点击 下一步,最后选择作用域和输入规则名称后点击 完成 ;
- 如果入站规则缺省规则是 阻止 ,那么选择选择 允许连接 表示开启该端口;
- 如果入站规则缺省规则是 允许 ,那么选择选择 阻止连接 表示关闭该端口;
如通过防火墙何限定IP访问
点击 入站规则 -- 新建规则;
选择 自定义 规则 ,点击 下一步 ;
这个可以选择 所有程序 和 此程序路径 ,选择 所有程序 表示该规则试用与所有程序,如果想对单个程序生效就选择 此程序路径 ,本示例是选择 所有程序 ,点击 下一步 ;
默认点击 下一步 ;
在 此规则应用于那些远程IP地址? 里选择 下列IP地址 ,点 添加 ,根据自己的实际需求把需要过滤的IP填进去,然后点 确定 ,再点击 下一步 ;
选择 阻止连接/允许连接并点击 下一步,最后选择作用域和输入规则名称后点击 完成 ;
- 阻止连接 说明定义的IP无法访问服务器任何的应用。
- 允许连接 说明定义的IP可以访问服务器任何的应用。
如何通过防火墙实现端口仅允许特定IP访问
找到防火墙开启的端口右键点击 属性 ,选择 作用域 ;
在 远程IP地址 里选择 下列IP地址 ,点添加 ,根据自己的实际需求把需要允许IP填进去,然后点 确定 ,再点击 应用 ,就完成了操作。
3、输入 IP 筛选器列表名称,比如要屏蔽30.254.1.0/24IP网段的访问,可以命名为“30.254.1.0/24”,这样方便记忆,然后再点 添加;
4、然后进入 IP 筛选向导,点击 下一步 ,描述跟进自己需求进行填写,然后 点击 下一步 ;
5、然后源地址选择一个 特定的IP或子网 ,然后填写相应的IP或者子网,然后再点击 下一步 ;
6、目的地址选择 任何IP地址 ,点击 下一步 , 协议类型选择任何,再点击 下一步 ,然后再点击, 完成 ;
7、然后在 IP筛选器列表 里面把刚才创建的策略选择上点 下一步 ;
8、在 筛选器操作 里面选择 添加 ,然后再点 下一步 ,然后再填名称,点 下一步 ,操作行为选择 阻止 ,直至完成,然后应用该策略。
9、选择“阻止”这个策略,右键点击 分配 ,这样就阻止了定义的IP的访问了。
使用命令行配置高级安全Windows防火墙
# 导出防火墙配置文件。
netsh advfirewall export c:\adv.pol
# 导入防火墙配置文件。
netsh advfirewall import c:\adv.pol
# 防火墙恢复默认设置。
netsh advfirewall reset
# 关闭防火墙。
netsh advfirewall set allprofiles state off
# 开启防火墙。
netsh advfirewall set allprofiles state on
# 设置所有配置文件的默认防火墙策略为阻挡入站并允许出站通信。
netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound
# 删除名为ftp的规则。
netsh advfirewall firewall delete rule name=ftp
# 删除本地端口80的所有入站规则。
netsh advfirewall firewall delete rule name=all protocol=tcp localport=80
# 添加远程桌面的入站规则,允许端口3389。
netsh advfirewall firewall add rule name=远程桌面(TCP-In-3389) protocol=TCP dir=in localport=3389 action=allow
Windows 日志
Windows系统日志主要分为:系统日志、应用程序日志、安全日志以及应用程序和服务日志。
- 系统日志包含 Windows 系统组件记录的事件。例如,系统日志中会记录在启动过程中加载驱动程序或其他系统组件失败。系统组件所记录的事件类型由Windows预先确定。
- 应用程序日志包含由应用程序或程序记录的事件。例如,数据库程序可在应用程序日志中记录文件错误。程序开发人员决定记录哪些事件。
- 安全日志包含诸如有效和无效的登录尝试等事件,以及与资源使用相关的事件,如创建、打开或删除文件或其他对象。管理员可以指定在安全日志中记录什么事件。例如,如果已启用登录审核,则安全日志将记录对系统的登录尝试。
- 应用程序和服务日志是一种新类别的事件日志。这些日志存储来自单个应用程序或组件的事件,而非可能影响整个系统的事件。
进入事件查看器查看日志
在运行对话框中执行命令eventvwr,打开事件查看器。
修改日志路径并备份日志
日志默认保存在系统盘里面。日志最大值默认是20 MB,超过20 MB时会覆盖之前的事件。您可以根据自己的需求修改。
在事件查看器窗口,在左侧导航栏里,单击Windows 日志。在右边列表中,右键单击一个日志名称,选择属性。
在日志属性 窗口,按界面显示修改以下信息:
IPC$共享和其他共享(C$、D$)
net use共享命令的用法
net use #查看连接
net share #查看本地开启的共享
net share ipc$ #开启ipc$共享
net share ipc$ /del #删除ipc$共享
net share c$ /del #删除C盘共享
net use \\192.168.10.15\ipc$ /u:"" "" #与192.168.10.15建立ipc空连接
net use \\192.168.10.15 /u:"" "" #与192.168.10.15建立ipc空连接,可以吧ipc$去掉
net use \\192.168.10.15 /u:"administrator" "root" #以administrator身份与192.168.10.15建立ipc连接
net use \\192.168.10.15 /del #删除ipc连接
net use \\192.168.10.15\c$ /u:"administrator" "root" #建立C盘共享
dir \\192.168.10.15\c$ #查看192.168.10.15C盘文件
dir \\192.168.10.15\c$\user #查看192.168.10.15C盘文件下的user目录
dir \\192.168.10.15\c$\user\test.exe #查看192.168.10.15C盘文件下的user目录下的test.exe文件
net use \\192.168.10.15\c$ /del #删除该C盘共享连接
net use k: \\192.168.10.15\c$ /u:"administrator" "root" #将目标C盘映射到本地K盘
net use k: /del #删除该映射
IPC$
IPC$ (Internet Process Connection) 是共享“命名管道”的资源,它是为了让进程间通信而开放的命名管道,通过提供可信任的用户名和口令,连接双方可以建立安全的通道并以此通道进行加密数据的交换,从而实现对远程计算机的访问。IPC$是NT2000的一项新功能,它有一个特点,即在同一时间内,两个IP之间只允许建立一个连接。NT2000在提供了 ipc$ 功能的同时,在初次安装系统时还打开了默认共享,即所有的逻辑共享(C$、D$、E$……)和系统目录(C:\windows)共享。所有的这些初衷都是为了方便管理员的管理。但好的初衷并不一定有好的收效,一些别有用心者会利用IPC$,访问共享资源,导出用户列表,并使用一些字典工具,进行密码探测。
为了配合IPC共享工作,Windows操作系统(不包括Windows 98系列)在安装完成后,自动设置共享的目录为:C盘、D盘、E盘、ADMIN目录(C:\Windows)等,即为ADMIN$、C$、D$、E$等,但要注意,这些共享是隐藏的,只有管理员能够对他们进行远程操作。
输入 net share 可以查看开启的共享。
建立IPC空连接和使用非administrator用户建立IPC连接,是无法查看其他共享文件的(隐藏和非隐藏共享文件都查看不了)
net use \\192.168.10.15\ipc$ /u:"" ""
# 也可以直接
net use \\192.168.10.15 /u:"" ""
使用adminstrator用户建立IPC连接,是有权限查看其他共享文件的,仅能查看共享文件,没有共享的文件也查看不了。
IPC空连接
在介绍空会话之前,我们有必要了解一下一个安全会话是如何建立的。
在Windows NT中,是使用 NTLM挑战响应机制认证。
空会话是在没有信任的情况下与服务器建立的会话(即未提供用户名与密码)。那么建立空会话到底可以做什么呢?
利用IPC$,黑客甚至可以与目标主机建立一个空的连接,而无需用户名与密码(当然,对方机器必须开了ipc$共享,否则你是连接不上的),而利用这个空的连接,连接者还可以得到目标主机上的用户列表(不过负责的管理员会禁止导出用户列表的)。建立了一个空的连接后,黑客可以获得不少的信息(而这些信息往往是入侵中必不可少的),访问部分共享,如果黑客能够以某一个具有一定权限的用户身份登陆的话,那么就会得到相应的权限。
IPC空连接可以做什么?
对于NT,在默认安全设置下,借助空连接可以列举目标主机上的用户和共享,访问everyone权限的共享,访问小部分注册表等,并没有什么太大的利用价值;对2000作用更小,因为在Windows 2000 和以后版本中默认只有管理员有权从网络访问到注册表,而且实现起来也不方便,需借助工具。
从这些我们可以看到,这种非信任会话并没有多大的用处,但从一次完整的ipc$入侵来看,空会话是一个不可缺少的跳板,因为我们从它那里可以得到户列表,而大多数弱口令扫描工具就是利用这个用户列表来进行口令猜解的,成功的导出用户列表大大增加了猜解的成功率,仅从这一点,足以说明空会话所带来的安全隐患,因此说空会话毫无用处的说法是不正确的。以下是空会话中能够使用的一些具体命令:
建立ipc$空连接:
net use \\192.168.10.15\ipc$ /u:"" ""
建立ipc$非空连接:
net use \\192.168.10.15\ipc$ /u:"用户名" "密码" 或 net use \\192.168.10.15 /u:"用户名" "密码"
删除ipc$连接:
net use \\10.96.10.59\ipc$ /del
建立其他连接,把目标主机的C盘映射到本地的Z盘:
net use k: \\10.96.10.59\c$ /u:"administrator" "密码"
取消映射:
net use k: /del
有些主机的 Administrator 管理员的密码为空,那么我们可以尝试使用下面的命令进行连接,但是大多数情况下服务器都阻止了使用空密码进行连接。
ipc$使用的端口
首先我们来了解一些基础知识:
- SMB: (Server Message Block) Windows协议族,用于文件打印共享的服务;
- NBT: (NETBios Over TCP/IP)使用137(UDP)138(UDP)139(TCP)端口实现基于TCP/IP协议的NETBIOS网络互联。
- 在WindowsNT中SMB基于NBT实现,即使用139(TCP)端口;而在Windows2000中,SMB除了基于NBT实现,还可以直接通过445端口实现
关闭IPC$共享
net share ipc$ /delete
修改注册表关闭
限制IPC$缺省共享:
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Lsa
- Name:restrictanonymous
- Type:REG_DWORD
- Value:0x0(缺省)
0x1 匿名用户无法列举本机用户列表
0x2 匿名用户无法连接本机IPC$共享
说明:不建议使用2,否则可能会造成你的一些服务无法启动,如SQL Server。