Apache Web服务器安全配置全攻略

作为最流行的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)。

(0)

相关推荐

  • Linux Apache Web 服务器

    商业界很快看到了其价值,许多公司建立了主页,利用Web在网上发布消息,并反它作为各种服务的界面,如客户服务.特定产品和服务的详细说明.宣传广千以及是渐增长的产品销售和服务.商业用途促进了环球信息网络的迅速发展. 如果你想通过主页向世界介绍自己或自己的公司,就必须将主页放在一个WEB服务器上,当然你可以使用一些免费的主页空间来发布.但是如果你有条件,你可以注册一个域名,申请一个IP地址,然后让你的ISP将这个IP地址解析到你的LINUX主机上.然后,在LINUX主机上架设一个WEB服务器.你就可以

  • Apache2 WEB服务器的配置步骤分享

    安装配置apache2 1.到apache(www.apache.org)官方网站下载最新的源代码包 2.用tar -zxvf apache_[version].tar.gz解压,得到一个目录 3.进入目录执行./configure prefix=[path] enable-module=so开始配置 例如要将apache安装在/www/ 下,则可以./configure prefix=/wwwenable-moudle=so 4.配置过后执行make,接着make install,apache

  • 单台服务器中利用Apache的VirtualHost如何搭建多个Web站点详解

    前言 本文将详细记录一下如何在单台服务器上,利用apache的virtualhost(虚拟主机)来搭建多个不同的web站点,并且每个站点独立管理自己的session,下面话不多说了,来一起看看详细的介绍吧. 开发环境 先说下我各项开发环境参数: 操作系统: RedHat6.7(CentOS) WEB服务器:apache2.2 php5.6.30 修改Apache配置 apache2.2 的配置文件路径在 /etc/httpd/conf/httpd.conf 我们用下面的命令修改apache的配置

  • 使用Apache&花生壳架设Web服务器

    这里讲的是IIS服务器,其实花生壳在Apache下也能正常使用,这一点我在以前的帖子中已经讲过,现在专门把Apache的配置作一详细说明: 首先:当然是下载Apache啦,Apache目前最新的Windows版本是1.3.2X,你可以到它的官方网站去下载最新版(http://www.apache.org),Win2000对应的下载文件是Win32版本,Win98和Winme对应的下载文件是R298orMe版本,注意别下载错了.如果你使用的是Win2000而下载了Win98orMe的版本,嘿嘿,等

  • Linux Apache Web 服务器终极教程

    APACHE系统介绍 根据著名的WWW服务器调查公司所作的调查,世界上百分之五十以上的WWW服务器都在使用Apache,是世界排名第一的WEB服务器.Apache的诞生极富有戏剧性.当NCSA WWW服务器项目停顿后,那些使用NCSA WWW服务器的人们开始交换他们用于该服务器的补丁程序,他们也很快认识到成立管理这些补丁程序的论坛是必要的.就这样,诞生了Apache Group,后来这个团体在NCSA的基础上创建了Apache. Apache的主要特征是: . 可以运行上所有计算机平台: . 支

  • Apache Web服务器的完全安装指南

    所需软件 apache_1.3.20.tar.gz 主页: http://www.apache.org mod_perl-1.26.tar.gz 主页: http://perl.apache.org openssl-0.9.6b.tar.gz 主页: http://www.openssl.org mod_ssl-2.8.4-1.3.20.tar.gz 主页: http://www.modssl.org php-4.0.6.tar.gz主页: http://php.apache.org webal

  • 基于Apache的支持.NET2.0的Web服务器搭建

    1.下载Apache http server:我下载的版本是ApacheHTTPServerforWindowsV2.2.8.msi. 2.安装,几乎是一路NEXT下去,但是有个环节需要注意,在选择HTTP默认端口时,如果你系统中已经安装了IIS那就写个别的端口(例如8080)而不要使用默认的80端口,否则安装完毕后服务器就无法启动了.(不过也可以在安装后修改Apache的配置文件中Listen节点的端口数字,然后重启服务器就可以了). 3.下载mod_aspdotnet模块:我下载的版本是:m

  • Apache Web服务器安全配置全攻略

    作为最流行的Web服务器,Apache Server提供了较好的安全特性,使其能够应对可能的安全威胁和信息泄漏. Apache 服务器的安全特性 1. 采用选择性访问控制和强制性访问控制的安全策略 从Apache 或Web的角度来讲,选择性访问控制DAC(Discretionary Access Control)仍是基于用户名和密码的,强制性访问控制MAC(Mandatory Access Control)则是依据发出请求的客户端的IP地址或所在的域号来进行界定的.对于DAC方式,如输入错误,那

  • 路由器配置全攻略第1/4页

    第一章 路由器配置基础 一.基本设置方式 二.命令状态 三.设置对话过程 四.常用命令 五.配置IP寻址 六.配置静态路由  第二章 广域网协议设置 一.HDLC 二.PPP 三.X.25 四.Frame Relay 五.ISDN 六.PSTN 第三章 路由协议设置 一.RIP协议 二.IGRP协议 三.OSPF协议 四.重新分配路由 五.IPX协议设置 第四章 服务质量及访问控制 一.协议优先级设置 二.队列定制 三.访问控制 第五章 虚拟局域网(VLAN)路由  一.虚拟局域网(VLAN)

  • 详解Linux环境变量配置全攻略

    在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法. 下面所有例子的环境说明如下: 系统:Ubuntu 14.0 用户名:uusama 需要配置MySQL环境变量路径:/home/uusama/mysql/bin Linux读取环境变量 读取环境变量的方法: export命令显示当前系统定义的所有环境变量 echo $PATH命令输出当前的PATH环境变量的值 这两个命令执行的效果如下 uusama@ubuntu:~$ export declare -x HOME=

  • Apache Web 服务器的安装配置方法

    学习如何在 Apache 上托管你自己的网站,这是一个可靠.流行且易于配置的 Web 服务器. 我托管自己的网站已经有很多年了.自从 20 多年前从 OS/2 切换到 Linux 以来,我一直将 Apache 作为我的服务器软件.Apache 是可靠.流行的,且基本的安装配置也很容易.对于更复杂的设置(比如多个网站)也并不是那么困难. Apache Web 服务器的安装和配置必须以 root 身份执行. 防火墙的配置也需要以 root 身份执行. 使用浏览器查看安装配置的结果应该以非 root

  • Linux中搭建完整的samba服务器全攻略(centos版)

    前言 smb是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通.SMB最初是IBM的贝瑞·费根鲍姆(Barry Feigenbaum)研制的,其目的是将DOS操作系统中的本地文件接口"中断13"改造为网络文件系统. smb服务简介 后来微软对这个发展进行了重大更改,这个更改后的版本也是最常见的版本.微软将SMB协议与它和3Com一起发展的网络管理程序结合在一起,并在Windows for Workgroups和后来的Windows版本中不断加入新的功能. SMB一开始的设

  • windows一键安装web环境全攻略(win2008)

    windows一键安装web环境全攻略 请根据系统不同下载对应的一键安装包,注意区分32位和64位. windows 2008 64位系统一键安装包下载 (我们下载64)windows 2008 32位系统一键安装包下载 (我们下载32) 准备好连接windows服务器的工具 一切准备就绪,让我们连接看看云windows服务器的庐山真面目吧! 进入后先格式化硬盘,介个,应该都会吧,不然进不了windows的硬盘的 双击刚才下载好的一键安装包进行安装 等待中,大概30秒就好了 完成后会出现一个命令

  • 保存和配置系统硬件注册信息—注册表使用全攻略之十二

    保存和配置系统硬件注册信息-注册表使用全攻略之十二 电脑用的时间长了,经常要更换一些硬件设备,重复安装驱动程序也就成了家常便饭,这样就致使电脑中残留下很多硬件注册信息,系统启动时就会试图与不存在的设备通讯,从而导致系统速度的下降.如何删除这些注册信息呢?格式化么?太麻烦了吧! 其实Windows有个"硬件配置文件"功能,它是用来告诉电脑在启动时启动哪些硬件设备,第一次安装Windows时,系统就默认创建了一个配置文件"Original Configuration"(

  • 巧改注册表来增强网络功能—注册表使用全攻略之五

    巧改注册表来增强网络功能-注册表使用全攻略之五 1.指定首选的网络服务器 在注册表中依次展开[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NWNP32\NetworkProvider],并在其主键下创建或更改串值AuthenticatingAgent,附值为指定的服务器 2.禁止自动登陆网络 在注册表中依次展开[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NWNP32\Ne

  • 注册表应用100例—注册表使用全攻略之十一

    注册表应用100例-注册表使用全攻略之十一 1 修改窗口滚动条的大小(Windows 9x/2000/XP)(1)打开注册表编辑器.(2)打开HKEY_CURRENT_USER\Control Panel\Desktop\Windows Metrics子键.(3)右边窗口中的ScrollHeight和ScrollWidth是窗口滚动条的高和宽,默认值为-270(均以Windows 9x为例,Windows 2000/XP的默认值与其相差不大),分别双击ScrollHeight和ScrollWid

  • Win2000注册表应用—注册表使用全攻略之九

    Win2000注册表应用-注册表使用全攻略之九 一.修改开始菜单和任务栏 此次更改的注册表项目是在HKEY_CURRENT_USER下的,如果只想针对某一用户则只需要修改HKEY_USERS\用户代码(比如S-1-5-21-448539723-113007714-842925246-1000) 下的相应键值就可以了. 1.禁止开始菜单上的上下拖动 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explor

随机推荐