保護Linux下的Apache網站

 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)
相關文章
相關標籤/搜索