From b8f840ee7a5f751a27c6e6a1c964b1dc806455bf Mon Sep 17 00:00:00 2001 From: Ludovic Cartier Date: Fri, 9 Aug 2024 18:25:26 +0200 Subject: [PATCH] =?UTF-8?q?gro=C3=9Fe=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- home.md | 18 --- mysql/size.md | 28 ---- mysql/user.md | 30 ---- ssh/sshportal.md | 357 ----------------------------------------------- 4 files changed, 433 deletions(-) delete mode 100644 home.md delete mode 100644 mysql/size.md delete mode 100644 mysql/user.md delete mode 100644 ssh/sshportal.md diff --git a/home.md b/home.md deleted file mode 100644 index 8448ae7..0000000 --- a/home.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -toc: no -title: Base de connaissances BrainSys -format: Markdown -... - -- La liste de toutes les pages est disponible [ici](https://wiki.brainsys.io/_index) -- Feeling [lucky](https://wiki.brainsys.io/_random) -- Nous [joindre](mailto:contact@brainsys.io) - -###### M -- MySQL - - [Taille des DB et tables](mysql/size) - - [Gestion des utilisateurs](mysql/user) - -###### S -- SSH - - [SSHPortal](ssh/sshportal) diff --git a/mysql/size.md b/mysql/size.md deleted file mode 100644 index e5bf626..0000000 --- a/mysql/size.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -categories: databases -title: MySQL - Taille des bases de données et tables -format: Markdown -... - -Pour obtenir la taille de *toutes* les bases de données présentes sur le serveur : - -```bash -SELECT table_schema AS 'DB Name', ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) AS 'DB Size in MB' FROM information_schema.tables GROUP BY table_schema; -``` -Pour obtenir la taille d'une base en particulier : - -```bash -SELECT table_schema AS 'DB Name', ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) AS 'DB Size in MB' FROM information_schema.tables WHERE table_schema = '##DBNAME##' GROUP BY table_schema; -``` - -Pour obtenir la taille de toutes les tables d'un base de données spécifique : - -```bash -SELECT TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)` FROM information_schema.TABLES WHERE TABLE_SCHEMA = "" ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC; -``` - -Pour obtenir la taille de toutes les tables de *toutes* les bases de données : - -```bash -SELECT TABLE_SCHEMA AS `Database`, TABLE_NAME AS `Table`, ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024) AS `Size (MB)` FROM information_schema.TABLES ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC; -``` diff --git a/mysql/user.md b/mysql/user.md deleted file mode 100644 index f907e36..0000000 --- a/mysql/user.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -categories: databases -title: MySQL - Gestion des utilisateurs -format: Markdown -... - -#### Obtenir la liste des utilisateurs - -```bash -mysql> SELECT User, Host from mysql.user; -``` - -#### Créer un nouvel utilisateur - -```bash -mysql> CREATE USER ``@`` IDENTIFIED BY ``; -``` - -#### Affecter des droits à un utilisateur - -```bash -mysql> GRANT ALL PRIVILEGES ON .* TO ``@`` IDENTIFIED BY ``; -mysql> FLUSH PRIVILEGES; -``` - -#### Vérifier les droits d'un utilisateur - -```bash -mysql> SHOW GRANTS FOR ``@``; -``` diff --git a/ssh/sshportal.md b/ssh/sshportal.md deleted file mode 100644 index 0b493f2..0000000 --- a/ssh/sshportal.md +++ /dev/null @@ -1,357 +0,0 @@ ---- -categories: ssh -title: SSHPortal - Installation et exploitation -toc: yes -format: Markdown -... - -#### Pré-requis - -_Docker_ doit être installé sur le serveur qui accueillera _SSHPortal_. - -Les lignes pré-fixées de "~" sont à exécuter via SSH. - -Les lignes pré-fixées de "config> " sont à exécuter dans la console d'administration de SSPortal. - -#### Installation - -L'installation se fait via _Docker_ , avec l'image [officielle](https://hub.docker.com/r/moul/sshportal). - -```bash -~ mkdir -p /etc/docker/compose/sshportal/{data,log} -~ cat <> /etc/docker/compose/sshportal/docker-compose.yml -version: "3" - -services: - sshportal: - image: moul/sshportal - container_name: sshportal - restart: unless-stopped - environment: - SSHPORTAL_DEFAULT_ADMIN_INVITE_TOKEN: 'XXXXX' - SSHPORTAL_DB_DRIVER: 'sqlite3' - SSHPORTAL_DATABASE_URL: '/var/lib/sshportal/sshportal.db' - ports: - - 2222:2222 - volumes: - - ./log:/log - - ./data:/var/lib/sshportal/ - - /etc/hosts:/etc/hosts:ro - - /etc/localtime:/etc/localtime:ro - networks: - sshportal: - ipv4_address: 172.19.0.2 - -networks: - sshportal: - ipam: - driver: default - config: - - subnet: 172.19.0.0/24 -EOF -~ docker-compose pull -~ docker-compose up -d -``` - -> A noter qu'il est possible d'utiliser un backend de base de données différents, selon votre choix / goût (MySQL, PostgreSQL, etc). - -#### Initialisation du compte admin - -Pour initialiser le compte _admin_, il faut : - -1. se connecter une première fois avec le token d'invitation _SSHPORTAL_DEFAULT_ADMIN_INVITE_TOKEN_ (défini dans le fichier `docker-compose.yml`) -2. lui fournir une clé SSH qui servira à identifier le compte _admin_ - -> Attention: il est indispensable de créer un clé SSH dédiée à l'administration de _SSHPortal_. - -Nous commencons par générer une clé SSH : - -```bash -~ ssh-keygen -t ed25519 -f ed25519_sshportal_admin -Generating public/private ed25519 key pair. -Enter passphrase (empty for no passphrase): -Enter same passphrase again: -Your identification has been saved in ed25519_sshportal_admin. -Your public key has been saved in ed25519_sshportal_admin.pub. -The key fingerprint is: -SHA256:69qOmaargSULBB1xdG3SlfRsAmoiSdPwBTotnlW6lUI ludal@mbp-ludal-1.home -The key's randomart image is: -+--[ED25519 256]--+ -|..**E.+o.oo. | -|...O.=.o+..o | -| .* B =o . + | -|.. * * o | -|o + . S | -|.= . | -|o . . | -| . .* | -| ..o+=o+ | -+----[SHA256]-----+ -``` - -Puis, on se connecter avec la clé SSH et le token d'invitation (pour rappel, qui est défini dans le fichier `docker-compose.yml`) : - -```bash -~ ssh -i ed25519_sshportal_admin -p 2222 -l invite:XXXXX -``` - -Cela va donc enregistrer la clé SSH "ed25519_sshportal_admin" pour le compte admin de SSHPortal. - -Pour se connecter à la console d'administration de SSHPortal, il faudra donc faire : - -```bash -~ ssh -i ed25519_sshportal_admin -p 2222 -l admin -``` - -#### Configuration - -Pré-requis: pour réaliser toutes les commandes de configuration, il est nécessaire de se connecter à _SSHPortal_ avec le compte _admin_ : - -```bash -~ ssh -i ed25519_sshportal_admin -p 2222 -l admin -``` - -##### Céation d'une clé SSH dédiée - -```bash -config> key create --name my-project -3 -``` - -Cette clé sera à copier sur les serveurs cibles, pour permettra la connexion. - -##### Créer les _hostgroup_ - -```bash -config> hostgroup create --name preprod -config> hostgroup create --name prod -``` - -Vérification : - -```bash -config> hostgroup ls - ID | NAME | HOSTS | ACLS | UPDATED | CREATED | COMMENT ------+---------+-------+------+---------------+---------------+----------------------- - 3 | prod | 0 | 0 | 6 seconds ago | 6 seconds ago | - 2 | preprod | 0 | 0 | 9 seconds ago | 9 seconds ago | - 1 | default | 0 | 1 | 2 minutes ago | 2 minutes ago | created by sshportal -Total: 3 host groups. -``` - -##### Créer les _hosts_ - -```bash -config> host create --name=preprod1 --group=preprod --logging=everything --key my-project root@W.X.Y.Z -config> host create --name=prod1 --group=prod --logging=everything --key my-project root@W.X.Y.Z -``` - -Vérification : - -```bash -config> host ls - ID | NAME | URL | KEY | GROUPS | UPDATED | CREATED | COMMENT | HOP | LOGGING ------+----------+--------------------+---------+-------------+----------------+----------------+---------+-----+------------- - 2 | prod1 | ssh://root@W.X.Y.Z | default | prod | 16 seconds ago | 16 seconds ago | | | everything - 1 | preprod1 | ssh://root@W.X.Y.Z | default | preprod c| 29 seconds ago | 29 seconds ago | | | everything -Total: 2 hosts. -``` - -##### Créer les _usergroup_ - -```bash -config> usergroup create --name foo -config> usergroup create --name bar -``` - -Vérification : - -```bash -config> usergroup ls - ID | NAME | USERS | ACLS | UPDATE | CREATE | COMMENT ------+----------+-------+------+---------------+---------------+----------------------- - 3 | bar | 1 | 0 | 6 seconds ago | 6 seconds ago | - 2 | foo | 1 | 0 | 9 seconds ago | 9 seconds ago | - 1 | default | 1 | 1 | 5 minutes ago | 5 minutes ago | created by sshportal -Total: 3 user groups. -``` - -##### Créer les utilisateurs - -> Il faut 'inviter' les utilisateurs à rejoindre notre instance de SSHPortal, via la commande suivante : - -```bash -config> user invite --name="John Doe" --group foo john.doe@domain.com -User 2 created. -``` - -En retour, SSHPortal va nous fournir un token à utiliser à la première connexion : - -```bash -To associate this account with a key, use the following SSH user: 'invite:XXXXXXXX'. -``` - -Se connecter ensuite une première fois: - -```bash -~ ssh -i my-ssh-key -p 2222 -l invite:XXXXXXX -The authenticity of host '[]:2222 ([]:2222)' can't be established. -ED25519 key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.. -Are you sure you want to continue connecting (yes/no/[fingerprint])? yes -Warning: Permanently added '[]:2222' (ED25519) to the list of known hosts. -Welcome Jon Doe! - -Your key is now associated with the user "john.doe@domain.com". -Connection to closed. -``` - -Cela aura alors pour conséquence de copier la clé SSH publique sur votre compte SSHPortal. - -##### Passer un utilisateur en admin - -Il faut commencer par récupérer la liste des utilisateurs et leur id : - -```bash -config> user ls - ID | NAME | EMAIL | ROLES | KEYS | GROUPS | UPDATED | CREATED | COMMENT ------+----------+---------------------+-------+------+--------------------------------+----------------+----------------+----------------------- - 2 | John Doe | john.doe@domain.com | | 0 | default | 4 seconds ago | 3 minutes ago | - 1 | admin | admin@localhost | admin | 1 | default | 5 minutes ago | 46 minutes ago | created by sshportal -``` - -Nous pouvons maintenant mettre à jour l'utilisateur et le passer en administrateur : - -``` -config> user update --email john.doe@domain.com --assign-role admin 2 -``` - -Vérification : - -```bash -config> user ls - ID | NAME | EMAIL | ROLES | KEYS | GROUPS | UPDATED | CREATED | COMMENT ------+----------+---------------------+-------+------+--------------------------------+----------------+----------------+----------------------- - 2 | John Doe | john.doe@domain.com | admin | 0 | default | 9 seconds ago | 3 minutes ago | - 1 | admin | admin@localhost | admin | 1 | default | 5 minutes ago | 46 minutes ago | created by sshportal -``` - -##### Création des ACL - -_SSHPortal_ permet de gérer finement les accès à chaque host en fonction d'un utilisateur, ou d'un groupe d'utilisateur. - -Pour créer une ACL qui permettra à un groupe d'utilisateur de se connecter à un groupe d'hôte : - -```bash -config> acl create --usergroup foo --hostgroup prod --action allow -config> acl create --usergroup foo --hostgroup preprod --action allow -``` - -Vérification : - -```bash -config> acl ls - ID | WEIGHT | USER GROUPS | HOST GROUPS | HOST PATTERN | ACTION | INCEPTION | EXPIRATION | UPDATED | CREATED | COMMENT ------+--------+-------------+-------------+--------------+--------+-----------+------------+---------------+---------------+----------------------- - 3 | 0 | foo | preprod | | allow | | | 4 minutes ago | 4 minutes ago | - 2 | 0 | foo | prod | | allow | | | 4 minutes ago | 4 minutes ago | - 1 | 0 | default | default | | allow | | | 1 hour ago | 1 hour ago | created by sshportal -Total: 3 ACLs. -``` - -#### Préparation des hosts - -Pour se connecter aux hosts "finaux", il convient de copier la clé SSH de SSHPortal sur le compte _unix_ de votre choix sur chaque host. - -1. on peut ensuite inspecter la clé - -```bash -config> key show my-project -General -======= -Name: my-project -Type: ed25519 -Length: 1 -Comment: - -Relationships -============= -Linked hosts: (0) - -Crypto -====== -authorized_key format: ssh-ed25519 XXXXXXXXX -Private Key: ------BEGIN PRIVATE KEY----- -XXXXXXXXXXXXXXXXXXXXXXXXXXX ------END PRIVATE KEY----- - - -Help -==== -inspect: ssh sshportal key inspect my-project -setup: ssh user@example.com "$(ssh sshportal key setup my-project)" -``` - -2. il faut ensuite récupérer la clé - -```bash -config> key setup my-project -umask 077; mkdir -p .ssh; echo ssh-ed25519 XXXXXXXXXXXXXXXX sshportal >> .ssh/authorized_keys -``` - -3. se connecter sur chaque host et ajouter la clé SSH précédemment récupérée: - -```bash -~ ssh -~ sudo su - -~ umask 077; mkdir -p .ssh; echo ssh-ed25519 XXXXXXXXXXXXXXXX sshportal >> .ssh/authorized_keys -``` - -4. si besoin, adapter la conf de SSH `/etc/ssh/sshd_config` - -```bash -Match Address 1.2.3.4/24 - PermitRootLogin without-password -Match User root - AllowTcpForwarding yes - -AllowUsers root (ne pas effacer les autres entrées !) -``` - -```bash -~ systemctl reload sshd.service -``` - -#### Utilisation de SSHPortal - -Pour se connecter aux hosts via SSHPortal, il suffit de faire : - -```bash -~ ssh -i my-sshportal-key -p 2222 -l -``` - -A noter qu'il serait possible de rajouter une configuration dans votre fichier ".ssh/config" pour faciler les choses : - -```bash -Host portal -Port 2222 -Hostname -IdentityFile my-sshportal-key -``` - -Couplé à un _alias_ dans votre `.bashrc` : - -```bash -alias sshportal="sshportal portal -l $1" -``` - -Cela vous permettra d'utiliser SSHPortal ainsi : - -```bash -~ portal -``` - -#### Référence - -https://github.com/moul/sshportal -https://hub.docker.com/r/moul/sshportal