自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

七步讓您的MySQL服務(wù)器更安全

譯文 精選
數(shù)據(jù)庫 MySQL
本文將以最常見的數(shù)據(jù)庫管理系統(tǒng)——MySQL為例,向您介紹如何通過7步驟來安全加固數(shù)據(jù)庫服務(wù)器。

?譯者 | 陳峻

審校 | 孫淑娟

不知您是否發(fā)現(xiàn)一種現(xiàn)象,那些初學(xué)滲透測(cè)試的人員往往過于關(guān)注應(yīng)用的安全性,而對(duì)數(shù)據(jù)庫的安全性不太重視。他們殊不知,沒有數(shù)據(jù)庫的配置與安全測(cè)試,應(yīng)用的安全性也就無法得到充分的驗(yàn)證。在此,我將以最常見的數(shù)據(jù)庫管理系統(tǒng)——MySQL為例,向您介紹如何通過七步驟來安全加固數(shù)據(jù)庫服務(wù)器。

1、使用SSH隧道代替遠(yuǎn)程連接

默認(rèn)情況下,MySQL服務(wù)運(yùn)行在3306號(hào)端口上。在安裝MySQL時(shí),您會(huì)注意到3306號(hào)端口持續(xù)對(duì)所有連接都進(jìn)行偵聽。就目前而言,由于MySQL的端口是對(duì)外開放的,因此您應(yīng)該將MySQL的服務(wù)設(shè)置為,僅偵聽本機(jī)地址的模式。

由于服務(wù)器通常是運(yùn)行在Linux的各種發(fā)行版上的,因此下面我將選取基于Debian發(fā)行版來進(jìn)行演示。首先,為了使用SSH隧道,而不是遠(yuǎn)程連接,您需要在/etc/mysql/my.cnf文件中,關(guān)閉由內(nèi)向外的默認(rèn)端口。在該文件中,您需要開啟一個(gè)名為[mysqld]的字段,并輸入如下命令:

[mysqld]
bind-address=127.0.0.1

完成之后,請(qǐng)不要忘記保存該文件,并使用如下命令去重新啟動(dòng)該服務(wù):

sudo systemctl restart mysqld
# or
sudo systemctl restart mariadb.service

至此,MySQL服務(wù)將只會(huì)監(jiān)聽本機(jī)地址了。如果您使用的是MariaDB,那么可以查看/etc/mysql/mariadb.conf.d/50-server.cnf,并檢查是否有關(guān)于bind-address的定義。

圖片

至此,您已將綁定地址設(shè)置為127.0.0.1,即localhost。您可以運(yùn)行Nmap進(jìn)行掃描,并能檢查到如下輸出:

圖片

由于127.0.0.1代表了本地主機(jī),因此您可以看到MySQL的端口。現(xiàn)在,您可以嘗試著再次更改綁定的地址,以確保其已經(jīng)生效:

[mysqld]
bind-address=127.5.5.

圖片

在保存了/etc/mysql/my.cnf文件,并重啟了MySQL服務(wù)后,您可以再次執(zhí)行Nmap掃描。此時(shí),您應(yīng)該不會(huì)在本地主機(jī)上再看到該綁定地址了。

圖片

在確認(rèn)了此類修改是奏效的后,請(qǐng)不要忘了回到第一步的設(shè)置中,將綁定地址改回127.0.0.1,并再次保存。

2、設(shè)置本地文件訪問的屏障

MySQL默認(rèn)可以與本地文件系統(tǒng)通信。例如,通過使用查詢,您可以在本地文件系統(tǒng)中,查看到文本內(nèi)容,并將查詢結(jié)果寫到磁盤上。而為了防止惡意攻擊者使用此功能,您必須阻止MySQL直接與本地文件系統(tǒng)進(jìn)行通信。

在實(shí)踐中,您可以使用名為local-infile的函數(shù),來采取預(yù)防措施。例如,假設(shè)您有一個(gè)名為“/etc/secretfile.txt”的文件,并且您在該文件中存放了密碼。那么,如果您的/etc/mysql/my.cnf文件中的local-infile函數(shù)值在為1時(shí),就意味著訪問權(quán)限是開啟的。您可以基于此去檢查secretfile.txt文件。

圖片

出于驗(yàn)證目的,您可以使用如下命令連接到MySQL上,并檢查其是否可以看到

secretfile.txt文件:
SELECT LOAD_FILE("/etc/secretfile.txt");

圖片

不難看出,它成功地捕獲了計(jì)算機(jī)上的文件信息。如下所示,請(qǐng)更改/etc/mysql/my.cnf文件中的local-infile值:

[mysqld]
local-infile=0

圖片

請(qǐng)重啟MySQL服務(wù),并重新連接MySQL。再次執(zhí)行上述步驟,您會(huì)發(fā)現(xiàn)自己已不能看到文件內(nèi)容了。

當(dāng)然,如果用戶本身就沒有對(duì)本地文件的讀寫權(quán)限,那么他們同樣無法看到該文件。不過,這不應(yīng)該成為您忽略的理由。它仍然是您應(yīng)該在滲透測(cè)試和數(shù)據(jù)庫安全性中需要檢查的內(nèi)容之一。

3、設(shè)置應(yīng)用用戶和密碼

值得注意的是,數(shù)據(jù)庫的管理用戶和訪問數(shù)據(jù)庫的MySQL用戶必須互不相同。換句話說,如果您直接使用root用戶,將應(yīng)用連接到MySQL上,則是極其危險(xiǎn)的。如果可能的話,請(qǐng)定義那些無法單獨(dú)執(zhí)行UPDATE或INSERT操作的用戶,并分配給應(yīng)用。

除了用戶,我們?cè)賮砜紤]用戶的密碼。與其他領(lǐng)域類似,MySQL用戶的密碼也需要具有復(fù)雜且不可預(yù)測(cè)的特性。如果您在此方面缺乏經(jīng)驗(yàn)的話,可以使用現(xiàn)成的密碼生成器系統(tǒng)。

4、刪除匿名用戶

您在保持默認(rèn)設(shè)置情況下去安裝MySQL時(shí),會(huì)產(chǎn)生一些匿名用戶。顯然,您需要?jiǎng)h除或阻止他們對(duì)于數(shù)據(jù)庫的訪問。對(duì)于MySQL服務(wù)器的安全而言,您應(yīng)該留意從如下查詢中獲得的響應(yīng):

SELECT * FROM mysql.user WHERE USER="";
# Example Output
Empty set (0.001 sec)

對(duì)于查詢到的結(jié)果,您應(yīng)當(dāng)立即刪除這些匿名用戶。例如,如果在名為“l(fā)ocalhost”的數(shù)據(jù)庫環(huán)境中有一個(gè)名為“anonuser”的匿名帳戶,那么您就可以使用如下命令來刪除之:

DROP USER 'anonuser'@'localhost';

5、檢查MySQL的本地文件權(quán)限

假設(shè)您是一名數(shù)據(jù)庫管理員,想檢查一周前的數(shù)據(jù)。您可能必須通過SSH,連接到數(shù)據(jù)庫服務(wù)器,并更改所需的MySQL文件。在執(zhí)行此操作的過程中,如果您使用Linux的root用戶權(quán)限,那么數(shù)據(jù)文件的所有權(quán)和查詢權(quán)限就發(fā)生了更改。

為了避免此類情況,您需要查看/var/lib/mysql目錄,以檢查授予權(quán)限的狀態(tài),并通過如下命令,審查所有文件的所有者是否為MySQL用戶。

sudo ls -al /var/lib/mysql

圖片

顯然,此類文件的讀寫權(quán)限應(yīng)該只被分配給MySQL用戶,而其他用戶不應(yīng)具有任何權(quán)限。

6、使用MySQL SSL

想象一下,在ABC地區(qū),有許多不同的服務(wù)器,其中一臺(tái)服務(wù)器一旦被惡意黑客接管了。那么黑客將在ABC區(qū)域進(jìn)行內(nèi)部掃描。通過這種方式,他可以收集到各個(gè)服務(wù)器的信息。

如果他在此過程中檢測(cè)到MySQL服務(wù)器,那么就可以對(duì)目標(biāo)服務(wù)器發(fā)起中間人攻擊(MitM)。這意味著他們可以竊取連接到該服務(wù)器的應(yīng)用和用戶之間的會(huì)話信息。避免這種情況的一種最佳方法是在MySQL服務(wù)器上啟用SSL。

7、日志和歷史文件

您可以使用MySQL日志來分析和查找各類錯(cuò)誤。如下所示,您可以通過進(jìn)入my.cnf文件,來編輯日志的保存位置。

# /etc/mysql/my.cnf
[mysqld]
log =/var/log/mylogfiles

您可以按需更改mylogfiles的名稱或位置。而當(dāng)您在Linux終端上連接到MySQL服務(wù)器,并鍵入各種命令時(shí),各種查詢將被保存在mysql_history文件中。如果運(yùn)行以下命令,您將可以在MySQL終端中看到正在使用的查詢信息:cat ~/.mysql_history。

如果您不想提供有關(guān)自己在服務(wù)器內(nèi)部進(jìn)行查詢的類型等信息,則可以通過如下命令刪除該文件的內(nèi)容。

sudo echo "cleaned" > ~/.mysql_history

在完成后,您可以通過再次運(yùn)行上述命令,去檢查文件的內(nèi)容。

8、得數(shù)據(jù)庫者得系統(tǒng)

無論屬于哪個(gè)領(lǐng)域的應(yīng)用,由于數(shù)據(jù)庫里可能存放著包括:客戶信息、銀行帳戶和賬號(hào)密碼等數(shù)據(jù),它們都是惡意攻擊者想盡一切辦法要獲得的信息。因此,無論是數(shù)據(jù)庫開發(fā)人員、還是管理人員,都至少需要了解他們?cè)跐B透測(cè)試中可能涉及到的基礎(chǔ)知識(shí)。希望上述向您介紹的七步加固MySQL服務(wù)器安全的建議,能夠助您一臂之力。

原文鏈接:https://www.makeuseof.com/mysql-database-security-checklist/?

譯者介紹

陳峻 (Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項(xiàng)目實(shí)施經(jīng)驗(yàn),善于對(duì)內(nèi)外部資源與風(fēng)險(xiǎn)實(shí)施管控,專注傳播網(wǎng)絡(luò)與信息安全知識(shí)與經(jīng)驗(yàn)。?

責(zé)任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2009-12-24 10:49:46

2010-05-12 15:02:41

Subversion服Ubuntu

2017-04-21 14:21:53

深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)

2011-09-05 17:36:24

2015-08-12 08:54:24

2019-12-02 14:30:59

服務(wù)器SNMP網(wǎng)絡(luò)協(xié)議

2011-07-18 16:11:32

域控制器

2018-02-24 18:12:30

2010-04-22 15:24:36

郵件安全網(wǎng)絡(luò)加密服務(wù)器

2009-07-22 18:55:29

2009-02-27 15:15:00

2013-05-29 14:27:40

2019-03-10 20:37:14

Python編程語言

2010-08-10 13:15:36

Flex配置

2013-11-06 13:55:27

AngularJS服務(wù)

2010-05-28 10:10:49

2013-07-18 10:01:10

2015-08-17 16:34:13

2023-04-28 14:38:47

2018-01-31 11:20:48

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)