mysql防止暴力破解,mysql查看暴力破解連接日誌

本文目錄一覽:

使用雲服務器時的幾個防護技巧

雲服務器的使用越來越廣泛,愈加受到眾多企業的青睞,那麼,在使用過程時如何更好的做好防護措施呢?小蟻君來說說。

1.隨時檢查系統安全漏洞,安裝系統補丁。不管是Windows還是Linux,操作系統都會有漏洞,及時裝上補丁,避免被不法分子惡意利用攻擊.

2.安裝並升級殺毒軟件。目前網絡上的病毒越加猖獗,隨時會影響到網站服務器的安全,因此,系統要安裝上殺毒軟件來提前預防病毒的傳播,並定期檢查升級殺毒軟件,自動更新病毒庫。

3.定期對服務器數據進行備份。為預防突發的系統故障而導致的數據丟失,平時就要定期對系統數據進行備份,同時,重要的系統文件建議存放在不同的服務器上,以便系統出故障時能將損失降到最低。

4.定期對賬號密碼進行修改保護。賬號和密碼保護可以說是服務器系統的第一道防線,目前大部分對服務器的網絡攻擊都是從密碼開始的,一旦不法分子截獲了密碼,那麼前面所做的所有安全防護措施都將失去了作用。

5.關閉不常用的服務和端口。服務器操作系統在安裝時,會啟動一些不需要的服務,不僅佔用了系統的資源,還會增加系統的安全隱患。因此,定期檢查系統運行中的軟件和服務,沒有使用的就關閉掉。

做了那麼多,那麼要怎麼樣才能避免一些低級的黑客攻擊呢?

小蟻君網絡了一些方法以及應對的措施

常見攻擊手段

1、針對網站

1.1、SQL注入

sql注入也是老生常談了,基本上算是常識了,這種手段無非是利用後台漏洞通過URL將關鍵SQL語句帶入程序並在數據庫中執行從而造成破壞性結果。常見情況包括後台使用了的致命的字符串拼接,比如在java的jdbc中使用如下寫法

String sql = “select * from t_user where username = “+username;

1

如果入參username在url中被換成不懷好意的sql語句或者其他,數據庫也就危險了。

localhost:8080/testproj/queryUser?username=;drop%20t_user;

此外,類似的mybatis的${}寫法也是同樣道理,最好換成#。

1.2、後台框架、協議漏洞

1.3、程序邏輯漏洞

這個就需要黑帽子們比較有耐心,去一點點找出來,舉個例子,網站有效性校驗。針對數值有效性,前端有進行過濾,但是網站後台沒有做參數有效性校驗,這時候惡意者使用F12或postman等拼裝ajax請求,將dfa或者-1ad這種非法數字發送給後台,健壯性差的程序就很容易報錯,異常暴露到頁面上,瞬間就能讓操作者知道後台使用何種語言何種框架。更嚴重的可能是利用程序邏輯漏洞做重複提交、越權操作等行為,因此需要開發人員注意。

1.4、CSRF攻擊

;password=123456role=1

這個時候瀏覽器還攜帶着管理員登錄的cookie因此該行為得到執行,我就獲得了一個管理員用戶,當然這麼蠢的網站一般是不存在的,這裡只是打個比方。

防範手段比較常見的是url攜帶token進行校驗,這種手段還可以防禦cookie被篡改,盜用等情況,相當的萬金油。

1.5、暴力破解

直接採用密碼錶暴力破解方式強行登錄管理員賬戶,這個沒啥技術含量,開發人員做好驗證碼校驗以及惡意攻擊校驗,頻繁請求IP封禁即可。

2、針對服務器

2.1、服務器登錄用戶、數據庫登錄用戶爆破

黑帽子有多種手段確定後台數據庫,比如1.3中直接讓後台報錯,很容易就發現了後台使用的什麼框架,連得啥庫。又或是使用nmap 等工具直接開掃,目標服務器暴露3306端口大概率就確定是mysql了。確認了數據庫類型以及端口接下來就是採用密碼錶暴力破解了,很多安全意識差的密碼居然還是root,123456之類的,分分鐘被暴,而掃到後台服務器22開放端口也可以確認後台服務器使用linux開放ssl登錄。所以應對方式有三種:

mysql限制訪問IP,這個利用alter user語句就可以做到,root賬戶盡量只給localhost權限,慎用user@%;

不要使用弱密碼,盡量採用字母+數字+特殊字符的密碼;

服務器使用放暴力破解服務,可以針對非法訪問惡意操作進行鎖IP防禦。

2.2、服務器端口漏洞

通過nmap很容易掃描到服務器暴露的端口,比如139端口外露,就有大量的手段可以滲透:

net use ipipcContent

nbsp;”” /user:administrator

所以應對手段也很簡單,開啟防火牆,且只開放有需要的端口,敏感端口如139,445不要外露。

2.3、操作系統漏洞

雖然大部分公司都採用linux作為服務器,相對安全得多,但是還是有不少公司(至少博主見過挺多的)還在使用windows server,大量的漏洞讓服務岌岌可危,應對方式也很簡單粗暴,該打的補丁就打,不要偷懶。

2.4、木馬植入

這個就是黑客直接通過向服務器種植木馬,開啟後門,取得服務器控制權,應對方式主要以下三點:

1、不要用服務器訪問亂七八糟的網站(尤其是公司服務器在國外的,不要想着借來翻牆了,別作死),下載亂七八糟的東西;

2、實體機的移動外設接入前注意殺毒;

3、服務器安裝相應安全產品,定期查殺木馬,定期更新漏洞補丁;

4、防火牆注意開啟,相應端口注意配置。

做到以上幾點,基本上中級以下的黑客是進不來了,就算是中高級的黑客也得費一番功夫。當然,如果公司服務器數據涉及資產非常高,建議直接聯繫小蟻君

怎樣防止mysql數據庫暴力破解

使用mysqladmin,這是前面聲明的一個特例。 mysqladmin -u root -p password mypasswd 輸入這個命令後,需要輸入root的原密碼,然後root的密碼將改為mypasswd。 把命令里的root改為你的用戶名,你就可以改你自己的密碼了。 UnixLinux: 1.用root或者運行mysqld的用戶登錄系統; 2.利用kill命令結束掉mysqld的進程; 3.使用–skip-grant-tables參數啟動MySQL Server shellmysqld_safe –skip-grant-tables 4.為root@localhost設置新密碼 shellmysqladmin -u root flush-privileges password “newpassword” 5.重啟MySQL Server mysql修改密碼 mysql修改,可在mysql命令行執行如下: mysql -u root mysql mysql Update user SET password=PASSWORD(“new password”) Where user=’name’; mysql FLUSH PRIVILEGES; mysql QUIT 教你如何將MySQL數據庫的密碼恢復 因為MySQL密碼存儲於數據庫mysql中的user表中,所以只需要將我windows 2003下的MySQL中的user表拷貝過來覆蓋掉就行了。

安全狗 檢測mysql 本機 暴力破解 什麼原因

應該是有人想暴力破解你的密碼,做好安全防護,及時修改賬戶密碼,設置的複雜些。查看下是什麼IP在操作,禁止它訪問

如何做好MySQL安全策略

摘至網頁鏈接

常見Mysql配置文件:linux系統下是my.conf,windows環境下是my.ini;

數據庫整體安全需求:機密性、完整性、可用性;

下面以mysql 5.7版本為例,介紹mysql常見的安全策略、配置、加固方式等等,有些策略可能只針對Linux操作系統,更多策略可以參考CIS Mysql Benchmark相關文檔:

1、操作系統級別安全配置

1.1不要將數據庫放在系統分區

Windows系統:直接檢查是否將數據庫放置在C盤。

Linux系統:

在終端連接上mysql數據庫,執行如下命令:

show variables where variable_name = ‘datadir’;

然後返回shell命令行:

df -h datadir

其中datadir是上一條命令的返回值。

上述命令的返回值不應是/、/var、/usr

1.2使用專用的最小權限賬號運行mysql數據庫進程

Windows系統:直接打開任務管理器,查看運行mysql進程的操作系統賬號,不能為administrator賬號。

Linux系統:

Shell命令行運行如下命令:

ps -ef | grep mysql

查看mysql服務的運行賬號是否為root或其他高權限賬號,如果是的,則需要創建一個非管理員專用賬號來運行mysql服務。

1.3禁止使用mysql命令行歷史記錄

Linux系統:

執行如下命令:

find / -name “.mysql_history”

查看是否存在mysql的歷史命令記錄文件,如果存在,則需要進行如下加固:

(1)刪除.mysql_history文件;

(2)設置環境變量MYSQL_HISTFILE為/dev/null,並添加到shell的初始化腳本中,創建mysql_history到/dev/null的鏈接:

ln -s /dev/null $HOME/.mysql_history

1.4 確保MYSQL_PWD環境變量未設置敏感信息

Windows系統下進入cmd命令行,使用如下命令:

Set

查看是否設置了環境變量MYSQL_PWD。

Linux系統下使用如下命令:

grep MYSQL_PWD /proc/*/environ

查看MYSQL_PWD環境變量是否設置了敏感信息。

確認那個配置文件或腳本設置了MYSQL_PWD環境變量。

2、安裝

2.1使用數據庫專用服務器

使用專用的服務器安裝mysql服務可以減少mysql服務的攻擊面,盡量卸載或刪除操作系統上的不必要的應用或服務,減少其他應用的安裝可能給mysql的運行帶來的安全風險。

2.2 不要復用數據庫賬號

運行mysql服務的操作系統賬號不要用來運行其他應用或服務,這樣可以避免其他應用或服務器被攻擊給mysql服務帶來影響。

2.3 歷史命令行密碼設置為不可見

使用如下命令:

mysql -u admin -p password

連接mysql數據庫服務,退出後查看歷史命令,確認password是否為明文。

建議使用如下命令方式登錄:

(1)先輸入mysql -u admin -p

(2)根據命令行提示輸入密碼;

而不要在一整條命令中輸入密碼。

另外要控制mysql配置文件訪問權限。

3、文件權限控制

3.1 控制數據目錄的訪問權限

數據目錄是mysql數據庫存放的位置,在mysql命令行界面下執行如下命令:

show variables where variable_name = ‘datadir’;

在終端命令行下執行如下命令:

ls -l datadir/.. | egrep “^d[r|w|x]{3}——\s*.\s*mysql\s*mysql\s*\d*.*mysql”

其中datadir是第一條命令的執行結果

如果存在問題,linux環境下在終端執行如下命令進行加固:

chmod 700 datadir

chown mysql:mysql datadir

3.2 控制二進制日誌文件的權限

mysql的運行會產生很多日誌,例如二進制日誌、錯誤日誌、慢查詢日誌等等,Mysql命令行下執行如下命令:

show variables like ‘log_bin_basename’;

在終端命令行執行如下命令:

ls log_bin_basename.*

對於發現的每一個文件,執行如下命令:

ls -l log_bin_basename.nnnnn | egrep “^-[r|w]{2}-[r|w]{2}—-\s*.*$”

根據輸出確認日誌文件的權限設置是否存在問題。

對於每個日誌文件,修改其權限和屬組如下:

chmod 660 log file

chown mysql:mysql log file

3.3 控制錯誤日誌文件的權限

Mysql命令行下執行如下命令:

show variables like ‘log_error’;

在終端命令行執行如下命令:

ls log_error.*

對於發現的每一個文件,執行如下命令:

ls -l log_error | egrep “^-[r|w]{2}-[r|w]{2}—-\s*.*$”

根據輸出確認日誌文件的權限設置是否存在問題。

對於每個日誌文件,修改其權限和屬組如下:

chmod 660 log file

chown mysql:mysql log file

3.4控制慢查詢日誌文件的權限

Mysql命令行下執行如下命令:

show variables like ‘slow_query_log_file’;

在終端命令行執行如下命令:

ls slow_query_log_file.*

對於發現的每一個文件,執行如下命令:

ls -l slow_query_log_file | egrep “^-[r|w]{2}-[r|w]{2}—-\s*.*$”

根據輸出確認日誌文件的權限設置是否存在問題。

對於每個日誌文件,修改其權限和屬組如下:

chmod 660 log file

chown mysql:mysql log file

3.5控制通用日誌文件的權限

Mysql命令行下執行如下命令:

show variables like ‘general_log_file’;

在終端命令行執行如下命令:

ls general_log_file.*

對於發現的每一個文件,執行如下命令:

ls -l general_log_file | egrep “^-[r|w]{2}-[r|w]{2}—-\s*.*$”

根據輸出確認日誌文件的權限設置是否存在問題。

對於每個日誌文件,修改其權限和屬組如下:

chmod 660 log file

chown mysql:mysql log file

3.6控制審計日誌文件的權限

Mysql命令行下執行如下命令:

show global variables where variable_name =  ‘audit_log_file’;

在終端執行如下命令:

ls -l audit_log_file | egrep “^-rw[-x]rw[-x][-r][-w][-x][ \t]*[0-9][ \t]*mysql[

\t]*mysql.*$”

根據輸出確認日誌文件的權限設置是否存在問題。

對於每個日誌文件,修改其權限和屬組如下:

chmod 660 audit_log_file

chown mysql:mysql audit_log_file

4、通用安全

4.1安裝最新的補丁

在mysql命令行下查詢MySQL的版本:

SHOW VARIABLES WHERE Variable_name LIKE “version”;

確認是否由需要安裝的補丁包,如果有請安裝。

4.2 刪除test數據庫

Mysql數據庫默認安裝好後,存在一個名為test的數據庫,如果存在,請執行如下命令刪除:

Drop database “test”

4.3 確保讀取本地文件的參數設置為失效

Mysql命令行下,使用如下命令:

SHOW VARIABLES WHERE Variable_name = ‘local_infile’;

查看結果是否為OFF。

如果該命令為ON,則數據庫用戶可以通過LOAD DATA INFILE 或者 SELECT local_file 讀取到數據庫所在操作系統本地的文件,在這種情況下,需要在mysql配置文件中新增一行:

Local-infile=0;

然後重啟數據庫服務。

5、權限配置

5.1控制可以訪問所有數據庫的賬號

Mysql數據庫下的user表和db表中存放着可以授予數據庫用戶的權限,確保只有管理員賬號才能訪問所有數據庫。可以訪問mysql數據庫的用戶或許可以查看密碼哈希值、修改用戶權限等等。

使用如下sql語句:

SELECT user, host FROM mysql.user

WHERE (Select_priv = ‘Y’) OR (Insert_priv = ‘Y’) OR (Update_priv = ‘Y’)

OR (Delete_priv = ‘Y’)  OR (Create_priv = ‘Y’)  OR (Drop_priv = ‘Y’);

SELECT user, host FROM mysql.db WHERE db = ‘mysql’

AND ((Select_priv = ‘Y’) OR (Insert_priv = ‘Y’) OR (Update_priv = ‘Y’)

OR (Delete_priv = ‘Y’) OR (Create_priv = ‘Y’) OR (Drop_priv = ‘Y’));

確保返回結果只能是數據庫管理員賬號。

5.2限制非管理員用戶的權限

Mysql.user表中的權限列有:

file_priv:表示是否允許用戶讀取數據庫所在主機的本地文件;

Process:表示是否允許用戶查詢所有用戶的命令執行信息;

Super_priv:表示用戶是否有設置全局變量、管理員調試等高級別權限;

Shutdown_priv:表示用戶是否可以關閉數據庫;

Create_user_priv:表示用戶是否可以創建或刪除其他用戶;

Grant_priv:表示用戶是否可以修改其他用戶的權限;

應確保只有數據庫管理員才有上述權限,使用如下sql語句查看擁有各個權限的數據庫賬號:

select user, host from mysql.user where File_priv = ‘Y’;

select user, host from mysql.user where Process_priv = ‘Y’;

select user, host from mysql.user where Process_priv = ‘Y’;

SELECT user, host FROM mysql.user WHERE Shutdown_priv = ‘Y’;

SELECT user, host FROM mysql.user WHERE Create_user_priv = ‘Y’;

SELECT user, host FROM mysql.user WHERE Grant_priv = ‘Y’;

SELECT user, host FROM mysql.db WHERE Grant_priv = ‘Y’;

確保查詢結果中不存在非管理員用戶。

如果存在非管理員用戶,使用如下命令進行權限回收:

REVOKE FILE ON *.* FROM ‘user’;

REVOKE PROCESS ON *.* FROM ‘user’;

REVOKE SUPER ON *.* FROM ‘user’;

REVOKE SHUTDOWN ON *.* FROM ‘user’;

REVOKE CREATE USER ON *.* FROM ‘user’;

REVOKE GRANT OPTION ON *.* FROM user;

其中user為上述查詢到的非管理員用戶。

5.3合理控制DML/DDL操作授權

DML/DDL語句包括創建或修改數據庫結構的權限,例如insert、update、delete、create、drop和alter語句,在任何數據庫中都要控制用戶的此類權限,確保只授權給有業務需求的非管理員用戶。Mysql命令行下執行如下命令:

SELECT User,Host,Db FROM mysql.db WHERE Select_priv=’Y’

OR Insert_priv=’Y’ OR Update_priv=’Y’ OR Delete_priv=’Y’ OR Create_priv=’Y’

OR Drop_priv=’Y’ OR Alter_priv=’Y’;

上述查詢到的用戶只能對特地的數據庫才有相關的權限,使用如下命令進行相關權限的回收:

REVOKE SELECT ON host.database FROM user;

REVOKE INSERT ON host.database FROM user;

REVOKE UPDATE ON host.database FROM user;

REVOKE DELETE ON host.database FROM user;

REVOKE CREATE ON host.database FROM user;

REVOKE DROP ON host.database FROM user;

REVOKE ALTER ON host.database FROM user;

其中user為查詢到的未授權的用戶,host為相關主機,database為相關數據庫。

6、審計和日誌

6.1開啟錯誤日誌審計功能

錯誤日誌包括數據庫運行和停止過程中的一系列活動信息,有助於分析數據庫運行過程中的一些異常活動,一般情況下需要開啟錯誤日誌記錄功能,使用如下命令查詢:

SHOW variables LIKE ‘log_error’;

確保返回結果為非空,如果為空,需要在mysql數據庫配置文件中增加相關配置。

6.2確保日誌存放在非系統區域

日誌文件隨着數據庫的運行會不斷增加,如果存放在系統區域,則會影響系統的正常運行,使用如下命令進行查詢:

SELECT @@global.log_bin_basename;

確保返回結果不是如下路徑:/、/var、/usr

6.3關閉原始日誌功能

原始日誌選項會決定一些敏感信息是否會被明文寫進日誌中,例如查詢日誌、慢查詢日誌、二進制日誌,確保數據庫配置文件中存在如下配置項:

Log-raw = OFF

7、認證

7.1 Old_passwords環境變量設置

Old_passwords決定了使用PASSWORD()函數和IDENTIFIED BY 、CREATE USER 、GRANT 等語句是時的hash算法:

0 – authenticate with the mysql_native_password plugin

1 – authenticate with the mysql_old_password plugin

2 – authenticate with the sha256_password plugin

設置為mysql_old_password代表弱hash算法,可以快速通過密碼字典進行暴力破解。使用如下命令查詢相關值:

SHOW VARIABLES WHERE Variable_name = ‘old_passwords’;

確保返回值不為1。

7.2 secure_auth 選項設置

如果客戶端採用Old_passwords發起連接請求,如果服務器端設置了secure_auth,則客戶端會拒絕連接請求,可以根據安全需求在配置文件中做相應配置。

7.3 密碼保存

確保密碼沒有明文保存在全局配置文件中。

7.4 確保所有用戶都要求使用非空密碼登錄

執行如下語句查詢是否有用戶不需要密碼即可登錄:

SELECT User,host

FROM mysql.user

WHERE (plugin IN(‘mysql_native_password’, ‘mysql_old_password’)

AND (LENGTH(Password) = 0

OR Password IS NULL))

OR (plugin=’sha256_password’ AND LENGTH(authentication_string) = 0);

7.5不存在空賬號

使用如下命令查詢是否存在空賬號:

SELECT user,host FROM mysql.user WHERE user = ”;

8、網絡設置

如果mysql數據庫服務器與應用是跨信任域部署的,則需要考慮在數據庫服務器與應用服務器之間建立ssl通道進行數據傳輸,不過這種場景一般很少見,在此不詳細描述。

9、數據庫備份

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/286576.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-23 03:48
下一篇 2024-12-23 03:48

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • Cron執行日誌用法介紹

    本文將從多個方面對cron執行日誌進行詳細闡述,包括cron執行日誌的定義、cron執行日誌的產生原因、cron執行日誌的格式以及如何解讀cron執行日誌。 一、定義 Cron是一…

    編程 2025-04-29
  • Hibernate日誌打印sql參數

    本文將從多個方面介紹如何在Hibernate中打印SQL參數。Hibernate作為一種ORM框架,可以通過打印SQL參數方便開發者調試和優化Hibernate應用。 一、通過配置…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • 使用Snare服務收集日誌:完整教程

    本教程將介紹如何使用Snare服務收集Windows服務器上的日誌,並將其發送到遠程服務器進行集中管理。 一、安裝和配置Snare 1、下載Snare安裝程序並安裝。 https:…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • Log4j日誌打印到Systemout.log

    Log4j是Apache的一個強大的日誌組件,可以幫助開發者更好地管理日誌。在Java應用程序中,很多開發者都會選擇使用Log4j來實現日誌輸出。本文將介紹如何使用Log4j將日誌…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL數據庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28
  • Python暴力破解wifi密碼

    簡介:本文將從多個方面詳細介紹使用Python暴力破解wifi密碼的方法。代碼實例將被包含在本文中的相關小節中。 一、如何獲取wifi密碼 在使用Python暴力破解wifi密碼之…

    編程 2025-04-27

發表回復

登錄後才能評論