WIN2000 Apache php mysql 安装及安全手册


look: 本文写给想在win2k平台上架设一个安全web站台的朋友们。
所需要的程序:

apache
http://www.apache.org/dist/httpd/binaries/win32/
我们选用apache_1.3.28-win32-x86-no_src.msi,或者apache_2.0.47-win32-x86-no_ssl.msi
都可以,勿使用低版本的程序,它们有缺陷,很容易遭到internet上的攻击

php
http://cn2.php.net/get/php-4.3.3-Win32.zip/from/a/mirror
php-4.3.3

mysql
http://www.mysql.com/get/Downloa ... 5-win.zip/from/pick
mysql-4.0.15
注:低于这个版本的mysql,有缺陷,勿使用

ZendOptimizer-2[1].1.0a-Windows-i386.exe
php的优化器,支持加密php脚本

MySQL-Front
一个运行于ms平台的gui的mysql的管理器,非常好用

phpMyAdmin-2.5.0-php.zip
基于php脚本的mysql管理器

phpencode.exe
php加密编译器


install~
1.安装apache
由于安装很简单,pass~!,只是要注意的是,请勿安装到系统分区上
因为这样,无论从备份,维护,灾难性恢复上,都是有优势的.
假设安装到了d:\\
2.安装php
具体安装过程请参考php目录里的install.txt
需要注意的是,请勿使用cgi方式
以下为引用资料
------------------------------------------------------------------
Title 17/2/2002
PHP for Windows Arbitrary Files Execution (GIF,MP3)
Summary
Through PHP.EXE,an attacker can cause PHP to interpret any file as a PHP file,
even if its extensions are not PHP. This would enable the remote attacker to
execute arbitrary commands,leading to a system compromise.
Details
Vulnerable systems:
PHP version 4.1.1 under Windows
PHP version 4.0.4 under Windows
An attacker can upload innocent looking files (with mp3,txt or gif extensions)
through any uploading systems such as WebExplorer (or any other PHP program that
has uploading capabilities),and then request PHP to execute it.
Example:
After uploading a file a \"gif\" extension (in our example huh.gif) that contains
PHP code such as:
#------------
<?
phpinfo();
?>
#------------
An attacker can type the following address to get in to cause the PHP file to be
executed:
http://www.example.com/php/php.exe/UPLOAD_DIRECTORY/huh.gif
Notice: php/php.exe is included in the URL.
Additional information
The information has been provided by CompuMe and RootExtractor.
ps:大部分版本都有这个毛病.包括一些最新版本,所以请不要以cgi安装!切记...
3.安装mysql
安装到d:\\,也很简单,具体过程pass.
只是mysql安装后的默认设置实在让人担心
以下引用我原来的文章
-----------------------------------------------------------------------------------
2002/12/21
写在前面:无事可做,生命被消耗,痛~~~啊,所以就写了,本文no原创,整理而成!
默认安装的mysql服务不安全因素涉及的内容有:
一.mysql默认的授权表
二.缺乏日志能力
三.my.ini文件泄露口令
四.服务默认被绑定全部的网络接口上
五.默认安装路径下的mysql目录权限
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
一.mysql默认的授权表
由于mysql对身份验证是基于mysql这个数据库的,也叫授权表。所有的权限设置都在这里了。
我们只讨论最为重要的一个表 user表。它控制的是接受或拒绝连接。
先看一下
select host,user,password,Delete_priv from user;
+-----------+------+------------------+-------------+
| host | user | password | Delete_priv |
+-----------+------+------------------+-------------+
| localhost | root | 67457e226a1a15bd | Y |
| % | root | | Y |
| localhost | | | Y |
| % | | | N |
+-----------+------+------------------+-------------+
现在新的版本,安装完毕都会出现一个快速设置窗口,用于设置口令。
以上,就是user表里的内容(略了点)看看有什么问题?
我们知道mysql的验证方式是比较特殊的,它基于两个2个信息来进行的
1.从那里连接
2.用户名
第一条没什么问题,当然口令必须是安全的。
第二条从任何主机,以用户root,不需要口令都可以连接,权限为所有的权限。(注:这里的权限是全局权限)
第三条从本地主机,任何用户名(注:user为空白,不表示不需要用户名),不需要口令,都可以连接,所有的权限
第四条从任何主机,任何用户名,不需要口令,都可以连接,无任何权限。
可以看出,2\\3\\4都是不安全的,如何攻击这里就不说了,请参看资料文库。
如果你mysql只允许本地连接,删除host的%和user中的nul(表示空)
delete from user where host=‘%‘;
delete from host where user=‘‘;
最后的user表,看起来因该是这个样子
+-----------+------+------------------+-------------+
| host | user | password | Delete_priv |
+-----------+------+------------------+-------------+
| localhost | root | 67457e226a1a15bd | Y |
+-----------+------+------------------+-------------+
最后需要刷新授权表,使其立刻生效
flush privileges;
如果你的mysql需要被远程使用,需要为%段中的root帐号,加上一个安全的密码
update user set password=password(‘youpass‘) where host=‘%‘;
其中youpass,就是口令
mysql> select host,Delete_priv from user;
+-----------+------+------------------+-------------+
| host | user | password | Delete_priv |
+-----------+------+------------------+-------------+
| localhost | root | 67457e226a1a15bd | Y |
| % | root | 77c590fa148bc9fb | Y |
+-----------+------+------------------+-------------+
更好的做法是,对远程主机的连接,指定为特定的
修改host中的%为允许连接的主机,比如:
192.168.0.% 允许一个特定的子网
www.sandflee.net 允许一个特定的主机
帐号默认的名字也是担心的问题。有可能导致被暴力破解
update user set user=‘localadmin‘ where host=‘localhost‘;
update user set user=‘remoteadmin‘ where host=‘%‘;
最后的user表看起来像是这个样子
mysql> select host,Delete_priv from user;
+-----------+-------------+------------------+-------------+
| host | user | password | Delete_priv |
+-----------+-------------+------------------+-------------+
| localhost | localadmin | 67457e226a1a15bd | Y |
| % | remoteadmin | 77c590fa148bc9fb | Y |
+-----------+-------------+------------------+-------------+
更为详细的资料,请去参考晏子的《MySQL中文参考手册》。随便那都有下
二.缺乏日志能力
mysql安装完成以后,会在%SystemRoot%目录下产生my.ini的设置文件
默认的内容如下:
――――――――――――――――――――――――――――――
basedir=C:/mysql
#bind-address=192.168.0.1
datadir=C:/mysql/data
#language=C:/mysql/share/your language directory
#slow query log#=
#tmpdir#=
#port=3306
#set-variable=key_buffer=16M
[WinMySQLadmin]
Server=C:/mysql/bin/mysqld-nt.exe
user=root
password=root
注意log#=这个
它没有被定义,且被注销掉了。
更改为一个适合的路径,比如:
log=c:/mysql/logs/mysql.log
三.my.ini文件泄露口令
我们看到my.ini最后,有这两句
user=root
password=root
如果,你安装完成时,使用了mysql所提供的快速设置功能,(较新的版本)你的帐号和口令将被写到my.ini文件中。
这也是mysql写到启动组里的winmysqladmin.exe工具,运行时需要读取的。它提供的mysql服务
的一些监视功能。这样winmysqladmin.exe才能获得mysql服务的状态信息。
其实,这个也不算漏洞,我们看看my.ini默认的权限,它可以被user组用户读取。
从而导致口令被泄露
解决方法:
从新设定my.ini文件的权限.
从新设定帐号及口令
不使用快速设置
四.服务默认被绑定全部的网络接口上
服务被绑定到了所有的网络接口上,比如,你只需要一个运行在内网的mysql服务,但是你的机器有
外网的接口,mysql也会被绑定上,从而带来一些不必要的麻烦和威胁。
在my.ini里的这句
#bind-address=192.168.0.1
它默认被注销掉了
应该打开它
如果,只是本地使用,更改为
bind-address=127.0.0.1
如果是其它情况,应该选者一个合适的网络接口
五.默认安装路径下的mysql目录权限
mysql默认的安装路径为c:\\mysql,基本上都难得改,要改的话也是麻烦,还要去改my.ini。
但,这样就有个问题
通常c:\\的权限是everyone组-所有的权限。这是默认的,由于继承性,导致mysql下的data目录
也是everyone组-所有的权限。导致被随意访问、读取、删除,可能泄露和破坏数据。
更改mysql目录到一个合适,安全的访问权限。
over...
-----------------------------------------------------------------------------------------
这里面有个小小的语法错误,请自己找出来:)

setup~
3个配置文档
httpd.conf---apache
php.ini-----php
my.ini------mysql
1.http.conf
由于ms版本的apache不像*nix下有
user,group这两条指令,所以你别指望它能像iis一样,把服务器应答影射到了iusr_name账号上
*nix下为nobody,所以你的apache是以system权限来运作的,它不太适合用于架设提供个人主页服务器
httpd.conf很多参数,基本不用修改就可以工作了
以下是要修改的地方
删除htdocs目录下的所有文件.删除cgi-bin下的所有文件,它们是用于测试用的,不应该被保留.
BindAddress * --需要绑定的地址 *只所有地址
DirectoryIndex index.html index.htm --默认首页的名字
AccessFileName .htaccess --控制文件名字,建议关掉或改名字,而且以\".\"开始的文件名在windows下是不允许的
ServerSignature on --出错信息,建议off.这样就不会显示你apache的版本号了
-----------------------------------------------
Alias /manual/ \"D:/Apache/htdocs/manual/\"
<Directory \"D:/Apache/htdocs/manual\">
Options Indexes FollowSymlinks MultiViews
AllowOverride None 清除
Order allow,deny
Allow from all
</Directory>
-----------------------------------------------
AddHandler cgi-script .cgi .pl --如果需要支持cgi,就需要打开,否者注释掉

LoadModule php4_module d:/php/sapi/php4apache.dll
AddModule mod_php4.c
AddType application/x-httpd-php .php --加入对php脚本的支持
2.php.inf

engine = On --打开php支持,如果不让php工作可以engine = Off
safe_mode = Off --安全模式,应该打开它safe_mode = On
safe_mode_exec_dir = --设定安全模式下可以执行程序的目录
disable_functions = 要关闭的函数,用\",\"分隔建议关闭phpinfo,get_cfg_var
expose_php = On 建议expose_php = Off,这样在header里就不会有php的版本号
display_errors =On 建议 display_errors =Off,这样所有错误信息,都将关闭
register_globals = Off 自动全局变量,一般都要打开register_globals = On,但会引发很多
安全问题,特别是一些写编写的不是很好的php脚本,有可能危及到你的web server
file_uploads = On 是否允许上传文件,如果你不需要就off
allow_url_fopen = Off 是否远程打开功能,建议关闭

;extension=php_gd.dll
;extension=php_gettext.dll
;extension=php_hyperwave.dll
;extension=php_iconv.dll
;extension=php_ifx.dll 打开一些需要支持的库,比如使用要使用图形函数
需要copy php/extensions/php_gd.dll到你的系统目录,然后去掉;
重新启动apache,就可以使用了
3.my.ini
上面有了,pass
安全建议,以上3个设置文件,把他们的权限设定为system所有权限,administrators所有权限

4.强化虚拟目录的安全性
一些重要的指令
具体的列子:
<Directory \"d:/Apache/htdocs/tools\">
Options Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
php_flag engine off ;关闭php解释执行功能
php_admin_value safe_mode 1 ;安全模式 1-打开 0-关闭
php_admin_value open_basedir d:/Apache/htdocs/tools ;限制在一个制定的目录
这样就限制了php脚本只能打开d:/Apache/htdocs/tools下的文件.
以下代码就没什么用了
-----------------------------------------------------------
$fd = fopen( $filename,\"r\" );
$view = fread($fd,filesize($filename));
echo \"<pre>\";
echo htmlspecialchars(\"$view\";);
echo \"</pre>\";
fclose( $fd );
-----------------------------------------------------------
启用apache-http验证功能
清除
<Directory \"d:/Apache/htdocs/home\">
...
...
allowoverride authconfig
</Directory>
中的

参数 allowoverride authconfig
注意的,这里的d:/Apache/htdocs/home,表示为我安装的apache服务的web根目录,你的和我的不一定一样
默认的,好象就没这个 allowoverride authconfig参数。
allowoverride authconfig参数的含义。
它的含义是,根目录下所有目录的访问控制由它目录下的.htaccess文件来设定。
这里,我要多说点废话了。
为什么是.htaccess,这个文件名,而不是其它的。
这个是在AccessFileName参数中定义的。默认的是这样。
AccessFileName .htaccess
你要做的清除allowoverride authconfig参数(加#或者删掉)
这样做的理由
1.我觉得麻烦(每个目录都需要放上.htaccess文件,且以\".\"开头的文件名在windows系统下,是不允许的。)
2.不太安全 (它有可能被人看到。)
如何对你所想要指定的目录进行验证?
一个列子
<Directory \"d:/Apache/htdocs/home\"> //定义要验证目录路径
AuthType Basic //方式,windows不支持md5,所以请使用basic方式
AuthName TEST //定义显示在对话框领域名字
AuthUserFile d:/Apache/user //定义密码文件
ErrorDocument 401 \"Error Password //定义验证失败后显示的内容,当然可以是文件了
require valid-user 注意,我这里让它直接显示Error Password,用\"开头就是了,只有一个哦
</Directory>
直接加到httpd.conf后面就是了。
然后在apache的安装目录里的bin目录里有个htpasswd.exe文件
请到cmd下运行它
d:\\Apache\\bin>htpasswd.exe
Usage:
htpasswd [-cmdps] passwordfile username
htpasswd -b[cmdps] passwordfile username password

htpasswd -n[mdps] username
htpasswd -nb[mdps] username password
-c Create a new file. //创建一个新的密码文件(你第一次使用,因该使用这个参数)
-n Don\'t update file; display results on stdout. //显示到屏幕
-m Force MD5 encryption of the password (default). //加密口令(md5方式)默认的
-d Force CRYPT encryption of the password. //使用CRYPT方式加密口令
-p Do not encrypt the password (plaintext). //不加密口令
-s Force SHA encryption of the password. //使用sha算法加密
-b Use the password from the command line rather than prompting for it. //互交方式
On Windows,TPF and NetWare systems the \'-m\' flag is used by default.
On all other systems,the \'-p\' flag will probably not work.
――――――――――――――――――――――――――――――――――――――
列子:
d:\\Apache\\bin>htpasswd.exe -c d:\\apache\\user taotao
Automatically using MD5 format on Windows.
New password: ***
Re-type new password: ***
Adding password for user taotao
就创建完成了
其中,要注意的
passwordfile,不应该放到web目录,因为会被人下载,很蠢,虽然密码已经被md5过
-c 参数是用于创建一个新的密码文件。
d:\\apache\\user路径,要和你在
AuthUserFile d:/Apache/user 设置的一致。
然后从新启动你的apache服务

记得备份你的httpd.conf,php.ini和my.ini

安装ZendOptimizer-2[1].1.0a-Windows-i386.exe
很简单,它回自动修改你的php.ini(c:\\winnt\\php.ini)文件
添加了如下内容:
[Zend]
zend_optimizer.optimization_level=15
zend_extension_ts=\"C:\\Program Files\\Zend\\lib\\ZendOptimizer.dll\"

安装php优化器有很多的好处
加速了php的运行速度,最为重要的是它可以加密php脚本
这样你写在php脚本里的user,pass就可以很好的被保护了
此外,你还可以修改apache的header,用utraedit32打开ApacheCore.dll
查找你所对应的apache版本号,改成别的就可以了

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


文章浏览阅读2.2k次,点赞6次,收藏20次。在我们平时办公工作中,很多时候我们经常会使用到虚拟机来进行环境的测试,我们平时在虚拟机上接触的最多的莫过于Linux和Winwdos。不过虚拟机环境和物理机环境是无法直接传输的,那么有的时候呢,同学们又想要在两者之间相互传输文件,可能就会使用QQ邮箱等形式来传输,这样的效率又慢而且繁琐,今天我就为大家带来一种非常便捷的传输方式。通过XFTP工具来进行文件传输。_xftp连接windows
文章浏览阅读1k次。解决 Windows make command not found 和 安装 GCC 环境_windows下载gcc
文章浏览阅读3.2k次,点赞2次,收藏6次。2、鼠标依次点击“计算机配置“ - ”管理模板“ - ”网络“ - ”Lanman工作站”,点击右侧的“启用不安全的来宾登录”策略。Windows访问samba共享时,提示“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问”1、键盘按下window+R键,输入gpedit.msc,启动本地组策略编辑器。首先在终端中输入sudo ufw status查看当前防火墙状态。默认状态是“未配置”,修改为“已启用”。示例:创建一个narada的目录在/home下。1.更新apt储存库列表。_ubuntu samba 目标文件夹访问被拒绝
文章浏览阅读1.3w次。蓝光版属于高清版的一种。BD英文全名是Blu-ray Disc,一种高清的电影版本,这种电影十分清晰但是数据量巨大,占数十G甚至上百G的容量,只有蓝光光碟才能装得下,所以这种高清电影被称为BD版。一般的高清电影多半是从蓝光电影、国外的高清电视频道上压制而来的,可以通过网络下载,多数都经过二次压缩,画质要逊于原视频,不过压缩后的容量从蓝光的25G-50G会减少成4G-8G等(15G-20G不等)。众所周知,视频有两种常见的清晰度,BD和HD,在看电影的时候最常出现这两个标志,那么BD和HD具体指的是什么呢?_bd hd
文章浏览阅读974次,点赞7次,收藏8次。提供了更强大的功能,因为它允许直接访问当前元素,而不需要类型转换。接口,它可以提供一个迭代器,用于按顺序访问集合中的元素。接口是只读的,它只能支持前向迭代,不能修改集合中的元素。类型的集合实例,并向其中添加了几个元素。接口,可以创建一个能够迭代访问泛型集合中元素的迭代器。接口,我们可以在 C# 中实现可迭代的集合,并使用。循环和迭代器手动遍历集合,并输出每个元素的值。接口表示一个可枚举的集合,它定义了一个方法。属性,用于获取集合中当前位置的元素。存储集合中的元素,并实现了。的泛型集合类,它实现了。
文章浏览阅读1.4w次,点赞5次,收藏22次。如果使用iterator的remove方法则会正常,因为iterator的remove方法会在内部调用List的remove方法,但是会修改excepedModCount的值,因此会正常运行。因为遍历过程中进行remove 操作时,该位置后面的元素会挤到前面来,这时候会发生一种情况就是原来元素的位置会被他后面的元素取代,而该位置已经遍历过了,所以该元素不会背遍历。当我们倒序遍历元素的时候,无论删除元素之后的元素怎么移动,之前的元素对应的索引(index)是不会发生变化的,所以在删除元素的时候不会发生问题。_list删除某个元素
文章浏览阅读2.9w次,点赞45次,收藏192次。Windows下配置Visual Studio _vs2022环境变量配置
文章浏览阅读7w次,点赞162次,收藏778次。pip 是Python包管理工具,提供了对 Python 包的查找、下载、安装、卸载的功能,目前Python 3.4 和 2.7 及以上版本都有配套安装,一般pip的位置在...pythonScripts文件夹里面,而在其他版本需要自行下载。_python pip install安装
文章浏览阅读5.8k次,点赞2次,收藏12次。①此电脑右击----->选择属性----->高级系统设置----->环境变量----->path----->编辑----->新建。第一个选项意思就是将安装路径填入到系统环境变量中,这里勾选,后面使用可能会出现问题,建议不要勾选,安装好之后手动添加环境变量。注意:如果提示conda不是内部或外部命令,原因是Anaconda的环境变量没配置好。如果不想立即打开anaconda,不勾选直接finish就好。②输入 conda --version ,查看conda环境。②直接按win键,搜索“环境变量”_windows安装anaconda
文章浏览阅读5.1k次,点赞8次,收藏55次。Windows 系统从零配置 Python 环境,安装CUDA、CUDNN、PyTorch 详细教程_windows cuda cudnn配置
文章浏览阅读1.5w次,点赞54次,收藏68次。macOS系统自带有VNC远程桌面,我们可以在控制端上安装配置VNC客户端,以此来实现远程控制macOS。但通常需要在不同网络下进行远程控制,为此,我们可以在macOS被控端上使用cpolar做内网穿透,映射VNC默认端口5900,通过所生成的公网地址,来实现在公网环境下远程控制VNC。_vnc mac
文章浏览阅读2.4k次,点赞5次,收藏11次。进入后根据自己的电脑系统下载,这是python 3.10版本下载地址,如果想要下载其它版本可进入此链接(下载完成后点击进行安装点击下一步,到这一步时,可以选择将Anaconda添加我的PATH环境变量中,这样就不用自己手动配置和环境变量。安装完成后,打开终端,输出 python 命令可查看是否安装成功。如果显示自己刚才安装的版本号说明安装成功。查看conda版本命令:conda info。_paddlespeech下载
文章浏览阅读3.3k次。所以如果要删除之前新增的课程编译原理,只需输入命令del Course:8:Cname,同时还应该把本课程的学分删除del Course:8:Ccredit,如下图所示;Redis并没有修改数据的命令,所以如果在Redis中要修改一条数据,只能在使用set命令时,使用同样的键值,然后用新的value值来覆盖旧的数据。先调用get命令,输出原先的值,然后set新的值,最后再get得到新值,所以修改成功。输入命令后没有报错,表示成功了,刷新windows的服务,多了一个redis服务。_redis windows服务
文章浏览阅读2.1w次,点赞9次,收藏56次。​​接着在【工作负荷】中,选择【使用C++桌面开发】 ,右边【安装详细信息】去除其它可选项,只勾选【MSVCv142 】和 【Windows 10 SDK】,按图示修改,然后右下角点击安装,之后会有提示让你重启电脑。重启电脑之后,再进行pip安装。报错原因是pip所安装的包需要使用C++编译后才能够正常安装,但是当前安装环境中缺少完整的C++编译环境,因此安装失败。3.安装Microsoft Visual C++ Build Tool离线安装包(1个多G),CSDN资源很多,需要积分下载,_error: microsoft visual c++ 14.0 or greater is required. get it with "micros
文章浏览阅读1.1w次,点赞3次,收藏7次。Step 3: 在右侧窗口中找到名称为“LongPathsEnabled”的“DWORD (32 位) 值”条目,并双击它。通过注册表方法或组策略方法启用长路径支持后,您将能够在 Windows 中使用长路径,并能够访问和处理长路径下的文件和文件夹。Step 2: 依次选择“计算机配置” > “管理模板” > “系统” > “文件资源管理器”。Step 3: 找到“启用 Win32 长路径”设置,双击它。Step 4: 选择“已启用”选项按钮,然后选择“应用”按钮。_windows长路径支持
文章浏览阅读2.5k次,点赞81次,收藏86次。
文章浏览阅读1.3k次,点赞65次,收藏50次。顺序表,链表,栈,队列,ArrayList,LinkedList,Stack,Queue
文章浏览阅读2.3k次,点赞2次,收藏2次。AnyTXTSearcher是一款能够帮助我们对文档以及文本内容进行快速搜索和管理的工具,通过该软件能够搜索各种Office文档,文本文件,代码,PDF文档等,顶级的全文搜索引擎1秒钟之内即可完成搜索。_anytxt searcher
文章浏览阅读8.8k次,点赞73次,收藏70次。有时,在删除/移动/重命名文件夹/文件时,会遇到如下警告,即使将打开的程序关闭了,后台也可能会有没关干净的相关进程。_解除占用
文章浏览阅读4.3w次,点赞91次,收藏102次。JDK(Java Development Kit)是Java开发工具包的缩写,包含了Java编译器、Java虚拟机、Java类库等众多组件,是Java开发的基石,提供了编写、编译和运行Java程序所必需的工具。同时,为了让系统能够正确识别Java环境,在开始使用JDK进行Java开发之前,需要先把JDK安装到本地计算机,并配置好相应的环境变量。本文将介绍JDK安装与环境变量配置的方法。_windows安装jdk并配置环境变量