====== 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