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 14:51] bigMaxamipo_weekend_reboot [2020/10/09 07:08] (Version actuelle) – Tag0 Added: amipo serge
Ligne 1: Ligne 1:
 ====== Weekend reboot de l'AMIPO ====== ====== Weekend reboot de l'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 16: Ligne 62:
   * sudo apt upgrade   * sudo apt upgrade
   * sudo apt dist-upgrade   * sudo apt dist-upgrade
-  * +  * sudo apt full-upgrade 
 +  * 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 ]] 
 + 
 +[[ 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) ==== 
 +  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 === 
 +  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>&
 +  # trap 'exec 2>&4 1>&3' 0 1 2 3 
 +  # exec 1>backup-nextcloud.log 2>&
 +  # 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 ==== 
 + 
 +https://www.c-rieger.de/nextcloud-installation-guide-debian-9-10/ 
 + 
 +===== Création d'un compte et d'un jeu de clef ssh pour un nouvel administrateur ===== 
 + 
 +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 
 +   
 +Copier - coller la clef publique dans le fichier /home/bob/.ssh/authorized_keys 
 +  sudo nano /home/bob/.ssh/authorized_keys 
 +   
 +Changer le propriétaire du répertoire et du fichier 
 +  sudo chown -R bob:bob /home/bob/.ssh/ 
 +   
 +Ajouter éventuellement l'utilisateur au groupe sudo si il est administrateur 
 +  sudo usermod -a -G sudo bob 
 +   
 + 
 + 
 +{{tag>amipo}}
amipo_weekend_reboot.1576335111.txt.gz · Dernière modification : 2019/12/14 14:51 de bigMax