login_attack_report 0.2.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +8 -3
- data/lib/login_attack_report/l_a_r_version_concern.rb +19 -17
- data/lib/login_attack_report/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50fb79257560920c395c4dd4601307ec6830e65d
|
4
|
+
data.tar.gz: 45ed6e2f496da28277109484f7cbfa1cad78632c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61efa806137b58d78779386550e02dcf3a316e915fa89a3b2e53ad32bba7f5ca74b9e140ea5fec13253aca6e401a7cd60b4a473619655ada13bffc387f326fd1
|
7
|
+
data.tar.gz: efb87ec42dd59bb604750422f14bad0953d3fbd8c17f7ba680680474702b568e5e952bf512cdf4ac60dd9e1423d3ff1dddfdf080759c6eaa5bb7da0e210cd185
|
data/README.md
CHANGED
@@ -52,22 +52,27 @@ end
|
|
52
52
|
前月のログイン成功回数のlimitを超えたユーザを抽出します。
|
53
53
|
※ 異常に多い場合、どこかでID/パスワードが漏れている、もしくはIDが共有されている可能性あり
|
54
54
|
```ruby
|
55
|
-
|
55
|
+
example:
|
56
|
+
# @return ActiveRecord::Relation::ActiveRecord_Relation_PaperTrail_Version. 'attack_count' you can confirm the number of attacks.
|
56
57
|
LoginAttackReport::LARVersion.login_ok_limit_over(:User)
|
58
|
+
|
59
|
+
LoginAttackReport::LARVersion.login_ok_limit_over(:User).first.attack_count
|
57
60
|
```
|
58
61
|
|
59
62
|
|
60
63
|
前月のログイン失敗回数のlimitを超えたユーザを抽出します。
|
61
64
|
※ 異常に多い場合、リスト型攻撃を受けている可能性あり
|
62
65
|
```ruby
|
63
|
-
|
66
|
+
example:
|
67
|
+
# @return ActiveRecord::Relation::ActiveRecord_Relation_PaperTrail_Version. 'attack_count' you can confirm the number of attacks.
|
64
68
|
LoginAttackReport::LARVersion.login_ng_limit_over(:User)
|
65
69
|
```
|
66
70
|
|
67
71
|
|
68
|
-
|
72
|
+
前月のログイン元同一ipのlimitを超えたIPアドレスの一覧を抽出します。
|
69
73
|
※ 同一ipでログイン失敗回数が多かったら、攻撃されている可能性あり
|
70
74
|
```ruby
|
75
|
+
example:
|
71
76
|
# @return Hash IPs list {ip: count, ...}
|
72
77
|
LoginAttackReport::LARVersion.ip_limit_over(:User)
|
73
78
|
```
|
@@ -7,26 +7,28 @@ module LoginAttackReport
|
|
7
7
|
module ClassMethods
|
8
8
|
def login_ok_limit_over(model)
|
9
9
|
PaperTrail::Version
|
10
|
-
.where(item_type: model)
|
10
|
+
.where(item_type: model) \
|
11
11
|
.where(
|
12
|
-
'created_at >= ? and created_at <= ? and '\
|
13
|
-
'object_changes like \'%sign_in_count:%\''
|
14
|
-
Time.now.prev_month.beginning_of_month
|
15
|
-
Time.now.prev_month.end_of_month
|
16
|
-
).
|
12
|
+
'created_at >= ? and created_at <= ? and ' \
|
13
|
+
+ 'object_changes like \'%sign_in_count:%\'' \
|
14
|
+
, Time.now.prev_month.beginning_of_month \
|
15
|
+
, Time.now.prev_month.end_of_month
|
16
|
+
).select('versions.*, count(item_id) as attack_count') \
|
17
|
+
.group(:item_id).having('count(item_id) > ?', LoginAttackReport.login_ok_limit)
|
17
18
|
end
|
18
19
|
|
19
20
|
def login_ng_limit_over(model)
|
20
21
|
PaperTrail::Version
|
21
22
|
.where(item_type: model)
|
22
23
|
.where(
|
23
|
-
'created_at >= ? and created_at <= ? and '\
|
24
|
-
'object_changes not like \'--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\nfailed_attempts:\n- _\n- 0%\' and '\
|
25
|
-
'object_changes not like \'--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\nfailed_attempts:\n- __\n- 0%\' and '\
|
26
|
-
'object_changes like \'--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\nfailed_attempts:%\''
|
27
|
-
Time.now.prev_month.beginning_of_month
|
28
|
-
Time.now.prev_month.end_of_month
|
29
|
-
).
|
24
|
+
'created_at >= ? and created_at <= ? and ' \
|
25
|
+
+ 'object_changes not like \'--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\nfailed_attempts:\n- _\n- 0%\' and ' \
|
26
|
+
+ 'object_changes not like \'--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\nfailed_attempts:\n- __\n- 0%\' and ' \
|
27
|
+
+ 'object_changes like \'--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\nfailed_attempts:%\'' \
|
28
|
+
, Time.now.prev_month.beginning_of_month \
|
29
|
+
, Time.now.prev_month.end_of_month
|
30
|
+
).select('versions.*, count(item_id) as attack_count') \
|
31
|
+
.group(:item_id).having('count(item_id) > ?', LoginAttackReport.login_ng_limit)
|
30
32
|
end
|
31
33
|
|
32
34
|
def ip_limit_over(model)
|
@@ -35,10 +37,10 @@ module LoginAttackReport
|
|
35
37
|
.where(item_type: model)
|
36
38
|
.where(
|
37
39
|
'created_at >= ? and created_at <= ? and '\
|
38
|
-
'(object_changes not like \'--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\nfailed_attempts:\n- _\n- 0%\' and '\
|
39
|
-
'object_changes not like \'--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\nfailed_attempts:\n- __\n- 0%\' and '\
|
40
|
-
'object_changes like \'--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\nfailed_attempts:%\''\
|
41
|
-
')',
|
40
|
+
+ '(object_changes not like \'--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\nfailed_attempts:\n- _\n- 0%\' and '\
|
41
|
+
+ 'object_changes not like \'--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\nfailed_attempts:\n- __\n- 0%\' and '\
|
42
|
+
+ 'object_changes like \'--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess\nfailed_attempts:%\''\
|
43
|
+
+ ')',
|
42
44
|
Time.now.prev_month.beginning_of_month,
|
43
45
|
Time.now.prev_month.end_of_month
|
44
46
|
)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: login_attack_report
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- taru m
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -195,3 +195,4 @@ summary: login attack report in Rails.
|
|
195
195
|
test_files:
|
196
196
|
- spec/login_attack_report_spec.rb
|
197
197
|
- spec/spec_helper.rb
|
198
|
+
has_rdoc:
|