Installation de Gestsup
On met d'abord l'OS à jour puis on télécharge LAMP.
apt update && apt upgrade -y && apt dist-upgrade -y
apt install apache2 mariadb-server php7.3 php7.3-mysql php7.3-xml php7.3-curl php7.3-imap php7.3-ldap php7.3-zip php7.3-mbstring php7.3-gd unzip ntp -y
On crée l'utilisateur gestsup et on lui donne les droits. (on peut attribuer les droits uniquement à la BDD de gestsup).
mariadb -u root
CREATE USER 'gestsup'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'gestsup'@'localhost';
FLUSH PRIVILEGES;
exit
On modifie la configuration de PHP.
nano /etc/php/7.3/apache2/php.ini
Max_execution_time = 480
Memory_limit = 512M
upload_max_filesize = 8M
Date.timezone = Europe/Paris
On télécharge Gestsup puis on l'extrait.
wget -P /var/www/html https://gestsup.fr/downloads/versions/current/version/gestsup_3.2.5.zip
unzip /var/www/html/gestsup_3.2.5.zip -d /var/www/html
On supprime l'archive et le fichier index.html.
rm /var/www/html/gestsup_3.2.5.zip
rm /var/www/html/index.html
On crée l'utilisateur gestsup et on modifie les permissions.
adduser gestsup --ingroup www-data
chown -R gestsup:www-data /var/www/html/
find /var/www/html/ -type d -exec chmod 750 {} \;
find /var/www/html/ -type f -exec chmod 640 {} \;
chmod 770 -R /var/www/html/upload
chmod 770 -R /var/www/html/images/model
chmod 770 -R /var/www/html/backup
chmod 770 -R /var/www/html/_SQL
chmod 660 /var/www/html/connect.php
On redémarre le serveur.
On se rend à l'adresse suivante dans un navigateur web : http://192.168.199.105/install/ (à remplacer par l'adresse IP du serveur ou le nom DNS).
On utilise l'utilisateur créé précédemment dans la base de données.
On clique sur "Suivant".
On supprime le répertoire d'installation .
rm -rf /var/www/html/install/
On se connecte.
On modifie le mot de passe par défaut.
On clique sur cette icône à droit du nom d'utilisateur.
On modifie les droits après installation.
chmod 640 /var/www/html/connect.php
Sécurisation
nano /etc/apache2/conf-available/security.conf
nano /etc/apache2/apache2.conf
On supprime "Indexes".
On installe et configure fail2ban.
apt install fail2ban -y
systemctl enable fail2ban
nano /etc/fail2ban/jail.local
[apache-auth]
enabled = true
port = http,https
logpath = %(apache_error_log)s
[apache-badbots]
enabled = true
port = http,https
logpath = %(apache_access_log)s
bantime = 48h
maxretry = 1
[apache-noscript]
enabled = true
port = http,https
logpath = %(apache_error_log)s
On redémarre ensuite fail2ban puis on vérifie le bon fonctionnement.
systemctl restart fail2ban
fail2ban-client status
HTTPS
On déplace gestsup (/var/www/html) dans /var/www/gestsup.home.khroners.fr
On attribue les droits.
chown -R gestsup:www-data /var/www/gestsup.home.khroners.fr/
chmod 770 -R /var/www/gestsup.home.khroners.fr/upload/
chmod 770 -R /var/www/gestsup.home.khroners.fr/images/model/
chmod 770 -R /var/www/gestsup.home.khroners.fr/backup/
chmod 770 -R /var/www/gestsup
On crée ensuite le fichier de configuration (vhost).
mkdir /etc/apache2/sites-available/gestsup.home.khroners.fr
nano /etc/apache2/sites-available/gestsup.home.khroners.fr
<VirtualHost *:80>
ServerName gestsup.home.khroners.fr
ServerAlias www.gestsup.home.khroners.fr
ServerAdmin alexisbonnet@khroners.fr
DocumentRoot /var/www/gestsup.home.khroners.fr
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerName gestsup.home.khroners.fr
ServerAlias www.gestsup.home.khroners.fr
ServerAdmin alexisbonnet@khroners.fr
DocumentRoot /var/www/gestsup.home.khroners.fr
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile "/etc/apache2/ssl/fullchain.pem"
SSLCertificateKeyFile "/etc/apache2/ssl/private/privkey.pem"
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
On active la configuration.
a2ensite gestsup.home.khroners.fr
systemctl reload apache2
a2dissite 000-default.conf
systemctl reload apache2
On crée les répertoires pour le certificat pour importer notre propre certificat pré-généré via Certbot (Let's Encrypt)
mkdir /etc/apache2/ssl
mkdir /etc/apache2/ssl/private
chmod 755 /etc/apache2/ssl
chmod 700 /etc/apache2/ssl/private
chmod 644 /etc/apache2/ssl/*.pem
chmod 640 /etc/apache2/ssl/private/*.pem
a2enmod ssl
On ajoute notre certificat Let's Encrypt. (fullchain.pem dans apache2/ssl et privkey.pem dans private)
On redémarre le serveur et on teste.
systemctl restart apache2