2009年7月22日 星期三

Apache Module mod_dav

WebDAV,一個不常聽到的功能(因為不好管嗎?),名字是Web-based Distributed Authoring and Versioning,使用HTTP協定讓妳對Web server裡面的檔案上下其手。換句話說,Web Server上傳方式不再透過ftp,防火牆將不需要開放port 21。

分成兩方面來講,首先是FreeBSD平台的Apache( V2.2),打開httpd.conf  LoadModule 確定幾樣東西都有一起出操:

LoadModule dav_module
LoadModule dav_fs_module
LoadModule auth_digest_module

FreeBSD的dav設定檔是用Incloud的

# Distributed authoring and versioning (WebDAV)
Include etc/apache22/extra/httpd-dav.conf

打開編輯,範例如
--------------------------------------------------------

DavLockDB "/opt/usr-local/var/DavLock"

#存放Lock狀態資料庫的位置

Alias / "/opt/usr-local/www/apache22/data"

#開放的語法

<Directory "/opt/usr-local/www/apache22/data">
    Dav On

    Order Allow,Deny
    Allow from all 
#認證方式
    AuthType Digest
    AuthName www
#認證完畢 登入系統的等效帳號是www
    AuthUserFile "/usr/local/user.passwd"
    AuthDigestProvider file 
    <LimitExcept GET OPTIONS>
        require user admin
    </LimitExcept>
</Directory>

---------------------------------------------------------

接下來,產生密碼檔

htdigest -c "/usr/local/user.passwd" www admin

第二部份,就是在Client的設定。Client有很多種,WebDrive、Gnome VFS都名列其中。不過這裡很簡單,最多本系學生用的應該是DreamWeaver,只需要在SiteManager指定WebDAV方式上傳,上傳位址是剛剛設定的網頁位址,上傳帳號admin,搞定。

ok,接下來為什麼很少有人這樣搞?原因很簡單,一般防火牆是從layer 3檢查ip封包來限制存取(主要在這裡,是要防止被寫入,免得首頁被改圖),http GET POST等方法必須要拆開封包檢查,不是layer3能解決的(或者說,這需要消耗運算資源、高檔防火牆),因為HTTP服務”一定”是對全世界服務(所以,不斷線就是可以用暴力攻擊)。第二重點,在檔案系統裡面讀寫權限要設定好,不然真的很容易就統統被人看光了不打緊,還被入侵。

比較好的想法是,在另一個port(如加SSL)跑另一個有DAV功能的apache(耶?沒想到吧!),就可以在layer 3檢查連線來源來限制。

沒有留言: