1. 程式人生 > >【Linux】Apache訪問控制之虛擬主機配置

【Linux】Apache訪問控制之虛擬主機配置

在上一次的測試中可以看到在訪問AWStats日誌分析系統時,並不需要提高賬號和密碼,只要知道對應的網址就可以獲知web站點的訪問情況,這給伺服器帶來了安全隱患。為了更好的控制對網站資源的訪問,可以待定的網站目錄新增訪問授權。

一、客戶機地址限制

通過配置選項Order、Deny from、allow from 可以根據客戶機名和主機名或者ip地址來決定是否允許客戶端的訪問,其中order配置項用於限制順序,Deny from和allow from、配置項用於設定具體的限制內容。
allow,deny:先“允許“後”拒絕“預設拒絕所有,未明確允許的客戶機地址
deny,allow:先”拒絕“後“允許”預設允許所有,未明確拒絕的客戶機地址

使用allow from和deny from配置時,需要設定客戶機的地址構成完整的限制策略,地址的形式可以是ip地址,網路地址,主機名和域名使用名稱all時表示任意地址,限制策略的格式如下:

Deny from address1 address2  ****
Allow from address1 address2 ****

通常情況下,網站伺服器是對所有的客戶機開放,網頁文件目錄未做任何的限制,因此使用的是 Allow from all的策略,表示執行從任何客戶機訪問,

#<Directory />
  ‘’‘’‘’‘’‘’‘’‘
    Order allow,deny
    Allow from all
</Directory>


需要使用”僅允許“的限制策略時,應將處理順序為allow,deny並明確設定允許策略只允許一部分主機可以訪問,例如只希望ip地址為192.168.137.120的機器可以訪問awstats系統如下:

#<Directory />
  ‘’‘’‘’‘’‘’‘’‘
    Order allow,deny
    Allow from 192.168.137.120
</Directory>

需要使用僅拒絕策略時可以處理順序為 deny,allow 並明確設定拒絕策略,只是禁止一部分主機禁止登陸awstats系統,例如禁止192.168.137.120訪問,如下:

#<Directory />
  ‘’‘’‘’‘’‘’‘’‘
    Order deny,allow
    deny  from 192.168.137.120
</Directory>



設定好之後我們使用137.120訪問awstats測試

二、使用者授權限制

http伺服器支援使用摘要認證,和基本認證,兩種方式。使用摘要認證需要在編譯安裝httpd之前新增--enable-auth-digest選項,並不是所有瀏覽器都支援摘要認證,而基本的認證是httpd服務的基本功能,不需要在編譯前加任何引數。

1.建立使用者認證資料檔案
使用專門的htpasswd工具程式,可以建立授權使用者資料檔案,並維護其中的使用者賬號。在使用stpasswd工具時,必須指定使用者資料檔案的位置,新增-c的選項表示新建立此檔案,列如執行下面操作可以新建資料檔案,列如執行下面操作可以新建資料檔案/usr/local/httpd/conf/.awspwd其中包含一個名字為webadmin的使用者資訊

# bin/htpasswd -c /usr/local/httpd/conf/.awspwd webadmin

2.確定使用者的資料檔案

3。新增使用者授權配置

有了授權使用者賬號以後,還需要修改httpd.conf配置檔案,在特定的目錄區域中新增授權配置,以啟用基本認證並設定允許哪些使用者訪問。例如只允許awspwd資料檔案中的任一使用者訪問awstats系統如下:

#   AuthName "AWStats Directory"
    AuthType  Basic
    AuthUserFile /usr/local/httpd/conf/.awspwd
    require valid-user

新增完成後重啟httpd服務,驗證使用者訪問授權。訪問awstats系統出現如下:輸入正確的使用者名稱和密碼後就可以進入系統,否則將拒絕訪問!

三、構建虛擬web主機

基於域名:為每個虛擬主機使用不同的域名,但是對應的ip地址是相同的,例如www.zhangsan.com和www.lisi.com站點的ip地址都是192.168.137.100這是使用最為普遍的虛擬web主機型別

基於ip地址:為每個虛擬主機使用不同的域名,且各自對應的ip地址也是不一樣的,使用的並不是很廣泛

基於埠:這種方式並不使用域名,ip地址來區分不同站點的內容,而是使用了不同的tcp埠號,因此使用者在瀏覽不同站點的時候需要指定不同的埠來訪問。這種方式不常用

本次採用,最常用的基於域名構建虛擬主機

1.設定域名對映同一個ip地址。修改hosts檔案

192.168.137.100 www.zhangsan.com
192.168.137.100 www.lisi.com

2.建立虛擬主機存放網頁的目錄

[[email protected] ~]# mkdir -p /usr/local/httpd/htdocs/zhangsan
[[email protected] ~]# mkdir -p /usr/local/httpd/htdocs/lisi
[[email protected] ~]# echo "This is a zhangsan" >> /usr/local/httpd/htdocs/zhangsan/index.html
[[email protected] ~]# echo "This is a lisi" >> /usr/local/httpd/htdocs/lisi/index.html  

3. 在httpd.conf中將附加配置檔案httpd-vhosts.conf包含進來,接著在httpd-vhosts.conf中寫入如下配置:          

#NameVirtualHost *:80
#zhangsan虛擬站點區域2017.11.5
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/usr/local/httpd/htdocs/zhangsan"
    ServerName www.zhangsan.com
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

#lisi虛擬站點區域2017.11.5
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/usr/local/httpd/htdocs/lisi"
    ServerName www.lisi.com
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>

訪問不同的域名測試: