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/14 18:23] – [Weekend reboot de l'AMIPO] Jérémyamipo_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.
  
 +==== Actions du weekend ====
 +Nous nous motivons pour néttoyer la VM de production AMIPO pour y installer :
 +  * Debian 10 (buster)
 +  * nginx
 +  * postgresql
 +  * nextcloud
  
-===== Work done =====+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 ? 
 +  * [_] Comment travail t-on ? Tout le monde à un accès admin pour se connecter depuis chez lui ? 
 + 
 +===== 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 20: Ligne 65:
   * sudo apt --purge autoremove   * sudo apt --purge autoremove
  
 +==== 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
 +  
 +=== 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 ]]
  
-==== Générer une clé SSH ====+[[ 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;
  
-ssh-keygen -t rsa -b 4096 -C "identifiant_cle"+# 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 Nginx ==== 
-  sudo apt install nginx 
-   
 ==== 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/"
 +==== Postgresql ====
  
-==== Installation de 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 42: Ligne 219:
 https://www.c-rieger.de/nextcloud-installation-guide-debian-9-10/ https://www.c-rieger.de/nextcloud-installation-guide-debian-9-10/
  
-===== Ajouter la clef ssh sur le serveur ===== +===== Création d'un compte et d'un jeu de clef ssh pour un nouvel administrateur ===== 
-Créer préalablement un compte pour l'utilisateur bobpuis+ 
 +Générer une clé SSH sur le poste de l'administrateur 
 +  ssh-keygen -t rsa -b 4096 -C "identifiant_cle" 
 + 
 +Créer préalablement un compte pour l'utilisateur bob 
 +  sudo adduser --disabled-password bob 
 + 
 +puis créer pour l'utilisateur un repertoire .ssh
   sudo mkdir /home/bob/.ssh   sudo mkdir /home/bob/.ssh
-Copier - coller la clef publique dans le fichier authorized_keys+   
 +Copier - coller la clef publique dans le fichier /home/bob/.ssh/authorized_keys
   sudo nano /home/bob/.ssh/authorized_keys   sudo nano /home/bob/.ssh/authorized_keys
 +  
 Changer le propriétaire du répertoire et du fichier Changer le propriétaire du répertoire et du fichier
-  sudo chown -R jchatard:jchatard /home/bob/.ssh/ +  sudo chown -R bob:bob /home/bob/.ssh/ 
-Ajouter éventuellement l'utilisateur au groupe sudo+   
 +Ajouter éventuellement l'utilisateur au groupe sudo si il est administrateur
   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.1576347810.txt.gz · Dernière modification : 2019/12/14 18:23 de Jérémy