首页 > 服务器维护 > apache

apache配置黑名单和白名单及账户权限控制

发布时间:2016-9-14 14:16

本文我们将分享apache配置黑名单和白名单,apache层的账户权限控制,以及apache黑名单白名单过滤功能,apache rewrite规则实现白名单。

apache配置黑名单和白名单的两个方法

为项目需要,部署之后客户需要实现白名单功能。以前一般使用iis服务器或者是网上的DZ或CP面板,而且也仅仅操作过黑名单。百度搜索,基本都是黑名单的操作方法,本文章主要是讲使用apache来规则实现黑白名单,从程序角度实现的就不在陈述,PHP程序可以直接获取客户端IP在初始化class或者login方法实现禁止或仅允许区段IP通过访问。

方法1:通过apache的虚拟主机配置文件httpd.conf来控制,本方法适用于自己架设的服务器,一般虚拟主机是不能接触到httpd.conf文件的。
    
#白名单,仅允许192.168.0.1以及192.168.1.1-192.168.1.255访问
<Directory "D:/htdocs">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    #以下为关键代码
    Order Deny,Allow
    Allow from 192.168.0.1
    Allow from 192.168.1.0/24
    Deny from All
</Directory>
 
#黑名单,禁止192.168.0.1以及192.168.1.1-192.168.1.255访问
<Directory "D:/htdocs">
    Options Indexes FollowSymLinks Includes ExecCGI
    AllowOverride All
    #以下为关键代码
    order allow,deny  
    allow from all  
    deny from 192.168.0.1
    deny from 192.168.1.
</Directory>

方法2:通过apache的虚拟主机的伪静态文件.htaccess来控制,本方法适用于支持.htaccess的所有主机。

#白名单,仅允许192.168.0.1以及192.168.1.1-192.168.1.255访问
Order Deny,Allow
Allow from 192.168.0.1
Allow from 192.168.1.0/24
Deny from All
#黑名单,禁止192.168.0.1以及192.168.1.1-192.168.1.255访问
order allow,deny  
allow from all  
deny from 192.168.0.1
deny from 192.168.1.

PS:192.168.1.0/24与192.168.1. 等价,仅为不同书写格式。



apache层的账户权限控制,以及apache黑名单白名单过滤功能

1. 修改虚拟主机配置

<Directory /var/www>#目录路径
                ...
                AllowOverride All #允许.htaccess覆盖配置文件,使.htaccess生效
                ...
</Directory(允许)

2.在需要权限控制的目录下创建.htaccess

#比如要控制 /var/www/quanxian 目录,在/var/www/quanxian目录中创建.htaccess文件,填写如下内容

AuthUserFile /var/www/quanxian/.htpwd #[权限控制文件]
AuthType Basic
AuthName "[描述信息]"
ErrorDocument 401 /var/www/err_401.html #这句话是可以没有的
require valid-user #认证方式:用户认证(valid-user)或组认证(valid-group).

3.生成加密文件

sudo htpasswd -bc /var/www/quanxian/.htpwd wangdatestuser wangdatestpwd #

htpasswd的命令详解网上有好多,copy一个过来(http://hi.baidu.com/luoxiandong99/item/bd14b7462fe61ef7bdf45140)

##################################################################################################

apache htpasswd命令选项参数说明

-c 创建一个加密文件
-n 不更新加密文件,只将apache htpasswd命令加密后的用户名密码显示在屏幕上
-m 默认apache htpassswd命令采用MD5算法对密码进行加密
-d apache htpassswd命令采用CRYPT算法对密码进行加密
-p apache htpassswd命令不对密码进行进行加密,即明文密码
-s apache htpassswd命令采用SHA算法对密码进行加密
-b 在apache htpassswd命令行中一并输入用户名和密码而不是根据提示输入密码
-D 删除指定的用户

apache htpasswd命令用法实例

1、利用htpasswd命令添加用户

htpasswd -bc D:\licang\passwd yingzi 1234

2、在原有密码文件中增加下一个用户

htpasswd -b D:\licang\passwd ludi 1234

3、如何不更新密码文件,只显示加密后的用户名和密码

htpasswd -nb yingzi 1234

4、利用htpasswd命令删除用户名和密码

htpasswd -D D:\licang\passwd yingzi

5、利用htpasswd命令修改密码

htpasswd -D D:\licang\passwd yingzi

htpasswd -b D:\licang\passwd yingzi 5678

##################################################################################################

4.以上就配置完整体的基于apache层的账户访问权限控制,

a.创建白名单,只有(192.168.1.1, 和 192.168.1.2)能访问这个目录

在.htaccess中加入下面的内容

Order Deny,Allow#(1)
Allow from 192.168.1.1 192.168.1.2#(2)
Deny from All#(3)
#注意(1)的顺序,它很重要,(2),(3)的顺序不重要,意思是先拒绝所有的访问,再看看是否在Allow的明白里,如果在的话,就通过

b.创建黑名单,(192.168.1.1, 和 192.168.1.2)不能能访问这个目录

在.htaccess中加入下面的内容

Order Allow,Deny #(1)
Allow from all#(2)
Deny from 192.168.1.1 192.168.1.2#(3)
#注意(1)的顺序,它很重要,道理同白名单


apache rewrite规则实现白名单

今天弄了半天apache 的rewrite 规则,还是没有配置出符合的规则。后一同事,研究了半个小时弄出来,很是惭愧。

需求:
    六个文件的入口,其他都重定向到index

自己的思路:
    正则找出不是六个文件的URL的模式,进行过滤。

对比同事的结果,自己思路的问题:
    1. 想找出所有不符合规则的,越想越多,无法下手。----------------   思路错误,应该 制定白名单,
    2. 概念错误, 弄错 REQUEST_URI 和 REQUEST_STRING 的概念   基础知识不牢固。

最后结果:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^/(.*) /index.asp$1 [L]
RewriteCond %{REQUEST_URI} ^/index.asp [NC,OR]
RewriteCond %{REQUEST_URI} ^/o.asp [NC,OR]
RewriteCond %{REQUEST_URI} ^/s.asp [NC,OR]
RewriteCond %{REQUEST_URI} ^/error.asp [NC,OR]
RewriteCond %{REQUEST_URI} ^/favicon.ico [NC,OR]
RewriteCond %{REQUEST_URI} ^/status.taobao [NC,OR]
RewriteCond %{REQUEST_URI} ^/app/thirdparty/webbox.asp [NC,OR]
RewriteCond %{REQUEST_URI} ^/static/ [NC]
RewriteRule ^.* - [L]
RewriteCond %{REQUEST_URI} !^/index.asp$
RewriteRule ^.* ? [F,L]
</IfModule>

标签:[!--infotagslink--]

您可能感兴趣的文章: