Linux的普遍应用和快速发展得益于互联网的飞速发展。对于Internet上应用普遍的Web服务来讲,Linux表现出色。很难说清目前Internet上究竟有多少个网站在使用Linux系统,但众多网站中采用Apache服务器的无疑占据了极大的市场份额。
如何为网站提供保护,防止非法用户登入呢?一般能够采用身份认证方式。身份认证是防止非法用户使用资源的有效手段,也是管理注册用户的有效方法。如今不少网站都使用身份认证来管理用户资源,对用户的访问权限进行严格地限制。传统的身份认证方法是经过检验用户的注册名、口令,来决定是否容许用户使用资源,但这种认证方法在某些状况下做用并不十分有效。特别是在Linux平台下的Apache服务器,彻底能够用Linux的方法来实现密码验证和保护。
Linux下最多见的密码保护方法是利用.htaccess文件,即目录配置实现密码保护,这也是.htaccess文件的功能之一。这种方法可使没有受权的浏览者不能进入.htaccess文件所设置的限制区域。通常地,使用javascript技术进行设置的密码太简单,很容易就被破解,形成了不安全。而使用.htaccess文件保护目录比使用其它程序(Java/HTML/ASP/CGI)更为有效和安全。更重要的是,使用.htaccess的方式进行设置,不须要编写程序就能够实现,具体操做比较容易。
下面就来介绍和演示Linux+Apache下密码保护的方法,全面实现网站保护。
什么是.htaccess文件
.htaccess文件是Apache服务器上的一个设置文件。它是一个文本文件,可使用任何文本编辑器进行编写。.htaccess文件提供了针对目录改变配置的方法,即经过在一个特定的文档目录中放置一个包含一个或多个指令的文件(.htaccess文件),以做用于此目录及其全部子目录。.htaccess的功能包括设置网页密码、设置发生错误时出现的文件、改变首页的文件名(如index.html)、禁止读取文件名、从新导向文件、加上MIME类别、禁止列目录下的文件等。
在须要针对目录改变服务器的配置,而对服务器系统没有root权限时,应该使用.htaccess文件。若是服务器管理员不肯意频繁修改配置, 则能够容许用户经过.htaccess文件本身修改配置,尤为是ISP在一台机器上提供多个用户站点,而又但愿用户能够本身改变配置的状况下,通常会开放部分.htaccess的功能给使用者自行设置。
注意,.htaccess是一个完整的文件名,不是***.htaccess或其它格式(固然也有管理员把其设置成其它名字,但通常都是使用.htaccess)。另外,上传.htaccess文件时,必须使用ASCⅡ模式,并使用chmod命令改变权限为:644(RW_R__R__)。每个放置.htaccess的目录和其子目录都会被.htaccess影响。例如,在/abc/目录下放置了一个.htaccess文件,那么/abc/和/abc/def/内全部的文件都会被它影响,但/index.html不会被它影响,这一点是很重要的。
实现密码保护
1.创建.htpasswd文件
首先在要设置存取控制的目录(如htdocs)下创建一个文件,文件名能够自行设定,通常服务器都会设置为.htpasswd,该文件是不能由HTTP读取的。.htpasswd文件中的每一行表明一个使用者,使用者的名字及通过加密的密码以冒号:分隔。
2..htaccess文件实现保护
.htaccess文件的内容以下:
authtype basicauthuserfile /usr/home/***/htdocs/.abcname1authgroupfile /usr/home/***/htdocs/.abcname2authname information<limit get post>require valid-user</limit>
|
其中第二行和第三行中的***能够改成我的的FTP登陆名。.abcname1和.abcname2能够是任意的文件名,如.htpasswd、.htpass,但不能是.htaccess。将.htaccess上传到要进行密码保护的目录(如htdocs)中。
.htaccess文件最后的“require”告诉服务器哪些用户能够进入。require valid-user是指只要是.htpasswd中的任何一个均可以进入。也能够指定名单上的某人或某几人能够经过,使用require user username或require user username1 username2 username3。还能够指定某组人能够经过,使用require group groupname。
3.增长新的许可用户
进入htdocs目录,在命令行状态输入如下命令生成.abcname1文件。
echo > .abcname1/var/www/bin/htpasswd .abcname1 abc
|
abc表示要增长的用户名。输入此命令后,系统会提示输入此用户密码,这样该用户名就生效了。之后如要再增长用户,运行第二行的命令时换一个用户名便可。若是这个用户名存在,则会提示修改密码。
4.创建容许访问的组
组的设置方法是创建一个名为.htgroup的文本文件,内容以下:
groupname1: username1 username2 username3groupname2: username1 username3 username4
|
并在.htaccess中加上“AuthGroupFile /absolute/path/.htgroup”。以ASCⅡ模式上传全部文件后,该目录中的全部文件都会被保护起来。
设置错误文件
若是但愿在找不到文件时不出现“找不到网页”的页面提示,而是打开另外一个HTML文件,方法也很简单。首先编写一个新的页面,而后用文本编辑器打开.htaccess,在文件最后加上:ErrorDocument 404 404.html。这里,404.html是错误文件的名字,即所显示的页面;404是错误代码。通常常见的错误代码和所表明的错误缘由以下:
401 Authorization failed 受权失败,即密码错误。403 Access denied 存取错误,即不能够读取该文件。404 File not found 找不到文件。500 Internal Server Error服务器内部错误,多是Web服务器自己存在问题,也多是编写的程序出错。
|
禁止读取文件
若是将某些内容如密码,存放在一个文件中,那么别人只需知道该文件的对应位置,就能够一目了然,这样太不安全。其实彻底能够不改变其它设置,也不用将文件移到其它地方就可解决这个问题,只需在.htaccess文件中加入如下几行:
<Files filename.ext>order allow,denydeny from all</Files>
|
若是系统安装的是Apache 1.3之后的版本,更能够支持regular expression的filesmatch。
<filesmatch "\.tmp">order allow,denydeny from all</filesmatch>
|
files和filesmatch表示只对符合要求的部分文件生效。“order deny,allow”表示先找出禁止(deny)的,而后去找许可的(allow)。若是将它们的顺序颠倒“order allow,deny”则表示先找出许可的,后才去找禁止的。“deny from all”则表示所有IP地址都不准可。相对地,“allow from all”表示所有都容许。能够这样设置:
order allow,denyallow from alldeny from 111.222
|
deny from 111.222是指禁止全部以111.222开始的IP地址(如111.222.0.1)。除了设置IP地址外,也能够设置成hostname(如:***.com)。“Files”和“Filesmatch”的用途不少,不但能够设置deny,也能够设置个别文件的密码,如:
<files 123>require user 123</files><files abc>require user abc</files>
|
使用.htaccess文件也会存在一些问题,好比性能。若是使用.htaccess文件,则Apache须要在每一个目录中查找该文件,还必须在全部更高级的目录中查找它,另外,每次请求一个页面时,也都须要读取.htaccess文件。所以,容许使用.htaccess文件都会致使性能的降低。
例如,对/usr/hq/htdocs中页面的请求,Apache必须查找如下文件:
/.htaccess/usr/.htaccess/usr/hq/.htaccess/usr/hq/htdocs/.htaccess
|
总的来讲,经过.htaccess来保护网站更为方便和安全。由于它不像利用程序实现密码保护时,有可能经过猜想的方法获取密码。利用.htaccess文件实现密码保护,通常是很难破解的。鉴于.htaccess方式的优缺点,读者能够根据具体的状况选择适合的方法来保证网站的安全。(T111)