Login failed知多少



說起Login failed我們首先會想起密碼錯誤,但密碼錯誤只是衆多login failed中的一個,本篇將羅列各類login failed在ERRORLOG中的表現,以及如何提取這類錯誤信息。
通過SQLServer身份驗證連接數據庫,先檢查登錄名是否存在,再驗證密碼是否正確,然後檢查用戶是否被禁用、是否被鎖定、密碼是否過期。
可以用下面語句,重現各種Login failed情況

bubuko.com,布布扣bubuko.com,布布扣
 1 --解除鎖定
 2 ALTER
 3 LOGIN Tear WITH PASSWORD = Tear UNLOCK
 4 --啓用帳戶
 5 ALTER LOGIN Tear ENABLE
 6 --過期帳戶用正確的密碼登錄,運行完後,延長密碼策略中的“密碼最長使用期限”
 7 EXEC MASTER..xp_cmdshell 
 8      bcp "DBA_Monitor.dbo.IPbase" in F:\IPdata\IPbase.txt -S127.0.0.1,5377 -U"Tear" -P"Tear" -c -b2000
 9 --用錯誤的登錄名
10 EXEC MASTER..xp_cmdshell 
11      bcp "DBA_Monitor.dbo.IPbase" in F:\IPdata\IPbase.txt -S127.0.0.1,5377 -U"Tear66" -P"Tear" -c -b2000
12 GO 2     
13 --用錯誤密碼鎖定帳戶,具體次數根據密碼策略調整
14 EXEC MASTER..xp_cmdshell 
15      bcp "DBA_Monitor.dbo.IPbase" in F:\IPdata\IPbase.txt -S127.0.0.1,5377 -U"Tear" -P"Tear1" -c -b2000
16 GO 6
17 --鎖定情況下用正常密碼
18 EXEC MASTER..xp_cmdshell 
19      bcp "DBA_Monitor.dbo.IPbase" in F:\IPdata\IPbase.txt -S127.0.0.1,5377 -U"Tear" -P"Tear" -c -b2000
20 GO 5
21 --禁用帳戶
22 ALTER LOGIN Tear DISABLE
23 --錯誤密碼登錄
24 EXEC MASTER..xp_cmdshell 
25      bcp "DBA_Monitor.dbo.IPbase" in F:\IPdata\IPbase.txt -S127.0.0.1,5377 -U"Tear" -P"Tear1" -c -b2000
26 GO 4
27 --正確密碼登錄
28 EXEC MASTER..xp_cmdshell 
29      bcp "DBA_Monitor.dbo.IPbase" in F:\IPdata\IPbase.txt -S127.0.0.1,5377 -U"Tear" -P"Tear" -c -b2000
30 GO 3
View Code

ERRORLOG錯誤日誌中的信息如下

bubuko.com,布布扣bubuko.com,布布扣
--密碼過期
2014-08-13 21:22:41.370    登錄    錯誤: 18487,嚴重性: 14,狀態: 12014-08-13 21:22:41.370    登錄    Login failed for user Tear.  Reason: The password of the account has expired. [客戶端: 127.0.0.1]
--錯誤的登錄名
2014-08-13 21:23:57.630    登錄    錯誤: 18456,嚴重性: 14,狀態: 52014-08-13 21:23:57.630    登錄    Login failed for user Tear66. 原因: 找不到與提供的名稱匹配的登錄名。 [客戶端: 127.0.0.1]
2014-08-13 21:23:57.750    登錄    錯誤: 18456,嚴重性: 14,狀態: 52014-08-13 21:23:57.750    登錄    Login failed for user Tear66. 原因: 找不到與提供的名稱匹配的登錄名。 [客戶端: 127.0.0.1]
--錯誤的密碼
2014-08-13 21:24:00.720    登錄    錯誤: 18456,嚴重性: 14,狀態: 82014-08-13 21:24:00.720    登錄    Login failed for user Tear. 原因: 密碼與所提供的登錄名不匹配。 [客戶端: 127.0.0.1]
2014-08-13 21:24:00.840    登錄    錯誤: 18456,嚴重性: 14,狀態: 82014-08-13 21:24:00.840    登錄    Login failed for user Tear. 原因: 密碼與所提供的登錄名不匹配。 [客戶端: 127.0.0.1]
2014-08-13 21:24:01.000    登錄    錯誤: 18456,嚴重性: 14,狀態: 82014-08-13 21:24:01.000    登錄    Login failed for user Tear. 原因: 密碼與所提供的登錄名不匹配。 [客戶端: 127.0.0.1]
2014-08-13 21:24:01.210    登錄    錯誤: 18456,嚴重性: 14,狀態: 82014-08-13 21:24:01.210    登錄    Login failed for user Tear. 原因: 密碼與所提供的登錄名不匹配。 [客戶端: 127.0.0.1]
2014-08-13 21:24:01.380    登錄    錯誤: 18456,嚴重性: 14,狀態: 82014-08-13 21:24:01.380    登錄    Login failed for user Tear. 原因: 密碼與所提供的登錄名不匹配。 [客戶端: 127.0.0.1]
2014-08-13 21:24:01.520    登錄    錯誤: 18456,嚴重性: 14,狀態: 82014-08-13 21:24:01.520    登錄    Login failed for user Tear. 原因: 密碼與所提供的登錄名不匹配。 [客戶端: 127.0.0.1]
--鎖定情況下用正常密碼
2014-08-13 21:24:04.920    登錄    錯誤: 18486,嚴重性: 14,狀態: 12014-08-13 21:24:04.920    登錄    Login failed for user Tear because the account is currently locked out. The system administrator can unlock it.  [客戶端: 127.0.0.1]
2014-08-13 21:24:05.050    登錄    錯誤: 18486,嚴重性: 14,狀態: 12014-08-13 21:24:05.050    登錄    Login failed for user Tear because the account is currently locked out. The system administrator can unlock it.  [客戶端: 127.0.0.1]
2014-08-13 21:24:05.330    登錄    錯誤: 18486,嚴重性: 14,狀態: 12014-08-13 21:24:05.330    登錄    Login failed for user Tear because the account is currently locked out. The system administrator can unlock it.  [客戶端: 127.0.0.1]
2014-08-13 21:24:05.630    登錄    錯誤: 18486,嚴重性: 14,狀態: 12014-08-13 21:24:05.630    登錄    Login failed for user Tear because the account is currently locked out. The system administrator can unlock it.  [客戶端: 127.0.0.1]
2014-08-13 21:24:05.840    登錄    錯誤: 18486,嚴重性: 14,狀態: 12014-08-13 21:24:05.840    登錄    Login failed for user Tear because the account is currently locked out. The system administrator can unlock it.  [客戶端: 127.0.0.1]
--禁用帳戶後用錯誤密碼登錄
2014-08-13 21:24:11.950    登錄    錯誤: 18456,嚴重性: 14,狀態: 72014-08-13 21:24:11.950    登錄    Login failed for user Tear. 原因: 評估密碼時出錯。 [客戶端: 127.0.0.1]
2014-08-13 21:24:12.300    登錄    錯誤: 18456,嚴重性: 14,狀態: 72014-08-13 21:24:12.300    登錄    Login failed for user Tear. 原因: 評估密碼時出錯。 [客戶端: 127.0.0.1]
2014-08-13 21:24:12.470    登錄    錯誤: 18456,嚴重性: 14,狀態: 72014-08-13 21:24:12.470    登錄    Login failed for user Tear. 原因: 評估密碼時出錯。 [客戶端: 127.0.0.1]
2014-08-13 21:24:12.600    登錄    錯誤: 18456,嚴重性: 14,狀態: 72014-08-13 21:24:12.600    登錄    Login failed for user Tear. 原因: 評估密碼時出錯。 [客戶端: 127.0.0.1]
--禁用帳戶後用正確密碼登錄
2014-08-13 21:24:16.430    登錄    錯誤: 18470,嚴重性: 14,狀態: 12014-08-13 21:24:16.430    登錄    Login failed for user Tear. Reason: The account is disabled. [客戶端: 127.0.0.1]
2014-08-13 21:24:16.550    登錄    錯誤: 18470,嚴重性: 14,狀態: 12014-08-13 21:24:16.550    登錄    Login failed for user Tear. Reason: The account is disabled. [客戶端: 127.0.0.1]
2014-08-13 21:24:16.680    登錄    錯誤: 18470,嚴重性: 14,狀態: 12014-08-13 21:24:16.680    登錄    Login failed for user Tear. Reason: The account is disabled. [客戶端: 127.0.0.1]
--達到最大併發連接數
2014-08-13 21:26:19.660    登錄    錯誤: 17809,嚴重性: 20,狀態: 32014-08-13 21:26:19.660    登錄    Could not connect because the maximum number of 20 user connections has already been reached. The system administrator can use sp_configure to increase the maximum value. The connection has been closed. [客戶端: 127.0.0.1]
View Code

可以用下面語句篩選,併發送郵件提醒,可根據自己的需求,調整代碼:

bubuko.com,布布扣bubuko.com,布布扣
  1 declare @startTime datetime
  2 declare @endTime datetime
  3 set @startTime = DATEADD(mi,-5,GETDATE())
  4 set @endTime = GETDATE()
  5 insert into Login_Errorlog
  6 exec master.dbo.xp_ReadErrorLog 0, 1, NFailed, Nlogin,@startTime,@endTime
  7 insert into Login_Errorlog
  8 exec master.dbo.xp_ReadErrorLog 0, 1, Nconnections, Nto increase the maximum value,@startTime,@endTime
  9 
 10 select IDENTITY(INT ,1 ,1) Id,a.LoginName,a.Ip,a.Reason,count(a.LoginName) FailedCount 
 11 into #LoginsFailed
 12 from (
 13 SELECT substring(Text,charindex(‘‘‘‘,Text)+1,charindex(‘‘‘‘,Text,charindex(‘‘‘‘,Text)+1)-charindex(‘‘‘‘,Text)-1) LoginName
 14       ,ltrim(rtrim(substring(Text,charindex(‘‘‘‘,Text,charindex(‘‘‘‘,Text)+1)+2,charindex([,text)-charindex(‘‘‘‘,Text,charindex(‘‘‘‘,Text)+1)-3))) Reason
 15       ,ltrim(rtrim(substring(Text,charindex([,text),charindex(],text)-charindex([,text)+1))) Ip
 16   FROM [dbo].[Login_Errorlog]
 17 where LogDate>=dateadd(mi,-5,getdate())
 18   and Text like Login%
 19   ) a
 20   group by a.LoginName,a.Ip,a.Reason
 21   order by count(a.LoginName) desc
 22 
 23 select IDENTITY(INT ,1 ,1) Id,a.Ip,a.Reason,count(a.Ip) FailedCount 
 24 into #ConnectClosed
 25 from (
 26 SELECT substring(Text,1,charindex(.,Text)) Reason
 27       ,ltrim(rtrim(substring(Text,charindex([,text),charindex(],text)-charindex([,text)+1))) Ip
 28   FROM [dbo].[Login_Errorlog]
 29 where LogDate>=dateadd(mi,-5,getdate())
 30   and Text like %connections%
 31   ) a
 32   group by a.Ip,a.Ip,a.Reason
 33   order by count(a.Ip) desc
 34 
 35 DECLARE @html_tb        VARCHAR(MAX)

 36        ,@html_tb1       VARCHAR(MAX)
 37        ,@Subject        VARCHAR(50)
 38        ,@Recipients     VARCHAR(200)
 39 
 40 SET @html_tb = ‘‘
 41 SET @html_tb1 = ‘‘
 42 
 43 IF EXISTS(SELECT 1 FROM #LoginsFailed)
 44 BEGIN
 45     SET @html_tb = 
 46         N<style>td{FONT-FAMILY: 宋體, Helvetica, sans-serif; FONT-SIZE: 12px; LINE-HEIGHT: 20px; TEXT-DECORATION: none;BORDER-BOTTOM: black 1px solid;BORDER-RIGHT: black 1px solid;}th{FONT-FAMILY: 宋體, Helvetica, sans-serif; FONT-SIZE: 12px; LINE-HEIGHT: 20px; TEXT-DECORATION: none;BORDER-BOTTOM: black 1px solid;BORDER-RIGHT: black 1px solid;}</style>
 47                <H1>數據庫登錄失敗檢查(截至+convert(varchar(16),GETDATE(),120)+)</H1>
 48                <table width = "100%" border="0" cellspacing="0" cellpadding="0" style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-RIGHT: black 1px solid;BORDER-TOP: black 1px solid">
 49                <tr><th>自增編號</th><th>登錄名</th><th>登錄IP</th><th>失敗原因</th><th>失敗次數</th>
 50                </tr> +
 51         CAST(
 52             (
 53                 SELECT td = Id
 54                       ,‘‘
 55                       ,td = LoginName
 56                       ,‘‘
 57                       ,td = Ip
 58                       ,‘‘
 59                       ,td = Reason
 60                       ,‘‘
 61                       ,td = FailedCount
 62                       ,‘‘
 63                 FROM   #LoginsFailed
 64                 ORDER BY
 65                        Id
 66                        FOR XML PATH(tr)
 67             ) AS NVARCHAR(MAX)
 68         ) +
 69         N</table><br>
 70 END
 71 IF EXISTS(SELECT 1 FROM #ConnectClosed)
 72 BEGIN
 73     SET @html_tb1 = 
 74         N<style>td{FONT-FAMILY: 宋體, Helvetica, sans-serif; FONT-SIZE: 12px; LINE-HEIGHT: 20px; TEXT-DECORATION: none;BORDER-BOTTOM: black 1px solid;BORDER-RIGHT: black 1px solid;}th{FONT-FAMILY: 宋體, Helvetica, sans-serif; FONT-SIZE: 12px; LINE-HEIGHT: 20px; TEXT-DECORATION: none;BORDER-BOTTOM: black 1px solid;BORDER-RIGHT: black 1px solid;}</style>
 75                <H1>數據庫連接數超限檢查(截至+convert(varchar(16),GETDATE(),120)+)</H1>
 76                <table width = "100%" border="0" cellspacing="0" cellpadding="0" style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-RIGHT: black 1px solid;BORDER-TOP: black 1px solid">
 77                <tr><th>自增編號</th><th>登錄IP</th><th>失敗原因</th><th>失敗次數</th>
 78                </tr> +
 79         CAST(
 80             (
 81                 SELECT td = Id
 82                       ,‘‘
 83                       ,td = Ip
 84                       ,‘‘
 85                       ,td = Reason
 86                       ,‘‘
 87                       ,td = FailedCount
 88                       ,‘‘
 89                 FROM   #ConnectClosed
 90                 ORDER BY
 91                        Id
 92                        FOR XML PATH(tr)
 93             ) AS NVARCHAR(MAX)
 94         ) +
 95         N</table><br>
 96 END
 97     SET @html_tb = @html_tb+@html_tb1
 98     IF @html_tb<>‘‘
 99     EXEC msdb.dbo.sp_send_dbmail
100          @profile_name = Uest
101         ,@recipients = [email protected]
102         ,@body = @html_tb
103         ,@subject = 數據庫登錄失敗檢查
104         ,@body_format = HTML
105 
106 DROP TABLE #LoginsFailed
107 DROP TABLE #ConnectClosed
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章