随着Linux的普及。不论是安全性与PHP执行速度方面都高于Windows。
习惯了Windows的我用不来Linux,难道就不能做安全了吗?答案是否定的,首先我想说:
我认为目前Linux的家庭用户比较少,在用户量方面Linux是敌不过Windows的,因为大部分游戏,应用软件等都是基于win平台VB,VC,C#等开发的,而且目前电脑初学者学习的教材方面大部分都是关于Windows的,至少这几年,十几年内微软应该还是win霸主。在Linux挖掘出一个漏洞,能通过利用此漏洞广为传播病毒的计算机感染数量很少,所以Linux的漏洞价值不是很高。而且玩Linux的高手我认为大部分是技术型的,不屑于去追求那些蝇头小利以及炫耀什么,乐于开源以及分享自己最新的研究成果,这个原因也造就了如今Linux的安全性。
Windows只要安全细节做得好,入侵成功的几率是很低的。好了,废话不多说了,下面进入正文,谈谈我对web服务器安全防护的经验和方案。
这个安全防护方案正是我博客网站www.9170.org采用的防护方案,还有更高的防护方案以后再说(我提供一种思路,比如:一个外网IP开放VPN和NAT端口转发,然后路由器里面的一台计算机连接VPN,把80端口转发到内网,内网又有一个MySQL内网服务器)
方案如下:
系统平台:
Win2003sp2企业版,打上所有微软发布的安全更新。
主要硬件:Intel双核CPU,512M内存
优化设置:
关闭默认共享$admin,$c等,代码如下:
net share c$ /delete
net share admin$ /delete
echo .. delshare.reg .......
echo Windows Registry Editor Version 5.00 c:\delshare.reg
echo [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters] c:\delshare.reg
echo "AutoShareWks"=dword:00000000 c:\delshare.reg
echo "AutoShareServer"=dword:00000000 c:\delshare.reg
echo .. delshare.reg .....
regedit /s c:\delshare.reg
echo .. delshare.reg ....
del c:\delshare.reg
新建文本文档另存为.bat文件运行.
尽量不安装任何应用软件(如:迅雷,QQ等)安装好杀毒软件以及防火墙。
安装winrar,关闭多余系统服务项(如自带的防火墙,计划任务,打印机等。注意:请根据服务器实际情况来关闭,如果不懂系统后台服务不建议去修改。可以参考http://baike.baidu.com/view/685551.htm)
开机自启的注册表键值除输入法外一般都可以删除。
系统安全设置
磁盘都使用NTFS格式,如果是FAT32,请转换。命令格式如:convert c:/fs:ntfs(命令默认是C盘,如果是别的分区,请修改盘符)对根目录的权限值保留administrator、system完全权限,
Web根目录只保留administrator、system、以及用来启动该web的IIS用户完全访问权限。
CMD.EXE,NET.EXE,NET1.EXE,以及回收站目录只保留administrator和system的完全权限,
删除安装IIS后生成的intepub目录。目录安全权限设置完毕
PHP安全设置
由于此文说的是安全,跳过PHP安装步骤。编辑PHP配置文件,用文本编辑器打开php.ini。做如下修改:
safe_mode = On
disable_functions = passthru, exec, shell_exec, system, fopen, mkdir, rmdir, chmod, unlink, dir, fopen, fread, fclose, fwrite, file_exists, closedir, is_dir, readdir, opendir, fileperms, copy, unlink, delfile, popen, COM
PHP使用network service这个用户组启动的,所以在PHP的安装目录我们需要给他权限,
至此PHP的安全设置已经完毕。
MySQL安全设置
安装好MySQL和phpmyadmin后使用root账户登录,修改root为强密码,最好是数字+大写+小写,如果记得住特殊符号也行。然后点权限,添加新用户新建一个用户,创建与用户同名的数据库并授予所有权限,不给予特殊权限。网站连接MySQL的用户就使用这个新建的,千万不要用root!
IIS安全设置
对每个挂在IIS里面的网站设置一下权限,如MDB数据库路径在IIS里设置不能读取,写入等,无执行权限
上传目录无执行可读取。
关闭未知的扩展等,最好在每个网站都用一个独立用户启动,可以命名为IIS_***,对应每一个网站根目录的权限,IIS允许匿名访问,这样可以防止别的网站跨目录访问
防护CC和DDOS攻击
攻击的原理就不说了,搜索引擎搜索一下就知道了,一般的CC攻击都是WEB动态页面发起的,而且会在短时间新建很多TCP端口连接,根据这个特征,我们可以安装一个DDOS防火墙,设置规则,我使用的是冰盾,是我设置的防护CC攻击规则
在端口过滤里面可以设置流量
这样设置完以后就能防止DDOS以及CC攻击。
而且能防止扫描软件扫描WEB页面和暴力破解后台登陆(因为做了连接数过多屏蔽,一般的扫描和破解都是多线程开放很多端口同时进行,工具扫描的连接数过多就自动屏蔽了,增大安全性能)