Linux Apache+Proftpd构建虚拟主机时要注意的几个安全问题

 更新时间:2009年08月09日 00:49:39   作者:  
Linux下Apache+Proftpd构建虚拟主机时要注意的几个安全问题,大家可以参考下,有其它未完整的地方,大家可以补充下。
. proftpd建立hostuser/hostuser帐号,所有用户均映射到该帐号。
htdocs/hosts 目录属主也为hostuser
这样用户使用FTP上传的文件属性为hostuser(644 755)。
将FTP锁定用户在自己的主目录下。

apache以nobody运行(以独立apache用户更好),读hostuser的脚本文件。
对于要写入的目录uploads和cache,必须设定777,且循环设定其子目录。两个目录禁止脚本执行(.htaccess:php_flag engine off)。这样即使黑客上传webshell到这两个目录,也无法执行。
这样cache或uploads中的新文件的属主将是nobody
cache目录要限制对外访问。

这里存在一个问题,就是apache生成的文件和目录644和755,当proftpd以hostuser:hostuser运行时,用户是无法删除cache或uploads中的内容的。
解决方法:
(1) 在PHP程序中chmod文件和目录分别为666和777
以adodb为例,需修改adodb.inc.php文件1681行if (!mkdir($dir,0771)) 和adodb-csvlib.inc.php文件287行chmod($tmpname,0644);两个地方
(2) 让用户在系统里面清空cache和uploads


2. PHP safe_mode,它的主要作用是读写文件时会检查当前脚本和要读写或修改的文件属主是否一致,如果不一致就拒绝修改。
不过,如果当前脚本属主是hostuser,要删除属主是nobody的uploads目录下的文件,一旦safe_mode打开,就不能写了。
所以safe_mode默认是不打开的,

其替代方案为:

php_admin_value open_basedir /docroot 限制每个用户只能访问自己的文件。这里的docroot是程序的根目录,不是程序下的cache或uploads目录。如果不是根目录,PHP程序都无法访问。

3. (不一定能保证)所有PHP程序脚本能过滤Remote Code Execution和Local File Include攻击。否则黑客仍有可能读取config.php中的密码,或者直接读写cache或uploads目录中的内容。
cache目录中不可存放类似用户密码之类的数据。

4. expose_php设为off ,这样php不会在http文件头中泄露PHP的版本号.

Tips:Linux下默认文件和目录的mod为 文件644 目录755 (即666-22 777-22)umask 22

相关文章

  • Linux下安装SVN服务端的方法步骤

    Linux下安装SVN服务端的方法步骤

    这篇文章主要介绍了Linux下安装SVN服务端的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 在Linux中对存储设备进行分区和格式化的操作步骤

    在Linux中对存储设备进行分区和格式化的操作步骤

    在 Linux 系统上准备新磁盘以供使用是一个简单的过程,虽然有许多工具、文件系统格式和分区方案可能会因为特殊需求而改变这个过程,但基本原理仍然是一样的,文中给大家详细介绍了在Linux中对存储设备进行分区和格式化的操作步骤,需要的朋友可以参考下
    2024-10-10
  • Linux将命令添加到PATH中的方法

    Linux将命令添加到PATH中的方法

    下面小编就为大家带来一篇Linux将命令添加到PATH中的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Centos7的apache网站环境搭建wordpress

    Centos7的apache网站环境搭建wordpress

    本篇文章给大家详细分析了在Centos7的apache网站环境搭建wordpress的详细操作方法,有兴趣的朋友参考下。
    2018-02-02
  • linux Bash脚本判别使用者的身份方法示例

    linux Bash脚本判别使用者的身份方法示例

    这篇文章主要介绍了linux Bash脚本判别使用者的身份方法示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • centos7 用rpm安装mysql详解

    centos7 用rpm安装mysql详解

    这篇文章主要介绍了centos7 用rpm安装mysql详解的相关资料,需要的朋友可以参考下
    2016-10-10
  • Linux文件管理使用详解

    Linux文件管理使用详解

    这篇文章主要为大家详细介绍了Linux文件管理的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Linux采用双网卡bond、起子接口的方式

    Linux采用双网卡bond、起子接口的方式

    这篇文章主要给大家介绍了关于Linux采用双网卡bond、起子接口的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • linux下安装配置svn独立服务器的步骤分享

    linux下安装配置svn独立服务器的步骤分享

    subversion(以下简称svn)是近年来崛起的版本管理工具,是cvs的接班人。 svn服务器有2种运行方式:独立服务器和借助apache。2种方式各有利弊
    2011-05-05
  • windows apache 无法启动的两种解决方法

    windows apache 无法启动的两种解决方法

    apache无法启动,查询了一些方法,说是更改端口,如果你还是无法启动。那就备份一下数据库,重装apache吧
    2014-09-09

最新评论