CASIRCloud: Difference between revisions

From air
Jump to navigation Jump to search
Line 189: Line 189:


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

Visualiser le certificat du serveur
<pre>
openssl s_client -connect $HOST_PRIMARY_AWS:443 -showcerts
</pre>


==Ressources==
==Ressources==

Revision as of 09:22, 1 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éance 1 : 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

TDB

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 --> 3500)

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/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:3500 check
#    server web01 HOST_PRIMARY_AWS:3500 check
#    server web02 HOST_BACKUP_AWS:3500 check

Relancer HAProxy

sudo mkdir -p /etc/ssl/haproxy
sudo cp haproxy.pem /etc/ssl/haproxy/haproxy.pem
sudo cp haproxy_ca.crt /etc/ssl/haproxy/haproxy_ca.crt
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
    • Mode HTTP Passthrought
    • Mode HTTPS Termination (il faut générer un certificat auto-signé pour les 2 serveurs)
  1. Que se passe t'il ?
  2. Installation et configuration de Telegraf, Chronograf, InfluxDB sur les 2 machines pour le monitoring de celles-ci.
  3. 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 ????