服务器安全策略.docx
《服务器安全策略.docx》由会员分享,可在线阅读,更多相关《服务器安全策略.docx(20页珍藏版)》请在冰豆网上搜索。
![服务器安全策略.docx](https://file1.bdocx.com/fileroot1/2023-7/13/155c73f7-cb11-41f0-ab2f-2d3a1fad65ea/155c73f7-cb11-41f0-ab2f-2d3a1fad65ea1.gif)
服务器安全策略
windowsserver2003是目前最为成熟的网络服务器平台,安全性相对于windows2000有大大的提高,但是2003默认的安全配置不一定适合我们的需要,所以,我们要根据实际情况来对win2003进行全面安全配置。
说实话,安全配置是一项比较有难度的网络技术,权限配置的太严格,好多程序又运行不起,权限配置的太松,又很容易被黑客入侵,做为网络管理员,真的很头痛,因此,我结合这几年的网络安全管理经验,总结出以下一些方法来提高我们服务器的安全性。
第一招:
权限设置
1.请找到c盘的这些文件,把安全性设置只有特定的管理员有完全操作权限
下列这些文件只允许administrators访问
net.exe
net1.exet
cmd.exe
tftp.exe
netstat.exe
regedit.exe
at.exe
attrib.exe
cacls.exe
2.删除c:
\inetpub目录,删除iis不必要的映射,建立陷阱帐号,更改描述
第二招:
修改注册表,让系统更强壮
1、隐藏重要文件/目录可以修改注册表实现完全隐藏:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Current-Version\Explorer\Advanced\Folder\Hi-dden\SHOWALL”,鼠标右击“CheckedValue”,选择修改,把数值由1改为0
2、启动系统自带的Internet连接_blank">防火墙,在设置服务选项中勾选Web服务器。
3、防止SYN洪水攻击
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
新建DWORD值,名为SynAttackProtect,值为2
EnablePMTUDiscoveryREG_DWORD0
NoNameReleaseOnDemandREG_DWORD1
EnableDeadGWDetectREG_DWORD0
KeepAliveTimeREG_DWORD300,000
PerformRouterDiscoveryREG_DWORD0
EnableICMPRedirectsREG_DWORD0
4.禁止响应ICMP路由通告报文
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\interface
新建DWORD值,名为PerformRouterDiscovery值为0
5.防止ICMP重定向报文的攻击
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
将EnableICMPRedirects值设为0
6.不支持IGMP协议
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
新建DWORD值,名为IGMPLevel值为0
7.修改终端服务端口
运行regedit,找到[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\Wds\rdpwd\Tds\tcp],看到右边的PortNumber了吗?
在十进制状态下改成你想要的端口号吧,比如7126之类的,只要不与其它冲突即可。
2、第二处HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp,方法同上,记得改的端口号和上面改的一样就行了。
8、禁止IPC空连接:
cracker可以利用netuse命令建立空连接,进而入侵,还有netview,nbtstat这些都是基于空连接的,禁止空连接就好了。
打开注册表,找到Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous把这个值改成”1”即可。
9、更改TTL值
cracker可以根据ping回的TTL值来大致判断你的操作系统,如:
TTL=107(WINNT);
TTL=108(win2000);
TTL=127或128(win9x);
TTL=240或241(linux);
TTL=252(solaris);
TTL=240(Irix);
实际上你可以自己更改的:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters:
DefaultTTLREG_DWORD0-0xff(0-255十进制,默认值128)改成一个莫名其妙的数字如258,起码让那些小菜鸟晕上半天,就此放弃入侵你也不一定哦
10.删除默认共享
有人问过我一开机就共享所有盘,改回来以后,重启又变成了共享是怎么回事,这是2K为管理而设置的默认共享,必须通过修改注册表的方式取消它:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters:
AutoShareServer类型是REG_DWORD把值改为0即可
11.禁止建立空连接
默认情况下,任何用户通过通过空连接连上服务器,进而枚举出帐号,猜测密码。
我们可以通过修改注册表来禁止建立空连接:
Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous的值改成”1”即可。
第三招:
其它安全手段
1.禁用TCP/IP上的NetBIOS
网上邻居-属性-本地连接-属性-Internet协议(TCP/IP)属性-高级-WINS面板-NetBIOS设置-禁用TCP/IP上的NetBIOS。
这样cracker就无法用nbtstat命令来读取你的NetBIOS信息和网卡MAC地址了。
2.账户安全
首先禁止一切账户,除了你自己,呵呵。
然后把Administrator改名。
我呢就顺手又建了个Administrator账户,不过是什么权限都没有的那种,然后打开记事本,一阵乱敲,复制,粘贴到“密码”里去,呵呵,来破密码吧~!
破完了才发现是个低级账户,看你崩溃不?
创建2个管理员用帐号
虽然这点看上去和上面这点有些矛盾,但事实上是服从上面的规则的。
创建一个一般权限帐号用来收信以及处理一些*常事物,另一个拥有Administrators权限的帐户只在需要的时候使用。
可以让管理员使用“RunAS”命令来执行一些需要特权才能作的一些工作,以方便管理
3.更改C:
\WINDOWS\Help\iisHelp\common\404b.htm内容改为这样,出错了自动转到首页
4.安全日志
我遇到过这样的情况,一台主机被别人入侵了,系统管理员请我去追查凶手,我登录进去一看:
安全日志是空的,倒,请记住:
Win2000的默认安装是不开任何安全审核的!
那么请你到本地安全策略->审核策略中打开相应的审核,推荐的审核是:
账户管理成功失败
登录事件成功失败
对象访问失败
策略更改成功失败
特权使用失败
系统事件成功失败
目录服务访问失败
账户登录事件成功失败
审核项目少的缺点是万一你想看发现没有记录那就一点都没辙;审核项目太多不仅会占用系统资源而且会导致你根本没空去看,这样就失去了审核的意义
5.运行防毒软件
我见过的Win2000/Nt服务器从来没有见到有安装了防毒软件的,其实这一点非常重要。
一些好的杀毒软件不仅能杀掉一些著名的病毒,还能查杀大量木马和后门程序。
这样的话,“黑客”们使用的那些有名的木马就毫无用武之地了。
不要忘了经常升级病毒库,我们推荐mcafree杀毒软件+blackice_blank">防火墙
6.sqlserver数据库服务器安全和serv-uftp服务器安全配置,更改默认端口,和管理密码
7.设置ip筛选、用blackice禁止木马常用端口
一般禁用以下端口
135138139443445400048997626
8.本地安全策略和组策略的设置,如果你在设置本地安全策略时设置错了,可以这样恢复成它的默认值.
打开%SystemRoot%\Security文件夹,创建一个"OldSecurity"子目录,将%SystemRoot%\Security下所有的.log文件移到这个新建的子文件夹中.
在%SystemRoot%\Security\database\下找到"Secedit.sdb"安全数据库并将其改名,如改为"Secedit.old".
启动"安全配置和分析"MMC管理单元:
"开始"->"运行"->"MMC",启动管理控制台,"添加/删除管理单元",将"安全配置和分析"管理单元添加上.
右击"安全配置和分析"->"打开数据库",浏览"C:
\WINNT\security\Database"文件夹,输入文件名"secedit.sdb",单击"打开".
当系统提示输入一个模板时,选择"SetupSecurity.inf",单击"打开".
如果系统提示"拒绝访问数据库",不管他.
你会发现在"C:
\WINNT\security\Database"子文件夹中重新生成了新的安全数据库,在"C:
\WINNT\security"子文件夹下重新生成了log文件.安全数据库重建成功.
WEB服务器最重要的设置:
IIS的相关设置:
删除默认建立的站点的虚拟目录,停止默认web站点,删除对应的文件目录c:
inetpub,配置所有站点的公共设置,设置好相关的连接数限制,带宽设置以及性能设置等其他设置。
配置应用程序映射,删除所有不必要的应用程序扩展,只保留asp,php,cgi,pl,aspx应用程序扩展。
对于php和cgi,推荐使用isapi方式解析,用exe解析对安全和性能有所影响。
用户程序调试设置发送文本错误信息给户。
对于数据库,尽量采用mdb后缀,不需要更改为asp,可在IIS中设置一个mdb的扩展映射,将这个映射使用一个无关的dll文件如C:
WINNTsystem32inetsrvssinc.dll来防止数据库被下载。
设置IIS的日志保存目录,调整日志记录信息。
设置为发送文本错误信息。
修改403错误页面,将其转向到其他页,可防止一些扫描器的探测。
另外为隐藏系统信息,防止telnet到80端口所泄露的系统版本信息可修改IIS的banner信息,可以使用winhex手工修改或者使用相关软件如banneredit修改。
对于用户站点所在的目录,在此说明一下,用户的FTP根目录下对应三个文件佳,wwwroot,database,logfiles,分别存放站点文件,数据库备份和该站点的日志。
如果一旦发生入侵事件可对该用户站点所在目录设置具体的权限,图片所在的目录只给予列目录的权限,程序所在目录如果不需要生成文件(如生成html的程序)不给予写入权限。
因为是虚拟主机平常对脚本安全没办法做到细致入微的地步,更多的只能在方法用户从脚本提升权限:
ASP的安全设置:
设置过权限和服务之后,防范asp木马还需要做以下工作,在cmd窗口运行以下命令:
regsvr32/uC:
\WINNT\System32\wshom.ocx
delC:
\WINNT\System32\wshom.ocx
regsvr32/uC:
\WINNT\system32\shell32.dll
delC:
\WINNT\system32\shell32.dll
即可将WScript.Shell,Shell.application,WScript.Network组件卸载,可有效防止asp木马通过wscript或shell.application执行命令以及使用木马查看一些系统敏感信息。
另法:
可取消以上文件的users用户的权限,重新启动IIS即可生效。
但不推荐该方法。
另外,对于FSO由于用户程序需要使用,服务器上可以不注销掉该组件,这里只提一下FSO的防范,但并不需要在自动开通空间的虚拟商服务器上使用,只适合于手工开通的站点。
可以针对需要FSO和不需要FSO的站点设置两个组,对于需要FSO的用户组给予c:
winntsystem32scrrun.dll文件的执行权限,不需要的不给权限。
重新启动服务器即可生效。
对于这样的设置结合上面的权限设置,你会发现海阳木马已经在这里失去了作用!
PHP的安全设置:
默认安装的php需要有以下几个注意的问题:
C:
\winnt\php.ini只给予users读权限即可。
在php.ini里需要做如下设置:
Safe_mode=on
register_globals=Off
allow_url_fopen=Off
display_errors=Off
magic_quotes_gpc=On[默认是on,但需检查一遍]
open_basedir=web目录
disable_functions=passthru,exec,shell_exec,system,phpinfo,get_cfg_var,popen,chmod
默认设置com.allow_dcom=true修改为false[修改前要取消掉前面的;]
MySQL安全设置:
如果服务器上启用MySQL数据库,MySQL数据库需要注意的安全设置为:
删除mysql中的所有默认用户,只保留本地root帐户,为root用户加上一个复杂的密码。
赋予普通用户updatedeletealertcreatedrop权限的时候,并限定到特定的数据库,尤其要避免普通客户拥有对mysql数据库操作的权限。
检查mysql.user表,取消不必要用户的shutdown_priv,relo
ad_priv,process_priv和File_priv权限,这些权限可能泄漏更多的服务器信息包括非mysql的其它信息出去。
可以为mysql设置一个启动用户,该用户只对mysql目录有权限。
设置安装目录的data数据库的权限(此目录存放了mysql数据库的数据信息)。
对于mysql安装目录给users加上读取、列目录和执行权限。
Serv-u安全问题:
安装程序尽量采用最新版本,避免采用默认安装目录,设置好serv-u目录所在的权限,设置一个复杂的管理员密码。
修改serv-u的banner信息,设置被动模式端口范围(4001—4003)在本地服务器中设置中做好相关安全设置:
包括检查匿名密码,禁用反超时调度,拦截“FTPbounce”攻击和FXP,对于在30秒内连接超过3次的用户拦截10分钟。
域中的设置为:
要求复杂密码,目录只使用小写字母,高级中设置取消允许使用MDTM命令更改文件的日期。
更改serv-u的启动用户:
在系统中新建一个用户,设置一个复杂点的密码,不属于任何组。
将servu的安装目录给予该用户完全控制权限。
建立一个FTP根目录,需要给予这个用户该目录完全控制权限,因为所有的ftp用户上传,删除,更改文件都是继承了该用户的权限,否则无法操作文件。
另外需要给该目录以上的上级目录给该用户的读取权限,否则会在连接的时候出现530Notloggedin,homedirectorydoesnotexist.比如在测试的时候ftp根目录为d:
soft,必须给d盘该用户的读取权限,为了安全取消d盘其他文件夹的继承权限。
而一般的使用默认的system启动就没有这些问题,因为system一般都拥有这些权限的。
数据库服务器的安全设置
对于专用的MSSQL数据库服务器,按照上文所讲的设置TCP/IP筛选和IP策略,对外只开放1433和5631端口。
对于MSSQL首先需要为sa设置一个强壮的密码,使用混合身份验证,加强数据库日志的记录,审核数据库登陆事件的“成功和失败”。
删除一些不需要的和危险的OLE自动存储过程(会造成企业管理器中部分功能不能使用),这些过程包括如下:
Sp_OACreateSp_OADestroySp_OAGetErrorInfoSp_OAGetProperty
Sp_OAMethodSp_OASetPropertySp_OAStop
去掉不需要的注册表访问过程,包括有:
Xp_regaddmultistringXp_regdeletekeyXp_regdeletevalue
Xp_regenumvaluesXp_regreadXp_regremovemultistring
Xp_regwrite
去掉其他系统存储过程,如果认为还有威胁,当然要小心Drop这些过程,可以在测试机器上测试,保证正常的系统能完成工作,这些过程包括:
xp_cmdshellxp_dirtreexp_dropwebtasksp_addsrvrolemember
xp_makewebtaskxp_runwebtaskxp_subdirssp_addlogin
sp_addextendedproc
在实例属性中选择TCP/IP协议的属性。
选择隐藏SQLServer实例可防止对1434端口的探测,可修改默认使用的1433端口。
除去数据库的guest账户把未经认可的使用者据之在外。
例外情况是master和tempdb数据库,因为对他们guest帐户是必需的。
另外注意设置好各个数据库用户的权限,对于这些用户只给予所在数据库的一些权限。
在程序中不要用sa用户去连接任何数据库。
网络上有建议大家使用协议加密的,千万不要这么做,否则你只能重装MSSQL了。
入侵检测和数据备份
入侵检测工作
作为服务器的日常管理,入侵检测是一项非常重要的工作,在平常的检测过程中,主要包含日常的服务器安全例行检查和遭到入侵时的入侵检查,也就是分为在入侵进行时的安全检查和在入侵前后的安全检查。
系统的安全性遵循木桶原理,木桶原理指的是:
一个木桶由许多块木板组成,如果组成木桶的这些木板长短不一,那么这个木桶的最大容量不取决于长的木板,而取决于最短的那块木板。
应用到安全方面也就是说系统的安全性取决于系统中最脆弱的地方,这些地方是日常的安全检测的重点所在。
日常的安全检测
日常安全检测主要针对系统的安全性,工作主要按照以下步骤进行:
1.查看服务器状态:
打开进程管理器,查看服务器性能,观察CPU和内存使用状况。
查看是否有CPU和内存占用过高等异常情况。
2.检查当前进程情况
切换“任务管理器”到进程,查找有无可疑的应用程序或后台进程在运行。
用进程管理器查看进程时里面会有一项taskmgr,这个是进程管理器自身的进程。
如果正在运行windows更新会有一项wuauclt.exe进程。
对于拿不准的进程或者说不知道是服务器上哪个应用程序开启的进程,可以在网络上搜索一下该进程名加以确定[通常的后门如果有进程的话,一般会取一个与系统进程类似的名称,如svch0st.exe,此时要仔细辨别[通常迷惑手段是变字母o为数字0,变字母l为数字1]
3.检查系统帐号
打开计算机管理,展开本地用户和组选项,查看组选项,查看administrators组是否添加有新帐号,检查是否有克隆帐号。
4.查看当前端口开放情况
使用activeport,查看当前的端口连接情况,尤其是注意与外部连接着的端口情况,看是否有未经允许的端口与外界在通信。
如有,立即关闭该端口并记录下该端口对应的程序并记录,将该程序转移到其他目录下存放以便后来分析。
打开计算机管理==》软件环境==》正在运行任务[在此处可以查看进程管理器中看不到的隐藏进程],查看当前运行的程序,如果有不明程序,记录下该程序的位置,打开任务管理器结束该进程,对于采用了守护进程的后门等程序可尝试结束进程树,如仍然无法结束,在注册表中搜索该程序名,删除掉相关键值,切换到安全模式下删除掉相关的程序文件。
5.检查系统服务
运行services.msc,检查处于已启动状态的服务,查看是否有新加的未知服务并确定服务的用途。
对于不清楚的服务打开该服务的属性,查看该服务所对应的可执行文件是什么,如果确定该文件是系统内的正常使用的文件,可粗略放过。
查看是否有其他正常开放服务依存在该服务上,如果有,可以粗略的放过。
如果无法确定该执行文件是否是系统内正常文件并且没有其他正常开放服务依存在该服务上,可暂时停止掉该服务,然后测试下各种应用是否正常。
对于一些后门由于采用了hook系统API技术,添加的服务项目在服务管理器中是无法看到的,这时需要打开注册表中的HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices项进行查找,通过查看各服务的名称、对应的执行文件来确定是否是后门、木马程序等。
6.查看相关日志
运行eventvwr.msc,粗略检查系统中的相关日志记录。
在查看时在对应的日志记录上点右键选“属性”,在“筛选器”中设置一个日志筛选器,只选择错误、警告,查看日志的来源和具体描述信息。
对于出现的错误如能在服务器常见故障排除中找到解决办法则依照该办法处理该问题,如果无解决办法则记录下该问题,详细记录下事件来源、ID号和具体描述信息,以便找到问题解决的办法。
7.检查系统文件
主要检查系统盘的exe和dll文件,建议系统安装完毕之后用dir*.exe/s>1.txt将C盘所有的exe文件列表保存下来,然后每次检查的时候再用该命令生成一份当时的列表,用fc比较两个文件,同样如此针对dll文件做相关检查。
需要注意的是打补丁或者安装软件后重新生成一次原始列表。
检查相关系统文件是否被替换或系统中是否被安装了木马后门等恶意程序。
必要时可运行一次杀毒程序对系统盘进行一次扫描处理。
8.检查安全策略是否更改
打开本地连接的属性,查看“常规”中是否只勾选了“TCP/IP协议”,打开“TCP/IP”协议设置,点“高级”==》“选项”,查看“IP安全机制”是否是设定的IP策略,查看“TCP/IP”筛选允许的端口有没有被更改。
打开“管理工具”=》“本地安全策略”,查看目前使用的IP安全策略是否发生更改。
9.检查目录权限
重点查看系统目录和重要的应用程序权限是否被更改。
需要查看的目录有c:
;c:
winnt;
C:
winntsystem32;c:
winntsystem32inetsrv;c:
winntsystem32inetsrvdata;c:
documentsand
Settings;然后再检查serv-u安装目录,查看这些目录的权限是否做过变动。
检查system32下的一些重要文件是否更改过权限,包括: