lighttpd basic和java digest认证证的区别

服务器(68)
互联网是不安全的。在利用互联网便利的同时,我们需要特别小心,特别是现在的搜索引擎可是会到处钻哦,要做好防止数据被盗用的准备。如果你也像我一样,想对某个域、目录或页面进行密码保护,下面就告诉你在Lighttpd下是如何进行的。
一、简单模式
Lighttpd使用mod_auth模块可实现对域等进行用户名、密码保护的功能。这与Apache下用.htaccess实现的保护是类似的。
mod_auth的使用说明,请看:。这里以最简单的basic明文方式说明。
1、修改配置文件
在/etc/lighttpd/lighttpd.conf配置文件中加入:
# 激活mod_auth模块
server.modules = (...,&mod_auth&,...)
# 运行lighttpd服务的用户名和组,后面定义密码文件时会用到
server.username&&&&&&&&&&&&= &lighttpd&
server.groupname&&&&&&&&&& = &lighttpd&
# 打开auth的debug模式,方便调试,正常后可以取消
auth.debug = 2
# 使用明文密码,这是最简单的方式,当然也有安全问题,见后面
auth.backend&&&&&&&&&&&&&& = &plain&
# 定义用户名、密码存放的路径
auth.backend.plain.userfile = &/etc/lighttpd/.lighttpd.user&
# 根据说明,下面的groupfile还未完全实现,不用设置咯
#auth.backend.plain.groupfile = &lighttpd.group&
# 定义要加密的路径
auth.require&&&&&&&&&&&&&& = ( &/server-status& =&
# 可以使用多种认证方式,这里以basic为例
&method&&&=& &basic&,
# 访问时,对话框的提示信息
&realm&&& =& &Server Status WebSite&,
# 允许访问的用户名,用“|”号分割多个用户
&require& =& &user=linuxing|user=test01&
&/server-config& =&
&method&&&=& &basic&,
&realm&&& =& &Server Config WebSite&,
# valid-user用于表示所有合法的用户
&require& =& &valid-user&
2、生成密码文件
用户名和密码写在同一个文件里面,并根据运行lighttpd服务的用户给予适当的权限,运行:
# cat /etc/passwd|grep lighttpd
lighttpd:x:100:101:lighttpd web server:/srv/www/lighttpd:/sbin/nologin
# echo &linuxing:abc123& & /etc/lighttpd/.lighttpd.user
# chown lighttpd:lighttpd /etc/lighttpd/.lighttpd.user
# chmod&440&/etc/lighttpd/.lighttpd.user
# ll /etc/lighttpd/.lighttpd.user
-r--r----- 1 lighttpd lighttpd 16 Feb&&6 12:45 .lighttpd.user
# service lighttpd restart
访问http://ip/server-status或http://ip/server-config,则会提示:
输入正确的用户名(linuxing),密码(abc123)后即可正常访问。否则,会报401错误,error.log日志显示:
12:59:49: (http_auth.c.876) get_password failed
12:59:52: (http_auth.c.876) get_password failed
12:59:54: (http_auth.c.876) get_password failed
可见,在全局部分定义了该auth.require,可以较好的保护了/server-status和/server-config页面。需要注意的是,该页面有mod_status提供,所以在加载模块部分,务必让mod_auth比mod_status在前。
二、使用其他验证方式
上面介绍的是最简单的密码验证方式,但也存在很明显的安全问题:
a、basic模式下,用户名和密码在浏览器与服务器之间的网络是明文传输的;
b、用户名和密码也是以明文方式存在在本地;
为避免这些问题,Lighttpd提供了其他验证方式。
1、验证方式的不同
的介绍,有basic和digest两种验证方式,其各自支持不同的后台密码文件保存模式:
basic auth:
该模式用户名和密码在网络中都是以base64编码明文传输的,容易被截取,不安全。支持的后台密码文件保存方式有:
- htpasswd_&
- htdigest_
digest auth:
该模式改为传输hashed值,相对比较安全。但支持的后台密码文件保存方式只有:
- htdigest_
2、设置方法
根据选择的验证模式和后台密码文件保存方式不同,配置文件和密码保存文件生成的方式就不同了。记住,把后台密码保存文件设置为只允许运行lighttpd服务的用户和组(如lighttpd)读,其他用户禁止访问。
a、plain方式
正如前面提到的,把明文用户名和密码写入后台密码保存文件,一行一个,格式为:
username:password
b、htpasswd
这是利用Apache提供的htpasswd工具生成后台密码保存文件,它使用了crypt()加密函数:
# htpasswd -m -c .lighttpd.user linuxing
# cat .lighttpd.user
linuxing:$apr1$o1ZZY/..$MO6rKCiwLXnIp8h.7PxvK1
# chown lighttpd.lighttpd .lighttpd.user
# chmod 440 .lighttpd.user
配置文件中则为:
# 定义后台密码文件验证方式
auth.backend&&&&&&&&&&&&&& = &htpasswd&
# 定义后台密码保存文件的路径
auth.backend.htpasswd.userfile = &/etc/lighttpd/.lighttpd.user&
c、htdigest方式
方法与htpasswd类似,也是借助Apache提供的htdigest工具生成后台密码保存文件,但其有三列,除用户名、密码外,还包括realm(提示信息),一行表示一个账号,格式为:
username:realm:(password)
其中(password)并不是明文的,而是由username、realm、password组合后,通过md5计算出来的,用命令来实现就是这样:
# echo -n &linuxing:Info Messages:abc123&|md5sum|cut -b -32
61ab4c1c5d8fea7b5d32cc
◎ 这里,请特别关注,这里的realm与lighttpd中使用到&realm&&& =& 部分必须一样,也就是说用户名、密码和后台密码保存文件中的realm三部分都会作为验证的依据。Wiki里面没有仔细说明,我当时在这里就搞了很长时间。
生成后台密码保存文件:
# htdigest -c .lighttpd.user 'Info Messages' linuxing
Adding password for linuxing in realm Info Messages.
New password:
Re-type new password:
# cat .lighttpd.user
linuxing:Info Messages:61ab4c1c5d8fea7b5d32cc
# chown lighttpd.lighttpd .lighttpd.user
# chmod 440 .lighttpd.user
配置文件中则为:
auth.backend&&&&&&&&&&&&&& = &htdigest&
auth.backend.htdigest.userfile = &/etc/lighttpd/.lighttpd.user&
# 试试用digest验证模式
auth.require&&&&&&&&&&&&&& = ( &/server-status& =&
&method&&&=& &digest&,
&realm&&& =& &Info Messages&,
&require& =& &user=linuxing&
◎ 记住咯,username、realm、password三部分都会验证的,缺一不可。即使输入的用户名和密码都与后台保存密码的文件相同,但realm与auth.require部分定义的不一样,也是不能登陆的。
这里可以把realm作为一个组的标识使用。
官方Wiki提供了一个方便易用的管理htdigest密码文件的脚本:
(不过,这脚本也有问题,就是realm不能有空格,即使用引号隔开也不行)
使用方法是:
更新或增加新用户
$ lightdigest.sh -u USERNAME -r REALM_NAME -f PASSWORD_FILE_PATH
删除旧用户
$ lightdigest.sh -d -u USERNAME
最后还有一种方式,是使用ldap数据保留用户名和密码信息,适用于多用户的环境,但配置比较复杂,又需要的朋友,请看官方的Wiki介绍吧。
三、用于域或目录的环境
只要把auth.require部分写入虚拟主机部分的配置中即可,类似:
$HTTP[&url&] =~ &^/download|^/server-info& {&
&&&&&&&&auth.require = (&& && =& (&&&
&&&&&&&&&&&&&&&&&&&& &method&&&=& &digest&,
&&&&&&&&&&&&&&&&&&&& &realm&&& =& &download archiv&,
&&&&&&&&&&&&&&&&&&&& &require& =& &user=linuxing|user=test01&&
&&&&&&&&&&&&&&&&&&&& )
四、参考资料
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1079448次
积分:15495
积分:15495
排名:第563名
原创:251篇
转载:1577篇
评论:27条
(15)(15)(73)(34)(33)(54)(70)(68)(59)(76)(55)(47)(29)(24)(65)(30)(24)(37)(24)(33)(41)(61)(75)(45)(41)(27)(41)(49)(32)(31)(39)(64)(10)(65)(39)(34)(30)(33)(27)(20)(23)(20)(24)(19)(15)(11)(7)(1)(3)(1)(3)(2)(7)(8)(5)(2)(4)(1)5411人阅读
Lighttpd(3)
thttpd(5)
&国内绝大部分的web server不是IIS就是Apache,而论市场占有率,我认为Apache是大赢家了,至少是占据了半壁江山。但除了IIS/Apache外,其实我们有很多选择,对于高负载/大并发的网站而言,高性能、轻量级的web server是一剂良药。最近手头一台Server 的负载太高,居然将swap吃光导致机器非常缓慢,后来一查,原来是Apache耗掉了几乎所有资源,当时apache进程已有9XX个了。于是用轻量级的web server替换掉apache就进入了日程表。这里顺带介绍一下这些可选的对象:lighttpd | thttpd | shttpdlighttpd官方主页:Lighttpd是一个德国人领导的开源软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能,而Apache之所以流行,很大程度也是因为功能丰富,在lighttpd上很多功能都有相应的实现了,这点对于apache的用户是非常重要的,因为迁移到lighttpd就必须面对这些问题。在google搜索了一下,简体中文介绍lighttpd的文章几乎没有,大多数都是台湾同胞的Big5内容。因此在接下来的时间里,想好好写一篇介绍lighttpd,以及简单的benchmark的文章。实用起来lighttpd确实非常不错,上文提到的apache overload的问题,用lighttpd就完全解决了。apache主要的问题是密集并发下,不断的fork()和切换,以及较高(相对于 lighttpd而言)的内存占用,使系统的资源几尽枯竭。而lighttpd采用了Multiplex技术,代码经过优化,体积非常小,资源占用很低,而且反应速度相当快。利用apache的rewrite技术,将繁重的cgi/fastcgi任务交给lighttpd来完成,充分利用两者的优点,现在那台服务器的负载下降了一个数量级,而且反应速度也提高了一个甚至是2个数量级!thttpd官方网站:thttpd是一个非常小巧的轻量级web server,它非常非常简单,仅仅提供了HTTP/1.1和简单的CGI支持,在其官方网站上有一个与其他web server(如Apache, Zeus等)的对比图+Benchmark,可以参考参考。此外,thttpd 也类似于lighttpd,对于并发请求不使用fork()来派生子进程处理,而是采用多路复用(Multiplex)技术来实现。因此效能很好。Thttpd支持多种平台,如FreeBSD, SunOS, Solaris, BSD, Linux, OSF等。对于小型web server而言,速度快似乎是一个代名词,通过官方站提供的Benchmark,可以这样认为:thttpd至少和主流的web server一样快,在高负载下更快,因为其资源占用小的缘故。Thttpd还有一个较为引人注目的特点:基于URL的文件流量限制,这对于下载的流量控制而言是非常方便的。象Apache就必须使用插件实现,效率较thttpd低。shttpd官方网站:Shttpd是另一个轻量级的web server,具有比thttpd更丰富的功能特性,支持CGI, SSL, cookie, MD5认证, 还能嵌入(embedded)到现有的软件里。最有意思的是不需要配置文件!由于shttpd可以嵌入其他软件,因此可以非常容易的开发嵌入式系统的 web server,官方网站上称shttpd如果使用uclibc/dielibc(libc的简化子集)则开销将非常非常低。以下是其特点:Stand-alone server, or embeddable into existing C/C++ programGET, POST, PUT, DELETE methodsCGISSLDigest (MD5) authorizationMultiple (and user defineable) index filesDirectory listingStandard loggingCookiesinetd modeUser-defineable mime typesNo configuration filesNo external dependencies由于shttpd可以轻松嵌入其他程序里,因此shttpd是较为理想的web server开发原形,开发人员可以基于shttpd开发出自己的webserver!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:9297471次
积分:93838
积分:93838
排名:第9名
原创:1534篇
转载:141篇
评论:3955条
(1)(1)(2)(1)(2)(1)(2)(2)(3)(10)(7)(4)(3)(1)(8)(2)(2)(1)(3)(3)(1)(2)(2)(2)(2)(1)(4)(20)(13)(2)(12)(11)(14)(22)(55)(16)(9)(20)(66)(27)(36)(67)(124)(44)(1)(8)(21)(2)(2)(1)(1)(5)(5)(1)(4)(16)(1)(3)(8)(1)(1)(4)(4)(10)(505)(18)(1)(19)(50)(67)(298)Lighttpd 1.4.42 发布,重写的身份验证框架
Lighttpd 1.4.42 发布了,该版本重要的更新包括新的组件、扩展功能以及重写的身份验证框架。值得关注的更新:新组件,扩展功能updated mod_authn_ldapnew mod_authn_gssapinew mod_authn_mysqlperformance: use extended socket/file syscalls and flagsrewritten auth frameworknew mod_deflatenew mod_geoipnew mod_uploadprogressmod_dirlisting sortable columnsmod_fastcgi support for authorizer, responder keyed with same path/extensionmod_cgi permit&CGI&exec of unreadable filesmod_scgi support for uwsgi protocol for Python&WSGI&backendsadd some SSL_* variables to&CGI&environmentBug 修复remove preemptive shutdown() to backendfix backend socket connect issue: enforce wait for&POLLWR&after&EINPROGRESSfix crash if ready events on abandoned fdfix broken digest auth行为改变REQUEST_URI is original client request, instead of&URI&modified by mod_rewrite.DOCUMENT_ROOT changes if mod_alias or mod_userdir changes basedirbehavior change in mod_ssi to conform to same&CGI&env as&CGI, FastCGI,&SCGI:下载地址&()SHA256:&beb01f497d6e6d794b23bbc258cf693c&()SHA256:&b2c9069ed0badea9baea1c3d686f9fd9f01d15e2a15fLighttpd是德国软件开发者Jan Kneschke所研发的一款开源的Web服务器,它的主要特点是仅需少量的内存及CPU资源即可达到同类网页服务器的性能。Lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI,CGI,Auth,输出压缩(output compress),URL重写,Alias等重要功能。
Lighttpd 的详细介绍:
Lighttpd 的下载地址:
转载请注明:文章转载自 开源中国社区
本文标题:Lighttpd 1.4.42 发布,重写的身份验证框架
本文地址:TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&onvif(1)
如何让onvif避开lighttpd的安全认证
访问网页需要认证功能,然而onvif的cgi也是通过lighttpd来call起来的,如何做到访问跟onvif无关的请求时需要认证,而访问onvif时又不需要认证呢?
想来几种方法,都记录下来吧
(1)&&&&启动多个lighttpd,分别load不同的config, config之间的port不能重复。
(2)&&&&修改source code。这种方法不太好,but it do works.
(3)&&&&修改配置文件如下:
千万注意,下列语句中不能有空格。
$HTTP[&url&] =~&.html|^/cgi-bin/|^/js/|^/img/|^/css/|^/plugin/& {
有空格了,就不起作用了。自己在实验时被空格折腾的要吐血了。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:29915次
积分:1521
积分:1521
排名:千里之外
原创:127篇
(5)(2)(2)(1)(1)(1)(11)(9)(4)(5)(15)(56)(25)

我要回帖

更多关于 http basic digest 的文章

 

随机推荐