-- windows服务器的常用安全配置(web安全,信息安全,目录权限,安全策略,安全配置)
【官网】:#
应用场景
无论是自己的托管服务器还是虚拟主机,云服务器,在如今的社会环境下,十分需要注意起码的安全规范。基础资源
windows server 服务器
使用须知
这里给出一些基本的规范,安全没有尽头,需要维护人员不断的关注,改进,优化
配置步骤
>改掉不注重服务器安全的陋习。
<关于网站与Dedecms等开源项目>
1.)关注更新,谨慎维护:因为免费开源系统,版本老,各种上传漏洞,注入漏洞.
2.) 设置目录,遵循原则:避免为了省事,快速调试通过,就随便把一个顶级目录设置为,(web用户甚至every one+完全控制)的权限.
<关于企业内部web项目>
1.) 开启的调试开关:调试开关一开,各种sql语句,连接地址,数据表都暴露无遗,只要故意输入个错误参数就会触发.
2.) 同目录日志输出:禁止在php的同目录下打印文件,这就意味着当前目录,同时具备: 写入权限,执行权限.
3.) FTP目录权限大+弱密码: 超过需求的FTP权限,外加弱密码,很容易被突破. 还要禁止有目录上翻的预览权限,FTP一般都涉及核心系统.
>未雨绸缪,避免不必要的损失。
1.)windows相关漏洞补丁,需要及时更新. 服务器账号密码要足够复杂,定期更新,只给负责人不给其它人。
2.)利用好阿里云安全: 日常有时间多观察下阿里云的风险提示,尝试学习下怎么修复这些风险,漏洞。
开启自动隔离,以及对核心服务器开启安全优先。
3.)规范好目录及FTP的管理: 避免(FTP目录权限松和随意+用户密码是弱密码)出现,这样是很脆弱的。
日志目录: 写入 (不要给执行权限)
代码目录: 执行 (不要有写入权限)
上传目录: 写入,读取 (不要有执行权限)
注:所有目录及FTP的设置都是针对最底下一层的目录,而不是针对顶级目录。
4.)所有业务系统,产品中的涉及的第三方平台,开放平台,统计账号,API,SDK,支付账号等都要基于公司邮箱进行申请,避免员工离职带来的交接难题。
5.)各种重要的平台,控制台等账号密码不要用弱密码或公用密码,避免被一锅端。
6.)开源,免费产品与核心的系统分开在不同的服务器部署,并且及时关注开源免费产品的安全补丁的修复,更新版本等。
7.)适当增加一些cdn,防止ip暴露.
8.)业余适当了解:学习一些web,服务器安全方面的基础知识,避免因为设置不当导致重大漏洞.
9.)如果有UGC内容,也就是用户提交内容的情况,需要做好实名认证,并做好敏感词替换(避免黄赌毒信息),避免被监管机构打击。
10.)数据库要设置IP白名单,角色要划分好。所有权限都给与满足需求的情况下的最低权限。
11.)平常建立定期备份机制,最好是自动的。以便万一被攻击了也可以恢复。包括:配置好的程序,数据库等
>已经被攻击了之后怎么办。
1.)尝试临时使用安装安全狗: 安全狗是一个专门的服务端,网站相关的安全工具,可以扫描木马,网页挂马等.
1.1)如果有涉及访问网站需要验证或刷新之后才正常,则可以单独关闭掉cc防护。
1.2)安全狗安装路径的同级目录:SafeDogUpdateCenter文件夹里有个文件名叫safedog_user.psf的文件。这个是安全用户证书。删了就可以重新登录新的用户.
1.3) 运维中发现安全狗开启cc防护和ddos防护后可能会有异常,建议处理好了之后卸载安全狗。
2.)尽可能重装系统.
3.)重新下载一个最新版的dedecms或其它在用的开源系统进行部署,之后把数据库恢复过去. 新版本,官方估计修复了一些漏洞.
4.)在新服务器或重装后的服务器上,用svn下载下来的代码编译上传,之后调整配置,以前的项目程序都不要了.
5.)修改各种敏感,重要的密码,秘钥等等, 可能之前的程序,配置文件已泄露.
6.)如果服务器上有开源的和自己开发的,有条件要对服务器进行划分(内部的,外部网站的, 大型产品平台),将开源与内部系统分开。
常见问题
快速入门
>通用设置的一般生效处理.
>>磁盘,目录相关权限设置后需要重启WWW服务.
实践发现,如果不重启”World Wide Web Publishing Service”则会导致出现即便phpinfo都无法执行,提示”找不到的文件启用文件监视的解决方法”。
>基于云平台及第三方安全服务的处理.
>>善用云平台及主流知名的安全方案.
>>阿里云OSS的权限设置.
>>>控制员工只能访问单独bucket.
<步骤1>添加一个:自定义授权策略.
<步骤2>将自定义授权策略应用到权限管理中。
[注]
>服务器自身防止webshell的措施.
>>windows账户管理.
禁用guest账户。
可以给Administrator重命名。并设置超长且字符混合的密码。
>>仅允许指定用户远程协助.
[教训]public服务器被入侵后检查发现, 上述仅允许运行使用网络级别身份验证这块没有勾选。
>>IIS安装的安全勾选.
[教训]public服务器被攻击后,发现基本身份验证和windows身份验证都没安装。
>>用户组策略设置.
>>>删除”从网络访问此计算机策略”中的everyone选项.
在运行中输入gpedit.msc回车,打开组策略编辑器,选择计算机配置-Windows设置-安全设置-本地策略-用户权限分配:将“从网络访问此计算机”策略中的“Everyone”删除。
>>>拒绝通过远程桌面的账号。
在“拒绝通过远程桌面服务登陆”策略中,添加下面用户组和用户
>>根目录不要放到系统目录(c盘).
网站程序的根目录尽量不要放在系统盘下,防止黑客取得网站目录的访问权限后,最容易取得对系统目录的访问.
>>后台目录需要避免常用词(admin,houtai.manage等).
黑客会根据大家的习惯去试探,之后得到后台地址,再根据现有网上爆出的漏洞进行处理。因此后台目录需要搞得复杂一点。
>>服务器及站点的权限设置.
>>>磁盘权限及关联设置.
确保所有盘符都是NTFS格式,如果不是,可以用命令 convert d:/fs:ntfs 转换为NTFS格式。
所有磁盘根目录只给system和administrators(有时可以允许CREATOR OWNER)权限,其它删除。
[注1]如果条件允许,在关键软件安装完了后可以重命名用户组.
[注2]有时如果站点目录和php-cgi.exe等所在目录都在同一个磁盘,由于磁盘设置的权限比较小了,因此还需要授予php所在的目录(iusr,iis_iusrs权限),否则会导致php网站无法运行(提示找不到的文件启用文件监视的解决方法).
[参考]https://www.jb51.net/article/86402.htm
>>>不同类别的系统风险隔离.
SVN,OA,销售系统级别的产品,与网站(dedecms等)开源产品不要放到一个服务器上。
>>>站点的用户设置.
[步骤1] WebRoot权限直接继承磁盘权限即可.
[步骤2]WebRoot/x.com网站权限。
[注1]严禁给web站点目录授予everyone权限,如果发现请立刻删除。
[教训]public服务器被webshell入侵后,检查发现磁盘根目录有everyone权限。
每个网站对应一个目录,并为这个网站目录加上IUSR和IIS_IUSRS权限,都只给“列出文件夹内容”和“读取”权限. //该操作已实测有效,另外不同版本IIS在这个账号上稍有不同(比如有些是 network service).这里以windows server2008,server2012为例。
代码目录: 仅仅可执行(禁止写入)
上传/日志目录:仅仅写入(禁止执行).
[步骤3]给上传目录,日志目录设置写入权限.
对上传目录作单独设置。上传目录还需要给IUSR,IIS_IUSRS组再添加“修改”、“写入”权限。
[步骤4]拒绝上传或日志文件有执行权限.
<目标>
服务器上所有动态生成的文件的目录,都需要设置拒绝执行的权限。
<步骤1>
<步骤2>
https://jingyan.baidu.com/article/72ee561a429a44e16038df4d.html
>>>线上站点禁止长时间开启调试模式.
关闭调试模式,可以杜绝暴露数据库详细信息。
>>转移cmd.exe 等webshell基于的.exe程序.
WebShell入侵上传的文件,主要是通过调用系统上的一些命令,如cmd.exe、net.exe、 netstat.exe、tftp.exe、telnet.exe等程序来实现访问权限的提升,所以我们可以采用将这些命令移动位置、重命令的方法
>>修改注册表,禁止webshell权限.
>>>反注册(解除注册)webshell等组件.
1.)卸载wscript.shell对象(恢复时,命令去掉/u):
在cmd下或直接运行:regsvr32 /u %windir%\system32\WSHom.Ocx
regsvr32 /u %windir%\system32\wshext.dll
2.)卸载FSO对象,在cmd下或直接运行(恢复时去掉/u):
regsvr32.exe /u %windir%\system32\scrrun.dll
regsvr32 /u %windir%\system32\scrrun.dll
[注]有些网站需要就不能删除.
3.)卸载stream对象,在cmd下或直接运行(恢复时,去掉/u):
regsvr32 /s /u “C:\ProgramFiles\CommonFiles\System\ado\msado15.dll”
4.)禁止guest账户执行shell组件:
<方案1>regsvr32 /u shell32.dll
<方案2>Shell.Application可以使用禁止Guest用户使用shell32.dll来防止调用此组件。使用命令:cacls c:\windows\system32\shell32.dll /e /d guests
禁止guests用户执行cmd.exe的命令是:
cacls c:\windows\system32\cmd.exe /e /d guests
[注]cacls是设置目录权限的命令,/e是编辑非覆盖,/d是拒绝。