设为首页 收藏本站
查看: 823|回复: 0

[经验分享] Apache 安全配置方法 详细出处参考

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2018-11-23 08:16:55 | 显示全部楼层 |阅读模式
  Apache 安全配置方法发布类型:转载
  在本文中,笔者将为你提供10个技巧,借此你可以保护自己的Apache Web服务器免于受到许多***。不过,必须谨记,你需要仔细地评估每一个技巧,以确保其适合于你的组织。
  令Apache占领Web服务器半壁江山的一个重要原因就是它可以提供一个安全的Web操作环境。Apache团体为保证其安全性做了大量的工作。想当年,在此产品被发现存在一个安全缺陷时,Apache的开发人员就尽快地搞出了一个补丁。
  然而,即管Apache已经堪称安全的产品,如果你在构建你的服务器时没有采取一些安全预防措施,这种Web服务器仍易于受到很多***。
  在本文中,笔者将为你提供10个技巧,借此你可以保护自己的Apache Web服务器免于受到许多***。不过,必须谨记,你需要仔细地评估每一个技巧,以确保其适合于你的组织。
  只安装所需要的
  Apache的一个最大的特点是其灵活性和大量的可选择安装模块,这在涉及到安全问题时可成为一个极大的弱点。你安装的越多,也就为潜在的***者创造了越大的***面。一个标准的Apache安装包含20多个模块,包括CGI特性,以及一些身份验证机制。如果你不打算采用CGI,并且你只想采用静态的Web 站点,不需要用户身份验证,你可能就不需要这些模块所提供的任何服务,因此在安装Apache时请禁用这些模块。
  如果你沿用了一个正在运行的Apache服务器,并且不想重新安装它,就应当仔细检查httpd.conf配置文件,查找以LoadModule开头的行。请检查Apache的文档(也可以用Google、Yahoo等搜索),查找每个模块的目的信息,找出那些你并不需要的模块。然后,重新启动 Apache。
  暴露程度最小化
  Apache易于安装并且相当容易管理。不幸的是,许多Apache的安装由于为完全的陌生者提供了关于自己服务器的太多"有帮助”的信息,例如 Apache的版本号和与操作系统相关的信息。通过这种信息,一个潜在的***者就可以追踪特定的可以影响你的系统的破坏性漏洞,特别是你没有能够保持所有补丁的更新的话情况更为严重。如此一来,***者无需反复试验就可以确切地知道你在运行什么,从而可以调整其***方法。
  要防止服务器广播敏感信息,一定要保证将httpd.conf中的"ServerSignature”指令设置为"off”。一次默认的Apache安装会将此指令设置为"off”,不过许多管理员却启用了它。
  同样地,禁用目录浏览也是一个不错的注意。在目录浏览被启用时,访问一个并不包含其所需要文档的目录的用户,会看到此目录中完整的内容列表。无疑,你不应当将敏感材料以纯文本的形式存储到一个Web服务器上,除非你必须这样做,你也不应该允许人们看到超过其需要的内容。
  目录浏览默认地是被启用的。要禁用这个特性,应编辑http.conf文件,而且对每一个"Directory”指令,应清除"Indexs”。
  例如,在笔者的做实验用的Apache 2.2.4服务器上,这是默认的目录命令:
  复制代码 代码如下:
  
  Options Indexes FollowSymLinks
  AllowOverrride None
  Order allow,deny
  Allow from all
  
  清除Indexes后的样子:
  复制代码 代码如下:
  
  Options FollowSymLinks
  AllowOverrride None
  Order allow,deny
  Allow from all
  
  你也可以保留Indexes指令,并用一个破折号引导,从而禁用此指令(也就是"-Indexes”)。
  禁用符号连接追踪
  如果你是唯一一个校对Web内容的人员,而你在创建新的符号连接时又几乎不犯错误,你可能不会担心此措施。不过,如果你有很多人员能够向你的站点增加内容,并非所有的人都像你一样谨慎从事,那么就会有一种风险,即某个用户可能偶然会创建一个符号连接指向你的文件系统的一部分,而你又确实不想让人们看到这些文件。例如,如果你的Apache服务器的根目录中的某人创建了一个指向 "/”文件夹的符号连接,你该怎么办?
  为了取消Apache服务器允许用户追踪符号连接的请求,应该在Directory命令中清除FollowSymlinks指令。
  例如,在笔者的试验性的Apache 2.2.4服务器中,Directory命令如下:
  复制代码 代码如下:
  
  Options Indexes FollowSymLinks
  AllowOverrride None
  Order allow,deny
  Allow from all
  
  在清除了FollowSymLinks后,就成为如下的样子:
  复制代码 代码如下:
  
  Options Indexes
  AllowOverrride None
  Order allow,deny
  Allow from all
  
  如果一些用户需要跟踪符号连接的能力,可以考虑使用SymLinksIfOwnerMatch代替。
  Listen指令具体化
  在你第一次安装Apache时,httpd.conf包含一个"Listen 80”指令。应将其改变为 "Listen mn.xx.yy.zz:80”,在这里"mn.xx.yy.zz”是你想让Apache监听其请求的IP地址。如果你的Apache运行在一个拥有多个IP地址的服务器上时,这一点尤其重要。如果你不采取预防措施,默认的"Listen 80”指令告诉Apache监听每一个IP地址的 80端口。
  不过,这项措施有可能不适用于你的环境,应根据需要而定。
  从httpd.conf中清除默认的注释
  Apache 2.2.4中默认的httpd.conf文件有400多行。在这400行中,只有一小部分是实际的Apache指令,其余的仅是帮助用户如何恰当地在httpd.conf中放置指令的注释。根据笔者的经验,这些注释有时起负面作用,甚至将危险的指令留存于文件中。笔者在所管理的许多 Apache服务器上将httpd.conf文件复制为其它的文件,如httpd.conf.orig等,然后完全清除多余的注释。文件变得更加容易阅读,从而更好地解决了潜在的安全问题或者错误地配置文件。
  没作任何设置前,查看web服务器请求文件头
  HTTP/1.1 200 OK
  Date: Sun, 27 Apr 2008 11:56:46 GMT
  Server: Apache/2.2.8 (Unix) DAV/2 PHP/5.2.5 with Suhosin-Patch
  Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
  ETag: "387a5-2c-3e9564c23b600"
  Accept-Ranges: bytes
  Content-Length: 44
  Content-Type: text/html
  几乎把web服务器详细信息都暴出来了,如果没个版本的apache和php爆出严重漏洞,会给***者提供最有***价值的安全信息,这是非常危险的
  将apache的配置文件加上两行
  ServerTokens ProductOnly
  ServerSignature Off
  重启apache让设置生效
  再次发出apache头信息请求
  HTTP/1.1 200 OK
  Date: Sun, 27 Apr 2008 11:57:40 GMT
  Server: Apache
  Last-Modified: Sat, 20 Nov 2004 20:16:24 GMT
  ETag: "387a5-2c-3e9564c23b600"
  Accept-Ranges: bytes
  Content-Length: 44
  Content-Type: text/html
  可以看到apache版本号于已经没有了
  做到这点,我们还可以改变apache的版本,这就要修改apache的源代码了,在apache的源码包中找到ap_release.h 将#define AP_SERVER_BASEPRODUCT "Apache" 修改为#define AP_SERVER_BASEPRODUCT "Microsoft-IIS/5.0”
  或者#define AP_SERVER_BASEPRODUCT "Microsoft-IIS/6.0”
  然后找到os/unix下的os.h文件,将其#define PLATFORM "Unix"修改为#define PLATFORM "Win32"
  然后重新编译,安装apache。
  最后修改httpd.conf配置文件,添加两行ServerTokens Prod
  ServerSignature Off
  在发送头请求,会有什么,就不用我说了吧,嘿嘿,这叫偷天换日,从这点来说,php也是一样,同样可以通过这种方式改变一些系统信息,不过根据GPL开源的精神,这样做貌似不太好,还是保留apache和php版权信息吧。
  附:
  ServerSignature 三个选项
  On|Off|EMai 主要起开关作用
  ServerTokens 四个选项
  Minimal|ProductOnly|OS|Full 四个选项隐藏信息依次增加
  下面对php的配置文件php.ini进行配置
  默认情况下expose_php = On
  将其改为 expose_php = Off
  为什么,可以看这段解释
  ; Decides whether PHP may expose the fact that it is installed on the server
  ; (e.g. by adding its signature to the Web server header). It is no security
  ; threat in any way, but it makes it possible to determine whether you use PHP
  ; on your server or not.
  然后禁止一些涉及php安全的函数
  disable_functions = phpinfo, get_cfg_var //禁止phpinfo和get_cfg_var等函数
  display_errors = Off //禁止爆出错误
  allow_url_fopen = Off //这个关闭,就没有办法取远程内容了,但是可以用变通,用curl远程读取的方法做到
  safe_mode = On //开启安全模式,这个开了,可能会有些php功能没办法使用了
  无论如何,还是要我们的程序设计的完美,一般来说,单纯更具对系统***很难,如果是程序有漏洞,那***就简单了。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-638437-1-1.html 上篇帖子: org.apache.commons.logging 下篇帖子: apache的prefork和workder模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表