2013年5月2日 星期四

加強WordPress的安全設定 (To Strengthen the Security Settings of WordPress)


自從最近發生了有關Wordpress的安全性疑慮之後,其中包括暴力破解法猜測管理者密碼(或許可以透過登入錯誤延時的外掛來阻擋一下,例:Limit Login Attempts),外掛:Super CacheW3TC的弱點,應該相當多有使用它的使用者,無論是主動或被動地都得進行一些安全性的防護設定,畢竟這個免費的BSP平台,早已擄獲了很多使用者的心,甚至很多商業團體的網站,也是透過這個平台來進行架設,所以,一發生安全性的疑慮,大家無不繃緊神經嚴陣以待。

其實在WordPress的官方也有提供一些有關安全性的建議,或是許多外掛(Plugin)中,應該也有許多外掛是與網站平台安全相關的功能,我們就可以藉此瞭解到有那些項目是我們應該注意的重點,甚至透過它來擴大檢視手上其它網站的安全性是否足夠,雖然說不同平台的架構也有所不同,但是對於安全性的觀念,仍有許多共通之處。
對於這種既便利又方便的網站架構,因為免費容易上手一堆外掛可用,所以使用者也較多,當然帶來的潛在風險就多,這就跟為什麼Windows的潛在風險總是比其它OS來得多一樣,其實這就是使用便利和安全上的兩面刃。

既然WordPress安全性上的設定,可以透過一些外掛來檢查,例:WP Security Scan,其中會檢查的項目不外乎有下列幾項:

  1. 版本檢查:
    檢查Wordpress的版本是否為最新版,用途跟作業系統的安全性更新類似。
  2. 修改資料庫字首:
    避免遭受有心人直接針對資料庫來進行攻擊。
  3. 版本隱藏:
    這個就像此地無銀三百兩,只要知道你使用的版本,就可以用該版本已經被發現的弱點來攻擊。(當然也無法避免有人提供弱點掃描工具來測試。)
  4. 關閉錯誤訊息:
    這一點其實不只是WordPress需要留意,其實很多網站,都會把這個功能關閉,除了內部還在開發時會使用,不然,有時錯誤訊息會拋出來的資訊,會很嚇人,例:管理者的
    帳號資訊。
  5. 管理者名稱:
    簡單說就是避免使用預設的管理者名稱「admin」,因為用這麼帳戶,要猜的只剩下密碼,暴力法就有機可趁,其實針對我們一般使用的作業系統來說,也有一樣的風險。(這就跟系統密碼若有三組,分別保管在三個人手中,只要拿到兩組後,第三組的重要性也就小得多,應該很多重要設備的系統都是這種架構吧?)
  6. 存取控制:
    這個主要是針對資料夾權限來進行檢查,以及在./wp-admin的路徑下是否有限制存取的設定檔(.htaccess),若是可行的話,通常都會針對這個管理後台的資料夾進行IP限制的控制,如此一來,除非是電腦被開後門,就算登入後,也無法進入後台管理介面。
上面幾項,主要是針對WordPress架構上常見的檢查項目來加以說明,接著,就來介紹一些其它項目,其實也是為了因應最近這些安全事件的解決方式。
  1. 修改登入頁面的位置或限制IP :
    因為WordPress的登入頁面,預設值為:「./wp-login.php」,因此針對暴力攻擊法來說,若是管理者帳號沒改(admin),也沒有其它的阻擋機制,基本上要被猜出來,就是密碼長度跟破解時間的競賽,所以現在有網站代管的主機商,會要求使用者若有安裝WordPress的使用者,需要修改登入頁面後方可使用。

    至於修改的方式,可以透過外掛進行,也可以自行修改原有的wp-login.php,將wp-login.php更名後(例:test-login.php ),並且將檔案內的wp-login.php字串替換成,你已更名的登入頁面即可(記得原檔要先備份)不過,這種方式可能每次版本更新時,就得留意是否有檔案覆蓋或是有多重登入頁面的可能。

    .test-login.php Example
    sed -e 's/wp-login.php/test-login.php/g' wp-login.php > test-login.php
    mv wp-login.php wp-login.php.bak
    甚至如果你有固定IP,也可以透過.htaccess的設定,將登入頁面也限定在特定IP之下方可瀏覽,不過,若是使用代管主機,可能主機商就不會檢查.htaccess的設定,而是直接要求使用者改變登入路徑居多。

    .htaccess Example

    <files "wp-login.php">
    Order deny,allow
    deny from all
    allow from 192.168.0.2 192.168.1.0/24
    <files>

  2. 外掛的潛在風險:
    雖然我們都知道WordPress最好用的就是有超多的外掛可用,但是在用它的同時,其實一樣有其風險存在,雖然可以透過使用評比跟下載數量來做為參考依據,但是這些外掛還是有被攻陷的可能,如此一來,對於原本安全的系統來說,還是有著不小的隱憂。

    這也是為什麼一開始在介紹時,就提及透過這些外掛來學習如何來增強系統安全性,若是可行的話,其實你能夠弄清楚外掛實際修改了那些內容,自己來進行相關的設定及修改(不過門檻也就相對較高)。

    適量限縮外掛的使用,可避免這些外掛的潛在風險,尤其是許多外觀、特效的外掛,它們通常都會自外部引用不少js程式碼,若是這些自外部引用的程式內容遭人所竄改,基本上也就沒有什麼安全性可言,這時候你就會發現怎麼都擋不住有心人士在你的網站裡加料。

    就如同先前南韓遭受的網路攻擊(新聞連結),造成大規模的癱瘓事件,其實就是有心人士直接攻擊防毒軟體的更新伺服器,然後再將加料的內容透過更新伺服器塞進相關機構,以前在電影上看見的內容,竟然也在真實世界同步上演。


  3. 定時分析Log檔:
    接著就是進行資料分析的工作,雖然網站本身的Log資料都相當龐大(視你記錄內容的多寡而定),但是在這些進、出入的記錄中,往往都能夠發現到被攻擊的軌跡,不過這個工作可能就需要一些經驗,以及更多的時間來練習(例:中毒與檔案搜尋技巧

    不過,在Log檔的分析上,除非有專職的人員能夠進行追蹤,不然很難提前發現問題,除此之外,若是系統的管理帳號被破解,基本上他也有權利能夠刪除一切Log的資料,藉此隱藏它攻擊的軌跡。

雖然這篇主要是針對WordPress來進行說明,但是,對於任何網站或系統,任何有關安全性的設定跟風險,都得要隨時留意,畢竟現在愈熱門的系統,其弱點被發現的速度也就愈快。

像先前Java的事件,大家應該都記億猶新吧!?雖然,人具備多種技能是好事,但是,針對電腦系統或應用上來說,有時愈單純反而愈安全喔!(不過這還是得要考量CP值,最終還是只能從中取得平衡點)