程式的下載......

因為發生了一些不足為外人道的事情,

所以敝站上「作品分享」下載程式都暫時拿掉了,

若有需求的電腦同好,歡迎來信索取,謝謝!

PHP + MySQL,如何維護資料庫的安全?

  市面上有許多教人如何撰寫 PHP + MySQL 網頁程式的書籍,每當 PHP 要和資料庫進行連線時,host 參數都會使用 localhost,也就是網頁伺服器和資料庫在同一台主機上。不曉得是因為書籍都這樣寫的原因、還是因為中小學單位資金不足、抑或根本不想理它,程式跑起來就好,許多教育單位(甚至包含大專院校)在架設許多 PHP + MySQL 程式時(如:Gallery、LifeType、Moodle、Xoops......等),在 host 參數也都是使用 localhost;當然,不可否認,使用 localhost 真的是很方便,但是,這樣真的好嗎?

  如果我們只是在「練習」撰寫 PHP + MySQL 的程式,我們使用的工具可能只是一台桌上型電腦,甚至是筆記型電腦,那當然沒有什麼好說的。使用 localhost 當然沒有安全性上的顧慮,因為程式只在自己的電腦上跑給自己看罷了!但如果我們以這種方式將我們的網頁程式安裝到伺服器上,代表除了我們的網頁程式會在網際網路上供大家瀏覽,我們的資料庫同時也可能在網際網路上供人「瞻仰」,任何人都有可能直接在網際網路上攻擊你的資料庫,此時,資料庫的安全性自然堪慮。

  我很認同臺北縣新莊國小蘇志展老師有一次在九大區資訊組長會議中提出的一個問題:「你的網頁伺服器每天有多少流量在跑?你的網頁伺服器每天有多少次 CPU 使用率超過 20%?」的確,一般教育單位每天網頁伺服器的流量不會非常多;但換個角度想,正因為我們的網站伺服器不用太操勞,我們是不是可以把用兩台好一點的 PC 取代一台真正的伺服器,讓網頁程式和資料庫分開來,確保資料庫的安全呢?畢竟資料庫裡的資料才是最有價值,但又最難維護的東西啊!若被別人攻擊而清空了裡面的內容,那豈不是虧大了。

  當然,雖然我們把網頁程式和資料庫的伺服器分開了,但若我們仍然把兩台伺服器都放在網際網路可以瀏覽到的位置上,把他們分開就真的是一種多此一舉的行為了,所以接下來我們來看看要如何擺設它們才好呢?

  以一般的網路環境(非臺北縣中小學架構)來看,我們在 Web Server 上安裝兩張網卡,一張網卡設上實體 IP,用來讓網際網路上的使用者瀏覽,另外一張網卡設上虛擬 IP(在此以 192.168.xxx.1/24 為例),用來和內部的網路進行溝通。而 Database Server 只需要一張網卡,而且設定虛擬 IP(在此以 192.168.xxx.2/24為例),純粹只在存在於內部網路,讓網際網路上的使用者無法看到它。大致架構如下圖:

  接下來,我們可以在 Database Server 上面進行設定,只讓 192.168.xxx.1/24 可以存取資料庫,而且只有建立資料庫(Create DB)、新增資料(Insert)以及修改資料(Update)等權限,盡量不要開啟刪除資料庫(Drop DB)以及刪除資料(Delete)等權限,以免 Web Server 若被別人攻擊入侵,一樣可以從 Web Server 上毀損我們的資料庫,造成損失。

  但若以臺北縣中小學的網路架構來看,因為有在 Submit 400 上面切割 VLan,並且也設定好了 VLan Routing,所以就不用那麼麻煩了,這時我們的 Web Server 只需要一張網卡,設定實體 IP(在此以 163.20.xxx.yyy/24 為例),並且將 Web Server 連至 VLan ID 為 5 的 lan 網段 Port 上,而我們的 Database Server 可以設在 intra-1 或 intra-2 的 VLan 網段上,讓網際網路攻擊者沒有辦法直接從網際網路上看到資料庫。在此我們以電腦教室網段 intra-1 為例,我們將 Database Server 的 IP 設成 10.231.aaa.bbb/24,並且將 Database Server 連至 VLan ID 為 10 的 intra-1 網段 Port 上。大至架構如下圖:

  至於 Database Server 的設定和前述的一樣,盡量不要開啟讓 Web Server 可以刪除的權限。

  以上,就是基本的資料庫安全防護方法:讓資料庫存在於內部網路避免被外界網際網路使用者攻擊。

Back to Home Back to Top Boris 的分享小站. Theme ligneous by pure-essence.net. Bloggerized by Chica Blogger.