|
|
| Ligne 148 : |
Ligne 148 : |
| ==OpenVPN== | | ==OpenVPN== |
| Le service VPN est une installation nécessaire pour garantir les communications entre les serveurs posés aux différents endroits. | | Le service VPN est une installation nécessaire pour garantir les communications entre les serveurs posés aux différents endroits. |
| *Liste des serveurs concernée: | | *Liste des serveurs concernés: |
| **fredericcote.com | | **fredericcote.com |
| **datalanding.com | | **datalanding.com |
| Ligne 154 : |
Ligne 154 : |
|
| |
|
| Tous les détails dans la [[configOpenVPN]] | | Tous les détails dans la [[configOpenVPN]] |
| 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 clientfr
| |
| * Vérifier la config:
| |
| ls ~/client-configs/files
| |
| * On retrouve
| |
| clientfr.ovpn
| |
| * Il ne reste plus qu'à transférer le fichier vers un autre emplacement, exemple du poste client:
| |
| sftp root@datalanding.fr:client-configs/files/clientfr.ovpn ~/
| |
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)
- 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:
Voir les possibilités de PostgreSQL Portable
Notions débutantes
Méthode en bash
Voir le lien: Création utilisateur et DB
Utilisation des bases:
- su postgres
Création d'un compte:
- createuser <utilisateur>
Création d'une BD:
- createdb <basededonnees>
Affectation du mot de passe:
- psql
- alter user <utilisateur> with encrypted password '<password>';
Affecter les pleins droits sur la BD:
- grant all privileges on database <dbname> to <username> ;
Méthode en psql
Création d'une BD:
- CREATE DATABASE <basededonnees>;
Création d'un compte:
- CREATE USER <utilisateur> WITH password '<utilisateur>';
Affecter les pleins droits sur la BD:
- GRANT ALL privileges ON DATABASE <basededonnees> TO <utilisateur>;
Concept de la BD
L’objectif de la base de données est de permettre la rapidité de recherche. L’indexation est l'une des clefs permettant l'accélération de celle-ci
La BD relationnelle, probablement la plus connue, est d'usage simple et agréable à l'apprentissage. Elle permet d'évoluer vers d'autres modèles.
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)
- Base de données: Suen02
- 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
- Internet Site
- fredericcote.com
- freddyc
- $myhostname, fredericcote.com, mail.fredericcote.com, suen03.lxd, localhost.lxd, localhost
- no
- 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128, 192.168.5.22, 74.116.187.16_
- procmail = yes
- 0
- +
- ipv4
Suivre Tuto postfix ubuntu
Config Haproxy ajouté
- 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
- 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
Le service VPN est une installation nécessaire pour garantir les communications entre les serveurs posés aux différents endroits.
- Liste des serveurs concernés:
- fredericcote.com
- datalanding.com
- datalanding.fr
Tous les détails dans la configOpenVPN