OpenBSD.Apache.MySQL.PHP软件环境的安装
2011-10-27 11:30
344 查看
一、OpenBSD.Apache.MySQL.PHP软件环境的安装 OpenBSD内核中已经集成了Apache,而且内置了对PHP的支持,所以安装MySQL、PHP环境非常的简单。 需要注意的是,在系统安装分区的时候,请按下面的示例进行分区(80G硬盘): / 200M (swap) 1G /tmp 200M /usr 500M /usr/local 200M /var 100M /var/mysql 10G /var/mail 100M /var/log 5G~10G /home 200M /var/www 剩余空间 在安装程序询问要安装的组件时,最好不要选择comp44.tgz这个包,系统安装到最后询问是否默认启动服务时,一律回答“No”。 halt重启后执行下面的命令安装必须的软件,以OpenBSD4.4为例进行讲解,root权限。 export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.4/packages/i386/ pkg_add wget mysql-server php5-gd-5.2.6-no_x11 phpMyAdmin pecl-APC 等所需的软件都安装完成后,按提示作链接并创建PHP临时目录: ln -s /var/www/conf/modules.sample/php5.conf /var/www/conf/modules ln -fs /var/www/conf/php5.sample/apc.ini /var/www/conf/php5/apc.ini ln -fs /var/www/conf/php5.sample/gd.ini /var/www/conf/php5/gd.ini ln -fs /var/www/conf/php5.sample/mbstring.ini /var/www/conf/php5/mbstring.ini ln -fs /var/www/conf/php5.sample/mcrypt.ini /var/www/conf/php5/mcrypt.ini ln -fs /var/www/conf/php5.sample/mysql.ini /var/www/conf/php5/mysql.ini mkdir /var/www/tmp chmod 0777 /var/www/tmp 二、使MySQL适应chroot环境 由于OpenBSD中的Apache默认工作于chroot环境下,无法直接与MySQL通信,所以需要修改下MySQL的配置文件,使之适应chroot环境。 执行下面的命令: mkdir -p /var/www/var/run/mysql chown _mysql:_mysql /var/www/var/run/mysql 等到上面的命令都执行完成后,还需要修改MySQL的配置文件。 vi /etc/my.cnf 将[client]段的socket修改成: socket = /var/www/var/run/mysql/mysql.sock 将[mysqld]段的socket修改成: socket = /var/www/var/run/mysql/mysql.sock 在[mysqld]段增加: skip-networking 其他的请酌情修改。 改完后保存退出。 三、phpMyAdmin的配置 在上面pkg_add phpMyAdmin以后,提示ln做个连接就可以用phpMyAdmin了。不过偶试了,是不行的,404错误。所以,我们需要把phpMyAdmin拷贝到/var/www/htdocs目录下面使用。 mkdir /var/www/htdocs/pma cp -rf /var/www/phpMyAdmin/* /var/www/htdocs/pma/ 同样需要修改pma目录下的config.inc.php文件,加个字母即可。 其他关于PHP的强化、SSH强化、PF防火墙以及系统其他部分的安全强化,可以参照O.N.M.P.手册的第二版,这里就不罗嗦了。 另外,由于Apache已经是chroot,所以PHP的强化设置会略有不同,如下: # 禁止动态加载模块 enable_dl = Off # 隐藏PHP信息 expose_php = Off # 限定可访问目录 # 注意此时的根目录实际是/var/www目录 open_basedir = / # 设定PHP上传文件的临时目录 # 同理,此时的/tmp目录实际是/var/www/tmp目录 upload_tmp_dir=/tmp # 禁用危险函数(注意下面的内容应该是一行,编排的原因分成了多行) disable_functions = phpinfo,com,shell,exec,system,passthru,error_log, stream_socket_server,putenv,ini_alter,ini_restore,ini_set,dl,openlog, syslog,readlink,symlink,link,leak,fsockopen,pfsockopen,proc_open, popepassthru,escapeshellcmd,escapeshellarg,chroot,scandir, chgrp,chown,shell_exec,proc_get_status,popen,shmop_close, shmop_delete,shmop_open,shmop_read,shmop_size,shmop_write # 启用PHP的安全模式 # PHP在安全模式下运行是用性能换安全。据简单测试,性能下降到30%左右,各位请酌情使用 safe_mode = On # pecl-APC只使用16M的共享内存用以加速PHP程序的运行 apc.shm_size=16M 四、O.A.M.P.的启动 对于Apache来说,系统虽然提供了自动启动的方法,但是因为考虑到MySQL需要先启动,因此仍然在/etc/rc.local文件中解决。 vi /etc/rc.local 跳到最后,加入: rdate -n 210.72.145.44 # Start MySQL if [ -x /usr/local/bin/mysqld_safe ] ; then echo -n 'Starting MySQL...' su -c mysql root -c '/usr/local/bin/mysqld_safe >/dev/null 2>&1 &' echo "DONE" fi # Start Apache apachectl start 五、提高O.A.M.P.环境的安全性 在O.A.M.P.环境下,除了可以和O.N.M.P.环境下一样设置提高安全性以外,在Apache环境下,还可以安装mod_security这个模块来提高web程序的安全性。 export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.4/packages/i386/ pkg_add modsecurity-apache 安装完成后使用下面的命令启用mod_security: /usr/local/sbin/mod_security-enable mod_security可以用来抵御XSS和SQL注入等攻击,我们需要把一些“防御”指令加到mod_security的配置文件中: vi /var/www/conf/modules/modsecurity.conf 输入下面的内容: # 启用mod_security过滤 SecFilterEngine On # 分析URL请求 SecFilterCheckURLEncoding On # 检查字节长度以避免栈溢出攻击(数字请酌情修改) SecFilterForceByteRange 32 126 # 有效记录日志信息 SecAuditEngine RelevantOnly # 定义日志文件 SecAuditLog logs/audit_log # 定义DEBUG文件 SecFilterDebugLog logs/modsec_debug_log SecFilterDebugLevel 0 # 检查POST请求(某些POST请求可能会和这个冲突) # 使用phpMyAdmin管理数据库时,某些操作会被这个拦截(例如新建数据库和用户时) # 遇此情况,则把此行注释掉,重启Apache # 操作完后记得恢复,以提高数据库的安全性 SecFilterScanPOST On # 阻止返回406错误 SecFilterDefaultAction "deny,log,status:406" # 阻止返回500错误 SecFilterDefaultAction "deny,log,status:500" # 当攻击者使用chmod,chgrp,wget等命令的時候,重定向到特殊的页面(请自行酌情增减) SecFilter chmod redirect:http://www.google.com SecFilter chgrp redirect:http://www.google.com SecFilter wget redirect:http://www.google.com # 防止操作系统关键词攻击 SecFilter /bin SecFilter /sbin SecFilter /etc SecFilter /bsd SecFilter /usr SecFilter /var # 只接受知道如何处理的请求 # GET请求是个例外,是因为某些客户端把text/html当做请求内容的一部分 SecFilterSelective REQUEST_METHOD "!^(GET|HEAD){1}quot; chain SecFilterSelective HTTP_Content-Type "!(^application/x-www-form-urlencoded$|^multipart/form-data;)" # 不接受仅有GET和HEAD头的请求 SecFilterSelective REQUEST_METHOD "^(GET|HEAD){1}quot; chain SecFilterSelective HTTP_Content-Length "!^{1}quot; # 要求每个POST请求提供长度 SecFilterSelective REQUEST_METHOD "^POST{1}quot; chain SecFilterSelective HTTP_Content-Length "^{1}quot; # 不接受无法处理的转换 SecFilterSelective HTTP_Transfer-Encoding "!^{1}quot; # 防止目录遍历攻击 SecFilter "\.\./" # 防止跨站(XSS)攻击(HTML/Javascript注入) SecFilter "<( |\n)*script" SecFilter "<(.|\n)+>" # 防止SQL注入攻击(简单示例,请自行完善) SecFilter "delete[[:space:]]+from" SecFilter "insert[[:space:]]+into" SecFilter "select.+from" SecFilter "union[[:space:]]+from" SecFilter "drop[[:space:]]" # 需要HTTP头确认 SecFilterSelective "HTTP_USER_AGENT|HTTP_HOST" "^{1}quot; # 呵呵~~~把服务器伪装成M$机器 ServerTokens Full SecServerSignature "Microsoft-IIS/6.0" # 限制upload.php文件只能用来上传jpeg,bmp和gif的文件(仅为示例,请酌情修改) #<Location /upload.php> #SecFilterInheritance Off #SecFilterSelective POST_PAYLOAD "!image/(jpeg|bmp|gif)" #</Location> 在/usr/local/share/doc/mod_security目录下有pdf版本的使用手册,可以用PSFTP down下来仔细看。自带的配置示例: /usr/local/share/examples/mod_security/httpd.conf.example-minimal。 记住把mod_security的配置文件保存在/var/www/conf/modules目录,例如上面的:/var/www/conf/modules/modsecurity.conf mod_security的配置按需修改好后,保存退出,重启Apache即可! 注意:上面的配置仅为示例,未必适合你的环境,请结合环境情况酌情修改!个别参数调整不当可能造成无法访问的后果!
相关文章推荐
- centos LAMP第一部分-环境搭建 Linux软件删除方式,mysql安装,apache,PHP,apache和php结合,phpinfo页面,ldd命令 第十九节课
- WAMP5-v1.7.4 一款Windos Apache Mysql PHP集成安装环境的软件
- Wamp就是Windows Apache Mysql PHP集成安装环境,即在window下的apache、php和mysql的服务器软件。
- centos安装lamp环境(apache+mysql+php)
- CentOS 6.3下源码安装LAMP(Linux+Apache+Mysql+Php)环境
- fedora18系统中安装Apache+PHP+MySQL环境
- Centos yum安装php+mysql(mariadb)+httpd(apache)环境
- CentOS 6.5系统安装配置LAMP(Apache+PHP5+MySQL)服务器环境
- CentOS 6.3下源码安装LAMP(Linux+Apache+Mysql+Php)环境
- win7(64位)php5.5-Apache2.4-mysql5.6环境安装
- 在ubuntu linux下以编译方式安装LAMP(apache mysql php)环境
- MAMP:在 OSX 中搭建 Apache, MySQL, PHP 环境并本地安装、调试 WordPress
- 64位Win7下安装与配置PHP环境【Apache+PHP+MySQL】
- wampserver2.0(Windows Apache Mysql PHP集成安装环境)
- Ubuntu12.04下安装配置apache+php+mysql+pear(MDB2)开发环境
- 基于CentOS 6.8平台最新源代码包编译安装LAMP环境搭建(Apache+MySQL+PHP)
- WAMP(win+apache+mysql+php)开发环境安装配置图文详解
- PHP环境搭建:Windows 7下安装配置PHP+Apache+Mysql
- CentOS 6.3下源码安装LAMP(Linux+Apache+Mysql+Php)环境
- wamp环境单独安装(windows下apache2.4、mysql5.5、php5.5的版本)