LAMP架构下的安全注意要点

1 月 10th, 2010 | Posted by | Filed under 操作系统

本文内容遵从CC版权协议, 可以随意转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址: http://www.penglixun.com/tech/system/lamp_security.html

我对安全方面也不是了解很多,最近遇到了安全方面的问题,查了一些资料,亲自试了试,选出一些比较重要的记录一下。

安全方面即将加入阿里云的@Natural__Light大牛给我演示过不少入侵的方法,算“资深”了,从在中学开始入侵学校网络,咱们大学里的那些破网站,@Natural__Light大牛玩一样进后台。

  1. 如果要考虑安全问题,就必须有一个假设:一切用户输入的内容都是不安全的,一切参数的传递都是不安全的。入侵者可能利用每一个我们假设是安全的地方。
  2. Linux方面
    • 限制用户账号,开发和运维分开。
    • SSH登陆必须限制主机来源,切忌允许全部IP登陆,最好port也要修改。
    • 使用iptables限制端口出入和IP,内部系统只能允许内部IP
    • 注意为不同的用户甚至不同的功能区分不同的账号和用户组。
    • 为关键文件和目录一定要设置好权限,千万不能777,配合用户和分组保证只有需要的人有需要的权限,尤其是/etc下的。
  3. Apache方面
    • 使用专门的账号和用户组来启动Apache。
    • 不同功能和站点的配置文件最好拆分为不同的文件。
    • 设置ServerSignature Off和ServerTokens ProductOnly,防止服务器广播敏感信息和HTTP头透露关键信息。
    • 禁止浏览目录。
    • 只监听指定的IP和端口。
    • 必要时可以修改代码伪装服务器版本信息。
    • 为每个目录建立.htaccss文件保护。
    • 只允许特定常用的User-Agent访问。
    • 利用iptables或Nginx做反向代理,过滤DDOS攻击。
  4. MySQL方面
    • 必须设置MySQL目录的权限,限制访问。
    • 必须使用一个独立的用户和用户组,没有Shell,也不能运行其他程序。
    • 必须删除无用户名账户,必须修改root账户密码,并且要限制主机来源。
    • 必须删除test库,这个库任何人都可以建表,危险。
    • 为每个功能单独建账号,使用不同的密码,限制主机来源,只给需要的权限。
    • 细化权限粒度,不要给任何账户不必要的权限。
  5. PHP方面
    • 一定要分析任何用户输入或者传递的参数,过滤其中的危险字符。
    • 使用系统自带的过滤函数一定要了解其机制,避免对方利用单/多字符集的方法绕过。
    • 在前端限制特殊字符被输入,接到输入后还需要再次进行过滤。
    • 系统的错误信息必须被屏蔽或者关闭,错误可以跳转。
    • 禁止采用root账户连接数据库。
    • 用专门的账户运行PHP

总的来说最重要的就是:以最低粒度控制权限,过滤任何用户可以修改的进入系统的内容

标签: ,
  1. lamenti
    8 月 8th, 201912:04
    #1