Skip to main content

03-Exploitation

A - Commandes :

1. Gestion du stockage :

Gestion du storage pool BTRFS

# Afficher le storage pool :
lxc storage list
lxc storage show lxc-storage01
lxc storage list info lxc-storage01

# Affiche l'espace disque du volume BTRFS :
sudo btrfs filesystem show

Gestion des fichiers des CT :

Accès au stockage des CT : 
# Emplacement : 
/var/snap/lxd/common/mntns/var/snap/lxd/common/lxd/storage-pools/lxc-storage01/containers/CT/rootfs

# Lien symbolique du CT : 
ln -s /var/snap/lxd/common/mntns/var/snap/lxd/common/lxd/storage-pools/lxc-storage01/containers/CT/rootfs/ /home/adminme/CT

2. Commandes LXC :

Gestion LXC

# Gestion des profiles :
lxc profile list
lxc profile show default

# Gestion des réseaux :
lxc network list
lxc network show lxdbr0

# Afficher les informations d'un CT :
lxc info CT-NAME
lxc info --show-log CT-NAME
lxc show CT-NAME

# Se connecter dans un CT :
lxc exec CT-NAME bash

# Editer la configuration d'un CT :
lxc config edit CT-NAME

# Démarrage d'un serveur d'un CT :
lxc exec CT-NAME service -- ssh start

###################################
Source : https://www.cyberciti.biz/faq/create-snapshots-with-lxc-command-lxd/
### Gestion des snapshots d'un CT :
# Créer un snapshot :
lxc snapshot CT-NAME Snapname

# Vérifier les snapshots :
lxc info CT-NAME

# Restaurer un snapshot :
lxc restore CT-NAME Snapname

# Supprimer un snapshot :
lxc delete CT-NAME/Snapname
lxc delete CT-NAME/Snapname -i # Force la confirmation

lxc copy CT-NAME01/base030423 CT-NAME02
lxc delete CT-NAME/base090323

# Liste de l'image LXD intégrée pour diverses distributions Linux :
# Pour répertorier toutes les images LXD, exécutez :
lxc image list images: | grep -i ubuntu

Gestion des conteneurs

# Création d'un conteneur BASE qui servira de template :
# Syntaxe : lxc launch images:{distro}/{version}/{arch} {container-name-here}
lxc launch ubuntu:22.04 BASE

# Lister les conteneurs :
lxc list

# Répertorier les instances de conteneur Linux
# Nous pouvons répertorier les conteneurs existants en utilisant la syntaxe suivante et la commande grep / commande egrep en tant que pipe :
lxc list --fast
lxc list | grep RUNNING
lxc list | grep STOPPED
lxc list | grep -i opensuse
lxc list "*c1*"
lxc list "*c2*"
Comment exécuter/exécuter la commande spécifiée dans un conteneur

Nous exécutons ou exécutons des commandes dans des conteneurs à l'aide de la commande exec comme suit :

lxc exec containerName -- command
lxc exec containerName -- /path/to/script
lxc exec containerName --env EDITOR=/usr/bin/vim -- command
### run date, ip a, ip rm and other commands on various containers ###
lxc exec cenots-8-c2 -- date
lxc exec cenots-8-c2 -- ip a
lxc exec ubuntu-focal-c5 -- ip r
lxc exec fedora-31-c9 -- dnf -y update
lxc exec debian-10-www -- cat /etc/debian_version
Comment obtenir l'accès au shell bash dans un conteneur

Vous voulez obtenir un accès login/shell dans un conteneur nommé debian-10-www, entrez : Maintenant, vous pouvez exécuter des commandes ou installer des packages. Par exemple, utilisez la commande apt / la commande apt-get à l' intérieur du conteneur : tapez simplement exit pour revenir à l'hôte :

lxc exec {container-name} {shell-name}
lxc exec debian-10-www bash
lxc exec CT-NAME bash
lxc exec alpine-c1 sh
# cat /etc/*issue*
# apt update
# apt upgrade
# exit
Autres commandes
# Comment afficher des informations sur les serveurs et conteneurs LXD ?
lxc info
lxc info {container-name}
lxc info opensuse15-1-c10
lxc info -n CT-ID

# Vérifier la config :
lxc checkconfig 

# Extraire un fichier du conteneur
lxc file pull {continer-nane}/{path/to/file} {/path/to/local/dest}
lxc file pull ubuntu-xenial-c3/var/www/nginx/app/config.php .

# Copier et récupérer des fichiers d'un CT :
# Il est possible de transférer des fichiers vers un CT : PUSH
# Mais également de récupérer des fichiers depuis un CT : PULL 
# Pousser un fichier vers le conteneur
lxc file push {/path/to/file} {continer-nane}/path/to/dest/dir/
lxc file push config.php ubuntu-xenial-c3/var/www/nginx/app/
# PUSH d'un fichier vers un CT :
lxc file push /home/adminme/file.txt CT-NAME/tmp/
# PUSH d'un dossier vers un CT :
lxc file push -r /home/adminme/DOSSIER CT-NAME/tmp/
# PULL d'un fichier depuis un CT :
lxc file pull /home/adminme/file.txt CT-NAME/tmp/
# PULL d'un dossier depuis un CT :
lxc file pull -r CT-NAME/tmp/DOSSIER /home/adminme/ 


# Obtenir de l'aide sur les commandes lxc
lxc --help
lxc {command} --help
lxc list --help

# Gestion d'in Conteneur :
lxc start CT-ID
lxc restart CT-ID
lxc stop CT-ID
lxc delete CT-ID
lxc stop ubuntu-xenial-c3 && lxc delete ubuntu-xenial-c3

# Configurer l'autostart d'un CT :
lxc config set CT-ID boot.autostart true

B - Procédure de création d'un CT :

1. Création d'un CT :

# Déclarer la variable :
CTNAME=MONCT01
# Création du conteneur :
lxc launch ubuntu:22.04 $CTNAME

# Configurer l'autostart d'un CT :
lxc config set $CTNAME boot.autostart true

2. Paramétrage :

Editer le fichier de configuration afin de paramétrer une adresse IP fixe et le forward de port.

Configuration réseau et forward de port :

Il est nécessaire de bien renseigner le fichier de zone DNZ "lxc.morbihan-energies.fr" afin d'attribuer une adresse IP sur le réseau LXC (non routé).

# Editer le fichier de configuration :
lxc config edit $CTNAME

Ajouter les lignes suivantes :

  devices:
    eth0:
      ipv4.address: 192.168.25.XXX
      name: eth0
      network: lxdbr0
      type: nic
  port52201:
      connect: tcp:0.0.0.0:22
      listen: tcp:192.168.1.31:52201
      type: proxy
  port53080:
      connect: tcp:0.0.0.0:80
      listen: tcp:192.168.1.31:53080
      type: proxy

Création du compte d'admin :

# Se connecter dans le conteneur :
lxc exec $CTNAME bash

# Créer un utilisateur :
useradd adminme

# Ajouter un utilisateur au groupe sudo :
usermod -aG sudo adminme

# Modifier le mot de passe :
passwd adminme
passwd root

# Création de l'arborescence pour le déploiement des clés SSH :
mkdir /home/adminme/.ssh
vi /home/adminme/.ssh/auadminmethorized_keys
chown -R adminme:adminme /home/adminme/.ssh




# Autoriser un sudo sans demande de mot de passe :
sudo visudo

# Ajouter les lignes ci-dessous :
%sudo   ALL=(ALL:ALL) NOPASSWD:ALL

Configuration de la connexion SSH :

# Autoriser la connexion par mot de passe :
vi /etc/ssh/sshd_config

#Ajouter les lignes suivantes à la fin du fichier de conf :
----------------------------------------------------------
# Autoriser connexion par mot de passe :
PasswordAuthentication yes

# JKT-20220517 - Connexion Guacamole :
# Source : http://shaarli.guiguishow.info/?4DVyLA
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedAlgorithms +ssh-rsa
----------------------------------------------------------

# Redémarrer le service SSH :
/etc/init.d/ssh restart

B - CT-BASE :

1. Description :

SSS-Titre 1

Titre 1

Ce Conteneur a pour objectif d'être un Template qui pourra être déployé en dupliquant un snapshot.

1. Installation :

Cette procédure n'est pas encore terminée

# Prérequis :
apt update && apt upgrade -y
apt install software-properties-common bash-completion wget git  -y

# Installation de nginx :

# Installation de php-fpm :
$ sudo apt install php-fpm


vi parametres.php
vi /etc/nginx/sites-enabled/
vi /etc/nginx/sites-enabled/default

1. Exploitation :

Cette procédure n'est pas encore terminée