123
返回列表 发新帖
楼主: jieforest

[转载] 写给系统管理员的25个PHP安全实践

[复制链接]
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
21#
 楼主| 发表于 2014-1-8 10:06 | 只看该作者
#16:Session路径

PHP Session用户提供数据保存功能,以便后续访问。这可以使应用可定制性更强,提升吸引力。所有Session相关的数据会被保存在session.save_path中。RHEL/CentOS/Fedora Linux的默认设置如下:
  1. session.save_path="/var/lib/php/session"
  2. ; Set the temporary directory used for storing files when doing file upload
  3. upload_tmp_dir="/var/lib/php/session"
复制代码
确认这个路径在/var/www/html之外,且不可被其他系统用户访问:
  1. # ls -Z /var/lib/php/
复制代码
样例输出:
  1. drwxrwx---. root apache system_u:object_r:httpd_var_run_t:s0 session
复制代码
注:ls -Z会显示SELinux的安全信息,如文件模式,user,group,安全信息,文件名等。

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
22#
 楼主| 发表于 2014-1-9 10:06 | 只看该作者
#17:保证PHP,软件及操作系统更新到最新

维护Linux、Apache、PHP和MySQL服务器的一项重要工作是更新安全补丁。所有的PHP安全更新应尽快进行审查并更新。可使用如下命令(如果通过包管理器来安装PHP):
  1. # yum update
复制代码
  1. # apt-get update && apt-get upgrade
复制代码
可以配置Red Hat / CentOS / Fedora Linux通过Email发送yum的包更新提醒,或是Debian / Ubuntu Linux下的apticron发送提醒。又或通过cron计划任务进行更新。

注:查看php.net以获取最新的PHP版本信息

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
23#
 楼主| 发表于 2014-1-9 10:07 | 只看该作者
#18:限制文件及目录访问

确认以Apache或www这种非root用户运行Apache。/var/www/html目录下的owner也应是非root用户:
  1. # chown -R apache:apache /var/www/html/
复制代码
DocumentRoot下的文件应禁止运行或创建。设置该目录下的文件权限为0444(只读):
  1. # chmod -R 0444 /var/www/html/
复制代码
设置该目录下的所有文件夹权限为0445
  1. # find /var/www/html/ -type d -print0 | xargs -0 -I {} chmod 0445 {}
复制代码

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
24#
 楼主| 发表于 2014-1-10 13:22 | 只看该作者
#19:Apache、PHP、MySQL配置文件的写入保护

使用chattr命令给这些配置文件加上写入保护:
  1. # chattr +i /etc/php.ini
  2. # chattr +i /etc/php.d/*
  3. # chattr +i /etc/my.ini
  4. # chattr +i /etc/httpd/conf/httpd.conf
  5. # chattr +i /etc/
复制代码
同样可以为/var/www/html目录加上写入保护
  1. # chattr +i /var/www/html/file1.php# chattr +i /var/www/html/
复制代码

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
25#
 楼主| 发表于 2014-1-10 13:22 | 只看该作者
#20:使用Linux安全拓展(如SELinux)

Linux有各种安全方案来防止服务程序的错误配置或漏洞。尽可能使用SELinux或其他Linux安全方案限制网络和程序。例如,SELinux为Linux内核或Apache Web服务提供不同的安全策略。使用下面命令列出所有Apache保护信息:
  1. # getsebool -a | grep httpd
复制代码
样例输出:

01        allow_httpd_anon_write --> off
02         allow_httpd_mod_auth_ntlm_winbind --> off
03         allow_httpd_mod_auth_pam --> off
04         allow_httpd_sys_script_anon_write --> off
05         httpd_builtin_scripting --> on
06         httpd_can_check_spam --> off
07         httpd_can_network_connect --> off
08         httpd_can_network_connect_cobbler --> off
09         httpd_can_network_connect_db --> off
10         httpd_can_network_memcache --> off
11         httpd_can_network_relay --> off
12         httpd_can_sendmail --> off
13         httpd_dbus_avahi --> on
14         httpd_enable_cgi --> on
15         httpd_enable_ftp_server --> off
16         httpd_enable_homedirs --> off
17         httpd_execmem --> off
18         httpd_read_user_content --> off
19         httpd_setrlimit --> off
20         httpd_ssi_exec --> off
21         httpd_tmp_exec --> off
22         httpd_tty_comm --> on
23         httpd_unified --> on
24         httpd_use_cifs --> off
25         httpd_use_gpg --> off
26         httpd_use_nfs --> off

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
26#
 楼主| 发表于 2014-1-10 13:23 | 只看该作者
取消Apache cgi支持可以输入:
  1. # setsebool -P httpd_enable_cgi off
复制代码
#21:安装Mod_security

ModSecurity是一个开源的入侵检测和防范的Web应用引擎。安装mod_security可以保护Apache和PHP应用免受XSS和其他攻击:
  1. ## A few Examples ##
  2. # Do not allow to open files in /etc/
  3. SecFilter /etc/

  4. # Stop SQL injection
  5. SecFilter "delete[[:space:]]+from"
  6. SecFilter "select.+from"
复制代码

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
27#
 楼主| 发表于 2014-1-10 13:24 | 只看该作者
#22:如有可能,在Chroot Jail下运行Apache / PHP

在Chroot Jail下运行Apache / PHP可以最小化可能受到的损失,使其局限于文件系统下的一小块。可以使用一般的chroot来配置Apache:chroot kind of setup with Apache。不过我建议使用FreeBSD jails、XEN,KVM或OpenVZ虚拟化。

参考:http://www.cyberciti.biz/tips/ch ... a-centos-linux.html

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
28#
 楼主| 发表于 2014-1-10 13:25 | 只看该作者
#23:使用防火墙限制传出连接

攻击者会使用wget之类的工具从你的Web服务器下载文件。使用iptables来阻挡Apache用户的传出连接。ipt_owner模块会为本地数据包的生成者分配不同角色。它只对OUTPUT chain有效。下面指令允许vivek用户通过80端口进行外部访问:
  1. /sbin/iptables -A OUTPUT -o eth0 -m owner --uid-owner vivek -p tcp --dport 80 -m state --state NEW,ESTABLISHED  -j ACCEPT
复制代码
下面的样例则是阻挡所有Apache用户的传出连接,只允许smtp服务及spam识别API服务通过:
  1. 01        # ....  
  2. 02         /sbin/iptables --new-chain apache_user
  3. 03         /sbin/iptables --append OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  4. 04         /sbin/iptables --append OUTPUT -m owner --uid-owner apache -j apache_user
  5. 05         # allow apache user to connec to our smtp server
  6. 06         /sbin/iptables --append apache_user -p tcp --syn -d 192.168.1.100 --dport 25 -j RETURN
  7. 07         # Allow apache user to connec to api server for spam validation
  8. 08         /sbin/iptables --append apache_user -p tcp --syn -d  66.135.58.62 --dport 80 -j RETURN
  9. 09         /sbin/iptables --append apache_user -p tcp --syn -d  66.135.58.61 --dport 80 -j RETURN
  10. 10         /sbin/iptables --append apache_user -p tcp --syn -d  72.233.69.89 --dport 80 -j RETURN
  11. 11         /sbin/iptables --append apache_user -p tcp --syn -d  72.233.69.88 --dport 80 -j RETURN
  12. 12         #########################
  13. 13         ## Add more rules here ##
  14. 14         #########################
  15. 15         # No editing below
  16. 16         # Drop everything for apache outgoing connection
  17. 17         /sbin/iptables --append apache_user -j REJECT
复制代码

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表