Debian

Publi­ca­tion mise à jour le 2 Décembre 2020

Gestion Libre de Parc Infor­ma­tique 🌐 est un logi­ciel de ges­tion des ser­vices infor­ma­tiques et de ges­tion des ser­vices infor­ma­tiques. Il peut se cou­pler au logi­ciel OCSIn­ven­to­ryNG 🌐, avec un article dont j’ai écrit pour per­mettre l’ins­tal­la­tion 🌐. Nous ver­rons dans cet article com­ment ins­tal­ler GLPI sur Debian 10.

Installation

apt-get install -y apache2 mariadb-server mariadb-client php build-essential perl libapache2-mod-perl2 libxml-simple-perl libio-compress-perl libdbi-perl libapache-dbi-perl libdbd-mysql-perl libnet-ip-perl libsoap-lite-perl libxml-libxml-perl libmojolicious-perl nmap snmp php7.3-mysql php7.3-gd php7.3-mbstring php-ldap php-imap php-apcu php-xmlrpc php-soap php-cas php7.3-xml php7.3-intl php7.3-zip php7.3-bz2

Configuration de la base de données

On se connecte sur l’in­ter­face mys­ql

mysql -u root -p

On créer l’u­ti­li­sa­teur theo­phile qui aura comme mot de passe root

create user 'theophile'@'%' identified by 'root';

On créer la base de don­nées

create database glpi;

On attri­bue tous les droits à l’utilisateur “theo­phile” sur la base de don­née “glpi”

grant all privileges on glpi.* TO 'theophile'@'%';

On recharge les droits et on quitte mariadb

flush privileges;
exit;

Téléchargement de l’archive

On se rend dans le dos­sier adé­quat

cd /var/www/html
rm index.html

On télé­charge l’ar­chive depuis GitHub 🌐, la der­nière en date au moment de la mise à jour de l’ar­ticle

wget https://github.com/glpi-project/glpi/releases/download/9.5.3/glpi-9.5.3.tgz

On décom­presse l’ar­chive

tar -zxvf glpi-9.5.3.tgz

On sup­prime l’ar­chive

rm glpi-9.5.3.tgz

Configuration du serveur WEB

On modi­fie le vir­tual­host

vim /etc/apache2/sites-available/000-default.conf
000-default.conf

On modi­fie les droits

chown -R www-data:www-data /var/www/html/glpi

On active le module rewrite

a2enmod rewrite

On redé­marre le ser­vice apache2

systemctl restart apache2

Configuration du SSL

On créer un dos­sier qui accueille­ra nos cer­ti­fi­cats

mkdir /etc/apache2/ssl

On génère la clef

openssl genrsa 2048 > /etc/apache2/ssl/glpi.key

Géné­ra­tion du cer­ti­fi­cat en fon­tion de la clef géné­ré pré­cé­dem­ment

openssl req -new -key /etc/apache2/ssl/glpi.key -x509 -days 365 -out /etc/apache2/ssl/glpi.crt

On édite le vir­tual­host d’apache2 pour ren­sei­gner les cer­ti­fi­cats SSL

vim /etc/apache2/sites-available/default-ssl.conf

On redé­marre le ser­veur WEB et notre site sera main­te­nant acces­sible depuis HTTPS

systemctl restart apache2

Finalisation de l’installation depuis l’interface WEB

On se rend sur l’in­ter­face web grâce à l’a­dresse IP

GLPI Setup
GLPI Licence
GLPI Ins­tal­ler
GLPI Dépen­dances
GLPI Base de don­nées
GLPI uti­li­sa­tion de la base
GLPI Sta­tis­tiques d’u­sage
GLPI Don
GLPI Ins­tal­la­tion ter­mi­née
GLPI Authen­ti­fi­ca­tion

On sup­prime le fichier d’ins­tal­la­tion pour des rai­sons de sécu­ri­té

rm /var/www/html/glpi/install/install.php

L’agent d’OCS per­met la com­mu­ni­ca­tion jus­qu’au ser­veur pour lui envoyer des infor­ma­tions. Ici nous allons pro­cé­der à l’ins­tal­la­tion via les dépôts Debian, atten­tion les ver­sions dans les dépôts ne sont pas tou­jours les der­nières !


Installation des paquets nécessaires

apt install -y ocsinventory-agent

On choi­sit la méthode HTTP, et pour le champs du noms d’hôte, on met­tra l’a­dresse IP.

On édite le fichier de confi­gu­ra­tion de l’agent:

vim /etc/ocsinventory/ocsinventory-agent.cfg

Et l’on confi­gure le fichier comme cela:

server=https://ocs.hoplite.fr/ocsinventory
SSL=1
debug=1

On copie le cer­ti­fi­cat que l’on géné­ré dans le dos­sier SSL dans le dos­sier de l’agent en le renom­mant cacert.pem

cp /etc/apache2/ssl/ocs.crt /etc/ocsinventory/cacert.pem

Pour copier le cer­ti­fi­cat qui se situe sur un ser­ver dis­tant, on peut l’en­voyer via ssh ( vous avez besoin d’o­penssh-ser­ver sur votre client ), depuis le ser­veur faire:

scp /etc/apache2/ssl/ocs.crt theophile@192.168.43.26:/etc/ocsinventory/cacert.pem

 

TFTP: Tri­vial File Trans­fert Pro­to­col ( client )
TFTPd: Tri­vial File Trans­fert Pro­to­col Dae­mon ( ser­ver )
Uti­lise par défaut le port 69 en UDP


Mise en place du service

On pro­cède à l’ins­tal­la­tion des paquets:

apt install -y tftp tftpd

On édite le fichier de confi­gu­ra­tion prin­ci­pal:

vim /etc/initd.conf

L’attribut alt de cette image est vide, son nom de fichier est Capture-20190625150344-947x69-1.png.

Dans l’en­ca­dré rouge se trouve le che­min du dos­sier de notre ser­ver TFTPd. En fonc­tion de cet enca­dré, nous pou­vons créer notre dos­sier ou se trou­ve­ront nos fichiers.

mkdir /srv/tftp

On y attri­buts tous les droits néces­saires pour que les ser­vers et les équi­pe­ments réseaux puissent y pous­ser leurs confi­gu­ra­tions.

chmod 777 /srv/tftp


Récupération de fichier sur le server TFTPd

Depuis le client, on se déplace dans le réper­toire ou l’on veut récu­pé­rer ou envoyer son fichier, on pré­sume que l’a­dresse du ser­ver tftpd est 192.168.1.80

Connexion au ser­ver:

tftp 192.168.1.80

Récu­pé­ra­tion du fichier

tftp>get essai.txt

Envoyer un fichier

tftp>put essai.txt

Atten­tion

Avant de pou­voir envoyer un fichier sur le ser­ver TFTPd, il faut qu’un fichier du même nom soit préa­la­ble­ment créé dans /srv/tftp au risque d’a­voir une erreur:

Error code 2: Access violation

Cela per­met d’é­vi­ter qu’un pirate puisse venir injec­ter n’im­porte quel code mal­veillant.

On ins­talle les paquets néces­saires:

#apt install proftpd-basic

On rajoute un faux shell, pour que lors de la connexion des uti­li­sa­teurs, ils ne puissent accé­der qu’à leurs fichiers ou docu­ments, sans pou­voir exé­cu­ter de com­mande.

#vim /etc/shells

On ajoute à la fin :

/bin/false

On créer un le nou­veau groupe:

#addgroup ftpuser

On édite le fichier de confi­gu­ra­tion per­son­na­li­sable

#vim /etc/proftpd/conf.d/ftp-perso.conf

Dedans, nous pou­vons mettre ceci:

Ser­ver­Name “Debian-ftp“
Dis­play­Lo­gin “Bien­ve­nue“
UseIPv6 off
//La direc­tive Defaul­tRoot per­met d’en­fer­mer l’u­ti­li­sa­teur dans son //répertoire per­son­nel repré­sen­té par ~
Defaul­tRoot ~
Max­Clients 10
//La direc­tive Deny­group refuse tous les groupes essayant de se //connecter. Pour auto­ri­ser un groupe, il faut ajou­ter un ! sui­vi du //nom du groupe. Ici on auto­rise le groupe ftpu­ser et les uti­li­sa­teurs //qui n’ont pas de groupe.
<Limit LOGIN>
Deny­group !ftpu­ser !nogroup
</Limit>

Atten­tion, ajou­ter !nogroup dans la direc­tive Deny­group seule­ment si vous vou­lez faire un ser­veur FTP Ano­nymes !

Et voi­là, votre ser­veur FTP est opé­ra­tion­nel pour une uti­li­sa­tion nor­male !
Pour créer un nou­vel uti­li­sa­teur qui pour­ra avoir juste accès en FTP à son réper­toire per­son­nel:

#adduser theophile --shelp /bin/false --ingroup ftpuser

Pour une utilisation anonyme du serveur FTP

On édite le fichier de confi­gu­ra­tion prin­ci­pale, en y ajou­tant une ligne.

#vim /etc/proftpd/proftpd.conf

“Include /etc/proftpd/anonymous.conf”

On créer/édite le fichier et on le rem­pli comme ceci.

#vim /etc/proftpf/anonymous.conf

Et voi­là, main­te­nant tout le monde peut accé­der en lec­ture seule au réper­toire /srv/ftp/Anonymous/

DHCP: Dyna­mic Host Confi­gu­ra­tion Pro­to­col

Le DHCP per­met de four­nir une confi­gu­ra­tion réseau aux machines  du réseau. Les dif­fé­rentes trames DHCP sont:

DHCPDISCOVER — Loca­li­sa­tion des ser­veurs DHCP et demande de confi­gu­ra­tion sur le port 67 en broad­cast avec le conte­nu de son adresse MAX.

DHCPOFFER — Réponse du ser­ver DHCP qui contient les pre­miers para­mètres sur le port 68.

DHCPREQUEST — Le client ren­voie donc la pre­mière requête “dhc­pof­fer” qui lui est par­ve­nu en disant les para­mètres pris. Le ser­ver pour­ra donc consi­dé­rer comme cette adresse prise.

DHCPDECLINE — Le ser­ver informe que la confi­gu­ra­tion IP est déjà prise.

DHCPACK - Le ser­ver ren­voi la confi­gu­ra­tion qu’il peut main­te­nant uti­li­ser et que le bail com­mence.

DHCPNAK — Le ser­ver ren­voie une infor­ma­tion au client pour lui dire que son bail est expi­ré.

DHCPRELEASE — Le client libère sa confi­gu­ra­tion IP

Exemple quand mon ser­ver TFTP demande une confi­gu­ra­tion:

L’attribut alt de cette image est vide, son nom de fichier est image-1024x123.png.


Installation du server:

apt install isc-dhcp-server

On édite le fichier d’é­coute des inter­faces.

vim /etc/default/isc-dhcp-server

Rem­plir la direc­tive INTERFACESv4 par le nom de votre carte réseau. Pour savoir le nom de votre carte réseau, vous pou­vez la trou­ver en exé­cu­tant “ifcon­fig” qui se trouve dans le paquet “net-tools” ou uti­li­ser ip ‑a

L’attribut alt de cette image est vide, son nom de fichier est image-1.png.

On édite le fichier de confi­gu­ra­tion prin­ci­pal.

vim /etc/dhcp/dhcpd.conf

Le rem­plir comme ceci pour confi­gu­ra­tion de base, modi­fié vos propres valeurs.

L’attribut alt de cette image est vide, son nom de fichier est image-3.png.

On redé­marre le ser­vice

/etc/init.d/isc-dhcp-server restart

Et nos futurs machines rece­vront bien une adresse IP en com­men­çant par l’a­dresse 192.168.43.200


Attribution d’IPs Statiques

Nous pou­vons attri­buer une IP sta­tique à une machine en fonc­tion de son adresse MAC.

Par hôte, il faut rajou­ter ces lignes:

host tftp-debian {
hardware ethernet 05:06:FF:D4:E3:BB;
fixed-address 192.168.1.10;
}

Ici, l’hôte tftp-debian qui contient l’a­dresse MAC  05:06:FF:D4:E3:BB rece­vra l’a­dresse 192.168.1.10 si il en fait la demande.

Nous pou­vons donc éjec­ter toutes les per­sonnes du réseau duquel les adresses MAC ne sont pas décla­rées dans ce fichier en rajou­tant la ligne:

deny unknow-clients;

Le RAID1 consiste à clo­ner deux disques. Si un des deux disques tombe en panne, les don­nées seront donc sur le deuxième.


Mise en place du RAID1

On ins­talle les paquets néces­saires:

apt install mdadm

Repé­rage des deux disques:

lsblk

L’attribut alt de cette image est vide, son nom de fichier est image-5.png.

Chez moi les deux disques sont sdb et sdc

mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

On créer le sys­tème de fichier:

mkfs.ext4 /dev/md0

Atten­tion, pour le mon­tage auto­ma­tique, dans le fichier fstab, mettre le che­min direct et non le lien sym­bo­lique

On se déplace dans le réper­toire et on liste les fichiers pour voir ou pointe le lien.

cd /dev/md
ls-l

L’attribut alt de cette image est vide, son nom de fichier est image-7.png.

De mon côté, on voit que le lien sym­bo­lique pointe vers /dev/md127. On édite le fstab

vim /etc/fstab

et on rajoute à la fin du fichier

/dev/md127 /media/md0 ext4 noatime,rw 0 0

On redé­marre l’or­di­na­teur, et vous avez raid1 mon­té au démar­rage et sans erreur!

 

OCSIn­ven­to­ryNG pour Open Com­pu­ter and Soft­ware Inven­to­ry Next Gene­ra­tion per­met de faire un inven­taire du parc infor­ma­tique et du télé­dé­ploi­ment pour les entre­prises via la mise en place d’agent. Il se trouve sous GPLv2, qui nous donne le droit de l’utiliser gra­tui­te­ment et d’avoir accès aux codes sources.


Installation des paquets nécessaires :

apt install vim apache2 apache2-dev mariadb-server mariadb-client libmariadbclient-dev php-soap php build-essential perl libapache2-mod-perl2 libxml-simple-perl libarchive-zip-perl libio-compress-perl libdbi-perl libapache-dbi-perl libswitch-perl libdbd-mysql-perl libnet-ip-perl libsoap-lite-perl libxml-simple-perl libxml-libxml-perl libmojolicious-perl nmap snmp php7.3-mysql php7.3-gd php7.3-mbstring php-ldap php-imap php-pclzip php-apcu php-xmlrpc php-soap php-cas php-mysql php-curl php-xml php-zip libplack-perl

Sécurisation du mot de passe super-administrateur de Mariadb :

mysql_secure_installation
  • “Enter cur­rent pass­word for root (enter for none):”
    Nous ne pos­sé­dons actuel­le­ment pas encore de mot de passe super-admi­nis­tra­teur donc on appuie sur “Entrée”.
  • “Set root pass­word? [Y/n]”
    Nous vou­lons mettre un mot de passe donc “Entrée”.
  • “Remove ano­ny­mous users? [Y/n]
    Nous ne vou­lons pas des uti­li­sa­teurs ano­nymes donc “Entrée”.
  • “Disal­low root login remo­te­ly? [Y/n]”
    Nous vou­drons peut-être plus tard pou­voir se connec­ter à dis­tance donc “n” puis “Entrée”.
  • “Remove test data­base and access to it? [Y/n]”
    Oui nous vou­lons sup­pri­mer les bases de don­nées de test “Entrée”.
  • “Reload pri­vi­lege tables now? [Y/n]”
    Oui nous vou­lons avoir les droits main­te­nant “Entrée”.

Création de la base de données :

On se connecte en tant que Super-admi­nis­tra­teur à MariaDB en indi­quant le mot de passe pré­cé­dem­ment ren­sei­gné :

mysql -u root -p

On créé l’utilisateur “use­rocs” avec le mot de passe “pass­wor­docs“ :

create user 'userocs'@'%' identified by 'passwordocs';

On créé la base de don­née “ocs“ :

create database ocs;

On attri­bue tous les droits à l’utilisateur “use­rocs” pour la base de don­née “ocs”

grant all privileges on ocs.* TO 'userocs'@'%';

On recharge les droits :

flush privileges;

On quitte MariaDB :

quit;

Installation d’OCS :

On se déplace dans le réper­toire tem­po­raire pour l’effacement auto­ma­tique des archives que l’on aura plus besoin :

cd /tmp

On télé­charge le script d’ins­tal­la­tion sur le lien, à ce jour la ver­sion la plus abou­tie est la 2.8 :

wget https://github.com/OCSInventory-NG/OCSInventory-ocsreports/releases/download/2.8/OCSNG_UNIX_SERVER_2.8.tar.gz

On décom­presse l’ar­chive :

tar -zxvf OCSNG_UNIX_SERVER_2.8.tar.gz

On se déplace dans le dos­sier décom­pres­sé :

cd OCSNG_UNIX_SERVER_2.8

On lance le script d’installation et on répond “y” ou appuyez direc­te­ment sur “Entrée” à toutes les ques­tions :

./setup.sh

Apache à besoin d’accéder, lire ET d’écrire sur les fichiers d’OCS, cela vous per­met­tra éga­le­ment d’éviter un war­ning à l’initialisation :

chown root:www-data /var/lib/ocsinventory-reports
chmod 775 /var/lib/ocsinventory-reports

Acti­va­tion des confi­gu­ra­tions :

a2enconf ocsinventory-reports
a2enconf z-ocsinventory-server
a2enconf zz-ocsinventory-restapi

Pour uti­li­ser le télé-déploie­ment, nous devons modi­fier cer­taines valeurs pour aller jusqu’à des logi­ciels de 10 GiO :

vim /etc/apache2/conf-available/ocsinventory-reports.conf

Ligne 49 php_value post_max_size 9999m
Ligne 50 upload_value upload_max_filesize 9999m
Ligne 68 php_value post_max_size 9999m
Ligne 69 upload_value upload_max_filesize 9999m

Adap­ta­tion des fichiers d’OCS à la base de don­née :

vim /etc/apache2/conf-available/z-ocsinventory-server.conf

Ligne 26 Perl­Se­tEnv OCS_DB_NAME ocs
Ligne 27 Perl­Se­tEnv OCS_DB_LOCAL ocs
Ligne 29 Perl­Se­tEnv OCS_DB_USER use­rocs
Ligne 31 Perl­Set­Var OCS_DB_PWD pass­wor­docs

vim /etc/apache2/conf-available/zz-ocsinventory-restapi.conf

Ligne 9   $ENV{OCS_DB_LOCAL} = ‘ocs‘;
Ligne 10 $ENV{OCS_DB_USER} = ‘use­rocs‘;
Ligne 11 $ENV{OCS_DB_PWD} = ‘pass­wor­docs‘;

On redé­marre le ser­vice Apache2 puis on pour­ra par la suite se rendre dans un navi­ga­teur web à l’ip de la machine /ocsreports :

service apache2 restart

Initialisation de l’interface web :

Sur l’in­ter­face web, on ren­seigne à OCS les infor­ma­tions de la base de don­nées four­nit pré­cé­dem­ment pour son ini­tia­li­sa­tion :
Pour la par­tie SSL, nous allons la faire par la suite. On peut appuyer sur Send.

On clique sur ” Click here to enter OCS-NG GUI ”

On clique sur “Per­form the update”

On clique sur “Click here to enter OCS-NG GUI”

Nous arri­vons main­te­nant sur l’in­ter­face de connexion d’OCS. Le compte par défault à l’ins­tal­la­tion de tout OCS est ” admin ” en uti­li­sa­teur et ” admin ” en mot de passe.

En arri­vant sur la page de OCS, une alerte de sécu­ri­té appa­rait, pour la cor­ri­ger nous allons sup­pri­mer le fichier d’ins­tal­la­tion pour évi­ter que n’im­porte qui pour réini­tia­li­ser notre OCS :

rm /usr/share/ocsinventory-reports/ocsreports/install.php

Mise en place de SSL :

On va sto­cker le cer­ti­fi­cat et la clef dans un dos­sier :

mkdir /etc/apache2/ssl

Créa­tion de la clef :

openssl genrsa 2048 > /etc/apache2/ssl/ocs.key

Géné­ra­tion du cer­ti­fi­cat en fonc­tion de la clef géné­ré pré­ce­dem­ment :

openssl req -new -key /etc/apache2/ssl/ocs.key -x509 -days 365 -out /etc/apache2/ssl/ocs.crt

Répon­dez aux ques­tions comme cela :

Coun­try Name : FR
Pro­vince Name : France
Loca­li­ty Name : Lille
Orga­ni­za­tion Name : over­com­pu­ting
Orga­ni­za­tio­nal Unit Name : DSI
Com­mon Name : ocs.overcomputing.net
Email Address : theophile@overcomputing.net

Il fau­dra en consé­quence ajou­ter une entrée DNS de tel sorte à relier l’a­dresse IP de votre ser­ver à ocs. Si vous ne pos­sé­dez pas de ser­veur DNS, faites comme cela:

vim /etc/hosts

Rem­plir le fichier de telle sorte, en rem­pla­cant bien sur l’ip par la votre :

192.168.0.57 ocs.overcomputing.net ocs

On ren­seigne le fichier d’apache pour le SSL:

vim /etc/apache2/sites-available/default-ssl.conf

Ligne-32 SSL­Cer­ti­fi­ca­te­File /etc/apache2/ssl/ocs.crt
Ligne-33 SSL­Cer­ti­fi­ca­te­Key­File /etc/apache2/ssl/ocs.key

On active le module ssl:

a2enmod ssl

On active la confi­gu­ra­tion SSL que l’on vient de ren­sei­gner

a2ensite default-ssl

On redé­marre apache2 :

service apache2 restart

Nous pou­vons main­te­nant se connec­ter en rajou­tant https devant votre URL tel que (depuis le navi­ga­teur web de votre machine vir­tuelle, sinon il fau­dra ren­sei­gner la par­tie hosts vu plus haut sur chaque ordi­na­teur qui doit y accé­der) :
https://ocs.overcomputing.net/ocsreports