CASIRCloud: Difference between revisions

From air
Jump to navigation Jump to search
Line 43: Line 43:
Remarque: il existe d'autres hébergeurs IaaS avec des offres gratuites 1 an pour de petites VMs : https://www.digitalocean.com/ ...
Remarque: il existe d'autres hébergeurs IaaS avec des offres gratuites 1 an pour de petites VMs : https://www.digitalocean.com/ ...


=Séance 1 : 31/03=
=Séances 1 & 2 : 31/03=
==Agenda==
==Agenda==
* DS QUICK (30 minutes) sur la séance 0 (30% de la note globale). !!!!! NE PAS ARRIVER EN RETARD !!!!
* DS QUICK (30 minutes) sur la séance 0 (30% de la note globale). !!!!! NE PAS ARRIVER EN RETARD !!!!

Revision as of 15:31, 4 April 2017

Enseignant: Didier Donsez (Polytech Grenoble, UGA)

Coordinateur : Clement Raievsky (IUT de Valence, UGA)

Etudiants : UGA - IUT Valence - L3 Pro CASIR

Modalité d’évaluation : DS + DM


Séance 0 : 30/03 de 9h30 à 12h30

Auto-formation

Suivre les cours suivants en vidéo :

Lire:

Vous pouvez suivre les autres présentations si vous en avez envie et le temps: http://erods.liglab.fr/icar2013/programme.html

Et notamment la présentation du datacentre d'OVH

Création des comptes

Remarque: il existe d'autres hébergeurs IaaS avec des offres gratuites 1 an pour de petites VMs : https://www.digitalocean.com/ ...

Séances 1 & 2 : 31/03

Agenda

  • DS QUICK (30 minutes) sur la séance 0 (30% de la note globale). !!!!! NE PAS ARRIVER EN RETARD !!!!
  • Introduction aux applications distribuées (transparents)
  • Démarrage d'une machine virtuelle (Ubuntu 16.04 LTS) dans un des IaaS pour lesquels vous avez créés des comptes. Choisir une machine "gratuite" type 't2.micro' (1 vCPU, 1 GB RAM, 8GB EBS).
  • Fork d'une application Node.js Todo (à choisir parmi celles de http://todomvc.com/) par exemple : TodoMVC Meteor
  • Déploiement de votre application Todo.
    • Installation du projet
    • Installation des dépendances
    • Script de démarrage
  • Arrêt de la machine
  • Script de redémarrage au "reboot" de la machine.
    • Installer et configurer Monit.
    • Configurer dans Monit votre adresse email pour être notifié des crashs de l'application.
  • Sécurisation des ports avec les IPTables.
    • Filtrer tous les ports en entrée sauf SSH, ICMP, HTTP, HTTPS et 3000.
    • Filtrer tous les ports en sortie sauf SSH, ICMP et SMTPS (pour Monit).
  • Installer et Configurer InfluxDB
  • Installer et Configurer Telegraf
  • Installer et Configurer Chronograf

Scripts

mv ~/Download/iutcloud.pem ~/.ssh
chmod 400 ~/.ssh/iutcloud.pem
HOST_PRIMARY_AWS=52.215.12.34
ssh -i ~/.ssh/iutcloud.pem ubuntu@$HOST_PRIMARY_AWS

Sur HOST_PRIMARY_AWS

# Installer Meteor
curl https://install.meteor.com/ | sh 
# Cloner le dépôtgit clone https://github.com/tastejs/todomvc.git
cd todomvc
cd examples/meteor
# lancer l'application sur le port 3000 (port de test non sécurisé !!!)
meteor run --port 3000
^C

# lancer l'application en mode détaché. L'application continue son exécution après la sortie (exit) du terminal ssh
nohup meteor run --port 3000 &

# pour arrêter l'application
ps axwww
pkill meteor
ps axwww

Depuis le navigateur de votre poste de travail, naviguer sur http://52.215.12.34:3000


Installer HAProxy pour sécuriser la connexion.

sudo apt-get install -y haproxy

Générer un certificat SSL pour votre serveur HAProxy

openssl genrsa -out haproxy.key 2048
openssl req -new -key haproxy.key \
                   -out haproxy.csr
openssl x509 -req -days 365 -in haproxy.csr \
                    -signkey haproxy.key \
                    -out haproxy.crt
cat haproxy.crt haproxy.key \
           | tee haproxy.pem

Modifier le fichier de configuration de HAProxy

sudo vi /etc/haproxy/haproxy.cfg

avec le fichier suivant:

global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

    # Default SSL material locations
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    # Default ciphers to use on SSL-enabled listening sockets.
    # For more information, see ciphers(1SSL).
    ssl-default-bind-options no-sslv3 no-tls-tickets force-tlsv12
    ssl-default-bind-ciphers !EDH:!RC4:!ADH:!DSS:HIGH:+AES128:+AES256-SHA256:+AES128-SHA256:+SHA:!3DES
    tune.ssl.default-dh-param 2048

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000

# IUT UI (80,443 --> 3000)

frontend iut-ui-http
    mode http
    option httplog
    option forwardfor
    option http-server-close
    option httpclose
    bind *:80
    redirect scheme https code 301 if !{ ssl_fc }


frontend iut-ui-https
    option httplog
    option forwardfor
    option http-server-close
    option httpclose
    rspadd Strict-Transport-Security:\ max-age=31536000;\ includeSubDomains
    rspadd X-Frame-Option:\ DENY
    bind *:443 ssl crt /etc/ssl/haproxy/haproxy.pem ciphers !EDH:!RC4:!ADH:!DSS:HIGH:+AES128:+AES256-SHA256:+AES128-SHA256:+SHA:!3DES force-tlsv12 no-sslv3
    default_backend iut-ui 

backend iut-ui 
    mode http
    balance roundrobin
    option forwardfor
    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto https if { ssl_fc }
    option httpchk HEAD / HTTP/1.1\r\nHost:localhost
    server web01 localhost:3000 check
#    server web01 HOST_PRIMARY_AWS:3000 check
#    server web02 HOST_BACKUP_AWS:3000 check

Relancer HAProxy

sudo mkdir -p /etc/ssl/haproxy
sudo cp haproxy.pem /etc/ssl/haproxy/haproxy.pem
haproxy -c -f /etc/haproxy/haproxy.cfg
sudo service haproxy restart
sudo service haproxy status

Depuis le navigateur de votre poste de travail, naviguer sur http://52.215.12.34 Depuis le navigateur de votre poste de travail, naviguer sur https://52.215.12.34 . Accepter l'exception de sécurité.

Supprimer le port 3000 du security group de la machine AWS depuis la console AWS.

Visualiser le certificat du serveur

openssl s_client -connect $HOST_PRIMARY_AWS:443 -showcerts

Ressources

Séance 2 : 31/03

  1. Création d'une seconde machine virtuelle.
  2. Installation de l'application TodoMVC Meteor en mode distribuée (2 machines gratuites) : Meteor inclut MongoDB.
  3. Installation et configuration d'un load balancer HAProxy sur chaque machine dans le mode HTTPS Termination (Le certificat auto-signé est installé sur les 2 serveurs)
  4. Arrêter l'applications TodoMVC sur la machine 1 : Que se passe t'il ?
  5. Arrêter l'applications TodoMVC sur la machine 2 : Que se passe t'il ?
  6. Redémarrer l'applications TodoMVC sur la machine 1 : Que se passe t'il ?
  7. Redémarrer l'applications TodoMVC sur la machine 2 : Que se passe t'il ?
  1. Installation et configuration de Telegraf, Chronograf, InfluxDB sur les 2 machines pour le monitoring de celles-ci.
  2. Arrêter les 2 machines virtuelles en fin de séance (Les machines virtuelles (programmes et données) sont perdues !!)

Ressources

Séance 3 : 7/04

  • Présentation de Docker (transparents)
  • Installation de Docker et Docker Machine
  • Les mêmes exercices mais avec des containers Docker.

Ressources

Séance 4 : 7/04

  • Les mêmes exercices mais avec des containers Docker.

Ressources

DM

Noté (70% de la note globale)

A RENDRE LE ????