Outils pour utilisateurs

Outils du site


amipo_weekend_reboot

Ceci est une ancienne révision du document !


Weekend reboot de l'AMIPO

Décisions

L'audiance cible de l'AMIPO

Tous public / ex: framasoft, pas besoin d'adhérer à l'association.

Premier service à héberger

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

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 AMIPO Plante

  1. [x] Configuration de DMARC et SPF sur le DNS amipo.fr
  2. [x] Créer compte Benjamin
  3. [x] Renforcer la configuration de nginx (bonnes pratiques de sécurité, php, …)
  4. [x] Configuration du cron Nextcloud
  5. [x] Configuration du serveur SMTP
  6. [x] Mettre en place un backup automatisé des data sur le serveur (nextcloud, l'éventuel CMS, …)
  7. [x] Finaliser la configuration nginx (redirection, …)
  8. [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 l'appli DAVx5
  • La réception des emails envoyés par le serveur

Ce qui ne fonctionne pas

Déplacé vers 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

Passage de Debian Stretch à Buster : https://www.cyberciti.biz/faq/update-upgrade-debian-9-to-debian-10-buster/

  • Remplacement du mot clef stretch par buster dans /etc/apt/sources.list
  • sudo apt update
  • sudo apt upgrade
  • sudo apt dist-upgrade
  • sudo apt full-upgrade
  • sudo apt –purge autoremove

Paramétrage php.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

Nginx

Installation

sudo apt install nginx

Configuration

  1. Par défaut on utilise le domaine amipo.fr
  2. Toutes les requêtes sur un vhost différent de https://amipo.fr son redirigés vers https://amipo.fr[requête_originale]
  3. Si la requête match un fichier dans /var/www/default le sert tout de même.
  4. php n'est interprété nulle part si pas explicité.

Renforcement

Test ssl

Guide de configuration renforcée

/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";

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 Paramètres de NextCloud.

$ sudo crontab -u www-data -e
  • /5 * * * * 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

Utilisations des generateurs :

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

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
amipo_weekend_reboot.1576787006.txt.gz · Dernière modification : 2019/12/19 20:23 de Jérémy