apache服务器配置:Apache Web服务的安全配置

作为最流行Web服务器Apache Server提供了较好安全特性使其能够应对可能安全威胁和信息泄漏 
 
    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地址(或域名主机名等)来控制对代码放在httpd.conf文件没有VirtualHost地方若是对某个虚拟主机进行限制请将其放在<VirtualHost xxx.xxx.xxx.xxx>和</VirtualHost>的间我们可以通过更改Location以及MaxConnPerIP方便控制所限制目录和并发连接数

最后只要重新启动Apache服务并发连接数限制就可以生效

2、使用mod_bandwidth控制Apache带宽

Apache 1.3.7实际上带有mod_bandwidth支持只是没有此模块so文件我们所做就是下载mod_bandwidth源文件进行编译并对mod_bandwidth进行相应设置

在下载的前请先确认自己Apache配置文件httpd.conf中是否含有

<IfDefine HAVE_BANDWIDTH>
LoadModule bandwidth_module modules/mod_bandwidth.so
</IfDefine>
以及

<IfDefine HAVE_BANDWIDTH>
AddModule mod_bandwidth.c
</IfDefine>
若是没有请加上

LoadModule bandwidth_module
libexec/apache/mod_bandwidth.so
AddModule mod_bandwidth.c

并且这两行必须分别加在相应区域最前面使得这个模块以最低优先级运行(不过1.3.7Apache应该有呵呵)

确认后请输入 wget ftp://ftp.cohprog.com/pub/apache/module/1.3.0/mod_bandwidth.c 将源文件下载到服务器然后请使用apxs对其进行编译编译思路方法和mod_limitipconn基本相同如我输入/usr/sbin/apxs -c mod_bandwidth.c -o /usr/lib/apache(Apache模块目录)编译会自动将编译成功mod_bandwidth.so文件放到Apache模块目录您也可以自己确认若是不正常拷贝过去即可

mod_bandwidth运行时需要些特定目录按照默认情况请运行以下命令创建并更改目录权限:

mkdir /tmp/apachebw
mkdir /tmp/apachebw/link
mkdir /tmp/apachebw/master
chmod -R 777 /tmp/apachebw
然后再打开httpd.conf文件加上以下内容

<IfModule mod_bandwidth.c>
BandWidthDataDir "/tmp/apachebw/"
BandWidthModule on
</IfModule>

这时我们就能够对所需要限制带宽目录进行相应设置此处目录请使用服务器绝对路径如我们想限制服务器/home/www/thinkjam/download/soft目录下载速度也就是限制网址http://download.thinkjam.org/soft目录下软件Software下载速度则为httpd.conf文件增加以下内容

<Directory /home/www/thinkjam/download/soft>
BandWidth thinkjam.org 0 #来自thinkjam.org下载不受速度限制
BandWidth 210.51.21 0 #来自210.51.21网段下载不受速度限制
BandWidth all 327680 #来自其它网段速度都限制为327680Byte即30KB/s
</Directory>

设置完毕后重新启动Apache服务即可生效

mod_bandwidth还有许多其它有用参数如在中间加上MaxConnection 120则可以限制某个目录最多连接数当超过指定连接数时拒绝新连接此参数和mod_limitipconn模块结合可以控制某个目录最多连接人数

其它参数请朋友们到其官方网站WebSite http://www.cohprog.com/v3/bandwidth/doc-en.html 察看相关文档

Apache功能确实强大很多功能都可以通过添加模块来实现在 http://modules.apache.org/ 可以找到更多模块我们也可以编写自己模块来实现相应功能 

apache服务器实现用户验证

  apache服务器已经内置用户验证机制大家只要适当加以设置便可以控制网站WebSite某些部分要用户验证大家只要跟着我步步做下来就应该能轻松实现用户验证

第1步:

我们在/var/www(apache主页根目录)下建立个test目录

mkdir /var/www/test

第2步

然后我们编辑httpd.conf

添加
Alias /test"/var/www/test"
<Directory "/var/www/test">
Options Indexes MultiViews
AllowOverride AuthConfig #表示进行身份验证
order allow,deny
Allow from all
</Directory>

#AllowOverride AuthConfig 表示进行身份验证 这是关键设置

第3步

在/var/www/test创建.htaccess文件
vi /var/www/test/.htaccess

AuthName "frank share web"
AuthType Basic
AuthUserFile /var/www/test/.htpasswd
require valid-user

#AuthName 描述随便写
#AuthUserFile /var/www/test/.htpasswd
#require valid-user 或者 require user frank 限制是所有合法用户还是指定用户

#密码文件推荐使用.htpasswd,apache默认系统对“.ht”开头文件默认不允许外部读取安全系数会高点哦

第4步

就是创建apache验证用户

htpasswd -c /var/www/test/.htpasswd frank

#第次创建用户要用到-c 参数 第2次添加用户就不用-c参数

如果你们想修改密码可以如下

htpasswd -m .htpasswd frank

第5步:

ok重启apache服务然后访问 http://你网站WebSite地址/test 如果顺利应该能看到个用户验证弹出窗口只要填入第4步创建用户名和密码就行

后话为了服务器性能般不推荐使用AllowOverride AuthConfig或者AllowOverride ALL这会使服务器会不断去寻找.htaccess,从而影响服务器效能般我们把些后台管理界面或者其他特殊目录可能需要加验证这个需求 
Tags:  web服务器硬件配置 web服务器配置 apacheweb服务器 apache服务器配置

延伸阅读

最新评论

发表评论