對目錄設密碼保護在網頁伺服器中,可能有某些特定的目錄只能允許特定人存取因此必須在該網頁目錄上加上密碼讓使用者瀏覽到該網頁時必須輸入帳號與密碼才能瀏覽該網頁以下將介紹如何達成目錄設密碼的功能1. 開放網頁認證功能 目前 Apache 已經採用 DSO (動態公用物件) 的機制 因此要啟用目錄密碼保護的功能就必須在啟動伺服器時 同時載入 mod_auth 模組 請開啟 httpd.conf 設定檔 # vi /etc/httpd/conf/httpd.conf 找到下面的參數行段 ... # LoadModule auth_module modules/mod_auth.so 如果前方有 # 註解符號請 刪除 該 # 註解符號以啟動該功能 接著請存檔離開 :wq 並重新請動 Apache 伺服器 2. 啟動目錄認證功能 接下來管理者則到要開放密碼保護的目錄之參數區塊中 加入相關參數使目錄認證功能生效 開啟 httpd.conf 設定檔 # vi /etc/httpd/conf/httpd.conf 跳到要啟動密碼保護的目錄參數設定區塊中 ... 要在改目錄下啟動密錄認證功能 AllowOverride All 將此項目設定時改為 All 啟動目錄認證功能 ... 以下參數保持不變 存檔離開 :wq 3. 設定保護目錄的設定檔名稱 啟動伺服器的目錄認證功能之後,網頁就可以在需被保護的目錄下 自行編寫設定檔,已決定要如何保護此目錄 預設值是指定 .htaccess 為預定檔的名稱 AccessFileName .htaccess 其 .htaccess 將在稍後第 7 點介紹 4. 建立密碼檔 假設管理者想為 test 使用者的 private 網頁目錄作密碼保護 並允需 test 的使用者讀取該目錄即可透過以下方式達成 首先請切換到 /home/test/public_html 目錄底下 # cd /home/test/public_html # htpasswd -c .htpasswd test 建立 .htpasswd 密碼檔並新增 test 帳號 New password: 請輸入密碼 Re-type new password: 請再輸入密碼一次 Adding password for user test 看到此行就代表成功的完成新增帳號了 當完成以上設定後將再該目錄底下新增一個叫做 .htpasswd 密碼檔 我們可以開啟 .htpasswd 密碼檔了解一下內容 # cat .htpasswd 其內容如下 test : pbgGjiFilzy 格式為 --> 帳號:編譯過的密碼 5. 新增其他使用者 在密碼檔 .htpasswd 建立好後,可以再以 htpasswd 指令在新增其他使用者 # htpasswd .htpasswd iris New password: Re-type new password: Adding password for user iris 在完成密碼檔 .htpasswd 建立後在新增使用者時 htpasswd 指令後不要再加上 -c 參數就可以直接輸入新的帳號來新增 如果後面有再加上 -c 參數後那將會再創一個新的密碼檔 但是之前輸入的密碼檔將會被覆蓋過去喔 6. 修改使用者密碼 建立好密碼檔之後,如果想在更改已設定好的密碼 即可執行 htpasswd -m 指令修改 # htpasswd -m .htpasswd test 要修改 test 使用者的密碼 New password: Re-type new password: Updating password for user test 7. 設定目錄保護方式 建立好密碼檔之後,接下來也在該目錄底下編寫 .htaccess 設定檔 來設定要如何保護此目錄 以下就是簡單的範例,首先請新增一個 .htaccess 檔案 # vi .htaccess 打上以下設定值 AuthUserFile /home/test/public_html/ .htpasswd 指定密碼檔路徑(要絕對路徑) AuthName "Private directory" 設定顯示出要求輸入帳號與密碼的文字 AuthType Basic 設定傳送密碼的編碼方式,此例採用"Basic"方式 require valid-user 設定可存取此目錄的使用者 valid-user 指允許 .htpasswd 密碼檔內所有使用者皆可存取 require user 帳號 -- 此格式是指只能再密碼檔中某一位使用者存取 require user test -- 表示該目錄只能給密碼檔中的 test 使用者存取 完成後請存檔離開 :wq 接著到 test 使用者網頁瀏覽時會出現要求輸入帳號與密碼視窗即表示完成設定 8. 保護設定檔與密碼檔 由於 .htaccess 設定檔與 .htpasswd 密碼檔是相當重要檔案 所以當然不希望瀏覽者能有機會存取此 2 個檔案 此時管理者可在 httpd.conf 設定檔中禁止任何人以網頁方式 瀏覽存取該檔案 首先請先開啟 httpd.conf 設定檔 # vi /etc/httpd/conf/httpd.con 在設定檔中加入以下設定值 ... 設定只要是 .ht 開頭的檔案名稱就禁止瀏覽 Order allow , deny Deny form all 設樣子瀏覽者就無法透過瀏覽器下載瀏覽開頭為 .ht 的檔案了
- 5月 20 週六 200615:37
對目錄設密碼保護
- 5月 19 週五 200623:39
修改 httpd.conf 檔中影響安全的設定值
修改 httpd.conf 檔中影響安全的設定值在 Apache 的 httpd.conf 設定檔中有許多設定值會影響伺服器的安全以下將分別解說之1. 設定能存取伺服器網址 在設定檔中可利用 order、 allow 及 deny 項目來設定 Apache 伺服器允許哪些主機存取 以下將解說如何設定過程 首先請開啟 httpd.conf 設定檔 # vi /etc/httpd/conf/httpd.conf 可在目錄設定區中加入以下參數 (假設只開放給 123.com.tw 來存取主機) ... Order deny , allow 先處理 deny 項目,其次才適 allow 項目 Deny from all 拒絕所有主機存取 Allow from 123.com.tw 只允許來自 123.com.tw 網域可存取主機 ... 反過來如果只限制某些主機無法存取而其他任何主機皆可存取 ... Order allow , deny 先處理 allow 項目,其次才是 deny 項目 Allow from all 允許所有主機都可存取 Deny from 123.123.123.12 123.123.123.13 不允取來自 123.123.123.12 和
123.123.123.13 主機存取 ... 存檔後離開 :wq 2. 設定使否允取執行 CGI 有些執行 CGI 會影響 Linux 系統安全的指令或者是洩露主機資訊 以及可能也因 CGI 程式編寫關係而影響主機的系統資源 因此在設定 CGI 權限時請要特別注意安全性... 如果要在該目錄加上可執行 CGI 功能則可以依照以下方式設定 首先請開啟 httpd.conf 設定檔 # vi /etc/httpd/conf/httpd.conf 在要開放 CGI 執行權限目錄下新增參數 (假設要在 cgitest 目錄開啟 CGI 功能) ... 設定 cgitest 目錄功能區 AllowOverride None Options ExecCGI 如果要允許執行 CGI 則加入此參數 Order allow , deny Allow from all ... 設定好後請存檔離開即可 :wq 如果非必要開放 CGI 建議在前面加上 # 關閉此功能以維護主機安全 3. 關閉檔案列表功能 如果當使用者瀏覽到一個網站中沒有存放在 DirectoryIndex 項目的設定值 像 index.html、index.htm ... 等檔案則可能主機會將該網頁目錄下檔案都列出來 這樣子一般使用者都可能看到該目錄下所有檔案 如果管理者不想讓一般使用者能看到網站目錄底下的所有資料時 只要依照以下方式做修改即可取消檔案列表的功能 首先開啟 httpd.conf 設定檔 # vi /etc/httpd/conf/httpd.conf 移到要關閉檔案列表功能的目錄設定區塊中 ... 設定該目錄的設定區 ... Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec 將上行中的 Indexes 刪除即可 ... 存檔離開 :wq 並重新啟動 Apache 此後當使用者瀏覽到 /home/*/public_html 網頁目錄底下時 如果該目錄中沒有 DirectoryIndex 項目設定值的內容時 也並不會再列出目錄底下的檔案列表出來了
123.123.123.13 主機存取
- 5月 19 週五 200616:56
設定使用者網頁空間
設定使用者網頁空間如果希望能讓每個使用者都能擁有自己的網頁空間但又不想都放置在 /var/www/html 網頁根目錄下則可在每個使用者家目錄中建立放置個人網頁的目錄以下將介紹如何設定1. 開啟個人網頁功能 請開啟 httpd 設定檔設定 # vi /etc/httpd/conf/httpd.conf 請找尋以下該段程式碼 ... #UserDir disable 在前面加上 # 號 ... #UserDir public_html 將前面 # 號刪除以開放個人網頁功能... public_html 為預設個人存放網頁目錄名稱可視情況修改 完成以上修改後請存檔離開 :wq 2. 建立個人網頁目錄 接著管理者可位每個使用者建立個人網頁的目錄 public_html (也可以讓使用者自行建立) 下面範例將以 test 為設定範例的使用者 先以 root 登入 root ] # cd /home/test 切換到 test 家目錄 test ] # mkdir public_html 建立 public_html目錄(預設權限為755) test ] # chown test.test public_html 將此目錄擁有者與群組改為 test test ] # cd .. home] # chmod 711 test 設定使用者家目錄權限為 711 開放讓別人能進入,如此才能從網頁瀏覽器看到網頁 完成以上設定後將網頁上傳到自己的 public_html 目錄中 然後開啟瀏覽器觀看成果 http:// IP or 網域 /~test 請在帳號前加上 ~ 符號喔 補充: ◎ 取消個人網頁帳號前的 ~ 符號 請開啟 httpd 設定檔 # vi /etc/httpd/conf/httpd.conf 在設定檔最後面加上下面程式碼 ... Alias /test/ "/home/test/public_html/" 內部轉址設定
(當在網址後面加上 test 時自動轉到 test 指定家目錄) 新增後請存檔離開 :wq 接者到網頁瀏覽器觀看成果 http:// IP or 網域 /test 帳號前不需加 ~ 符號
(當在網址後面加上 test 時自動轉到 test 指定家目錄)
- 5月 19 週五 200616:30
維護網站系統網頁方法
維護網站系統網頁方法在本機上網頁的存放位置預設為 /var/www/html 目錄下而擁有者是屬於 root,因次要維護網頁時必須用 root 登入也因此當使用者如果要透過 ftp 上傳網頁到目錄時會發現 /var/www/html 只能以 root 帳號來存取而無法登入所以可以透過以下方式來解決問題!1. 使用 WinSCP 上傳網頁 可以透過 ssh 協定遠端登入的 WinSCP 工具來代替 如此就可以放心的使用 root 帳號來上傳網頁 其 WinSCP 的安裝與使用可以參考網誌內實用套件區內的相關文章 2. 利用符號連結,將系統首頁指向使用者個人網頁 這情況是透過系統的管理者與網頁個管理者為不同人時, 則可以使用符號連結的方式,將本機預設的首頁目錄 /var/www/html 連結到網頁管理者個人的網頁目錄 public_html 下 可依照以下方式來做設定 先以 root 身分登入 # cd /var/www 切換至 /var/www 網頁根目錄 # mv html html.old 備份預設的 html 目錄 (本例以 test 為網頁管理者範例) # chmod 711 /home/test 將 test 目錄權限設為 711,開放所有人能夠進入
如此才能讓伺服器讀取網頁 # ln -s /home/test/public_html html 將 /home/test/public_html 目錄連結至 html 網頁根目錄 # ls -l 查看設定結果 查看以下訊息是否相同 ... lrwxrwxrwx 1 root root 21 日期+時間 html --> /home/test/public_html ... 可以看到 html 已經連結至 /home/test/public_html 目錄下 完成以上設定後,以後如果要更新網頁時只要以 test 登入到 test 家目錄下的 public_html 中 將要修該的網頁上傳至該目錄中,就可以即時完成更新預設網頁的更新了 這樣好處是 test 網頁管理者不需要知道 root 的帳號就可以更新本機的網頁 而當 test 不再是網頁管理者時,root只需要將符號連結移除 再建立新的符號連結到另一個網頁管理者的家目錄即可
如此才能讓伺服器讀取網頁
- 5月 18 週四 200616:42
httpd.conf 設定
httpd.conf 設定以下是 httpd 的設定檔的基本設定1. 首先請開啟 httpd 的設定檔 # vi /etc/http/conf/httpd.conf 以下為 httpd.conf設定檔內容 ~~ 紅色文字處請注意 ... User apache web 伺服器名稱 Group apache 群組名稱 ... ServerAdmin root@abc.com.net 請改為您常用的 E-Mail 信箱 ... ServerName localhost:80 請改為真實主機名稱( :80 為連線時的主機埠號) ... UseCanonicalName Off 網路別名設定,請示主機的情況修改為 On ... DocumentRoot "/var/www/html" 網站的根目錄,可是主機做修改 ... 以下是設定是否允許一般使用者擁有自己的網路空間... #UserDir disable 預設值為 無,可是主機情況修改在前面加上 # ... #UserDir public_html 若要啟動使用者空間可將前面的 # 取消 ... ( 網頁會放置網頁根目錄的 public_html 目錄下 ) ... DirectoryIndexindex.html index.htm.var 網站的主頁預設名稱,可視主機情況修改 ... AddDefaultCharsetUTF-8 為設定網站的預設語系,建議改為 Big5 繁體語系 ... 完成以上基本設定後可存檔離開 :wq 2. 重新啟動 httpd 如果以上沒有問題的話再重新啟動 httpd 時是不會有錯誤的 # /etc/rc.d/init.d/httpd restart 重新啟動 httpd 接下來就可以利用瀏覽器連線到主機來測試看看
1
