• Aucun résultat trouvé

KEEP - Fiche procédure Documentation. Release latest

N/A
N/A
Protected

Academic year: 2022

Partager "KEEP - Fiche procédure Documentation. Release latest"

Copied!
17
0
0

Texte intégral

(1)

Jun 16, 2017

(2)
(3)

1 A simple example 1

2 Get the code 3

3 Contents 5

3.1 Overview . . . 5 3.2 Fiche procédure - Installation de la plateforme . . . 5

4 What’s with the name? 13

(4)

ii

(5)

A simple example

sudo rm -Rf /lolilol

(6)

KEEP - Fiche procédure Documentation, Release latest

2 Chapter 1. A simple example

(7)

Get the code

Wait I have just begin printf("Hello world");

return 1/0;

(8)

KEEP - Fiche procédure Documentation, Release latest

4 Chapter 2. Get the code

(9)

Contents

Overview

Ohh see that landscape

Questionnaire

Quelle est votre profession ? Quel a été votre parcours ?

Quels compétences avez-vous acquises ? some literal text

This may also be used inline at the end of a paragraph, like so:

some more literal text

print("A literal block directive explicitly marked as python code")

Fiche procédure - Installation de la plateforme

A1. OS

Le système d’exploitation hôte de la plateforme est Debian 9 x86_64. L’installation de ce dernier est recommandé afin de garder une compatibilité avec les logiciels et la configuration de cette documentation.

(10)

KEEP - Fiche procédure Documentation, Release latest

Installation

Lors de l’installation il sera nécessaire de créer une session keep et de définir le nom de domaine du serveur à pst.esiea.fr.

Lorsque l’assistant demandera quels logiciels installer, choisir :

• serveur SSH ;

• utilitaires usuels du système.

Le reste de l’installation s’effectue de manière classique et le choix des options n’influera pas sur l’installation de la plateforme.

Une fois que la distribution est installée, vérifiez votre configuration réseau à l’aide de la suite de commandes ip.

Lorsque le réseau fonctionne, il faut commencer par synchroniser les dépôts, faire les mises à jour et installer quelques paquets basiques nécessaires à la plateforme : :: su # Entrez votre mot de passe root

apt update apt upgrade apt install unzip

Quelques paquets sont requis pour le fonctionnement de la plateforme.

Installation desudo. Le paquetsudopermettra de gérer plus finement les droits des utilisateurs. Tout d’abord, installez ce paquet : :: apt install sudo

Par défaut, cet outil autorise les utilisateurs du groupesudoà pouvoir lancer des commandes en tant que superutilisa- teur. Afin de pouvoir profiter de cela, ajoutez le groupesudoà l’utilisateurkeep:

usermod -a -G sudo keep

Afin que les modifications soient prises en compte, il est nécessaire de se déconnecter puis se reconnecter en tant qu’utilisateurkeep.

A2. DNS

L’installation d’un serveur DNS sur le serveur est primordial afin de gérer l’accès aux différents conteneurs via l’utilisation de noms de domaine.

Installation

Le paquet nécessaire peut être installé via la commande suivante [::] sudo apt install dnsmasq begin‘‘‘shell= # Création du répertoire sudo mkdir -p /usr/share/keep/dns

# Création du fichier de configuration sudo touch /usr/share/keep/dns/containers.conf

# Donne les droits à l’utilisateur keep sudo chown -R keep:keep /usr/share/keep‘‘‘

Redémarrez le serveur DNS et activez le lancement au démarrage : ‘‘‘shell= # Redémarrage du service sudo systemctl restart dnsmasq

# Activation au démarrage sudo systemctl enable dnsmasq

#### Sécurité

#### Tests

Afin de tester le service il est possible d’ajouter quelques lignes dans le fichier/usr/share/keep/dns/containers.conf.

Voici un exemple qui être utilisé pour réaliser le test : `shell= 1.2.3.4 test.pst.esiea.fr 5.6.7.8 test.local `

6 Chapter 3. Contents

(11)

test.local @127.0.0.1 `

Si tout fonctionne vous devriez retrouver les adresses ip insérées précédemment. N’oubliez pas de retirer les lignes de test du fichier de configuration.

### A3. Service Web

Le service web est la porte d’entrée de notre plateforme. Il permettra d’accéder au site principal et aux différents conteneurs. Le serveur qui sera utilisé est Nginx.

#### Installation (Nginx / Plugins PHP)

Voici les paquets qui doivent être installés : `shell= sudo apt install nginx php7.0 php7.0-fpm php7.0-mysql php7.0-ldap php7.0-intl php7.0-xml composer `

Configuration de PHP. Certains modules doivent être ajoutés dans la configuration de PHP. Éditez le fichier /etc/php/7.0/fpm/php.iniavec les droits superutilisateur.

Dans la section Dynamic Extensions, ajoutez les lignes suivantes : `shell= extension=php_ldap.so extension=php_pdo_mysql.so `

Modifiez le fichier /etc/nginx/nginx.conf afin de remplacer la ligne user www-data par user keep. De même dans le fichier /etc/php/7.0/fpm/pool.d/www.conf, remplacez www-data par keep pour les lignes suivantes : ` user = www-data group = www-data ... listen.owner = www-data listen.group = www-data `

Supprimez les fichiers de configuration par défaut : `shell= sudo rm /etc/nginx/sites-enabled/

default sudo rm /etc/nginx/sites-available/default sudo rm -r /var/www/html ` Copiez la configuration du serveur web dans le fichier/etc/nginx/sites-available/keeppuis faites des liens symboliques afin d’activer la configuration : ‘‘‘shell= # Activation de la configuration du serveur web sudo ln -s /etc/nginx/sites- available/keep /etc/nginx/sites-enabled/keep

# Lien symbolique vers le répertoire www sudo ln -s /home/keep/www /var/www/keep‘‘‘

Pour ne pas avoir d’erreurs lors du lancement de nginx, créez les répertoires de log : `shell= sudo mkdir -p /var/log/nginx/keep/{containers,dev,unwanted} `

Redémarrez enfin les services nginx et php-fpm pour vérifier qu’il n’y a pas d’erreurs de configuration : `shell=

sudo systemctl restart php7.0-fpm nginx `

#### Sécurité

Il peut être intéressant de cacher certaines informations relatives au serveur web afin d’empêcher certaines personnes malveillantes d’y avoir accès.

Pour cela, installez le paquetnginx-extras:`shell= sudo apt install nginx-extras `

Puis ajoutez les lignes suivantes dans le fichier/etc/nginx/nginx.conf au début du blochttppuis redémarrez à nouveau nginx :`shell= server_tokens off; # Cache la version de Nginx more_clear_headers Server; # Cache le nom du serveur web `

Dans un deuxième temps nous allons installerfail2ban, un logiciel analysant différents fichiers de log pour détecter des comportants suspects et bannir les clients trop instants.

`shell= sudo apt install fail2ban `

(12)

KEEP - Fiche procédure Documentation, Release latest

Les fichiers de configuration de fail2ban se trouvent dans le répertoire/etc/fail2ban/. Il est possible de choisir quels services nous souhaitons monitorer via le fichierjail.conf. Dans le cas de notre plateforme, nous souhaitons bloquer toutes les personnes faisant des requêtes anormales. La configuration Nginx qui a été réalisée demande au serveur web de placer toutes les requêtes suspectes dans les fichiers/var/log/nginx/keep/unwanted/*.log. Nous allons donc rajouter une règle à la fin du fichier jail.conf : `shell= [nginx-keep-limit] enabled = true filter = nginx-keep-limit port = http,https logpath = /var/log/nginx/keep/unwanted/*.

log findtime = 600 bantime = 7200 maxretry = 5 `

Suite à cela nous devrons définir un filtre lié à cette configuration. Créez le fichier/etc/fail2ban/filter.d/nginx-keep- limit.conf et placez-y le contenu suivant :‘‘‘shell= # Fail2Ban configuration file #

[Definition]

failregex = <HOST> .+

# Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT # ignoreregex =‘‘‘

Vous pouvez désormais redémarrer fail2ban pour que les modifications soient effectives : `shell= sudo systemctl restart fail2ban `

Activez de la même manière le démarrage automatique du service : `shell= sudo systemctl enable fail2ban `

#### Tests

### A4. LXC

LXCest la suite logicielle permettant de créer des conteneurs.

#### Installation

Commencez tout d’abord par installer le paquetlxc:`shell= sudo apt install lxc `

Dans un second temps, vous devrez définir une configuration par défaut de manière à pemettre la création de conteneurs non privilégiés. Creez le répertoire suivant :`shell= mkdir -p ~/.config/lxc `Voici la configuration à mettre en place dans le fichier ~/.config/lxc/default.conf : ‘‘‘= lxc.id_map = u 0 100000 65536 lxc.id_map = g 0 100000 65536 lxc.mount.auto = proc:mixed sys:ro cgroup:mixed

lxc.network.type = veth lxc.network.link = lxcbr0 lxc.network.flags = up‘‘‘

Ces deux premières lignes doivent correspondre aux deux dernières valeurs retournées par ces deux commandes :

‘‘‘shell= # Ligne 1 cat /etc/subuid | grep $USER

# Ligne 2 cat /etc/subgid | grep $USER‘‘‘

Autorisez la création de conteneurs en mode non privilégiés : `shell= sudo sh -c 'echo "kernel.

unprivileged_userns_clone=1" > /etc/sysctl.d/80-lxc-userns.conf' sudo sysctl kernel.unprivileged_userns_clone=1 `

Le réseau interne de lxc doit aussi être configuré en définissant les valeurs suivantes dans le fichier /etc/default/lxc-net : `shell= USE_LXC_BRIDGE="true" LXC_BRIDGE="lxcbr0" LXC_ADDR="10.

3.0.1" LXC_NETMASK="255.255.0.0" LXC_NETWORK="10.3.0.0/16" `

Puis enfin, le fichier/etc/lxc/lxc-usernetpermettra à un utilisateur d’utiliser le bridge lxclxcbr0: `shell= keep veth lxcbr0 65000 `Cette ligne autorise l’utilisateurkeepà utiliser le bridgelxcbr0avec 65 000 conteneurs.

Maintenant que LXC et le Dnsmasq sont installés, il faut savoir que ces deux-ci rentrent en conflit lors du redémarrage du serveur. En effet, nous utilisons Dnsmasq pour la gestion des noms de domaine mais LXC l’utilise aussi pour l’allocation d’adresses IP pour ses conteneurs. Cependant, nous n’avons pas besoin de cette fonctionnalité et cette dernière n’est pas désactivable simplement. Nous allons donc créer un service avecsystemd. Créez un fichier dans /lib/systemd/system/dnsmasqlxc.service et placez-y le contenu suivant : ‘‘‘shell= [Unit] Description=Kill Dnsmasq started by lxc-net After=lxc-net.service Before=dnsmasq.service

8 Chapter 3. Contents

(13)

sudo systemctl start dnsmasq

` :::warning Placer les scripts dans /usr/share/keep/scripts ```shell= sudo mkdir -p /usr/share/keep/scripts `::

#### Sécurité

#### Tests

### B1. MariaDB

MariaDBest le système de gestion de bases de données de notre plateforme. Pour plus de sécurité, ce dernier est installé au sein d’un conteneur.

#### Installation

Création d’un conteneur.:::warning Le conteneur de type Debian/Ubuntu pose quelques problèmes : problèmes de PATH, locales. Debian : manque les logiciels de base : ping, vim, vi, nano, ... `shell= lxc-create -n database -t download -- --dist debian --release stretch --arch amd64 `::

```shell=

lxc-create -n database -t download – –dist ubuntu –release xenial –arch amd64‘‘‘

Installation du système de gestion de bases de données.:::warning Lors du retest général, vérifier si le conteneur démarre bien. Si ce n’est pas le cas, il faudra inviter l’utilisateur à se déconnecter/connecter.:::‘‘‘shell= # Démarrage du conteneur lxc-start -n database

# Configuration du réseau export CT_IP=10.3.0.2; lxc-attach -n database < /usr/share/keep/scripts/utils/setNetwork.sh;

unset CT_IP;

# Génération des locales lxc-attach -n database /usr/sbin/locale-gen fr_FR.UTF-8

# Accès au conteneur lxc-attach -n database su‘‘‘

À partir de là, vous devriez être en root dans le conteneur. L’installation de MariaDB peut alors être réalisée.

`shell= # Installation de MariaDB apt install mariadb-server `

Configurez la base de données :`shell= mysql_secure_installation `Définissez un mot de passe pour le compterootet répondez positivement aux questions posées.

Éditez ensuite le fichier/etc/mysql/mariadb.conf.d/50-server.cnf afin de changer l’adresse d’écoute du serveur mysql pour pouvoir y accéder depuis le système hôte : `shell= bind-address = 10.3.0.2 `Il faudra ici rem- placer l’adresse par défaut qui est 127.0.0.1 par 10.3.0.2.

Redémarrez ensuite le serveur mysql afin que les modifications soient prises en compte : `shell= systemctl restart mysql `

Pour la suite de l’installation, deux comptes supplémentaires doivent être créés pour le site principal de la plate- forme : `shell= # Entrez le mot de passe renseigné précédemment mysql -u root -p

`Dans l’invité de commandemysql, entrez ceci en prenant soin de changer les mots de passe par défaut : ‘‘‘sql=

– Création de la base de données keep CREATE DATABASE keep;

– Création d’un compte pour le site principal CREATE USER ‘keep’@‘10.3.0.1‘ IDENTIFIED BY ‘motDePass-

(14)

KEEP - Fiche procédure Documentation, Release latest

– Création d’un compte pour la gestion interne CREATE USER ‘manager’@‘10.3.0.1‘ IDENTIFIED BY ‘deux- iemeMotDePasseSécurisé’; GRANT ALL ON.TO‘manager’@‘10.3.0.1‘;

– On sort de l’invité de commande exit;‘‘‘

À la suite de cela, nous allons configurer la connexion automatique à la base de données de façon à simplifier son accès via les différents scripts. Pour cela, commencez par sortir du conteneur afin de retourner sur la session keep. Installez le paquetmysql-client:`shell= sudo apt install mysql-client `Creez ensuite un fichier~/.my.cnf dont le contenu est le suivant :` [client] user=manager password=motDePasseDuCompteManager host=10.3.0.2 `

Pour terminer, passons le conteneurdatabaseen démarrage automatique :`shell= echo "lxc.start.auto

= 1" >> ~/.local/share/lxc/database/config `

La base de données est désormais configurée.

#### Sécurité

#### Tests

Vous pouvez tester la connexion automatique à la base de données. Vous devriez vous retrouver connecté sans saisie de mot de passe au SGBD si vous lancez la commande suivante :`shell= mysql `

### C. Nest

Nest est le conteneur modèle de notre infrastructure. Ce conteneur a pour but de contenir les logiciels qui seront proposés aux utilisateurs. Ce conteneur est copié lorsqu’un projet est créé.

#### Installation

La création de ce conteneur Nest est possible en lançant le script suivant : `shell= /usr/share/keep/

scripts/nest.sh `

Ce script a pour but d’installer l’ensemble des modules présentés qui ont été retenus dans ce rapport. Le conteneur résultant n’est pas directement utilisable. En effet, les accès à la base de données ne sont pas encore configurés. Cela est réalisé quand un projet est créé de façon à bien différentier les données des projets.

#### Sécurité

#### Tests

### D. Site principal

Le site principal est la façade de la plateforme. Elle permettra aux utilisateurs d’accéder à leurs conteneurs, aux administrateurs de gérer la plateforme et aux visiteurs de rechercher des projets.

#### Installation

Placez vous dans le répertoire de la sessionkeep, créez un répertoirewwwpuis copiez le code relatif au site principal à l’intérieur de ce dernier :`shell= mkdir ~/www cd ~/www `

Une fois le code source du site en place, il sera nécessaire d’installer la base du frameworkSymfony. `shell=

composer install `

Durant ce processus, vous serez invité à entrer les éléments de configuration dont le site a besoin tels que les informa- tions de connexion à la base de données ou encore l’adresse du serveur LDAP.

Voici à quoi correspondent les différentes options qui seront demandées : -database_host: Adresse vers le serveur de gestion de base de données. Dans le cas de notre plateforme, nous mettrons10.3.0.2; -database_port: Port du serveur de gestion de base de données. Nous utiliserons le port par défaut qui est3306pour MariaDB ; -database_name: Le nom de la base de données correponsant au site principal. Ici nous la nommeronskeep; -database_user: Nom de l’utilisateur ayant les droits de lecture et écriture dans la base de données définie ci-dessus. Nous mettronskeep, le compte SQL créé précédemment. ; -database_password: Mot de passe associé à l’utilisateur database_user

; -mailer_* : Ces options ne sont pas utilisées. Les valeurs par défaut conviendront ; -secret : Valeur aléatoire

10 Chapter 3. Contents

(15)

app.ldap_default_roles: Roles par défaut qu’on les utilisateurs lors de leur inscription sur le site. Nous mettrons ROLE_USERdans notre cas ; -app.ldap_uid_key: Nom de la clé associé à un utilisateur dans l’annuaire. La valeur par défaut estcn; -app.ldap_filter: Filtre utilisé pour la recherche d’utilisateurs. La valeur par défaut sera utilisée :({uid_key}={username}); -app.ldap_password_attribute: Cette valeur n’est pas utilisée et sera mise à sa valeur par défaut.

Vous devrez par la suite envoyer la structure de la base de données keep vers le SGBD :‘‘‘shell= bin/console doc- trine:schema:update –force

(16)

KEEP - Fiche procédure Documentation, Release latest

12 Chapter 3. Contents

(17)

What’s with the name?

It is just a test

Références

Documents relatifs

Both clozapine and olanzapine have demonstrated superior efficacy against negative symptoms, but it is unclear whether this is an effect on pri- mary or secondary negative

For selecting the software and emulator, the Core interacts with external services such as technical registries containing file format classifications, the Software Archive

Installation et configurer Fail2ban : Pour installer le paquet Fail2ban, taper la commande suivante : Sudo apt-get install fail2ban Une fois le paquet installé, il est conseillé

Si vous recherchez les meilleures sources de protéines pour perdre du poids, elles sont fournies par les produits d’origines animales.. La viande, les œufs, les fruits de mer et

Symp- toms may not occur immediately after the bites and may take several days to appear, and in certain cases, bites can trigger 24 an allergic reaction.. Generally speaking, if it

The second form is an endemic form occurring mainly in people living in Equatorial Africa, where malnutri- tion, malaria and chronic infections take their toll 6 on the body's

Despite these treatments, the virus may not be eradicated and may be passed on even if there are no apparent warts, and the warts may reappear.. In some cases, the body may clear 23

GCMN is generally not inherited but arises from 12 a somatic (post-conception) mutation in the body's cells leading to 13 excessive growth of melanocytes, the cells in the skin that