基于Windows的xampp安全环境搭建文档格式.docx
《基于Windows的xampp安全环境搭建文档格式.docx》由会员分享,可在线阅读,更多相关《基于Windows的xampp安全环境搭建文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
下面我们来配置apache服务器,修改xampp\apache\conf,下的http.conf的配置文件
注意,默认该服务器是使用80端口,如果该端口被占用,则必须修改apache服务器的默认端口
Listen8080
ServerNamelocalhost:
8080
1.隐藏apache版本
默认情况下,访问apache服务器,访问某个禁止文件或者不存在的文件时,会显式服务器的版本信息,如下所示
Apache/2.2.17(Win32)mod_ssl/2.2.17OpenSSL/0.9.8oPHP/5.3.4mod_perl/2.0.4Perl/v5.10.1
或者使用http:
//website/server-info,也会在网站的响应信息中会清楚的看到如下信息:
这样是非常危险的,然攻击者能清楚的知道你使用的服务器的信息,我们必须把屏蔽掉,首先将,Apache模块mod_info.so在httpd.conf中注释掉,:
#LoadModuleinfo_modulemodules/mod_info.so
然后在\xampp\apache\conf\extra中的httpd-default.conf中,将
ServerTokensFull改为Prod//不允许在http响应里返回服务器的版本信息
ServerSignatureOn改为off//不允许显示服务器的特征信息
然后修改\xampp\apache\conf\extra,目录下的httpd-info.conf配置文件,找到
<
Location/server-status>
SetHandlerserver-status
Orderdeny,allow
Denyfromall
/Location>
Location/server-info>
SetHandlerserver-info
Allowfrom127.0.0.1//表示只允许本机访问,前提是要加载mod_info.so模块
这样,我们就可以让客户端无法得知服务器端的配置情况了。
2.清除“Indexs”引用(因为默认情况下,如果在网站目录下找不到index文件则,会列出网站的目录,这是非常危险的,攻击者会清楚知道你网站的文件结构,所以我们清除Indexs,你可以直接删掉,也可以采用:
-Indexs,如下:
Directory"
D:
/xampp/htdocs"
>
Options-IndexesFollowSymLinks//清除FollowSymLinks,或者直接使用Optionsnone
/Directory>
3.为了优化apache的性能,设置\xampp\apache\conf\extra中的多路处理模块,httpd-mpm.conf,
找到如下部分:
IfModulempm_winnt_module>
ThreadsPerChild250
MaxRequestsPerChild5000//默认值为0
Win32DisableAcceptEx//这个根据自己的情况,注释掉
/IfModule>
ThreadsPerChild:
这个参数用于设置每个进程的线程数,子进程在启动时建立这些线程后就不再建立新的线程了.mpm_winnt上的默认值是64,最大值是1920.这里建议设置为100-500之间,服务器性能高的话值大一些,反之值小一些。
MaxRequestsPerChild:
该参数表示每个子进程能够处理的最大请求数,即同时间内子进程数目.设置为零表示不限制,mpm_winnt上的默认值就是0,官方参考手册中不建议设置为0,主要基于两点考虑:
(1)可以防止(偶然的)内存泄漏无限进行,从而耗尽内存;
(2)给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。
4.修改日志记录方式
默认情况下,apache服务器会记录所有网站的访问信息和错误信息(这个信息是非常有用的),该日志文件的默认路径是:
\xampp\apache\logs,
默认记录两类日志:
访问日志(access.log)
错误日志(error.log)
但是,如果网站的访问量巨大,会造成access.log文件非常大(几G),这些日志文件用一般的文本编辑工具就无法打开了,我们是否可以按照我们设定的方式记录日志,如果日志文件大于某个设定的值如:
100M则,则新建立一个日志文件,开始记录,
配置如下:
IfModulelog_config_module>
#
#Thefollowingdirectivesdefinesomeformatnicknamesforusewith
#aCustomLogdirective(seebelow).
LogFormat"
%h%l%u%t\"
%r\"
%>
s%b\"
%{Referer}i\"
\"
%{User-Agent}i\"
"
combined
s%b"
common
<
IfModulelogio_module>
#Youneedtoenablemod_logio.ctouse%Iand%O
%I%O"
combinedio
#Thelocationandformatoftheaccesslogfile(CommonLogfileFormat).
#Ifyoudonotdefineanyaccesslogfileswithina<
VirtualHost>
#container,theywillbeloggedhere.Contrariwise,ifyou*do*
#defineper-<
accesslogfiles,transactionswillbe
#loggedthereinand*not*inthisfile.
#CustomLog"
logs/access.log"
common//注释掉默认的日志记录方式
#Ifyoupreferalogfilewithaccess,agent,andrefererinformation
#(CombinedLogfileFormat)youcanusethefollowingdirective.
#CustomLog"
CustomLog"
|bin/rotatelogs.exe-llogs/access-%Y-%m-%d-%H-%M-%S.log50M"
common//定制的日志记录方式
红色部分为修改的部分,首先注释掉默认的日志记录,因为我们已经自定义了日志的记录方式,默认的日志就不再使用了,这里我们用到的apache自带的rotatelogs小工具,
语法如下:
rotatelogs[-l]logfile[rotationtime[offset]]|[filesizeM]
我们上面记录的方式是:
按照access-年-月-日-时-分-秒.log的方式生成日志,每个日志文件的大小不超过50兆,超过了这个大小则重新生成日志文件。
还可以设置,按时间来记录日志:
CustomLog"
|/data/apache/bin/rotatelogs日志存放目录/%Y%m%d_access.log86400480"
其中:
/data/apache:
为apache的安装目录,根据自己实际情况确定;
86400:
秒,24小时,表示生成的日志文件按天滚动,也就是每天生成一个日志文件;
480:
分,时间偏移。
同理可以按小时滚动日志文件,每隔一个小时,几个小时。
。
生成一个日志文件。
5.限制目录访问
有时候,我们需要限制某些目录的访问,如,只允许指定的IP段访问,指定的IP访问等等,那么我们可以修改http.conf文件来达到目的:
/xampp/htdocs/admin"
Options-IndexesIncludesNOEXEC
AllowOverrideNone
DenyFromall
Allowfrom172.0.0.110.0.0.0/255.0.0.0218.196.14.0/255.255.255.0
这里只允许本机,10.*.*.*,和218.196.14.*机器访问该目录。
如果需要限制用户通过密码登录,可进行如下设置:
(1)利用apachebin目录下的htpasswd命令生成密码文件(具体使用方法用htpasswd–help查看帮助文档)
生成密码文件:
htpasswd–bc.passwdadmin123456
说明:
在bin目录下,生成一个.passwd的文件,用户名为:
admin密码为:
123456,默认采用MD5加密
(2)修改配置文件,指定需要输入密码
AllowOverrideAuthConfig
DenyFromall
(3)在限制访问的目录下添加.htaccess文件,添加如下代码
AuthTypeBasic
AuthName"
Admin"
AuthUserfileD:
/xampp/htdocs/admin/.passwd//密码文件的绝对路径
Requirevalid-user
重启apache服务器,访问该目录,就要输入密码了,同时还限制了访问的IP
6.用户配置
小技巧,一般在启动apache服务器是使用xampp的控制面板,但是有时候点是stop或者star时,无法得知当前apache服务器的情况,也无法实现重启,最后是使用ApacheMonitor.exe来操作,该程序的路径:
\xampp\apache\bin。
(注意,在安装时要apache的服务,或者勾选Svc亦可安装服务)
有时候会出现,mysql或者apache无法启动的情况,请查看操作系统的日志,可以得到有用的信息。
三.php配置
1.启用安全模式
在\xampp\php目录下,找到php.ini的配置文件,找到:
safe_mode=Off//改为On
2.必须禁用一些高危函数,其中,可以保留phpinfo这个函数
disable_functions=exec,passthru,shell_exec,system,popen,proc_open,proc_close,curl_exec,curl_multi_exec,parse_ini_file,show_source,dl,passthru,escapeshellarg,escapeshellcmd
3.禁止显示PHP的版本
expose_php=Off
四.mysql配置
mysql数据库的管理一般有两种方式:
一是使用自带的phpMyAdmin进行,设置好用户名和密码就可以在该网页上直接操作数据库
二是使用命令行:
使用命令行之前,最好设置系统的环境变量,将Path变量中添加C:
\xampp\mysql\bin,重新启动命令行工具(这个很重要),然后输入mysql,如果出现如下提示,表示成功:
使用命令是一种快速和直接操作数据库的方式,推荐使用:
常用的命令如下:
1.登录mysql
mysql–uroot–p
输入密码
mysql>
输入要执行的命令即可
2.查看数据库
showdatabases;
3.使用数据库
usetest;
4.查看表
showtables;
5.查看表结构
desc表名;
6.建立用户授权(这个很重要,默认情况下网站不要直接使用root用户操作数据库,而是重新建立一个数据库用户,然后授予其相应的操作权限)
grant权限(select,insert,update,delete)on数据库名.表名(*,表示所有表)to用户@localhostidentifiedby‘密码’;
这样就建立了一个指定的用户,它只对指定的数据库的表有相应的操作权限,用户名和密码要记住。
showgrantsfor用户名@localhost;
查看指定用户的权限。
对某些很重要的表,一定要精细的控制好权限。
7.备份数据
数据的备份是非常重要的,以免出现数据丢失或者被恶意访问者删除数据的情况,可以使用命令行的方式备份数据库(mysqldump.exe),也可以借助工具,MySQLAdministrator来做,首先去官网下载该软件
点击,…按钮,建立连接:
点击NewConnection,建立连接,输入用户名,密码和hostname的信息,然后应用,
关闭该界面,返回登录界面,再次输入root密码后,就可以进入系统了:
然后点击Backup,
点击右下脚的NewProject:
这时候输入,你要备份的项目名称,选择你要备份的数据库名次,点击>
按钮,然后选择高级选项卡,设置备份的选项和方式。
操作完毕后,软这Schedule选项卡,勾选Schedulethisbackupproject,
这个时候会弹出如下的对话框,
单击OpenOptions按钮:
点击左侧的GeneralOptions菜单,然后勾选Storepasswords,选择密码存储方式(Passwordstoragemethod),单击Connection,
选择你刚刚建立的那个连接,然后单击Apply,
设置完成后,就可以设置保存的时间,星期,频率,然后点击SaveProject,
输入系统用户密码,点击OK。
点击ExecuteBackNow,看看是否成功,如果在指定的位置生成了备份文件就说明成功啦!
这时候进入控制面板,进入计划任务,
出现刚刚建立的备份计划任务,点击右键还可以设置,重复的频率,因为有时候可能指定要每个几个小时或者几十分钟备份一次。
点击,高级。
勾选重复任务,设置重复的频率和持续的时间就可以了。