console1984 0.1.17 → 0.1.21
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 +24 -0
- data/app/models/console1984/session/incineratable.rb +1 -1
- data/lib/console1984/ext/active_record/protected_auditable_tables.rb +1 -1
- data/lib/console1984/ext/socket/tcp_socket.rb +2 -2
- data/lib/console1984/refrigerator.rb +1 -0
- data/lib/console1984/shield/modes/protected.rb +5 -0
- data/lib/console1984/shield.rb +0 -1
- data/lib/console1984/version.rb +1 -1
- data/lib/console1984.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d83291f898d099af3d70445ee2f7a9946fab213fcf2932629118926cb17529e9
|
4
|
+
data.tar.gz: 12cc2e2fffcef01d10139744015ec59857e4f1bbaa5a5a6d0c9bcbd052b82180
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ea7adb1db1f616e53be2222be1afbf8830c097c50d7c21506dda2bef0fc99e5434e9c02702725068465f3b6d3d441089525b6b976b257c8cfd5d1996307ffba
|
7
|
+
data.tar.gz: 42d0b445e453c657c5100538cd29a7822c4aa43cfb87f94c3be6a01e3d059dfa0e4e7b060ab02e9e0fc8da939db445cad2148320b5bdd4e0fc8bf889833ca8bc
|
data/README.md
CHANGED
@@ -35,6 +35,9 @@ By default, console1984 is only enabled in `production`. You can configure the t
|
|
35
35
|
config.console1984.protected_environments = %i[ production staging ]
|
36
36
|
```
|
37
37
|
|
38
|
+
Finally, you need to [configure Active Record Encryption](https://edgeguides.rubyonrails.org/active_record_encryption.html#setup) in your
|
39
|
+
project. This is because the library stores the tracked console commands encrypted.
|
40
|
+
|
38
41
|
## How it works
|
39
42
|
|
40
43
|
### Session activity logging
|
@@ -153,6 +156,27 @@ These config options are namespaced in `config.console1984`:
|
|
153
156
|
| `incinerate_after` | The period to keep sessions around before incinerate them. Default `30.days`. |
|
154
157
|
| `incineration_queue` | The name of the queue for session incineration jobs. Default `console1984_incineration`. |
|
155
158
|
|
159
|
+
### SSH Config
|
160
|
+
|
161
|
+
To automatically set the `CONSOLE_USER` env var for sessions, you'll need to configure SSH on the server to accept the environment variable.
|
162
|
+
|
163
|
+
On the server, edit `/etc/ssh/sshd_config` to accept the environment variable:
|
164
|
+
```
|
165
|
+
AcceptEnv LANG LC_* CONSOLE_USER
|
166
|
+
```
|
167
|
+
|
168
|
+
Restart the SSH server to use the new config:
|
169
|
+
```bash
|
170
|
+
service sshd restart
|
171
|
+
```
|
172
|
+
|
173
|
+
On the client side, you can provide this env var from your clients by adding the variable to the ssh config:
|
174
|
+
|
175
|
+
```
|
176
|
+
Host *
|
177
|
+
SetEnv CONSOLE_USER=david
|
178
|
+
```
|
179
|
+
|
156
180
|
## About built-in protection mechanisms
|
157
181
|
|
158
182
|
`console1984` adds many protection mechanisms to prevent tampering. This includes attempts to alter data in auditing tables or monkey patching certain classes to change how the system works. If you find a way to circumvent these tampering controls, please [report an issue](https://github.com/basecamp/console1984/issues).
|
@@ -5,7 +5,7 @@ module Console1984::Ext::ActiveRecord::ProtectedAuditableTables
|
|
5
5
|
%i[ execute exec_query exec_insert exec_delete exec_update exec_insert_all ].each do |method|
|
6
6
|
define_method method do |*args, **kwargs|
|
7
7
|
sql = args.first
|
8
|
-
if Console1984.command_executor.executing_user_command? && sql =~ auditable_tables_regexp
|
8
|
+
if Console1984.command_executor.executing_user_command? && sql.b =~ auditable_tables_regexp
|
9
9
|
raise Console1984::Errors::ForbiddenCommandAttempted, "#{sql}"
|
10
10
|
else
|
11
11
|
super(*args, **kwargs)
|
@@ -6,6 +6,11 @@ class Console1984::Shield::Modes::Protected
|
|
6
6
|
|
7
7
|
thread_mattr_accessor :currently_protected_urls, default: []
|
8
8
|
|
9
|
+
# Materialize the thread attribute before freezing the class. +thread_mattr_accessor+ attributes rely on
|
10
|
+
# setting a class variable the first time they are referenced, and that will fail in frozen classes
|
11
|
+
# like this one.
|
12
|
+
currently_protected_urls
|
13
|
+
|
9
14
|
def execute(&block)
|
10
15
|
protecting(&block)
|
11
16
|
end
|
data/lib/console1984/shield.rb
CHANGED
data/lib/console1984/version.rb
CHANGED
data/lib/console1984.rb
CHANGED
@@ -38,7 +38,7 @@ class_loader.setup
|
|
38
38
|
# the console. For example, to prevent the user from deleting audit trails. See
|
39
39
|
# Console1984::Shield and Console1984::CommandValidator to learn more.
|
40
40
|
module Console1984
|
41
|
-
include Messages
|
41
|
+
include Messages
|
42
42
|
|
43
43
|
mattr_accessor :supervisor, default: Supervisor.new
|
44
44
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: console1984
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jorge Manrubia
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -39,19 +39,19 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rails
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
47
|
+
version: '7.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
54
|
+
version: '7.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: benchmark-ips
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -261,14 +261,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
261
261
|
requirements:
|
262
262
|
- - ">="
|
263
263
|
- !ruby/object:Gem::Version
|
264
|
-
version:
|
264
|
+
version: 2.7.0
|
265
265
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
266
266
|
requirements:
|
267
267
|
- - ">="
|
268
268
|
- !ruby/object:Gem::Version
|
269
269
|
version: '0'
|
270
270
|
requirements: []
|
271
|
-
rubygems_version: 3.
|
271
|
+
rubygems_version: 3.2.32
|
272
272
|
signing_key:
|
273
273
|
specification_version: 4
|
274
274
|
summary: Your Rails console, 1984 style
|