ccgx:root_access
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
ccgx:root_access [2023-01-31 17:05] – dfaber | ccgx:root_access [2024-12-03 11:17] (current) – [3.1 Set access level to Superuser] mvader | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Venus OS: Root Access ====== | ====== Venus OS: Root Access ====== | ||
- | ===== Introduction ===== | + | ===== 1. Introduction ===== |
- | This document explains how to access a GX device via SSH, or straight on the Serial Console, with the root user. It also covers customizing and hardening | + | This document explains how to access a GX device via SSH, or straight on the Serial Console, with the root user. It also covers customizing and hardening |
This document is part of the Venus OS developer documentation. The main document is [[https:// | This document is part of the Venus OS developer documentation. The main document is [[https:// | ||
- | ===== Warning about modifying the rootfs ===== | + | Do note that, while we try to maintain to provide all mentioned functionality in this document, the used commands and functionality may change with future updates. |
+ | |||
+ | ===== 2. Warning about modifying the rootfs ===== | ||
__1. Your changes can be lost during a firmware update__ | __1. Your changes can be lost during a firmware update__ | ||
- | Note that additions made to the rootfs are not safe during an update, as the complete rootfs is replaced during an update. | ||
- | Of course it is always possible to disable automatic firmware updates. Also there is a data partition (/data), which will be left alone in the image updates. More details below. | + | Changes made to the rootfs will be lost in case of a firmware update. The complete rootfs is overwitten during an update. |
+ | |||
+ | Of course it is always possible to disable automatic firmware updates. Also there is a data partition (/data), which will be left alone in the image updates, and as such can be used to, upon boot, (re-)install certain changes onto the active rootfs. More details | ||
__2. It is possible to brick your GX device__ | __2. It is possible to brick your GX device__ | ||
Line 22: | Line 25: | ||
The factory reset procedure, as documented in the normal user manuals of the GX devices, removes everything from the data partition, except for the factory installed files. This will recover from issues caused by problems on the data partition, such as it being full or invalid settings or custom scripts. | The factory reset procedure, as documented in the normal user manuals of the GX devices, removes everything from the data partition, except for the factory installed files. This will recover from issues caused by problems on the data partition, such as it being full or invalid settings or custom scripts. | ||
- | Be careful that it **is** | + | But it will not recover from all possible |
+ | |||
+ | - if you accidentally remove files crucial for the boot process, either on the boot partition or the rootfs, then the device won’t boot anymore. The above mentioned factory reset feature depends on at least certain parts of the system booting up properly. More specifically, | ||
+ | - if you remove the files in / | ||
- | - if you accidentally remove files crucial for the boot process, then the device won’t boot anymore. And above mentioned factory reset feature depends on at least certain parts of the system booting up properly. More specifically, | + | ===== 3. Root access |
- | - if you remove the files in / | + | |
- | ======= Root access ====== | + | ==== 3.1 Set access |
+ | To set the root password, first set the access level to Superuser. | ||
- | ==== Set access level to Superuser ==== | ||
- | To set the root password, first set the access level to Superuser: | ||
- Go to Settings, General | - Go to Settings, General | ||
- | - Set the Access Level to User and installer, the password is ZZZ | + | - Set the Access Level to User and installer, the password is '' |
- Highlight Access Level (don't open the select page, ie. make sure you are in the General Page, not the Access Level page) | - Highlight Access Level (don't open the select page, ie. make sure you are in the General Page, not the Access Level page) | ||
- | - Press and hold the right button of the center pad until you see the Access Level change to Superuser. Note: when working from the Remote Console, you need to use the right key on your keyboard. Pressing and holding the right button with your mouse won't work. | + | - Press and hold the right button of the center pad until you see the Access Level change to Superuser. Note: when working from the Remote Console |
Now you have access to the super user features. | Now you have access to the super user features. | ||
Line 40: | Line 44: | ||
Note that on a touchscreen, | Note that on a touchscreen, | ||
- | ==== Create a temporary root password ==== | + | ==== 3.2 Create a temporary root password ==== |
- | Go to Settings -> General -> Set root password. And create a temporary root password. | + | Go to //Settings -> General -> Set root password//. And create a temporary root password. |
Note that, for firmware version v2.00 and later, the root password will be reset by a firmware update. The reason is that the passwd file is on the rootfs, which is fully replaced by an update. More info [[https:// | Note that, for firmware version v2.00 and later, the root password will be reset by a firmware update. The reason is that the passwd file is on the rootfs, which is fully replaced by an update. More info [[https:// | ||
- | Our advice is to create a root password. But use it to login only the first time, and then install a public ssh key(s). Thereafter login with the keys. If key authentication works, you can also | + | Our advice is to create a complex |
- | safely | + | safely |
- | ==== Enable sshd and log in ===== | + | The password needs to be 6 characters long, minimum. |
+ | ==== 3.3 Enable sshd and log in ===== | ||
- | To login via ssh, enable SSH on LAN (Settings -> General). On Venus versions before v2.40, you need to enable Remote Support, which also enables sshd. More info on Remote Support [[ccgx:ccgx_faq#what_is_the_functionality_behind_the_menu_item_remote_support_ssh_in_the_ethernet_menu|here]]. | + | To login via ssh, enable SSH on LAN (//Settings -> General//). On Venus versions before v2.40, you need to enable Remote Support, which also enables sshd. More info on Remote Support [[https:// |
To the login, enter the ip address of the GX device in a ssh client. Most Linux and Mac users will simply do this from the command line: | To the login, enter the ip address of the GX device in a ssh client. Most Linux and Mac users will simply do this from the command line: | ||
Line 59: | Line 64: | ||
And a very commonly used client for Windows is [[http:// | And a very commonly used client for Windows is [[http:// | ||
- | ==== Working with ssh keys ==== | + | ==== 3.4 Installing |
Using a ssh key for authentication, | Using a ssh key for authentication, | ||
- | First set the root password (once), use that to login, and then copy a public ssh key to ~/ | + | First set the root password (once), use that to login, and then copy a public ssh key to '' |
sshd works with three authorized keys files: | sshd works with three authorized keys files: | ||
- | * ~/ | + | * '' |
- | * ~/ | + | * '' |
- | * / | + | * '' |
The third file contains the keys we use for Remote Support login. | The third file contains the keys we use for Remote Support login. | ||
- | ==== Play time! Start executing commands ==== | + | ==== 3.5 Play time! Start executing commands ==== |
https:// | https:// | ||
- | ======= Customizing a Venus GX device | + | ===== 4. Customizing a GX device ===== |
- | Our recommended method | + | ==== 4.1 Hooks to install/run own code at boot ==== |
- | them via either the '' | + | |
- | will require some maintenance, | + | |
- | ==== Hooks to install/run own code at boot ==== | + | Everything, except for information on '' |
- | Everything, except for information on /data, will be wiped after an update. | + | Therefore, the trick to make changes & modifications survive an update, is to put your (patch)files on ''/ |
- | + | ||
- | Therefore, the trick to make changes & modifications survive an update, is to put files you need on ''/ | + | |
If the files ''/ | If the files ''/ | ||
- | Also if '' | + | Also if '' |
- | There is an extra feature. If the archive | + | That venus-data file has one extra feature: if the archive contains '' |
- | contains | + | |
- | called '' | + | |
- | If it is called '' | + | |
- | archive. | + | |
- | The advice is to put unified patches in the '' | + | You can draw further inspiration from [[https:// |
- | holds patches against the services in '' | + | |
- | want to patch. | + | |
You can test the ' | You can test the ' | ||
Line 109: | Line 104: | ||
https:// | https:// | ||
- | ==== Partitions, read-only rootfs and available disk space ==== | + | ==== 4.2 Partitions, read-only rootfs and available disk space ==== |
On a GX Device, there are three partitions that matter: | On a GX Device, there are three partitions that matter: | ||
Line 117: | Line 112: | ||
* the data partition | * the data partition | ||
- | === One active rootfs at a time === | + | === 4.2.1 One active rootfs at a time === |
Only one of the two rootfs partitions will be in use at time. During a firmware update, the new firmware is installed on the other one; and once finished the subsequent reboot will reboot the device onto that other partition. | Only one of the two rootfs partitions will be in use at time. During a firmware update, the new firmware is installed on the other one; and once finished the subsequent reboot will reboot the device onto that other partition. | ||
Line 123: | Line 118: | ||
The data partition is not touched during a firmware update, except maybe some migration scripts that run at boot. | The data partition is not touched during a firmware update, except maybe some migration scripts that run at boot. | ||
- | === Always prevent running out of diskspace === | + | === 4.2.2 Read-only rootfs === |
+ | |||
+ | By default, the rootfs is mounted read only. Also, by default, it only has 5% of free space, while the partition in which its installed is actually larger. | ||
+ | |||
+ | The recommended method to **(a)** mount it as read/write, and **(b)** expand it to use all of the available space in its partition, is by running ''/ | ||
+ | |||
+ | Here is a short overview of the three ways mount the rootfs as read/ | ||
+ | |||
+ | * // | ||
+ | * // | ||
+ | * // | ||
+ | |||
+ | === 4.2.3 Always prevent running out of diskspace === | ||
When doing modifications, | When doing modifications, | ||
With regards to the size of the data partition, thats easy to check using the '' | With regards to the size of the data partition, thats easy to check using the '' | ||
- | After logging into a GX device, and checking the free disk space on the rootfs(! | + | After logging into a GX device, and checking the free disk space on the rootfs (! that is not the data partition), you might get a bit disappointed at first. Don't worry about that, there will always be only 5% of free space, but thats not the actual free space: |
- | The reason for this is that a firmware update replaces the full filesystem on the rootfs, as an image. And its then not expanded to the full available space of the partition | + | The reason for this is that a firmware update replaces the full filesystem on the rootfs, as an image. And its then **not** by default |
To expand it, run ''/ | To expand it, run ''/ | ||
Line 138: | Line 146: | ||
For actual available diskspace on our GX Devices, see https:// | For actual available diskspace on our GX Devices, see https:// | ||
- | To see what resize2fs.sh is doing, without having to log into your Venus OS, see it also [[https:// | + | To see what '' |
- | Note that a firmware update will replace all of the rootfs, as also explained above. Which implies that you'll need to run resize2fs.sh again after doing a firmware update. | + | Note that a firmware update will replace all of the rootfs, as also explained above. Which implies that you'll need to run '' |
- | ===== Adding or modifying services | + | ==== 4.3 Creating a patch file ==== |
+ | |||
+ | As mentioned before, the recommended way of customising Venus OS is by applying patch files. This section describes how to make and apply a patch. | ||
+ | |||
+ | You start by making a copy of the original file and modifying it to accommodate your changes. In order to create a patch file containing the changes you’ve made, run the following command: | ||
+ | |||
+ | diff -u OriginalFile UpdatedFile > PatchFile | ||
+ | |||
+ | In order to patch the original file with your changes, you can use the below command: | ||
+ | |||
+ | patch OriginalFile < PatchFile | ||
+ | |||
+ | For more advanced features please check the manual page of [[https:// | ||
+ | |||
+ | In this thread, there is an example of how to make a patch file to change a certain setting in the GX, and how to apply that at boot. To make it survive a firmware update: | ||
+ | https:// | ||
+ | |||
+ | ==== 4.4 Adding or modifying services ==== | ||
Changes made to ''/ | Changes made to ''/ | ||
Line 151: | Line 176: | ||
''/ | ''/ | ||
- | By default the root filesystem of Venus is read-only. You can change that in | + | Further details here: https://github.com/ |
- | three ways: | + | |
- | + | ||
- | - _temporally_: issue the command '' | + | |
- | - _semi-permanent_: | + | |
- | - _permanent_: | + | |
- | ======= Hardening a Venus GX device | + | ===== 5. Hardening a GX device ===== |
- | ===== Limit physical access to the device | + | ==== 5.1 Limit physical access to the device ==== |
The first thing to keep in mind is that we as Victron Energy always want an | The first thing to keep in mind is that we as Victron Energy always want an | ||
Line 172: | Line 192: | ||
input of the Cerbo that will ring as soon as the door of the rack opens. | input of the Cerbo that will ring as soon as the door of the rack opens. | ||
- | People with enough time, knowledge and an angle grinder on their hands will | + | People with enough time, knowledge and for example |
always be able to get in. But you will probably be able to tell if people did | always be able to get in. But you will probably be able to tell if people did | ||
get access to the device. Also keep in mind that extra physical security will | get access to the device. Also keep in mind that extra physical security will | ||
also give extra hassle for the people that are allowed to get the physical | also give extra hassle for the people that are allowed to get the physical | ||
- | access to the device. They will need to get the key from a security officer | + | access to the device. |
- | first. Once setup correctly, there is no need to physically access a GX device | + | |
- | after installing. So the key could and should be kept off-site. | + | |
- | ===== Disable touch on the attached screen | + | ==== 5.2 Disable touch on the attached screen ==== |
- | Apart for physical access restrictions, | + | Per Venus OS version v3.00, we are introducing a feature that allows disabling |
- | also be restricted. As soon as an intruder gains console access, he can also | + | |
- | startup ssh on the LAN and temporally change the root password. With the new | + | |
- | dbus setting ''/ | + | |
- | is possible to lock the touch part of the device from being used. This option | + | |
- | is available from v3.00~15 and on wards. | + | |
- | ===== Limiting digital access | + | This allows mounting the GX Touch where it is visible by the operators of the system; and at the same time prevent them from using that to elevate their access. |
+ | |||
+ | Details per GX device: | ||
+ | * Ekrano GX: a digital input can be configured to be used for this. Wire it to a momentary-push button, that shorts the input (grounds it). | ||
+ | * Cerbo GX + GX touch: a digital input can be configured to be used for this. Wire it to a momentary-push button, that shorts the input (grounds it). | ||
+ | * Venus GX: has no screen, not relevant. | ||
+ | * Color Control GX: will not get this feature. | ||
+ | |||
+ | Inside Venus OS, this is handled by the setting ''/ | ||
+ | |||
+ | Note that this setting only disables touch/mouse control. On the remote console you are still able to control the device with keyboard input. That is also true if you plugin an external USB keyboard. With the keyboard it is also possible to toggle the ''/ | ||
+ | |||
+ | ==== 5.3 Limiting digital access | ||
When securing the device, it is also advised to disable the Wi-Fi access point, | When securing the device, it is also advised to disable the Wi-Fi access point, | ||
Line 201: | Line 226: | ||
* Disable LAN SSH | * Disable LAN SSH | ||
* Disable LAN remote console (VNC) | * Disable LAN remote console (VNC) | ||
+ | * Disable Modbus TCP | ||
+ | * Disable MQTT (via SSL, plaintext and VRM) | ||
- | If you have multiple devices to harden, | + | If you have multiple devices to harden, |
- | a scriptable way of changing these settings | + | a scriptable way. Note that we might change those commands, or names and locations |
- | the above settings you could script | + | |
#!/bin/bash | #!/bin/bash | ||
Line 215: | Line 241: | ||
Disable LAN ssh; | Disable LAN ssh; | ||
Disable LAN Remote console (VNC); | Disable LAN Remote console (VNC); | ||
+ | Disable Modbus TCP; | ||
+ | Disable Modbus TCP (Plaintext); | ||
+ | Disable MQTT on LAN (SSL); | ||
+ | Disable MQTT on LAN (Plaintext); | ||
+ | Disable MQTT via VRM; | ||
" | " | ||
| | ||
Line 231: | Line 262: | ||
that. | that. | ||
- | ===== Installing a tempar | + | ==== 5.4 Installing a tamper |
By using the digital input(s) of the GX device, you can set the digital | By using the digital input(s) of the GX device, you can set the digital | ||
inputs as "// | inputs as "// | ||
- | Depending on the need, you might want to switch to a silent alarm | + | Depending on the need, you might want to switch to a silent alarm under //General -> Audible alarm// |
(service: '' | (service: '' | ||
Line 243: | Line 274: | ||
inverted. | inverted. | ||
- | - To swap the labels attached to the alarm, set Inverted to on. | + | * To swap the labels attached to the alarm, set //Inverted// to on. |
- | - If a logical low input (0V) should be considered a positive condition, set Inverted alarm logic to on. | + | |
- | ===== Hardening multiple devices | + | ==== 5.5 Hardening multiple devices ==== |
If you have a lot of Venus devices to modify, probably the easiest way is to | If you have a lot of Venus devices to modify, probably the easiest way is to | ||
Line 256: | Line 287: | ||
Later replace that by something more strong and store it in your vault. Use the USB stick to put your public ssh keys on the GX device so you can gain remote access. | Later replace that by something more strong and store it in your vault. Use the USB stick to put your public ssh keys on the GX device so you can gain remote access. | ||
- | ====== | + | ===== 6. Connecting on the serial console ===== |
- | + | ||
- | === Introduction | + | |
The serial console offers a straight connection from your computer. Not relying on TCP or anything else. | The serial console offers a straight connection from your computer. Not relying on TCP or anything else. | ||
Line 268: | Line 297: | ||
The serial consoles on all GX devices are configured to 115200 baud. | The serial consoles on all GX devices are configured to 115200 baud. | ||
- | === Serial console on GX device | + | ==== 6.1 Color Control |
All GX Devices have a dedicated serial console, except for the CCGX. Therefor its documented on a separate page: | All GX Devices have a dedicated serial console, except for the CCGX. Therefor its documented on a separate page: | ||
Line 274: | Line 303: | ||
[[https:// | [[https:// | ||
- | === Serial Console on Cerbo GX === | + | ==== 6.2 Cerbo GX ==== |
The serial console is located on the CPU board, header JP201. GND is pin 1, RX and TX are pins 4 and 5. Here is a picture showing a [[https:// | The serial console is located on the CPU board, header JP201. GND is pin 1, RX and TX are pins 4 and 5. Here is a picture showing a [[https:// | ||
Line 282: | Line 311: | ||
{{ : | {{ : | ||
- | === Serial Console on Venus GX === | + | ==== 6.3 Venus GX ==== |
The serial console is located on the base-board, and can be accessed through the slot between that board and the Ethernet connector on the beaglebone-board. | The serial console is located on the base-board, and can be accessed through the slot between that board and the Ethernet connector on the beaglebone-board. | ||
Line 296: | Line 325: | ||
{{ : | {{ : | ||
- | === Serial console on GX Card / Nanopi === | + | ==== 6.4 GX Card / Nanopi |
The GX Card is the PCBA inside the MultiPlus-II GX and EasySolar-II GX product ranges. This photo shows the card, when unmounted from these inverter/ | The GX Card is the PCBA inside the MultiPlus-II GX and EasySolar-II GX product ranges. This photo shows the card, when unmounted from these inverter/ | ||
Line 307: | Line 336: | ||
- | === Serial console on Octo GX === | + | ==== 6.5 Octo GX ==== |
The serial console is located on the base-board, and can be accessed with the top-board unmounted. With the serial console cable connected the top-board can be put back on again. | The serial console is located on the base-board, and can be accessed with the top-board unmounted. With the serial console cable connected the top-board can be put back on again. | ||
Line 321: | Line 350: | ||
{{ : | {{ : | ||
+ | |||
+ | ==== 6.6 Ekrano GX ==== | ||
+ | |||
+ | Getting to console on the Ekrano GX is not that easy. The pins are located between the network and USB connector on the back of the device. | ||
+ | |||
+ | - Black: ground | ||
+ | - NC | ||
+ | - NC | ||
+ | - Green: RX of the Ekrano GX - connect to TX on your cable | ||
+ | - White: TX of the Ekrano GX - connect to RX on your cable | ||
+ | - NC | ||
+ | |||
+ | {{ : |
ccgx/root_access.1675181153.txt.gz · Last modified: 2023-01-31 17:05 by dfaber