Pages

Monday, 30 December 2013

编译suhosin

在安装一些php程序的时候可能有下面的错误。
phpize: command not found

这时候运行
yum update
yum install php-devel 安装 php 开发程序即可。

(apt-get update
apt-get install php5-dev)

wget http://download.suhosin.org/suhosin-0.9.29.tgz
(如果你使用的是 PHP 5.3 版本,可以到这里找到最新的suhosin源码下载地址
Suhosin Downloads: http://www.hardened-php.net/suhosin/download.html)
tar xvfz suhosin-0.9.29.tgz
cd suhosin-0.9.29
phpize
./configure
make (这样安装,在make这步骤,会出错。)
make install

最好用clone版,clone版是最新版
git clone https://github.com/stefanesser/suhosin
cd suhosin
phpize
./configure
make (这样安装,在make这步骤,就不会出错。)
make install

检验一下:
as3:~# php --version
PHP 5.4.23-1~dotdeb.0 (cli) (built: Dec 13 2013 23:24:53)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
    with Suhosin v0.9.34-dev, Copyright (c) 2007-2012, by SektionEins GmbH
as3:~#


把suhosin扩展加入到PHP配置文件
echo 'extension=suhosin.so' > /etc/php.d/suhosin.ini
重启 Apache 以加载 suhosin 扩展
service httpd restart

参见:
    http://www.cyberciti.biz/faq/rhel-linux-install-suhosin-php-protection/
    http://www.howtoforge.com/how-to-harden-php5-with-suhosin-on-centos-5.4
--------------------------------------------
 suhosin模块的配置

在完成上面的编译安装操作后, 开始此模块的配置,
第一步: 建立 suhosin 配置文件, 在SSH 中 建入 vi /etc/php.d/suhosin.ini 命令,
Tips: 这里的路径以常用的Kloxo 面板中所安装的PHP扩展配置文件存放路径为例,
实际应用中需按自己实际情况操作;
第二步: 书写配置规则, 在上面建立的 suhosin.ini文件中 粘贴下列内容,
并保存退出;
;suhosin - config - zcbk.org
extension=suhosin.so
[suhosin]
suhosin.get.max_value_length = 5120

第三步 配置 PHP: 继续建入 vi /usr/local/lxlabs/ext/php/etc/php.ini ,
Tips: 这里的路径同上面的提示说明一样, 为默认的Kloxo 默认路径,实际操作请实际对待,
在此文件最后 粘贴入下面内容 并保存退出:
;suhosin for php - config - zcbk.org
echo 'extension=suhosin.so' > /etc/php.d/suhosin.ini
;上面的路径 请按实际PHP扩展配置文件存放路径对应修改, 不可直接使用

第四步 重启服务 以加载模块, 至此 PHP Suhosin 扩展模块安装配置完成;
第五步 检查suhosin正常运行了没有
可以写个 phpinfo 或 使用 PHP探针 去看下.


本文描述中涉及到的配置项修改:
 Suhosin有很多配置项:
决大多数情况 保持 默认配置即可,
对于有特殊需求的, 可以上面配置说明 第二步中 针对对应的项目进行配置,
关于 suhosin 更多配置项及其说明帮助文档 可参见
http://www.hardened-php.net/suhosin/configuration.html


PHP Suhosin 模块是什么
上面说了一堆 这个 Suhosin 模块, 哪么 Suhosin 究竟是个什么东西呢,
Suhosin 是 朝鲜语 保护神的英文音译, 他是一个PHP程序的保护拓展. 它的设计初衷是为了保护服务器和用户抵御哪些基于PHP运行的程序中已知或者未知的缺陷, Suhosin有两个独立的部分, 使用时可以分开使用或者联合使用. 第一部分是一个用于PHP核心的补丁, 它能抵御缓冲区溢出或者格式化串的弱点; 第二部分是一个强大的PHP扩展, 包含其他所有的保护措施. 可以把他看成是一个PHP的安全拓展或重要安全补丁.


phpize 是什么
phpize 是在php编译完成后在PHP安装路径下的bin文件夹中 自动建立的一个小脚本工具,
他的主要功能是用来扩展 php模块, 通过phpize可以建立php的外挂模块;
比如你想在原来编译好的php中加入memcached或者ImageMagick等扩展模块, 都需要使用到 phpize;
本文是为以经编译完装完成后的PHP 拓展外挂一个模块,因此就需要使用到 phpize;
------------------------------------

如何手動安裝( 從原始檔編譯 ) PHP 的 Suhosin



瞄一下 Suhosin 網站上的 FAQ,才發現原來可以直接只編譯 Suhosin 就可以了,不需要再連 PHP 一起重新編譯的...

首先,要從這裡來下載 Suhosin 的原始程式碼 ( 要注意一下,要是下載的是 Suhosin Extension 的版本,而不是 Suhosin Patch 的版本 ) ,然後,用下面的指令把它解壓縮 ( 阿舍下載時的版本是 0.9.32.1 版 ) 。
tar xzvf suhosin-0.9.32.1.tar.gz
接著,依照下列的順序依次執行指令,來完成 Suhosin 的編譯和安裝。
cd suhosin-0.9.32.1.tar.gz
phpize
./configure
sudo make
sudo make install

上面的動作跑完之後,會把 suhosin.so 這個檔案產生在 PHP 的 extensions 資料夾裡,阿舍自己編好的 PHP 是安裝在 /usr/local/lib/php 裡,而 extensions 資料夾就是在 /usr/local/lib/php/extensions,不過,suhosin.so 會放在 /usr/local/lib/php/extensions/no-debug-non-zts-20060613 裡,就是 extensions 資料夾的下一層裡。

再來就是要改 PHP.ini 的設定了,請打開 PHP.ini 之後,先找到 extension_dir 這項設定,然後,把上面找到 suhosin.so 檔案的資料夾路徑指給 extension_dir 這項設定,以阿舍為例,要設定如下:
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613"

最後,在 PHP.ini 檔裡找到 extension 的區段,然後,加入下面這一行後存檔.這樣 PHP 的 Suhosin 擴充就算安裝完成了....
extension=suhosin.so