CentOS 6.6 + LAMP实战 (三)

6 PHP安全加固

现在你的VPS网站可以跑了,但是访问多了,安全性就得重视起来,我们从apache php mysql三个方面分别加固。

打开PHP配置文件,进行一些修改。

先看386行,这一行指定PHP禁用的函数。PHP的功能很强大,但功能强大就意味着安全隐患多。我们跑一般的网站,也用不着这些功能。像下面这样修改:

需要注意的是,scandir这个功能被禁用,会导致wordpress始终提示翻译有更新。如果出现这个问题就把它去掉。

380行:open_basedir
open_basedir指的是PHP代码可以操作的目录,默认情况下这一行是注释掉,不作限制的。如果对安全性要求高,可以在这一行手工指定。比如可以这样:

冒号是分隔符,不同的目录之间用冒号分隔。一个句点表示当前目录,也就是PHP代码所在的目录。
如果你的网站在/var/www/html/domain.com,那么就把这个地址也加到open_basedir里去。地址后面加/符号,则操作严格限制在这个目录中,如果不加,凡是以这个地址开头的所有地方都可以操作。

432行:

745行:

7 Apache安全加固

44行:ServerTokens OS,改为ServerTokens Prod。
ServerTokens表示主机HTTP回应头,按照不同的设置会回应不同的内容:
ServerTokens Prod[uctOnly] 回应:Server:Apache
ServerTokens Major 回应:Server:Apache/2
ServerTokens Minor回应:Server:Apache/2.0
ServerTokens Min[imal] 回应:Server:Apache/2.0.41
ServerTokens OS 回应:Server: Apache/2.0.41 (Unix)
ServerTokens Full (或置空) 回应:Server: Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2
(以上可能和你的服务器回应内容不一样,比如版本号,大致是这个意思)
可见,设置为Prod,回应的内容最小,最大程度保护服务器的隐私。
Options :目录支持的特性。后面有这几个选项:Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
Indexes:如果目录底下没有任何的DirectoryIndex文件(也就是402行指定的那些文件),那么服务器会返回这个目录底下的所有文件链接列表。
Includes:允许SSI(Server side include,服务器端包含)
FollowSymLinks:允许使用符号链接。
SymLinksifOwnerMatch
ExecCGI:允许执行CGI代码。
MultiViews:允许使用mod_negotiation模块提供内容协商的”多重视图”,安全起见禁止。
按照不同的需求启用不同的参数。
这个Options在每个Directory底下都可以设置,设置时应注意是哪个Directory。你也可以只在以下两处设置:
303行:服务器的默认设置,这里只需设置最基本的。
Options FollowSymLinks
331行:网站根目录,设置为:
Options -Index FollowSymLinks,禁止Index,允许FollowSymLinks。
536行:ServerSignature On,改成Off。ServerSignature指的是在错误页、文件目录页(Index)等地方显示的页脚,设置会On的话会显示Apache的版本、Server名称等信息。我们把它关掉。
338行:AllowOverride,指定是否允许覆盖httpd.conf的设置。可置为On或Off。如果你需要用到.htaccess文件,比如的Wordpress使用固定连接,那可以设置为On,如果不用.htaccess最好把它关掉。我就是关掉的。
8 MySQL安全加固
MySQL的安全性需要多方面考虑。比如帐号设置、权限设置、服务器设置等等。
当网站需要连接数据库时,应该给新建的数据库一个单独的帐号,这个帐号不要授予任何全局权限。
有关MySQL的安全,我也在摸索中,搜索“MySQL安全加固” 可以找到答案。这篇小文里就不多说了。

Leave a Reply

Your email address will not be published. Required fields are marked *