WordPress安全部署教程禁止访问敏感文件
一、保护wp-config.php文件
Wp-config.php是wordpress核心文件,一旦这个文件被访问了,整个站点几乎就被控制了。要想阻止此事放生,可以用到下面的代码:
[php]
# SECURE WP-CONFIG.PHP
<Files wp-config.php>
Order Deny,Allow
Deny from all
Allow from 123.456.789
</Files>
[/php]
把这个代码放进站点根目录.htaccess文件中或Apache配置文件里。上面的代码否定了所有访问,除了IP是123.456.789,当然这个IP是你自己的。在这里你完全可以配置多个允许的IP访问,如下:
[php]
# SECURE WP-CONFIG.PHP
<Files wp-config.php>
Order Deny,Allow
Deny from all
Allow from 123.456.789
Allow from 456.789.123
Allow from 789.123.456
# additional IP addresses
</Files>
[/php]
另外还可以配置一个ip范围,如:
[php]
Allow from 123.456.
<h3>二、保护install.php文件</h3>
在安装wordpress的过程,这install.php文件用于指定站点标题和email地址。一旦这个信息输入后,wordpress显示用户名和密码输入界面。不幸的是,在有些数据库中,wordpress可能会认为还没有安装,所以会重新装载install.php文件。虽然这种情况非常少,但是仍然会暴露出安全问题,下面击中方法可以解决这个问题:
1、 最简单的方法就是删除wp-admin/install.php,安装后这个文件就不需要了。
2、 使用htaccess文件限制访问
把下面代码粘贴到.htaccess文件中(位于站点根目录下)
[php]
# PROTECT install.php
<Files install.php>
Order Allow,Deny
Deny from all
Satisfy all
</Files>
[/php]
3、替代办法
我们可以把install.php重命名如install—demo.php,然后创建一个install.php文件,把粘贴如下代码进去:
[php]
<?php // install.php replacement page
// http://perishablepress.com/press/2009/05/05/important-security-fix-for-wordpress/ ?>
<?php header("HTTP/1.1 503 Service Temporarily Unavailable"); ?>
<?php header("Status 503 Service Temporarily Unavailable"); ?>
<?php header("Retry-After 3600"); // 60 minutes ?>
<?php mail("your@email.com", "Database Error", "There is a problem with teh database!"); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Error Establishing Database Connection</title>
</head>
<body>
<img src="images/wordpress-logo.png" />
<h1>Error Establishing Database Connection</h1>
<p>We are currently experiencing database issues. Please check back shortly.</p>
</body>
</html>
[/php]
一旦运行install.php文件,就会出现一些错误信息。
三、保护wp-admin目录
在wp-config.php文件安全之后,admin文件也是有必要保护的,也就是wp-admin目录,我们可以采取与第一种方法一样很容易做到。在wp-admin目录下创建.htaccess文件,并粘贴下面的代码:
[php]
# SECURE WP-ADMIN FILES
<FilesMatch "*.*">
Order Deny,Allow
Deny from all
Allow from 123.456.789
</FilesMatch>
[/php]
也可以使用下面的代码替代:
[php]
# SECURE WP-ADMIN FILES
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^123.456.789
RewriteRule ^(.*)$ – [F,L]
</IfModule>
[/php]
不过第二种方法需要Apache的mod_rewrite模块支持。
四、保护登录页面
登录页面的安全是经常讨论的话题,由于这是管理站点之门,我们要尽可能的保证这个页面的安全。下面有一下策略可供参考:
1、 选择一个强大的密码
所谓强大的密码是指足够长至少8位以上,包含字母和数字,大小写混合以及一些特殊符合。
2、经常修改密码
经常修改密码是一个好的保证安全的方法。
五、其它需要保护的文件
下面这些文件需要保护的:
[php]
•.htaccess
• .htpasswd
• php.ini
• PHP scripts
• Flash source files (.fla format)
• Photoshop files (.psd format)
• Log files
[/php]
采用下面的代码可以起到保护作用:
[php]
# PROTECT SENSITIVE FILES BY FILE TYPE
<FilesMatch ".(htaccess|htpasswd|ini|php|fla|psd|log)$">
Order Deny,Allow
Deny from all
Allow from 123.456.789.0
</FilesMatch>
[/php]
这是通过限制扩展名来拒绝访问。