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

相关文章

  • 阿里云基于CentOS用vsftpd搭建FTP服务器

    阿里云基于CentOS用vsftpd搭建FTP服务器

    这篇文章主要介绍了阿里云CentOS系统yum方式安装vsftpd的相关资料,最近想要了解的朋友可以了解一下。
    2016-10-10
  • linux安装git的方法步骤

    linux安装git的方法步骤

    这篇文章主要介绍了linux安装git的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • linux exa命令(比ls更好的展示文件体验)

    linux exa命令(比ls更好的展示文件体验)

    这篇文章主要介绍了linux exa命令(比ls更好的展示文件体验),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Linux实现文件内容去重及求交并差集

    Linux实现文件内容去重及求交并差集

    这篇文章主要介绍了Linux实现文件内容去重及求交并差集,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • linux实现除了某个文件或某个文件夹以外的全部删除

    linux实现除了某个文件或某个文件夹以外的全部删除

    下面小编就为大家带来一篇linux实现除了某个文件或某个文件夹以外的全部删除。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • Linux的文件描述符、文件指针、索引节点详情

    Linux的文件描述符、文件指针、索引节点详情

    这篇文章主要对Linux的文件描述符、文件指针、索引节点详情介绍,感兴趣和需要的朋友可以参考下文
    2021-08-08
  • Linux中如何通过端口号查找进程号

    Linux中如何通过端口号查找进程号

    这篇文章主要介绍了Linux中如何通过端口号查找进程号问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Linux netstat命令查看并发连接数的方法

    Linux netstat命令查看并发连接数的方法

    当我们的网站部署在linux的服务器上,特别是web服务器,我们可能有时候做为运维人员,肯定是要查看网站的并发连接数是不是达到瓶颈等,所以在linux下,我们如何查看服务器的并发连接数呢?下面这篇文章就给大家详细的介绍了Linux netstat命令查看并发连接数的方法。
    2016-11-11
  • linux swap交换内存扩容的方法

    linux swap交换内存扩容的方法

    这篇文章主要介绍了linux swap交换内存扩容的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 解决Linux常用命令“ll”失效或命令未找到的问题

    解决Linux常用命令“ll”失效或命令未找到的问题

    这篇文章主要介绍了Linux常用命令“ll”失效或命令未找到的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06

最新评论