Apache实现基于用户和组的访问控制

注意要点:

1,apache的basic认证默认使用明文验证,不安全,后续文章跟进基于ssl的用户认证。

2,此实验前提基于源码编译http的-2.4.39,如果其他版本,可做参考

3,写完配置文件后每次需要重启服务

service httpd24 restart

一、基于用户basic认证的访问控制

实验前预先准备:

查看basic模块是否启用

apachectl -M | grep basic

创建admin文件夹

mkdir /data/httpd24/htdocs/admin

创建测试index.html文件

echo '<h1>www.martinhe.com</h1>' > /data/httpd24/htdocs/admin/index.html

方法1:

1,首先创建httpd-basic.conf。

# vim /data/httpd24/conf/extra/httpd-basic.conf

<Directory /data/httpd24/htdocs/admin/>
#基于basic验证方式        
AuthType basic
#验证登陆框显示标题,chrome不支持显示
AuthName "admin Page"
#验证文件位置
AuthUserFile "/data/httpd24/conf/extra/.httpuser"
#允许登陆访问网页的用户
Require user tom alice
</Directory>

2,修改配置文件:

# vim /data/httpd24/conf/httpd.conf

# Use the basic authentication of the document
Include conf/extra/httpd-basic.conf

3,创建允许访问网页的账户,输入两次密码确认。

htpasswd -c /data/httpd24/conf/extra/.httpuser  tom

4,更改授权用户存储文件权限600,更安全

chmod 600 /data/httpd24/conf/extra/.httpuser

5,测试效果:因为apache系统账户对.httpuser没有读取权限,so报错。

6,访问控制列表设置apache对.httpuser的读取权限

setfacl -m u:apache:r /data/httpd24/conf/extra/.httpuser

方法2:.htaccess .httpuser权限基于方法1

1,创建访问控制文件.htaccess

# vim /data/httpd24/htdocs/admin/.htaccess

AuthType basic
AuthName "admin Page"
AuthUserFile "/data/httpd24/conf/extra/.httpuser"
Require user tom alice

2,创建httpd-basic2.conf

# vim /data/httpd24/conf/extra/httpd-basic2.conf

<directory /data/httpd24/htdocs/admin/>
# admin目录下的验证内容是有效的,其他无效
AllowOverride authconfig
</directory>

3,修改配置文件

# vim /data/httpd24/conf/httpd.conf

# Use the basic authentication of the document
Include conf/extra/httpd-basic2.conf

4,测试效果

二、基于组basic认证的访问控制。

1,创建访问控制文件.httpgroup

#vim /data/httpd24/conf/extra/.httpgroup
g1: tom jack
g2: tom alice

2,修改访问控制文件.htaccess

# vim /data/httpd24/htdocs/admin/.htaccess
AuthType basic
AuthName "admin Page"
AuthUserFile "/data/httpd24/conf/extra/.httpuser"
AuthGroupFile "/data/httpd24/conf/extra/.httpgroup"
Require group g1 g2

3,测试:

bob不在授权组中,所以无法访问
tom在组中,so访问成功