Outils pour utilisateurs

Outils du site


amipo_weekend_reboot

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
amipo_weekend_reboot [2019/12/15 08:28] bigMaxamipo_weekend_reboot [2020/10/09 07:08] (Version actuelle) – Tag0 Added: amipo serge
Ligne 3: Ligne 3:
 Pad: https://pad.lobotomie.org/p/amipo Pad: https://pad.lobotomie.org/p/amipo
 ===== Décisions ===== ===== Décisions =====
-==== Audiance cible ==== +==== L'audiance cible de l'AMIPO ==== 
-Tous public / ex: framasoft+Tous public / ex: framasoft, pas besoin d'adhérer à l'association.
  
 ==== Premier service à héberger ==== ==== Premier service à héberger ====
-Un service à heberger et blinder au cours des prochains mois :  Agenda & Contacts partagés via Nextcloud+Un service à héberger et blinder au cours des prochains mois :  Agenda & Contacts partagés. Nous essayerons d'administrer un serveur Nextcloud pour remplir cette tâche.
  
-===== TODO Tech ===== +==== Actions du weekend ==== 
-  * [_] Documenter les choix et delta d'installation de nextcloud +Nous nous motivons pour néttoyer la VM de production AMIPO pour y installer : 
-  * [_] Finaliser la configuration nginx (redirection, ...+  * Debian 10 (buster
-  * [_] Renforcer la configuration de nginx (bonnes pratiques de sécurité, ...) +  * nginx 
-  * [_] Automatiser le renouvellement de certificats letsencrypt +  * postgresql 
-  * [_] Mettre en place un backup automatisé de la conf nginx, des data nextcloud et de l'éventuel CMS +  * nextcloud
-  * [_] Ecrire un script pour automatiser le téléchargement des backups à l'exterieur de la machine +
-  * [_] Configurer nextcloud pour ne permettre dans un premier temps que très peu de stockage par utilisateur et privilégier les services de partage de calendrier et de contact +
-  * [_] Mettre en place un monitoring / alerting des services (homepage, calendriers, contacts, accès nextcloud, ssl, ...)+
  
-===== TODO orga =====+Nous commençons en même temps à travailler sur : 
 +  * une refonte de la page d'accueil https://amipo.fr 
 +  * les divers documents légaux à présenter aux utilisateurs. 
 + 
 +===== TODOs ===== 
 +==== Technique ==== 
 + 
 +La TODO liste des choses à faire et en cours est sur le dépôt [[https://framagit.org/amipo/amipo-plante/-/boards|AMIPO Plante]] 
 + 
 +  - [x] Configuration de DMARC et SPF sur le DNS amipo.fr 
 +  - [x] Créer compte Benjamin 
 +  - [x] Renforcer la configuration de nginx (bonnes pratiques de sécurité, php, ...) 
 +  - [x] Configuration du cron Nextcloud 
 +  - [x] Configuration du serveur SMTP 
 +  - [x] Mettre en place un backup automatisé des data sur le serveur (nextcloud, l'éventuel CMS, ...) 
 +  - [x] Finaliser la configuration nginx (redirection, ...) 
 +  - [x] Fix warnings install Nextcloud 
 + 
 +===Organisationnel ====
   * [_] Quand se revoit-on ?   * [_] Quand se revoit-on ?
   * [_] Comment travail t-on ? Tout le monde à un accès admin pour se connecter depuis chez lui ?   * [_] Comment travail t-on ? Tout le monde à un accès admin pour se connecter depuis chez lui ?
  
-===== Work done =====+===== Revue / Tests ===== 
 +==== Ce qui fonctionne ==== 
 +  * Création de compte sur Nextcloud 
 +  * Création d'un agenda 
 +  * Import d'un agenda exterieur dans nextcloud 
 +  * Récupération d'un agenda nextcloud sur mon smartphone avec [[ https://f-droid.org/en/packages/at.bitfire.davdroid/ | l'appli DAVx5 ]] 
 +  * La réception des emails envoyés par le serveur 
 + 
 +==== Ce qui ne fonctionne pas ==== 
 + 
 +Déplacé vers [[https://framagit.org/amipo/amipo-plante/-/boards|Board sur AMIPO Plante]] 
 +==== Actions ==== 
 +  * [2019-12-19] Modification de la cronjob pour envoyer un email sans password dans le subject. (en cours de test) 
 +  * [2019-12-19] Ajout des privileges manquant sur la table public.oc_cms_pico_websites pour l'utilisateur de backup. (en cours de test) 
 +  * [2019-12-19] Configuration des politiques SPF et DMARC 
 +  *  
 + 
 +===== Work log =====
 ==== Mise à jour de l'OS du serveur ==== ==== Mise à jour de l'OS du serveur ====
 Passage de Debian Stretch à Buster : [[ https://www.cyberciti.biz/faq/update-upgrade-debian-9-to-debian-10-buster/ ]] Passage de Debian Stretch à Buster : [[ https://www.cyberciti.biz/faq/update-upgrade-debian-9-to-debian-10-buster/ ]]
Ligne 33: Ligne 65:
   * sudo apt --purge autoremove   * sudo apt --purge autoremove
  
-==== Installation de Nginx ====+==== Paramétrage php.ini ==== 
 +<file ini /etc/php/7.3/fpm/php.ini> 
 +opcache.enable = 1 
 +opcache.enable_cli = 1 
 +opcache.interned_strings_buffer = 8 
 +opcache.max_accelerated_files = 10000 
 +opcache.memory_consumption = 128 
 +opcache.save_comments = 1 
 +opcache.revalidate_freq = 1 
 +max_execution_time=128M 
 +max_input_time = 20M 
 +</file> 
 +==== Nginx ==== 
 +=== Installation ===
   sudo apt install nginx   sudo apt install nginx
      
 +=== Configuration ===
 +  - Par défaut on utilise le domaine amipo.fr
 +  - Toutes les requêtes sur un vhost différent de https://amipo.fr son redirigés vers https://amipo.fr[requête_originale]
 +  - Si la requête match un fichier dans /var/www/default le sert tout de même.
 +  - php n'est interprété nulle part si pas explicité.
 +
 +=== Renforcement ===
 +[[ https://www.ssllabs.com/ssltest/analyze.html?d=amipo.fr&latest | Test ssl ]]
 +
 +[[ https://www.acunetix.com/blog/articles/nginx-server-security-hardening-configuration-1/ | Guide de configuration renforcée ]]
 +<file conf /etc/nginx/conf.d/hardening.conf>
 +# Remove version
 +server_tokens off;
 +
 +# Control Buffer Overflow Attacks
 +client_body_buffer_size 1k;
 +client_header_buffer_size 1k;
 +client_max_body_size 1k;
 +large_client_header_buffers 4 1k;
 +
 +# Prevent Clickjacking Attack (disable frame and iframe from other domain)
 +add_header X-Frame-Options "SAMEORIGIN";
 +
 +# Add X-XSS Protection
 +add_header X-XSS-Protection "1; mode=block";
 +</file>
 +
 ==== Installation de certbot (letsencrypt) ==== ==== Installation de certbot (letsencrypt) ====
   sudo apt-get install certbot python-certbot-nginx   sudo apt-get install certbot python-certbot-nginx
   certbot certonly -d amipo.fr -d www.amipo.fr --webroot --webroot-path "/var/www/default/" --dry-run   certbot certonly -d amipo.fr -d www.amipo.fr --webroot --webroot-path "/var/www/default/" --dry-run
   certbot certonly -d amipo.fr -d www.amipo.fr --webroot --webroot-path "/var/www/default/"   certbot certonly -d amipo.fr -d www.amipo.fr --webroot --webroot-path "/var/www/default/"
-==== Installation de postgresql ====+==== Postgresql ==== 
 + 
 +=== Installation ===
   sudo apt-get install postgresql-11   sudo apt-get install postgresql-11
 +  sudo apt install php7.3-pgsql
 + 
 +
 +=== Ajout d'un utilisateur pour les backups ===
 +  create role nextcloud_backup;
 +  alter role nextcloud_backup encrypted password '_-ihTobM_*Bd6pTFNDhM';
 +  alter role nextcloud_backup login;
 +  grant connect on nextcloud to nextcloud_backup;
 +  grant usage on schema public to nextcloud_backup;
 +  grant select on all tables in schema public to nextcloud_backup;
 +  grant select on all sequences in schema public to nextcloud_backup;
      
 +==== Cron jobs ====
 +
 +Exécution du cron de Nextcloud toutes les 5 minutes, penser à cocher l'option **Cron** dans la page [[https://amipo.fr/nuage/settings/admin|Paramètres de NextCloud]].
 +
 +  $ sudo crontab -u www-data -e
 +
 +   */ *  *  *  * php -f /var/www/nuage/cron.php
 +  
 +==== Backup ====
 +
 +Un backup des fichiers et de la base est créé tous les jours à 2h du matin via le cron de www-data:
 +
 +  sudo crontab -l -u www-data
 +  
 +Le script utilisé est /var/nextcloud/backup_nextcloud.sh et sauvegarde dans /var/nextcloud/backups.
 +
 +Script :
 +
 +  #!/usr/bin/env bash
 +  
 +  # exec 3>&1 4>&2
 +  # trap 'exec 2>&4 1>&3' 0 1 2 3
 +  # exec 1>backup-nextcloud.log 2>&1
 +  # Everything below will go to the file 'backup-nextcloud.log':
 +  
 +  echo "------------"
 +  DATE_START=`date`
 +  echo "[STARTING] Backup of NextCloud ${DATE_START}"
 +  
 +  echo "Create backup directory..."
 +  mkdir -p /var/nextcloud/backups/`date +"%Y%m%d"`
 +  
 +  echo "Maintenance mode: ON"
 +  php /var/www/nuage/occ maintenance:mode --on
 +  
 +  echo "Backing up database..."
 +  pg_dump --username=nextcloud_backup -d nextcloud -h localhost | gzip > /var/nextcloud/backups/`date +"%Y%m%d"`/nextcloud.psql.gz
 +  
 +  echo "Copying config files..."
 +  
 +  rsync -Aavx /var/www/nuage/config/ /var/nextcloud/backups/`date +"%Y%m%d"`/config/
 +  rsync -Aavx /var/nextcloud/data/ /var/nextcloud/backups/`date +"%Y%m%d"`/data/
 +  rsync -Aavx /var/www/nuage/themes/ /var/nextcloud/backups/`date +"%Y%m%d"`/themes/
 +  
 +  echo "Maintenance mode: ON"
 +  php /var/www/nuage/occ maintenance:mode --off
 +  echo "Nextcloud should be running: ON"
 +  DATE_END=`date`
 +  echo "[ENDING] Backup of NextCloud finished on ${DATE_END}"
 +==== Configurer l'envoi d'email ====
 +
 + $ sudo dpkg-reconfigure exim4-config
 +
 +Choisir le type de configuration : **internet site; mail is sent and received directly using SMTP**
 +
 +Répondre aux questions suivantes avec le choix par défaut. S'assurer de n'accepter que l'envoi d'email depuis localhost.
 +
 +Configuration de Nextcloud via le fichier /var/www/nuage/config/config.php :
 +
 +  'mail_smtpmode' => 'sendmail',
 +  'mail_sendmailmode' => 'smtp',
 +  'mail_from_address' => 'ne_pas_repondre',
 +  'mail_domain' => 'amipo.fr',
 +
 +==== Renforcer notre serveur email avec une politique DMARC et SPF ====
 +
 +  * [[ https://mxtoolbox.com/SuperTool.aspx?action=dmarc%3aamipo.fr&run=networktools | Test DMARC ]]
 +  * [[ https://mxtoolbox.com/SuperTool.aspx?action=spf%3aamipo.fr&run=networktools | Test SPF ]]
 +
 +Utilisations des generateurs :
 +  * [[ https://mxtoolbox.com/DMARCRecordGenerator.aspx | Generateur DMARC ]]
 +  * [[ https://mxtoolbox.com/SPFRecordGenerator.aspx | Generateur SPF ]]
 +
 +Dans notre DNS ajouter 2 entry :
 +
 +  Type: TXT
 +  Host/Name: _DMARC.amipo.fr
 +  Value: v=DMARC1; p=none; rua=mailto:admin@amipo.fr; ruf=mailto:admin@amipo.fr; fo=1 
 +
 +et
 +
 +  Type: TXT
 +  Host/Name: amipo.fr
 +  Value: v=spf1 a ~all 
 +  
 +
  
 ==== Ressources installation Nextcloud ==== ==== Ressources installation Nextcloud ====
Ligne 68: Ligne 239:
   sudo usermod -a -G sudo bob   sudo usermod -a -G sudo bob
      
-==== Installer PrettyNoemieCMS ===== 
-=== Installer tout d'abord Composer === 
-  php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" 
-  php -r "if (hash_file('sha384', 'composer-setup.php') === 'baf1608c33254d00611ac1705c1d9958c817a1a33bce370c0595974b342601bd80b92a3f46067da89e3b06bff421f182') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" 
-  php composer-setup.php 
-  php -r "unlink('composer-setup.php');" 
-Pour installer Composer globalement 
-  sudo mv composer.phar /usr/local/bin/composer 
- 
-=== Installer le CMS === 
-Le serveur doit disposer d'un serveur webn Nginx en l'occurence 
  
  
 +{{tag>amipo}}
amipo_weekend_reboot.1576398503.txt.gz · Dernière modification : 2019/12/15 08:28 de bigMax