Apache Web服务器安全配置全攻略[通俗易懂]

Apache Web服务器安全配置全攻略[通俗易懂]作为最流行的Web服务器,ApacheServer提供了较好的安全特性,使其能够应对可能的安全威胁和信息泄漏。   Apache服务器的安全特性  1、采用选择性访问控制和强制性访问控制的安全策略  从Apache或Web的角度来讲,选择性访问控制DAC(DiscretionaryAccessControl)仍是基于用户名和密码的,强制性访问控制MAC(Mand

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定
作为最流行的Web服务器,Apache Server提供了较好的安全特性,使其能够应对可能的安全威胁和信息泄漏。 




  
Apache 服务器的安全特性




  1、 采用选择性访问控制和强制性访问控制的安全策略




  从Apache 或Web的角度来讲,选择性访问控制DAC(Discretionary Access Control)仍是基于用户名和密码的,强制性访问控制MAC(Mandatory Access Control)则是依据发出请求的客户端的IP地址或所在的域号来进行界定的。对于DAC方式,如输入错误,那么用户还有机会更正,从新输入正确的的密码;如果用户通过不了MAC关卡,那么用户将被禁止做进一步的操作,除非服务器作出安全策略调整,否则用户的任何努力都将无济于事。




  2、Apache 的安全模块




  Apache 的一个优势便是其灵活的模块结构,其设计思想也是围绕模块(Modules)概念而展开的。安全模块是Apache Server中的极其重要的组成部分。这些安全模块负责提供Apache Server的访问控制和认证、授权等一系列至关重要的安全服务。




  mod_access模块能够根据访问者的IP地址(或域名,主机名等)来控制对Apache服务器的访问,称之为基于主机的访问控制。




  mod_auth模块用来控制用户和组的认证授权(Authentication)。用户名和口令存于纯文本文件中。mod_auth_db和mod_auth_dbm模块则分别将用户信息(如名称、组属和口令等)存于Berkeley-DB及DBM型的小型数据库中,便于管理及提高应用效率。




  mod_auth_digest模块则采用MD5数字签名的方式来进行用户的认证,但它相应的需要客户端的支持。




  mod_auth_anon模块的功能和mod_auth的功能类似,只是它允许匿名登录,将用户输入的E-mail地址作为口令。




  SSL(Secure Socket Lager),被Apache所支持的安全套接字层协议,提供Internet上安全交易服务,如电子商务中的一项安全措施。通过对通讯字节流的加密来防止敏感信息的泄漏。但是,Apache的这种支持是建立在对Apache的API扩展来实现的,相当于一个外部模块,通过与第三方程序的结合提供安全的网上交易支持。




  
Apache服务器的安全配置




  Apache具有灵活的设置,所有Apache的安全特性都要经过周密的设计与规划,进行认真地配置才能够实现。Apache服务器的安全配置包括很多层面,有运行环境、认证与授权设置等。Apache的安装配置和运行示例如下:




  1、以Nobody用户运行




  一般情况下,Apache是由Root 来安装和运行的。如果Apache Server进程具有Root用户特权,那么它将给系统的安全构成很大的威胁,应确保Apache Server进程以最可能低的权限用户来运行。通过修改httpd.conf文件中的下列选项,以Nobody用户运行Apache 达到相对安全的目的。




  User nobody




  Group# -1




  2、ServerRoot目录的权限




  为了确保所有的配置是适当的和安全的,需要严格控制Apache 主目录的访问权限,使非超级用户不能修改该目录中的内容。Apache 的主目录对应于Apache Server配置文件httpd.conf的Server Root控制项中,应为:




  Server Root /usr/local/apache




  3、SSI的配置




  在配置文件access.conf 或httpd.conf中的确Options指令处加入Includes NO EXEC选项,用以禁用Apache Server 中的执行功能。避免用户直接执行Apache 服务器中的执行程序,而造成服务器系统的公开化。




  




  Options Includes Noexec




  4、阻止用户修改系统设置




  在Apache 服务器的配置文件中进行以下的设置,阻止用户建立、修改 .htaccess文件,防止用户超越能定义的系统安全特性。




  




  AllowOveride None




  Options None




  Allow from all




  




  然后再分别对特定的目录进行适当的配置。




  5、改变Apache 服务器的确省访问特性




  Apache 的默认设置只能保障一定程度的安全,如果服务器能够通过正常的映射规则找到文件,那么客户端便会获取该文件,如
http://local
 host/~ root/ 将允许用户访问整个文件系统。在服务器文件中加入如下内容:




  




  order deny,ellow




  Deny from all




  




  将禁止对文件系统的缺省访问。




  6、CGI脚本的安全考虑




  CGI脚本是一系列可以通过Web服务器来运行的程序。为了保证系统的安全性,应确保CGI的作者是可信的。对CGI而言,最好将其限制在一个特定的目录下,如cgi-bin之下,便于管理;另外应该保证CGI目录下的文件是不可写的,避免一些欺骗性的程序驻留或混迹其中;如果能够给用户提供一个安全性良好的CGI程序的模块作为参考,也许会减少许多不必要的麻烦和安全隐患;除去CGI目录下的所有非业务应用的脚本,以防异常的信息泄漏。




  以上这些常用的举措可以给Apache Server 一个基本的安全运行环境,显然在具体实施上还要做进一步的细化分解,制定出符合实际应用的安全配置方案。




  
Apache Server基于主机的访问控制






  Apache Server默认情况下的安全配置是拒绝一切访问。假定Apache Server内容存放在/usr/local/apache/share 目录下,下面的指令将实现这种设置:




  




  Deny from all




  Allow Override None




  




  则禁止在任一目录下改变认证和访问控制方法。




  同样,可以用特有的命令Deny、Allow指定某些用户可以访问,哪些用户不能访问,提供一定的灵活性。当Deny、Allow一起用时,用命令Order决定Deny和Allow合用的顺序,如下所示:




  1、 拒绝某类地址的用户对服务器的访问权(Deny)




  如:Deny from all




  Deny from test.cnn.com




  Deny from 204.168.190.13




  Deny from 10.10.10.0/255.255.0.0




  2、 允许某类地址的用户对服务器的访问权(Allow)




  如:Allow from all




  Allow from test.cnn.com




  Allow from 204.168.190.13




  Allow from 10.10.10.0/255.255.0.0




  Deny和Allow指令后可以输入多个变量。




  3、简单配置实例:




  Order Allow, Deny




  Allow from all




  Deny from 
www.test.com




  指想让所有的人访问Apache服务器,但不希望来自
www.test.com
的任何访问。




  Order Deny, Allow




  Deny from all




  Allow from test.cnn.com




  指不想让所有人访问,但希望给test.cnn.com网站的来访。




  
Apache Sever的用户认证与授权






  概括的讲,用户认证就是验证用户的身份的真实性,如用户帐号是否在数据库中,及用户帐号所对应的密码是否正确;用户授权表示检验有效用户是否被许可访问特定的资源。在Apache中,几乎所有的安全模块实际上兼顾这两个方面。从安全的角度来看,用户的认证和授权相当于选择性访问控制。




  建立用户的认证授权需要三个步骤:




  1、建立用户库




  用户名和口令列表需要存在于文件(mod_auth模块)或数据库(mod_auth_dbm模块)中。基于安全的原因,该文件不能存放在文挡的根目录下。如,存放在/usr/local/etc/httpd下的users文件,其格式与UNIX口令文件格式相似,但口令是以加密的形式存放的。应用程序htpasswd可以用来添加或更改程序:




  htpasswd –c /usr/local/etc/httpd/users martin




  -c表明添加新用户,martin为新添加的用户名,在程序执行过程中,两次输入口令回答。用户名和口令添加到users文件中。产生的用户文件有如下的形式:




  martin:WrU808BHQai36




  jane:iABCQFQs40E8M




  art:FadHN3W753sSU




  第一域是用户名,第二个域是用户密码。




  2、配置服务器的保护域




  为了使Apache服务器能够利用用户文件中的用户名和口令信息,需要设置保护域(Realm)。一个域实际上是站点的一部分(如一个目录、文档等)或整个站点只供部分用户访问。在相关目录下的.htaccess文件或httpd.conf ( acces.conf ) 中的段中,由AuthName来指定被保护层的域。在.htaccess文件中对用户文件有效用户的授权访问及指定域保护有如下指定:




  AuthName “restricted stuff”




  Authtype Basic




  AuthUserFile /usr/local/etc/httpd/users




  Require valid-user




  其中,AuthName指出了保护域的域名(Realm Name)。valid-user参数意味着user文件中的所有用户都是可用的。一旦用户输入了一个有效的用户/口令时,同一个域内的其他资源都可以利用同样的用户/口令来进行访问,同样可以使两个不同的区域共用同样的用户/口令。




  3、告诉服务器哪些用户拥有资源的访问权限




  如果想将一资源的访问权限授予一组客户,可以将他们的名字都列在Require之后。最好的办法是利用组(group)文件。组的操作和标准的UNIX的组的概念类似,任一个用户可以属于一个和数个组。这样就可以在配置文件中利用Require对组赋予某些权限。如:




  Require group staff




  Require group staff admin




  Require user adminuser




  指定了一个组、几个组或一个用户的访问权限。



  需要指出的是,当需要建立大批用户帐号时,那么Apache服务器利用用户文件数据库将会极大地降低效率。这种情况下,最好采用数据库格式的帐号文件,譬如 DBM数据库格式的文件。还可以根据需要利用db格式(mod_auth_db)的数据文件,或者直接利用数据库,如:mSQL(mod_auth_msql)或DBI兼容的数据库(mod_auth_dbi)。

Apache设置目录禁止访问

默认apache在当前目录下没有index.html入口就会显示目录。让目录暴露在外面是非常危险的事,如下操作禁止apache显示目录:
进入apache的配置文件 httpd.conf 找到:
Options Indexes FollowSymLinks
修改为:
Options FollowSymLinks

其实就是将Indexes去掉,Indexes表示若当前目录没有index.html就会显示目录结构。

非常的简单吧!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/219091.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 统计推断——假设检验——方差分析之多重比较(LSD法、Sidak法、Bonferroni法、Dunnett法、Tukey法、SNK 法、Duncan法)「建议收藏」

    统计推断——假设检验——方差分析之多重比较(LSD法、Sidak法、Bonferroni法、Dunnett法、Tukey法、SNK 法、Duncan法)「建议收藏」在一个试验中,有个处理平均数间比较时,其全部可能的相互比较对数有个,这种比较是复式比较,亦称多重比较(multiplecomparisons)。为什么要做多重比较呢?方差分析后做多重比较有很多好处:误差由多个处理内的变异合并估计,自由度增大了,因而比较的精确度也增大了。 检验显著,说明可以判定多个处理间存在显著的变异。因此方差分析后再做多重比较,称为Fisher氏保护性多重比较(F…

    2022年6月14日
    301
  • ehviewer_EhViewer(E绅士)最新版-EhViewer2021里站最新版v1.7.6-3355游戏网[通俗易懂]

    ehviewer_EhViewer(E绅士)最新版-EhViewer2021里站最新版v1.7.6-3355游戏网[通俗易懂]EhViewerapp里面有着许多的福利漫画资源哦,这里面的漫画更新的速度也是超级的快,可以让你更好的进行自己的漫画观看哦,这里面的漫画类型也是多样化的哦,每一款都是你的最爱哦,你可以在这里阅读到大量的漫画资源哦,画质也是超级的高清,这里面的漫画阅读是没有任何的广告的哦,可以让你享受到更多的漫画精彩。『EhViewer优势』1.更新速度快,每天都有新漫画资源推荐2.资源丰富,漫画类型丰富3.操作简…

    2022年7月24日
    244
  • mybatisplus代码生成器

    官方文档:https://mp.baomidou.com/guide/逆向工程链接:https://pan.baidu.com/s/1FloqrIhI2d1ns4XgvYPIkA目录结构:生成:xml映射文件,mapper接口,service接口与实现,controller类,实体类与AR;XML映射文件可以不与mapper放一个包,可以自己…

    2022年4月6日
    101
  • 邮箱正则表达式

    邮箱正则表达式正则提取国内外所有的邮箱经过测试准确率100%python代码块res=re.search(r’\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,8}\b’,description)ifres:emailAddress=res.group()else:emailAddr…

    2022年6月15日
    31
  • Oracle PL/SQL编程详解之一: PL/SQL 程序设计简介(千里之行,始于足下)「建议收藏」

    Oracle PL/SQL编程详解之一: PL/SQL 程序设计简介(千里之行,始于足下)「建议收藏」作者:EricHu(DB、C/S、B/S、WebService、WCF、PM等)出处:http://www.cnblogs.com/huyong/Q Q:80368704   E-Mail: 80368704@qq.com本博文欢迎大家浏览和转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,在『参考』的文章中,我会表明参考的文章来源,尊重他人版权。若您发现我侵

    2022年6月17日
    41
  • ssl协议未开启是什么意思?如何解决?_ssl协议未开启怎么解决

    ssl协议未开启是什么意思?如何解决?_ssl协议未开启怎么解决本文给大家介绍一下著名的网络安全协议SSL,如果有需要的朋友可以参考学习,希望以下的分享对您的学习有所帮助。安全套接字协议(SecureSocketLayer,SSL)是web浏览器与Web服务器之间安全交换的信息的协议。提供两个基本的安全服务:鉴别与保密。SSL是Netscape于1994年开发的,后来成为了世界上著名的web安全机制,所有主要浏览器都支持SSL协议。SSL协议由两层组成,分…

    2025年6月23日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号