程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server和MySQL 的安全性分析(1)

SQL Server和MySQL 的安全性分析(1)

編輯:關於SqlServer

  大型網站一般使用Oracle或DB2,而中小型網站大多數使用更加靈活小巧的SQL Server數據庫或者MySQL數據庫。那麼,在同樣的條件下,微軟的SQL Server和免費的MySQL哪個更加安全呢?

  數據庫是電子商務、金融以及ERP系統的基礎,通常都保存著重要的商業伙伴和客戶信息。大多數企業、組織以及政府部門的電子數據都保存在各種數據庫中,他們用這些數據庫保存一些個人資料,還掌握著敏感的金融數據。但是數據庫通常沒有像做系統和網絡這樣在安全性上受到重視。數據是企業,組織的命脈所在,因此選擇一款安全的數據庫是至關重要的。大型網站一般使用Oracle或DB2,而中小型網站大多數使用更加靈活小巧的SQL Server數據庫或者MySQL數據庫。那麼,在同樣的條件下,微軟的SQL Server和免費的MySQL哪個更加安全呢?

  我在我的機子上面用管理員帳號默認安裝了mssql和MySQL以便在相同的情況下測試他們的安全性。我的系統配置如下:操作系統Microsoft Windows 2000 Version5.0,安裝了sp4,FTP服務和IIS服務,支持ASP和PHP。系統只有一個管理員帳號admin,guest帳號沒有禁用。

  一.系統內部安全性分析

  1.MySQL數據庫權限控制問題

  mysql的權限控制是基於MySQL這個數據庫的,叫做授權表,一共包括包括六個表columns_priv,db,func,host,tables_priv和user。先使用desc user命令查看非常重要的user表的結構以便查詢內容,現在可以查看他的權限設置了。使用命令select host,user,passWord,delete_priv,update_priv,drop_priv from user;這個命令查看了幾個比較危險的權限,顯示結果如下:

  MySQL> select host,user,passWord,delete_priv,update_priv,drop_priv from user;

  +-----------+------+------------------+-------------+-------------+-----------+

  | host | user | passWord | delete_priv | update_priv | drop_priv |

  +-----------+------+------------------+-------------+-------------+-----------+

  | localhost | root |0e4941f53f6fa106 | Y | Y | Y |

  | % | root | | Y | Y | Y |

  | localhost | | | Y | Y | Y |

  | % | | | N | N | N |

  +-----------+------+------------------+-------------+-------------+-----------+

  4 rows in set (0.00 sec)

  第一條表示在本機使用root用密碼登陸,擁有刪除記錄,修改記錄,刪除表等權限,好,這是安全的。第二條表示在任何主機使用root不需密碼登陸,擁有刪除記錄,修改記錄,刪除表等權限。第三條表示在本機匿名登陸,擁有刪除記錄,修改記錄,刪除表等權限。最後條表示可以再任何主機匿名登陸,但是沒有任何權限。顯然,第二,三,四都是不安全的!第二條不用說,就第三條而言,就算你在本地是guest權限,但是也可以登陸MySQL數據庫,而且擁有全部權限。這樣,就可以對數據庫為所欲為了。

  解決方法:如果你不需要遠程維護,刪除掉第二條,delete from user where host="%" and user="root";或者給它加個強壯的密碼。刪除第三條,delete from user where host="localhost" and user="";

  2.MySQL安裝目錄權限問題

  mysql默認安裝到c:\mysql,但是c盤默認是everyone完全控制,由於權限的繼承性,c:\MySQL對everyone也是完全控制的,顯然這樣是不安全的。因為惡意用戶可以刪除重要的數據文件。

  解決方法:重新設置mysql目錄的存取權限。或者將mysql安裝到其他目錄,如果你移動Mysql分發到D:\mysql,你就必須使用用D:\mysql\bin\mysqld --basedir D:\mysql來啟動MySQLd,甚至還需要修改它的配置文件。

  3.mssql數據庫權限控制問題

  mssql數據庫的權限控制是基於master庫的syslogins表,擁有所有權限的帳號是sa,其他還有sysadmin,db_owner等不同權限帳號。但是,mssql數據庫最高權限帳號sa的默認密碼是空,這樣如果安裝的時候不注意,就會給數據帶來毀滅性的災難。惡意攻擊者可以修改,刪除所有數據,更加重要的是mssql帳號可以利用擴展執行系統命令。

  解決方法:定期檢查所有登陸帳號,查看是否有不符合要求的密碼。

  Use master

  Select name,Password from syslogins where passWord is null命令檢查是否有空口令帳號存在。盡可能的刪除存儲擴展,防止本地用戶利用存儲擴展執行惡意命令。

  use master

  sp_dropextendedproc xp_cmdshell 命令刪除xp_cmdshell擴展。

  4.mssql安裝目錄權限問題

  同MySQL一樣,mssql也是安裝到everyone完全控制c盤,由於存取控制問題,最好安裝到d盤等非系統盤進行嚴格的權限控制。而且,由於mssql數據庫與系統結合非常緊密,系統管理員在沒有數據庫密碼的情況下也可以通過選擇Windows驗證來操作數據庫。因此,普通用戶有可能通過系統漏洞提升自己的權限,對數據庫進行破壞。

  解決辦法:除了嚴格的存取限制外,還要定期查看SQL Server日志檢查是否有可疑的登錄事件發生,或者使用DOS命令findstr /C:"登錄" d:\Microsoft SQL Server\MSSQL\LOG\*.*。

  mssql的安全是和Windows系統安全緊密結合的,任何一個出現漏洞,都會威脅到另一個的安全。

  總結,在系統內部安全性上,mysql和mssql都沒有達到令人滿意的程度,帳號安全,存取權限都控制的不是很好。但是mssql有詳細的日志可以查看登陸情況,比mysql要高出一籌。如果進行了合理的設置,MySQL反而要更加安全些,因為對mssql而言,只要有系統權限即可擁有數據庫權限。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved