Apache ssl认证2.0

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Apache认证、授权及访问控制(针对IP地址)
一、客户需求
要求建设起来的内部网站允许所有员工使用,在公司内部使用时,可以随便查看预览,没有限制。

为了网络安全,员工一旦出差去外地就无法直接访问内网,需要通过一种方式验证,才能看到内网或者特殊栏目。

通过一些其他软件或者设备,完全可以实现,如果客户的需求只是这样,有不要求非常严格。

可以采用Apache软件来限制就可以了。

二、简单概述
其实就是利用apache程序作详细配置,实现不同地区,不同访问者用IP段限制、登陆名的方法访问网站,在特殊的地区(针对IP地址)不需要任何限权,直接访问网站;其他位置的地区,授权用户则需要事先分配的登陆名和密码登陆,其他人则无权访问。

1、示意图:
2、Apache程序配置控制的流程图:
所有限制都在apache里配置完成,访问网站前先通过apache判断。

由apache事先配置的相关约束条件来选择性的访问网站。

三、Apache相应文件配置修改
涉及模块
mod_access
mod_auth
mod_auth_mysql
要在httpd.conf里先找到相应的命令行,去掉前面的#
1、Red Hat Linux
配置httpd.conf文件
找到/conf/httpd.conf
此内容为代理一个网站,指向一个本地目录的最简单配置:
安装好apache程序,一般默认情况下前面是带#,表示注释掉了,不起作用,需要将相应的命令行前去掉,开启命令。

<VirtualHost *>
ServerName //指定地址
ServerAlias 211.90.115.220 //允许执行一个特定目录中的CGI程序
Action application/x-httpd-fastphp /fcgi-php43/php //加载php4模块
DocumentRoot /data/www/hanweb/sites/newhanweb //指向网站的物理地址
//这里还有好多代码需要大家学习,例如我们的静态网站下需要模个程序模块,就需要做一个代理来加载。

ProxyPass /jcms/ http://127.0.0.1:8080/jcms///后面也可以添加相对地址E:/JCMS
ProxyPassReverse /jcms/ http://127.0.0.1:8080/jcms/
</VirtualHost>
先访问设置好的路径网站,确认apache成功安装,能够正常运行网站。

以上是简单的网站发布,没有做任何的限制,以下修改内容作限制:
<VirtualHost *>
ServerName
ServerAlias 211.90.115.220
Action application/x-httpd-fastphp /fcgi-php43/php
DocumentRoot /data/www/hanweb/sites/newhanweb
<Directory "/data/www/hanweb/sites/newhanweb "> //定义授权目录
Options Indexes FollowSymlinks MultiView
AllowOverride None // All为允许所有用户用过授权用户访问,None禁止使用所有
Order allow,deny //访问条件允许,禁止,如果允许,alow放前面,反之则互换
Allow from 192.168.89.72 //允许192.168.89.72 直接访问,如果是一个段192.168.89即可//对IP的访问限制的格式介绍一下:
Eg: Allow from 192.168.89.8 192.168.89.88192.168.89.188 一个网段的几个特殊IP空格隔开Eg: Allow from 192.168.0 192.168.1 192.168.89 几个网段的IP空格隔开
Eg: Allow from 192.168.12/122 一个网段的一段特殊IP空格隔开(书上这么说的具体没有实现)Eg: Allow from 192.168.89.8/255.255.255.0 子网掩码相同的IP段限制</Directory>
ErrorLog /error.log
</VirtualHost>
配置.htaccess 文件
以下文件部署在相应的授权目录中(发布网站的首页目录下)
需要.htaccess 文件和密码er文件
在Linux需要使用.htaccess文件,我用过,可以在系统下在找到,密码文件可以自己创建,名字随意,指向的时候做好链接就OK了。

看下.htaccess 文件内容:
如果.htaccess内容不是这个样子,可以清空,添加以下内容:
AuthType Basic //指定使用基本认证方式
AuthName "Database Security Zone" //指定认证领域名称
AuthUserFile "/data/www/hanweb/sites /er"//指定认证口令文件的存放位置require user panrui //授权给认证口令文件中的panrui用户
//require valid-user授权给认证口令文件中的所有用户
Satisfy all
ErrorDocument 401 /401.htm //登陆失败弹出错误页面
配置认证口令文件文件
如何写建立密码文件,加入密码:
命令名参数目录和文件名用户名
# htpasswd -c /data/www/hanweb/sites/newhanweb/er panrui
New password: mypassword //输入两次密码
Re-type new password: mypassword
Adding password for user panrui //成功创建用户
Windows下和Linux差不多的命令
看下er文件内容:
panrui:$apr1$kn5.....$7lTPq2af3jZYYDpBYAmgq1
注释:授权用户名:panrui [:] 密码123456加密编码为$apr1$kn5.....$7lTPq2af3jZYYDpBYAmgq1 Window下更简单
只要把.htaccess文件内容一起写入httpd.conf里面,加一个密码文件即可。

配置httpd.conf文件
httpd.conf内容为:
<VirtualHost *>
ServerName
ServerAlias 211.90.115.220
Action application/x-httpd-fastphp /fcgi-php43/php
DocumentRoot F:\SiteNW\SiteNW\jcms_files\jcms1\web2\site
<Directory "F:\SiteNW\SiteNW\jcms_files\jcms1\web2\site">
Options Indexes FollowSymlinks MultiViews
AllowOverride None
Order allow,deny
Allow from 192.168.89.72
AuthName "shared files"
AuthType Basic
AuthUserFile "F:/SiteNW/SiteNW/jcms_files/jcms1/web2/site/er"
require user panrui
satisfy any
</Directory>
ErrorLog /error.log
</VirtualHost>
重新启动apache
以上配置实现了部分授权IP访问我的网站,而其他用户必须通过登陆名panrui进入,不知道登陆名密码的提示4401.htm错误页面
密码多的用户还可以考虑链接相应数据库,在这就不做多解释了。

进一步了解:
1、对同一目录及其下的子目录有不同的权限,仅某些人可以存取一目录下的子目录
如有一目录/home/ftp/pub/sales,有三个用户user1,user2,user3都需要用户名和密码进入
/home/ftp/pub,但仅user1,user2能进入/home/ftp/pub/sales.
则放下面的行到httpd.conf
〈Directory /home/ftp/pub>
Options Indexes
AllowOverride AuthConfig
order allow,deny
allow from all
〈/Directory>
〈Directory /home/ftp/pub/sales> Options Indexes
AllowOverride AuthConfig
order allow,deny
allow from all
〈/Directory>
且看/home/ftp/pub/.htaccess为:AuthName "shared files"
AuthType Basic
AuthUserFile /etc/.passwd
require valid-user
且看/home/ftp/pub/sales/.htaccess AuthName "shared files"
AuthType Basic
AuthUserFile /etc/.passwd AuthGroupFile /etc/.salesgroup require group manager
且文件/etc/.passwd内容为://密码文件user1:passwd1
user2:passwd2
user3:passwd3
且文件/etc/.salesgroup内容为:
manager: user1 user2
2、针对Mysql认证、授权
<Directory 授权目录>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
#Allow from all
Allow from 192.168.89.55 127.0.0.1
AuthName "MySQL Auth Testing"
AuthType Basic
AuthMySQLHost localhost
AuthMySQLPort 3306
AuthMySQLUser root
AuthMySQLPassword 123456
#数据库名
AuthMySQLDB auth
#表名
AuthMySQLUserTable user_info
#用户名字段
AuthMySQLNameField user_name
#密码字段
AuthMySQLPasswordField user_passwd
AuthMySQLNoPasswd Off
AuthMySQLPwEncryption none
#密码支持加密方式
#AuthMySQLPwEncryption none | crypt | scrambled | md5 | aes | sha1
AuthMySQLEnable On
require valid-user
#授权192.168.89.55 127.0.0.1 同用户或的关系
satisfy any
</Directory>
表结构:
CREATE TABLE user_info (
user_name CHAR(30) NOT NULL,
user_passwd CHAR(20) NOT NULL,
[ any other fields if needed ]
PRIMARY KEY (user_name)
)
进一步学习参考网址:/Apache/utf-8/index.html
/showWeb/0/4/321845.aspx。

相关文档
最新文档