原创 修复XP设置本机登录安全策略后无法登录用户交互界面

2011-1-28 09:47 7393 9 9 分类: 工程师职场

修复XP设置本机登录安全策略后无法登录用户交互界面


wxleasyland


2010年8月7日


 


XP系统,我只想让administrators组可以本机登录XP,而users组和guests组不能本机登录XP。


于是,在控制面板中运行本地安全策略,修改“拒绝本地登录”权限,加入了users组和guests组。


可以确定的是,我的administrator和我用的用户名w只在administrators,没有在users组。


我的另外一个用户名u只在users组中。


用户名guest只在guests组中。


 


没想到设置完后,完蛋了!


登录XP时,我用的用户名w、administrator都登录不了了!提示“本地策略不允许交互登录”!当然,用户名u和guest更没法登录。


奇怪,w、administrator只属于administrators组,怎么它们都被当作users组拒绝了?难道users组会影响到administrators组?现实看来是这样的。可能everyone > users > administartos。


于是重启,F8,选“上一次正确的配置”,启动XP,登录,拒绝!!


于是重启,F8,选“安全模式”,启动XP,登录,仍然拒绝!!


完蛋了,安全模式也登录不了!


试了光盘运行“故障恢复台”,结果没几个命令,根本无法修改到安全策略。


用光盘再新安装了一个XP,也不知道如何解掉故障机的安全策略文件。


 


上网找办法,这篇文章《解开拒绝本地登录的死结》给了我很大帮助:


http://www.cpcwedu.com/heikeanquan/jishuyuzixun/anquanfangan/200608/30-22348.html


折腾了很久很久,快要放弃了,终于解决:


 


这台故障机XP启动到用户登录界面后,放着,这时网络是可以访问的。还好网络是可以访问的,不然真的完蛋了。它的IP是192.168.1.4。


 


在另一台机子中,想办法telnet到故障机上,cmd中运行:


net use \\192.168.1.4  "密码" /user:"administrator"


成功


sc \\192.168.1.4 config tlntsvr start= auto


成功


sc \\192.168.1.4 start tlntsvr


成功运行telnet服务,看来胜利在望


telnet 192.168.1.4


结果,输入完用户名和密码,提示“登录失败: 未授予用户在此计算机上的请求登录类型。”,所有用户名都不行,晕!!


运行regedit ,连接到192.168.1.4上,看NTLM认证策略,连接修改HKEYLOCALMACHINE\SOFTWARE\MICROSOFT\TELNETSERVER\1.0下的NTLM键值由2改为0,结果没有NTLM这个键。


没办法,可能是telnet的登录权限与登录XP交互界面的权限有互通,会互相影响?!


看来无法telnet到故障机上了,此路不通!


 


看mmc是否可以远程运行到192.168.1.4上?


因为:


运行mmc


打开   c:\windows\system32\secpol.msc  这是本地安全策略


打开   c:\windows\system32\gpedit.msc  这是本地计算机策略


打开   c:\windows\system32\devmgmt.msc  这是硬件管理


打开   c:\windows\system32\compmgmt.msc  这是计算机管理


单击“开始”/“运行”命令,打开系统运行对话框,在其中输入字符串命令“mmc”,单击“确定”按钮后,打开系统的MMC控制台窗口 依次单击MMC控制台窗口菜单栏中的“文件”/“添加/删除管理单元”命令,在其后出现的设置窗口中,单击“独立”标签,并在对应的标签页面中,继续单击“添加”按钮。选中该设置窗口中的“计算机管理”选项,再单击对应窗口中的“添加”按钮,在随后弹出的对话框中,将“另一台计算机”选项选中,同时输入需要进行远程控制的服务器IP地址192.168.1.4,再单击“完成”按钮退出“计算机管理”设置窗口。


结果,点“完成”时,提示故障机的“RPC服务未启动”。


看来要启动故障机的RPC服务先,再上网查。


运行:


sc \\192.168.1.4 config RpcSs start= auto


成功


sc \\192.168.1.4 start RpcSs


失败,看来运行不了RPC服务!故障机重启,也不行。


想用故障恢复台的enable  rpcss  service_auto_start来启动这个服务,运行故障恢复台太麻烦,而且不一定成功,算了。


MMC这条路又不通!


 


想用PsExec工具,来远程运行CMD等命令,下载PsExec,运行:


PsExec \\192.168.1.4 –u administrator –p 密码 c:\windows\system32\cmd.exe


失败!同样“未授予用户在此计算机上的请求登录类型”。


看来也不通!


 


想用ntrights -r SeDenyInteractiveLogonRight -u administrator -m \\IP(目标机的) 命令(注:这条命令是把目标机上的administrator从拒绝本地登陆的策略中删除),运行之后系统会提示"Revoking SeDenyInteractiveLogonRight form administrator on \\IP ...successfully",解开拒绝本地登录的“死结”。


但是,一搜,发现这个ntrights工具是在WINDOWS2000资源包里的,且只能用于WINDOWS2000。


此路不通!


 


最后,只有AT命令,看能不能通过它运行其它命令了,不然就没招了:


at \\192.168.1.4 14:54 secedit /export /CFG c:\sec.inf


运行,成功了!~太好了,能解决了。


访问\\192.168.1.4\c$,成功,拷出sec.inf,编辑:


找到


SeDenyInteractiveLogonRight = SUPPORT_388945a0,ASPNET,Guest,*S-1-5-32-545,*S-1-5-32-546


可见,后面2个成员应该是users和guests,将它们去掉,改成


SeDenyInteractiveLogonRight = SUPPORT_388945a0,ASPNET,Guest


人员的对应关系如下(别的机子可能不同):


*S-1-1-0,           *S-1-5-32-544,        *S-1-5-32-545,    *S-1-5-32-547,   *S-1-5-32-551,       *S-1-5-32-546


everyone,       administartors,   users,        power users,  backup operators ,   guests 


再将sec.inf拷回去到故障机c:\,再


at \\192.168.1.4 15:04 secedit /configure /db secedit.sdb /CFG c:\sec.inf


将新的安全策略sec.inf导入到安全数据库secedit.sdb中,成功!


at \\192.168.1.4 15:05 secedit /refreshpolicy machine_policy /enforce


强制在故障计算机上刷新策略设置,成功了!


原理是:在Windows2000/XP中,不支持对计算机本地策略的安全设置部分进行远程管理,而且本地安全策略的安全设置通常存放在一个二进制的安全数据库secedit.sdb中,这个安全数据库的结构我们无从知道,因此无法直接编辑secedit.sdb文件。需要用secedit命令将本地安全策略导出到文件中,再修改,再导回去,再刷新,就好了。


 


故障机重启,用户名w、administrator能正常登录了,OK!终于解决故障!


所以以后要小心用拒绝的权限,拒绝权限中只添加用户名就好了,添加用户组挺危险。


 


这时,再telnet 192.168.1.4


成功,可以用用户名和密码上去了。


说明本机登录的权限与telnet的登录权限是相互作用的。


 


这时,用MMC去连192.168.1.4,也能成功了。


 



 


 


转载:MMC的一些参考:


当然在使用MMC控制台对服务器进行远程管理时,必须先获得服务器的超级管理权限,然后还需要安装好相应的MMC插件和一定的管理工具才可以;例如要想对Windows Server 2003服务器进行远程控制的话,必须先获得管理Windows 2003服务器的服务权限,同时还需要在本地计算机中安装好MMC插件和Windows 2003服务器的相关管理工具。一旦满足了上述条件,你就可以按照如下步骤来对服务器进行远程控制了:


 


单击“开始”/“运行”命令,打开系统运行对话框,在其中输入字符串命令“mmc”,单击“确定”按钮后,打开系统的MMC控制台窗口 依次单击MMC控制台窗口菜单栏中的“文件”/“添加/删除管理单元”命令,在其后出现的设置窗口中,单击“独立”标签,并在对应的标签页面中,继续单击“添加”按钮


选中该设置窗口中的“计算机管理”选项,再单击对应窗口中的“添加”按钮,在随后弹出的如图3所示的对话框中,将“另一台计算机”选项选中,同时输入需要进行远程控制的服务器IP地址,再单击“完成”按钮退出“计算机管理”设置窗口;


 


返回到MMC控制台窗口,用鼠标双击刚刚添加好的管理单元,以后你就能想管理本地工作站一样,对服务器进行远程控制和管理了。不过当你在对远程服务器进行管理时,系统屏幕上出现“没有访问远程计算机的权限”或者“拒绝访问”的错误提示时,就表明你还没有获得远程管理服务器的权限。此时,你不妨在控制台窗口中依次单击“文件”/“保存”菜单命令,在随后出现的文件保存对话框中,将当前控制台另存为“远程管理服务器”,并退出MMC控制台界面。


 


  接着依次单击“开始”/“程序”/“管理工具”选项,在其后出现的下级菜单中右击刚才保存好的“远程管理服务器”项目(如图4所示),并执行快捷菜单中的“运行方式”命令,在随后弹出的“运行身份”设置框中,输入有权管理远程服务器的用户名及密码,如图5所示。然后重新执行MMC命令,打开MMC控制台窗口,就能对目标服务器进行远程管理了。值得注意的是,倘若本地计算机和目标服务器不属于Active Directory成员的话,即使你在“运行身份”设置框中正确输入了目标服务器的超级管理员帐号,本地计算机也需要创建一个相同的超级管理员帐号。


 



 


 


2011年1月26日


如果故障机是“简单文件共享”,则有问题了!因为“简单文件共享”会将所有的访问都转变成GUEST用户权限:


资源管理器中连接到\\192.168.1.4\C$,会提示GUEST用户,当然GUEST用户肯定不行。


打net use \\192.168.1.4  "密码" /user:"administrator",提示成功,即使用户名不对或者密码不对,也会提示成功!(如果不是在“简单文件共享”,则会提示密码不正确等信息)。这时,就连接上IPC$了,但是实际仍只是GUEST权限!!再运行AT \\192.168.1.4,提示“拒绝访问”,或SC \\192.168.1.4 query命令,提示“OpenSCManager FAILED 5”,都不成功!!


 


“简单文件共享”下,Windows XP要求进行网络访问的用户全部采用来宾方式。但是,在Windows XP安全策略的用户权利指派中又禁止Guest用户通过网络访问系统。这样两条相互矛盾的安全策略导致了网内其他用户无法通过网络访问使用Windows XP的计算机。


 


·XP HOME除了IPC$共享,再没有其他类型的隐藏共享或者管理共享,所以如果被访问的是XP HOME机器不能访问C$正常。


·被访问的如果是XP PRO,要有admin权限,同时要禁用“简单文件共享”


 


------------------------------------------------------------------------------------


IPC$共享的问题:


一种办法是把ipc$和默认共享都删除了。但重起后还会有。这就需要改注册表。


1,先把已有的删除


net share ipc$ /del


net share admin$ /del


net share c$ /del   (有几个删几个)


2,禁止建立空连接


首先运行regedit,找到如下主键[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLSA]


把RestrictAnonymous(DWORD)的键值改为:00000001。


 


限制IPC$缺省共享


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa


Name:restrictanonymous


Type:REG_DWORD


Value:0x0(缺省)


0x1 匿名用户无法列举本机用户列表


0x2 匿名用户无法连接本机IPC$共享


说明:不建议使用2,否则可能会造成你的一些服务无法启动,如SQL Server


 


3,禁止自动打开默认共享


对于server版,找到如下主键[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerParameters]把AutoShareServer(DWORD)的键值改为:00000000。


对于pro版,则是[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerParameters]把AutoShareWks(DWORD)的键值改为:00000000。


 


删除共享


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters


Name:AutoShareServer    (要新建)


Type:REG_DWORD


Value:0x0


 


禁止ADMIN$缺省共享


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters


Name:AutoShareWks       (要新建)


Type:REG_DWORD


Value:0x0


 


我试验:一台用GHOST XP安装的机器,远程连接失败,在本机上看:


1.    本机net share,看,没有C$等;


2.    注册表中有AutoShareServer、AutoShareWks,值为0,没有RestrictAnonymous


3.    是简单文件共享


4.    看sc query rpcss,正常,服务运行中


所以远程连接IPC$后,远程操作AT、SC等命令都是失败。


解决:


将本机注册表中的AutoShareServer、AutoShareWks删掉,再重启,就出来C$等了!


这时,远程连接IPC$后,远程操作AT、SC等命令仍是失败。远程访问C$也不行。将取消本机的“简单文件共享”,远程操作AT、SC等命令就成功了!



 


 


先说默认盘符共享:默认盘符共享是方便管理员管理而开启的方便之门,但也给别有用心的人开启了入侵"后门".所以强烈建议关闭,除非自用.关闭办法:


1:推荐用注册表.PRO版系统:indows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/lanmanserver/parameters]"AutoShareWks"=dword:00000000然后保存为*.reg,执行后就可以取消win2000和winxp的默认硬盘共享了。如果系统是服务器版本:Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/lanmanserver/parameters]"AutoShareServer"=dword:00000000补充一点:网上也有的说在服务器版中,用AutoShareWks可以关闭Admin$,这个也是子虚乌有!!!


2:用net share命令:net share c$ /del      net share d$ /del   net share X$ /del............注: 用net share 命令关闭后,重起系统默认盘符共享会再此启用的,要想永久关闭可以使用net share建立一个开机脚本.


再说IPC$:


1、IPC$和平时说的“默认共享”“管理共享”是两个概念。表现形式也不一样。前者指IPC管道连接,后者是文件共享。形象点说一个是门一个是门里的东西。


2、IPC$管道连接,也就是平时说的空连接,只有级别区别(0,1,2),没有删除这个说法。修改需要在注册表修改,推荐设置成1。设置成2会造成SQL的管道无法使用.禁止建立空连接:Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Lsa]"restrictanonymous"=dword:00000001


微软的帮助说明中是这样描述的:IPC$ 是作“服务器”服务所必需的特殊共享资源,并且不能删除。 IPC$不能用所谓含有net share ipc$ /del的开机脚本删除,就想上面说的,根本没有删除这个说法!要想停止IPC$共享,可以修改注册表,禁止建立空连接;或者停止server服务。


最后再说点:禁止空连接后,使用"//PCNAME"来查询该机的共享资源时就会提示没权限.但你可以使用//PCNAME/X来访问该机共享的"X"文件夹的内容.网吧开启共享是有必要的,停止SERVER服务是不可取的,毕竟客人要的东西你不可能全部准备齐,也不可能客人次次来都叫你去帮他下.你可以说,把他要的东西放在服务器,但是你的服务器容量有多大?你能放心的在服务器上开启写入权限?



 


 


SC命令可以显示本机的服务,也可以显示远程机器的服务(需要先连接IPC$)。


telnet服务的“显示名称”是telnet,“服务名称”是tlntsvr


sc GetKeyName telnet  是查看“显示名称”为telnet的服务的“服务名称”。


sc \\192.168.1.4 query


 



 


 


tasklist命令可以显示本机的进程,也可以显示远程机器的进程(不需要先连接IPC$,连了IPC$也没用)。


tasklist /s \\192.168.1.4 /u administrator /p 密码


直接用就好了!


 



 


 


IPC$入侵:参见http://linusok.blog.sohu.com/5225313.html


NTLM验证机制的除掉,一般我们有如下几种方法:


1通过修改远程注册表更改telnet服务器配置,将验证方式从2改为1或0;


2使用NTLM.exe,上传后直接运行,可将telnet服务器验证方式从2改为1;


3在本地建立扫描到的用户,以此用户身份开启telnet客户机并进行远程登录;


目标系统telnet的用户和密码是:redhatlinux和ilovehack0141,我的客户端是:administrator和567,他们并不吻合,所以我现在要构造这个吻合。于是我用如下指令达到:


c:\>net user redhatlinux ilovehack0141 /add


返回成功的信息略...........................


c:\>net localgroup administrators redhatlinux /add


返回成功的信息略...........................


c:\>runas /u:redhatlinux cmd.exe


输入redhatlinux的密码:      //这里我输入了ilovehack0141回车


试图将cmd.exe作为用户"y139\redhatlinux"启动...


runas错误:无法运行-cmd.exe


1058:无法启动服务,原因可能是已被禁用和想关联的设备没有启动。


经过一番查找后发现,runas指令是依赖与secondary logon服务的


我用net start "secondary logon"启动了它,然后继续上面的方法:


c:\>runas /u:redhatlinux cmd.exe


输入redhatlinux的密码:      //这里我输入了ilovehack0141回车


试图将cmd.exe作为用户"y139\redhatlinux"启动...


稍等下,大约一秒钟,就会又跳出一个cmd的窗口,它的标题显示:


c:\ cmd.exe(作为Y139\redhatlinux运行)


那么这个时候在这个窗口里输入:


c:\>telnet 192.168.0.6 32         //不要忘了,这里的telnet端口被我在上面用tlntadmn修改过了啊。


这个时候会再出现上面的图中所说的那样是否要发送用户和密码去验证


这时候当然要选择‘Y'了啊!


因为这个cmd.exe 窗口是以目标系统的账户和密码在运行的,所以就不会再出现连接不上主机的提示了,所以上面的这个方法也是跳过NTLM验证机制的一种方法!


 


4使用软件,比如opentelnet.exe(需要管理员权限且开启IPC管道)


5使用脚本,如RTCS,(需要管理员权限但不依赖IPC管道)


 



  


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
9
关闭 站长推荐上一条 /3 下一条