====== LAMP ======
===== Pré-requis =====
Installer les paquets **apache** :
apt-get install apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php
Installer les paquets **php**:
apt-get install php php-common php-curl php-intl php-mbstring php-mysql php-gd php-imagick php-xml php-simplexml php-cli php-zip php-apcu unzip
Installer les paquets **MariaDB** :
apt install mariadb-client mariadb-server
===== Modules Apache2 =====
Afficher les modules chargés :
apachectl -t -D DUMP_MODULES
Activer les modules indispensables :
a2enmod ssl
a2enmod headers
a2enmod rewrite
===== APCU (gestion du cache) =====
Editer le fichier de configuration **apcu.ini** :
vi /etc/php/8.x/mods-available/apcu.ini
En fin de fichier, ajouter la ligne suivante :
apc.enable_cli=1
===== PHP =====
Editer le fichier de configuration **PHP** :
vi /etc/php/8.x/apache2/php.ini
Modifier les valeurs suivantes :
post_max_size = 500M
upload_max_filesize = 500M
max_file_uploads = 20
===== Virtualhost =====
Exemple :
ServerAdmin mail_admin@domain.fr
ServerName mon.site.fr
DocumentRoot /var/www/site
SSLEngine on
SSLCertificateFile /etc/ssl/site.pem
SSLCertificateKeyFile /etc/ssl/site.key
ErrorLog ${APACHE_LOG_DIR}/error.site.log
CustomLog ${APACHE_LOG_DIR}/access.site.log combined
Options -Indexes +FollowSymLinks
AllowOverride None
Activer un site :
a2ensite site.conf
Désactiver :
a2dissite site.conf
===== Désactiver ipv6 =====
Editer le fichier **ports.conf** :
vi /etc/apache2/ports.conf
Modifier comme dans l'exemple suivant :
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf
Listen 0.0.0.0:80
Listen 0.0.0.0:443
Listen 0.0.0.0:443
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
===== Certificats =====
Installer les paquets suivants :
apt install certbot python3-certbot-apache -y
Commande pour générer des certificats **Let's Encrypt** :
certbot --apache
===== Sécurité =====
==== Masquer version Apache2 ====
Pour empêcher Apache d'envoyer trop infos au navigateur, éditer :
vi /etc/apache2/conf-available/security.conf
Rentrer les valeurs suivantes :
ServerTokens Prod
...
ServerSignature Off
==== Permissions des fichiers ====
* Modifier/Vérifier les droits du répertoire **/var/www/** :
chown -R www-data:www-data /var/www/
chmod -R 755 /var/www/
* Interdire l’accès aux fichiers sensibles dans le fichier **virtualhost** - ajouter après **** :
Require all denied
==== ModSecurity (WAF pour Apache) ====
* Installer le **mod security** :
apt install libapache2-mod-security2
a2enmod security2
systemctl restart apache2
* Copier le fichier modèle de configuration :
cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
* Activer le module dans le fichier :
vi /etc/modsecurity/modsecurity.conf
puis
SecRuleEngine On
* Voir les **logs** :
tail -f /var/log/apache2/modsec_audit.log
==== mod_evasive (protection contre DoS) ====
apt install libapache2-mod-evasive
a2enmod evasive
systemctl restart apache2