Les services : Différence entre versions

De Ensuelma
Aller à : navigation, rechercher
(Création d'un script de génération de la configuration)
(Création d'un script de génération de la configuration)
Ligne 303 : Ligne 303 :
 
     <(echo -e '</tls-auth>') \
 
     <(echo -e '</tls-auth>') \
 
     > ${OUTPUT_DIR}/${1}.ovpn
 
     > ${OUTPUT_DIR}/${1}.ovpn
 +
* Quitter et sauvegarder
 +
* Le rendre exécutable:
 +
chmod 700 ~/client-configs/make_config.sh
 +
====Générer la configuration client====
 +
À partir du fichier clientfr.key et clientfr.crt, on peut les assembler pour faire le fichier .ovpn
 +
cd ~/client-configs
 +
./make_config.sh client1

Version du 17 juillet 2018 à 15:55

On parle de services pour tous composants installés hors de l'installation par défaut, fonctionnant en arrière plan et offrant des mécanismes et valeurs ajoutées.

Haproxy

Service permettant de gérer la répartition de charge des protocoles de publication Web HTTP/HTTPS (SLL/TLS)

LetsEncrypt

Service accompagnant le haproxy pour assurer le certificat et une reconnaissance du site à travers une communication sécurisée (SSL/TLS)

LetsEncryptHaproxy.jpg
  • Ce service est installé sur le serveur suen01
  • La configuration détaillée de LetsEncrypt

LXD/LXC

Service offrant la virtualisation de machine à l'intérieur de master

  • Ce service est installé sur le serveur suen01
  • la configuration LXD/LXC

Découvrir l’utilisation de LXC Tutoriel

apache

Plateforme Web qui est utilisé sur:

  • Mael01 avec PHP pour une stabilité de répartition de charge entre serveur
  • Mael02 et 03 sont à définir

php

Service de traitement de langage Web qui est installé sur:

  • Mael01 pour offrir la plateforme Wikimedia

nodejs

Service Web dont l’objectif est l’utilisation de cette plateforme sur tous les serveurs Fronts.

  • L’utilisation du HAProxy est préconisée

PostgreSQL

Service de base de donnée fournissant l’ensemble des données centralisées du site. L’objectif est d’assurer un service mirroir des BD dans le cadre d’une expension de l’infrastructure ou d’une activité élevée. Il est installé sur:

  • Suen02

Voir les possibilités de PostgreSQL Portable

Notions de Base

Méthode en bash

Voir le lien: Création utilisateur et DB

Utilisation des bases:

  1. su postgres

Création d'un compte:

  1. createuser <utilisateur>

Création d'une BD:

  1. createdb <basededonnees>

Affectation du mot de passe:

  1. psql
  2. alter user <utilisateur> with encrypted password '<password>';

Affecter les pleins droits sur la BD:

  1. grant all privileges on database <dbname> to <username> ;

Méthode en psql

Création d'une BD:

  1. CREATE DATABASE <basededonnees>;

Création d'un compte:

  1. CREATE USER <utilisateur> WITH password '<utilisateur>';

Affecter les pleins droits sur la BD:

  1. GRANT ALL privileges ON DATABASE <basededonnees> TO <utilisateur>;

WikiMedia

Service de documentation, il fournit la bibliothèque personnelle de l’entité Ensuelma. Ce système est installé sur

  • Mael01 pour le portail
  • Suen02 pour la BD

Fichier de config

Tous les paramètres du portail se situe dans le fichier de config LocalSettings.php

NextCloud

Service de gestion des fichiers, données numériques.

  • Infrastructure en cours d'installation...

NextCloud

Configuration voulue

  • Service Web: Mael01 (cloner Mael01 vers les autres)
    • Incluant: Apache/PHP
  • Base de données: Suen02
    • Config: PostgreSQL
  • Répertoire Disque: Utilisation du lecteur USB 'suen01:/mnt/usb/

Installation NextCloud

Roundcube Webmail

  • Installation sur les serveurs Web: mael01
  • La configuration de Roundcube

Mail Postfix et imap

Ajouter au mailing:

  • postconf -e 'home_mailbox= Maildir/'
  • postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'
  • vi /etc/postfix/virtual
  • postmap /etc/postfix/virtual
  • systemctl restart postfix
  • echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh
  • source /etc/profile.d/mail.sh

Reconfiguration Postfix

  • dpkg-reconfigure postfix
  1. Internet Site
  2. fredericcote.com
  3. freddyc
  4. $myhostname, fredericcote.com, mail.fredericcote.com, suen03.lxd, localhost.lxd, localhost
  5. no
  6. 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128, 192.168.5.22, 74.116.187.16_
  7. procmail = yes
  8. 0
  9. +
  10. ipv4

Suivre Tuto postfix ubuntu

Config Haproxy ajouté

  1. Proxy smtp vers suen03

frontend ft_smtp

 bind 192.168.1.20:25
 mode tcp
 no option http-server-close
 timeout client 1m
 log global
 option tcplog
 default_backend bk_postfix

backend bk_postfix

 mode tcp
 no option http-server-close
 log global
 option tcplog
 timeout server 1m
 timeout connect 5s
 server suen03.ensuelma 192.168.5.22:25 send-proxy
  1. Meme chose pour Imap

frontend imap

 bind 192.168.1.20:143
 mode tcp
 option tcplog
 default_backend imap

frontend imaps

 bind 192.168.1.20:993
 mode tcp
 option tcplog
 default_backend imaps

backend imap

 mode tcp
 option tcplog
 server suen03.ensuelma 192.168.5.22:143 send-proxy

backend imaps

 mode tcp
 option tcplog
 server suen03.ensuelma 192.168.5.22:993 send-proxy

OpenVPN

Installation sur les serveurs datalanding.fr et datalanding.com

  • Installation des packages openvpn et certificat easy-rsa
sudo apt install openvpn easy-rsa

Création d'un répertoire pour les certificats

make-cadir ~/openvpn-ca
cd ~/openvpn-ca
  • Édition des variables du template Certificat
vi vars

Changement des variables associés au pays ...

# Don't leave any of these fields blank.
export KEY_COUNTRY="CA"
export KEY_PROVINCE="QC"
export KEY_CITY="Quebec"
export KEY_ORG="Ensuelma"
export KEY_EMAIL="moi@fredericcote.com"
export KEY_OU="EnsuelmaOU"
 
# X509 Subject Field
export KEY_NAME="leserveur"
  • Création d'un certificat d'autorité
source vars

Le message doit apparaître

Output
NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/sammy/openvpn-ca/keys
  • Effectuer un clean
./clean-all
  • Création du CA
./build-ca
  • Entrer 'Enter' jusqu'à la fin
  • Création du certificat serveur , la clef et fichiers de chiffrement
./build-key-server leserveur
  • Entrer 'Enter' jusqu'à la fin et [y] 2 fois à la toute fin
  • Génération d'un clef forte Diffie-Hellman
./build-dh

Laisser rouler, ça prend du temps

  • Ensuite génération de la signature HMAC pour renforcir l'intégrité TLS du serveur:
openvpn --genkey --secret keys/ta.key

Génération du client avec la clef

source vars
./build-key clientfr

Note: L'intégration d'un mot de passe : ./build-key-pass clientfr

  • Entrer 'Enter' jusqu'à la fin et [y] 2 fois à la toute fin

CONFIGURATION DES SERVICES OPENVPN

cd ~/openvpn-ca/keys
sudo cp ca.crt leserveur.crt leserveur.key ta.key dh2048.pem /etc/openvpn
  • Transférer un modèle de config
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
  • Éditer le modèle
sudo vi /etc/openvpn/server.conf
  • Modifier les valeurs pour obtenir:
# open up this port on your firewall.
port 636
# TCP or UDP server?
proto tcp
;proto udp
cert leserveur.crt
key leserveur.key  # This file should be kept secret
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220" 
tls-auth ta.key 0 # This file is secret
key-direction 0
cipher AES-128-CBC
auth SHA256
user nobody
group nogroup
  • Quitter et sauvegarder

CONFIGURATION SERVEUR

Permettre le IP Forwarding

  • Éditer le fichier conf système
sudo vi /etc/sysctl.conf
  • Enlever le commmentaire pour donner:
net.ipv4.ip_forward=1
  • Quitter , sauvegarder et lancer la commande de rafraîchissement:
sudo sysctl -p

Ajuster le fireWall

  • S'assurer de connaître l'interface, ex: eth0 et éditer le FireWall
sudo vi /etc/ufw/before.rules
  • S'assurer de mettre à jour les informations suivantes dès les premières lignes et avant *filter
# DEBUT REGLES OPENVPN
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0] 
# Permet le traffic du client OpenVPN vers eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# FIN REGLES OPENVPN
  • Maintenant ajuster le FireWall UFW pour permettre de rouler définitivement en éditant:
sudo vi /etc/default/ufw
  • Il faut changer la valeur de DEFAULT_FORWARD_POLICY de DROP à ACCEPT:
DEFAULT_FORWARD_POLICY="ACCEPT"
  • Quitter et sauvegarder

Ouverture OpenVPN port et acceptation des changements

Lancer les commandes:

sudo ufw allow 636/tcp
sudo ufw allow OpenSSH

Ensuite relancer le FireWall UFW

sudo ufw disable
sudo ufw enable

Activer le service OpenVPN

sudo systemctl start openvpn@server

Vérifier l'exécution

sudo systemctl status openvpn@server

On doit retrouver a minima l'info suivante:

● openvpn@server.service - OpenVPN connection to server
  Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled)
  Active: active (running) since Tue 2018-07-17 16:59:53 CEST; 30s ago
  • Vérifier le tunnel en fonction:
ip addr show tun0

On doit avoir les valeurs de type:

5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
   link/none
   inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
      valid_lft forever preferred_lft forever
  • Si tout est OK, activation du service au boot:
sudo systemctl enable openvpn@server

Création de la configuration infrastructure client

Mise en place d'une structure répertoire

mkdir -p ~/client-configs/files

Affectation des droits

chmod 700 ~/client-configs/files

Création de la configuration de base

Utilisation d'un modèle:

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
  • Éditer le fichier conf:
vi ~/client-configs/base.conf
  • Changer les valeurs suivantes:
proto tcp
;proto udp
remote datalanding.fr 636
user nobody
group nogroup
#ca ca.crt
#cert client.crt
#key client.key
cipher AES-128-CBC
auth SHA256
key-direction 1
  • Quitter et sauvegarder

Création d'un script de génération de la configuration

Objectif est de générer la configuration via un script pour les .ovpn, voici le commencement du script:

vi ~/client-configs/make_config.sh
  • À l'intérieur du script, copier - coller les informations suivantes:
#!/bin/bash
# First argument: Client identifier
KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf
cat ${BASE_CONFIG} \
   <(echo -e '<ca>') \
   ${KEY_DIR}/ca.crt \
   <(echo -e '</ca>\n<cert>') \
   ${KEY_DIR}/${1}.crt \
   <(echo -e '</cert>\n<key>') \
   ${KEY_DIR}/${1}.key \
   <(echo -e '</key>\n<tls-auth>') \
   ${KEY_DIR}/ta.key \
   <(echo -e '</tls-auth>') \
   > ${OUTPUT_DIR}/${1}.ovpn
  • Quitter et sauvegarder
  • Le rendre exécutable:
chmod 700 ~/client-configs/make_config.sh

Générer la configuration client

À partir du fichier clientfr.key et clientfr.crt, on peut les assembler pour faire le fichier .ovpn

cd ~/client-configs
./make_config.sh client1