在Linux系統中如何設置APACHE服務器里的后台頁面只允許某個IP地址訪問


補充資料

本網絡中使用LINUX服務器,web服務器是由APACHE搭建,IP地址為192.168.1.5,后台頁面為/admin/login.jsp . 如何設置后台頁面LOGIN.JSP只允許192.168.1.10訪問。而前台頁面所有人都可以訪問?
請回答的詳細點,比如在APACHE的哪個部分添加怎樣的字段。 謝謝
 
 
 
我記得論壇有帖子說怎么設置訪問權限的.搜索下.........  以下供參考,比較忙沒有時間整理.......

1、修改http.conf
  假設你想控制權限的目錄的不同訪問權限, 你可以在與之間加入一行: AllowOverride All
  意思是目錄的訪問權限由該目錄下的.htaccess文件來控制,而且不同目錄的權限策略可互相覆蓋。

2、編輯你想要控制的目錄下的.htaccess文件
  假設你的phpmyadmin目錄在progra*/apache*/htdocs下,你可以這樣在phpmyadmin目錄下創建一個.htaccess文件,內容如下:

AuthUserFile progra*/apache*/apache/pass/pwdPhp
AuthType Basic
AuthName "Database Security Zone"


3. 生成用戶密碼文件
有一個用戶密碼生成程序:htpasswd(在program*/apache*/bin下), 它可以加入用戶密碼信息到指定的文件中,如/usr/local/apache/pass/pwdPhp. 我的用戶密碼文件內容如下: htpasswd -c f:/.htaccess test


通過.htacess文件設置目錄訪問權限.通常我們可以在程序里來進行驗證,也就是通過php寫入http協議的頭文件。而使用apache控制更有效。有關文章可以參考apache的官方網站的文檔。( www.apache.org) 下面是我的配置(注意的是,因為在windows下的fat32/ntfs文件系統不支持.htaccess類型的文件名,所以我們需要改寫該文件名。) 首先更改apache的配置文件httpd.conf 找到下面一行 AccessFileName .htaccess改成AccessFileName user.htaccess(當然后面的名字可以是其他的,只要不以.開頭即可。但這樣寫更容易記憶和讀取) 然后是接下來的正則匹配也要改找到 <FilesMatch "^\.ht">
    Order allow,deny
    Deny from all
< /FilesMatch> 改成:<FilesMatch "^user\.ht"> #這里因為要匹配passwd文件,所以在window下你的密碼文件也不能用.開頭。統一命名為user.htpasswd好了。呵呵
    Order allow,deny
    Deny from all
< /FilesMatch>  再接下來是找到:   AllowOverride None 這行,將起注釋掉(前面加#)然后跟着添加兩行,成為這樣: # AllowOverride None   AllowOverride FileInfo AuthConfig Limit
    Options MultiViews SymLinksIfOwnerMatch IncludesNoExec 好了,到現在我們配置結束,然后重起apache服務,之后在需要設置訪問權限的目錄中防入user.htaccess文件,在他里面寫如認證的內容即可。 如:在www/mytest 目錄下生成user.htaccess文件內容如下: <Limit GET POST OPTIONS>
Deny from all
Allow from 10.29.100.0/24 #只允許10.29.100網段的用戶訪問該目錄。
< /Limit>AuthUserFile /home/user.htpasswd #登陸權證驗證的用戶密碼文件
#AuthGroupFile /dev/null      #驗證組文件
AuthName "login information"   
AuthType Basic            #驗證類型#<Limit GET>
#require user newsadmin       
#</Limit>  這樣我們再通過命令行(cmd)生成一個用戶密碼文件D:\Apache\bin>htpasswd -c user.htpasswd mytestAutomatically using MD5 format.
New password: ******
Re-type new password: ******
Adding password for user mytest 再通過瀏覽器訪問該目錄時就需要首先輸入驗證的用戶名和密碼,正確后如果您的ip網段在指定范圍內則出現訪問內容,否則訪問被拒絕。 當然這樣會對服務器的效率有所損失,因為每次訪問目錄都要先查看是否有驗證文件存在。當然也可以把驗證段直接寫在httpd.conf 內,但這樣寫的好處是可以隨時更改驗證條件而不用重起服務器。而且可讀性好。


   .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 basic
authuserfile /usr/home/***/htdocs/.abcname1
authgroupfile /usr/home/***/htdocs/.abcname2
authname 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 username3
groupname2: 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,deny
deny from all
< /Files>



    如果系統安裝的是Apache 1.3以后的版本,更可以支持regular expression的filesmatch。 <filesmatch "\.tmp">
order allow,deny
deny from all
< /filesmatch>



    files和filesmatch表示只對符合要求的部分文件生效。“order deny,allow”表示先找出禁止(deny)的,然后去找許可的(allow)。如果將它們的順序顛倒“order allow,deny”則表示先找出許可的,后才去找禁止的。“deny from all”則表示全部IP地址都不許可。相對地,“allow from all”表示全部都允許。可以這樣設置: order allow,deny
allow from all
deny 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方式的優缺點,讀者可以根據具體的情況選擇適合的方法來保證網站的安全。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM