LAMP架构下的安全注意要点

转自:http://www.penglixun.com/tech/system/lamp_security.html

 

  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
Categories: OS

0 Comments

Leave a Reply

Avatar placeholder

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