Soutenir Vision du Web dans son partage de logiciels et de ressources libres

Ce mineur crée de la monnaie numérique Monero pour soutenir Vision du web.
Merci de désactiver votre bloqueur de publicité.
Aucune publicité ne sera affichée.
Le mineur utilise les ressources de votre machine pour créer gratuitement de la monnaie numérique.
Le montant des donations pour Vision du web est de 0.068851051984958 Monero.

Installer Apache2 sur Debian : Différence entre versions

De Wiki. Analyse, Communication, Développement, Hacking.
Aller à : navigation, rechercher
m (Identifier un problème sur Apache2 : Etat, logs, journal)
m (mail.log)
(Une révision intermédiaire par le même utilisateur non affichée)
Ligne 104 : Ligne 104 :
 
  conf.d  php.ini
 
  conf.d  php.ini
  
==Vérifiez les fichiers logs régulièrement dans /var/log/ afin de détecter les erreurs==
+
==Activer des modules sur Apache2==
  Mise en place des logs pour la remontée des erreurs.
+
  Vérifier les modules activés.
Les logs de Apache pour PHP sont à configurer.
+
  apachectl -M
Les logs des Mails sont à configurer.
 
 
 
Le contenu du dossier var/log/ est lu et copié en local avant la mise en place du nouveau php.ini de développement.
 
Les logs de PHP sont configurés depuis le php.ini de Apache. Chemin : /var/log/phpini/error_log.log
 
Les logs des Mails sont configurés depuis le php.ini de Apache. Chemin : /var/log/phpini/mail.log.log
 
 
 
0- Créer le dossier phpini : mkdir phpini
 
1- Créer le fichier de log sur le serveur : touch /var/log/error_log.log et touch /var/log/mail.log.log
 
2- Mettre les droits en écriture sur le fichier si nécessaire.
 
  3- Ouvrir le fichier php.ini en lecture/écriture, avec Nano : nano /etc/php.ini
 
4- Appliquer les changements listés dans l'étude du php.ini
 
5- Redémarrer apache : /etc/init.d/httpd restart
 
7- Tester les logs suite à l'envoi d'un mail : cat /var/log/phpini-log-mail.log
 
8- Passer le paramètre -f pour l'envoie des mails ?
 
 
 
Exemple de fichier php.ini commenté en français sur une base Centos en 2014 : [[Exemple_Apache_pour_le_fichier_de_configuration|Exemple Apache pour le fichier de configuration php ini]]
 
  
 
==Créer un fichier php.ini dans le dossier racine de votre cms==
 
==Créer un fichier php.ini dans le dossier racine de votre cms==
Ligne 153 : Ligne 137 :
 
==mail.log==
 
==mail.log==
 
  https://www.visionduweb.eu/editoriaux/76-editoriaux-serveur-web/189-la-directive-mail-log-logs-les-mails-envoyes
 
  https://www.visionduweb.eu/editoriaux/76-editoriaux-serveur-web/189-la-directive-mail-log-logs-les-mails-envoyes
 +
 +
==Vérifiez les fichiers logs régulièrement dans /var/log/ afin de détecter les erreurs==
 +
Mise en place des logs pour la remontée des erreurs.
 +
Les logs de Apache pour PHP sont à configurer.
 +
Les logs des Mails sont à configurer.
 +
 +
Le contenu du dossier var/log/ est lu et copié en local avant la mise en place du nouveau php.ini de développement.
 +
Les logs de PHP sont configurés depuis le php.ini de Apache. Chemin : /var/log/phpini/error_log.log
 +
Les logs des Mails sont configurés depuis le php.ini de Apache. Chemin : /var/log/phpini/mail.log.log
 +
 +
0- Créer le dossier phpini : mkdir phpini
 +
1- Créer le fichier de log sur le serveur : touch /var/log/error_log.log et touch /var/log/mail.log.log
 +
2- Mettre les droits en écriture sur le fichier si nécessaire.
 +
3- Ouvrir le fichier php.ini en lecture/écriture, avec Nano : nano /etc/php.ini
 +
4- Appliquer les changements listés dans l'étude du php.ini
 +
5- Redémarrer apache : /etc/init.d/httpd restart
 +
7- Tester les logs suite à l'envoi d'un mail : cat /var/log/phpini-log-mail.log
 +
8- Passer le paramètre -f pour l'envoie des mails ?
 +
 +
Exemple de fichier php.ini commenté en français sur une base Centos en 2014 : [[Exemple_Apache_pour_le_fichier_de_configuration|Exemple Apache pour le fichier de configuration php ini]]
  
 
=Résoudre les éventuels incidents=
 
=Résoudre les éventuels incidents=

Version du 20 septembre 2018 à 12:34

Naviguer sur le site : Accueil du site - Les annuaires - Les éditoriaux - Le forum - Les outils - Les projets
 
Consulter le contenu en étant déconnecté du réseau : Exporter le sommaire de cette page vers un document PDF

Sommaire

Installer Apache2 sur Debian

sudo apt-get install apache2

Démarrer ou redémarrer Apache2

L'option -k permet d'afficher les erreurs éventuellement rencontrées sans lancer Apache2.
sudo apache2 -k start
Démarrer Apache2. 
# /etc/init.d/apache2 start 
# service apache2 start
Redémarrer Apache2.
# /etc/init.d/apache2 restart
# service apache2 restart
Recharger les fichiers de configuration.
# /etc/init.d/apache2 reload

Démarrer ou redémarrer httpd

Redémarrer le service httpd de Apache2.
# /etc/init.d/httpd restart
Exemple de redémarrage du service httpd.
Arrêt de httpd :
OK
Démarrage de httpd : [Fri May 30 00:28:20 2014] [warn] NameVirtualHost *:443 has no VirtualHosts
[Fri May 30 00:28:20 2014] [warn] NameVirtualHost *:80 has no VirtualHosts [ OK ]

Consulter les status du service Apache2

Apache2 démarre. Nous consultons les status du service systemctl status apache2.service
Dans cet exemple, on constate que Passenger est présent. Il ne s'agit donc pas d'une configuration de Apache2 minimaliste, nous avons déjà ajouté un mod.
systemctl status apache2.service
● apache2.service - LSB: Apache2 web server
  Loaded: loaded (/etc/init.d/apache2)
  Active: active (running) since dim. 2016-07-17 01:02:34 CEST; 12h ago
 Process: 11953 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
 Process: 12930 ExecReload=/etc/init.d/apache2 reload (code=exited, status=0/SUCCESS)
 Process: 12127 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
  CGroup: /system.slice/apache2.service
          ├─12162 /usr/sbin/apache2 -k start
          ├─12948 PassengerWatchdog
          ├─12955 PassengerHelperAgent
          ├─12970 PassengerLoggingAgent
          ├─12987 /usr/sbin/apache2 -k start
          └─12988 /usr/sbin/apache2 -k start
Le besoin étant de faire tourner Apache2 en local, au plus simple, au plus propre, le mod Passenger est désinstallé ainsi que sa configuration, pour revenir à un état initial de Apache2. Je rappel que le mod Passenger avait été installé pour redmine, puis, le mod Passenger a été désinstallé en laissant sa conf ce qui a empêché la nouvelle installation de Apache de démarrer. La désinstallation du mod Passenger avec --purge a permis de lancer Apache2.
On observe bien que Passenger n'est plus présent.
systemctl status apache2.service
● apache2.service - LSB: Apache2 web server
  Loaded: loaded (/etc/init.d/apache2)
  Active: active (running) since dim. 2016-07-17 14:03:23 CEST; 5min ago
 Process: 14150 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
 Process: 14176 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
  CGroup: /system.slice/apache2.service
          ├─14192 /usr/sbin/apache2 -k start
          ├─14195 /usr/sbin/apache2 -k start
          └─14196 /usr/sbin/apache2 -k start
Les lignes avec -k start ne sont pas nécessaires. On les tues rapidement avec sudo killall apache2
systemctl status apache2.service
● apache2.service - LSB: Apache2 web server
  Loaded: loaded (/etc/init.d/apache2)
  Active: inactive (dead) since dim. 2016-07-17 15:38:57 CEST; 56min ago
 Process: 14696 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
 Process: 14585 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
sudo systemctl -l status apache2
● apache2.service - The Apache HTTP Server
  Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
  Active: inactive (dead) since Fri 2018-08-17 03:30:54 CEST; 13min ago
 Process: 5421 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
 Process: 969 ExecReload=/usr/sbin/apachectl graceful (code=exited, status=0/SUCCESS)
 Process: 5373 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Main PID: 5378 (code=exited, status=0/SUCCESS)

août 17 03:28:55 nom-du-system systemd[1]: Stopped The Apache HTTP Server.
août 17 03:28:55 nom-du-system systemd[1]: Starting The Apache HTTP Server...
août 17 03:28:55 nom-du-system apachectl[5373]: AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/sites-enabl
août 17 03:28:55 nom-du-system apachectl[5373]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.
août 17 03:28:55 nom-du-system systemd[1]: Started The Apache HTTP Server.
août 17 03:30:54 nom-du-system systemd[1]: Stopping The Apache HTTP Server...
août 17 03:30:54 nom-du-system apachectl[5421]: AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/sites-enabl
août 17 03:30:54 nom-du-system apachectl[5421]: AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.
août 17 03:30:54 nom-du-system systemd[1]: Stopped The Apache HTTP Server.

Savoir si Apache écoute Internet

netstat -ntlp | grep ":80"
tcp  0 0 :::80  :::*  LISTEN 3996/httpd

Trouver le service PHP

whereis php
php: /usr/bin/php /etc/php.d /etc/php.ini /usr/lib64/php /usr/share/php /usr/share/man/man1/php.1.gz

Trouver le fichier php.ini

Avec php 7.0

/etc/php/7.0/apache2
conf.d  php.ini

Activer des modules sur Apache2

Vérifier les modules activés.
apachectl -M

Créer un fichier php.ini dans le dossier racine de votre cms

Il est possible de créer un fichier php.ini dans le dossier qui contient l'ensemble des fichiers et dossiers de votre CMS pour appliquer une configuration particulière.
Désactiver par exemple le paramètre Output Buffering en ajoutant la ligne suivante : output_buffering = Off

Activer ou désactiver un site sous Apache2

Activer un site en créant un lien symbolique de sites-enabled vers sites-available :
a2ensite NomDeMonSite
Supprimer ce lien symbolique et désactiver le site :
a2dissite NomDeMonSite
Tester la configuration :
apache2 -t
Recharger la configuration de Apache2 après avoir testé la configuration :
/etc/init.d/apache2 reload
Lister les site activés :
ls /etc/apache2/sites-enabled/
Lister les sites activables :
ls /etc/apache2/sites-available/

Identifier un problème sur Apache2 : Etat, logs, journal

La commande sudo systemctl status apache2.service détail l'état de Apache2.
Le fichier error.log de Apache2 est localisé dans /var/log/apache2/error.log
Consulter le journal avec la commande journalctl -xn

mail.log

https://www.visionduweb.eu/editoriaux/76-editoriaux-serveur-web/189-la-directive-mail-log-logs-les-mails-envoyes

Vérifiez les fichiers logs régulièrement dans /var/log/ afin de détecter les erreurs

Mise en place des logs pour la remontée des erreurs.
Les logs de Apache pour PHP sont à configurer.
Les logs des Mails sont à configurer.
Le contenu du dossier var/log/ est lu et copié en local avant la mise en place du nouveau php.ini de développement.
Les logs de PHP sont configurés depuis le php.ini de Apache. Chemin : /var/log/phpini/error_log.log
Les logs des Mails sont configurés depuis le php.ini de Apache. Chemin : /var/log/phpini/mail.log.log
0- Créer le dossier phpini : mkdir phpini
1- Créer le fichier de log sur le serveur : touch /var/log/error_log.log et touch /var/log/mail.log.log
2- Mettre les droits en écriture sur le fichier si nécessaire.
3- Ouvrir le fichier php.ini en lecture/écriture, avec Nano : nano /etc/php.ini
4- Appliquer les changements listés dans l'étude du php.ini
5- Redémarrer apache : /etc/init.d/httpd restart
7- Tester les logs suite à l'envoi d'un mail : cat /var/log/phpini-log-mail.log
8- Passer le paramètre -f pour l'envoie des mails ?
Exemple de fichier php.ini commenté en français sur une base Centos en 2014 : Exemple Apache pour le fichier de configuration php ini

Résoudre les éventuels incidents

Revenir à une configuration d'origine pour le paquet Apache2 de Debian Jessie

Exemple : Installation du mod complémentaire passenger qui a été désinstallé, mais, pas sa configuration.
Je n'ai pas apt-get autoremove --purge mod_passenger et de ce fait la configuration est restée installée.
apache2: Syntax error on line 140 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/passenger.load: Cannot load /usr/lib/apache2/modules/mod_passenger.so into server: /usr/lib/apache2/modules/mod_passenger.so: cannot open shared object file: No such file or directory 

sudo dpkg --force-confmiss -i /var/cache/apt/archives/apache2_*.deb

Je ne suis pas certain que cette manipulation permette de corriger le problème résultant des restes de la configuration de passenger qui n'a pas été supprimé.

Plutôt que de revenir à une configuration initiale de Apache2, nous pouvons aussi supprimer la configuration de passenger, ce qui semble plus adéquate dans ce cas la.

La configuration empêche Apache2 de démarrer car le mod_passenger n'est pas installé

Lancer le service avec sudo service apache2 start.

Une erreur est affichée sur le terminal : job for apache2.service failed. see 'systemctl status apache2.service'

En utilisant la commande sudo apache2 -k start on observe qu'il manque le mod_passenger.

[Sat Jul 16 19:33:43.934286 2016] [core:warn] [pid 8653] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined
[Sat Jul 16 19:33:43.934362 2016] [core:warn] [pid 8653] AH00111: Config variable ${APACHE_PID_FILE} is not defined
[Sat Jul 16 19:33:43.934378 2016] [core:warn] [pid 8653] AH00111: Config variable ${APACHE_RUN_USER} is not defined
[Sat Jul 16 19:33:43.934384 2016] [core:warn] [pid 8653] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined
[Sat Jul 16 19:33:43.934400 2016] [core:warn] [pid 8653] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
apache2: Syntax error on line 140 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/passenger.load: Cannot load /usr/lib/apache2/modules/mod_passenger.so into server: /usr/lib/apache2/modules/mod_passenger.so: cannot open shared object file: No such file or directory

Utiliser apache2ctl configtest en cas d'erreur de démarrage

Lancer la commande sudo apache2ctl configtest pour identifier ce qui empêche Apache2 de démarrer.

apache2: Syntax error on line 140 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/mods-enabled/passenger.load: Cannot load /usr/lib/apache2/modules/mod_passenger.so 
into server: /usr/lib/apache2/modules/mod_passenger.so: cannot open shared object file: No such file or directory
Action 'configtest' failed.
The Apache error log may have more information.

Erreur de mod manquant pour libapache2-mod-passenger.

Installer ou supprimer un mod et sa configuration. Cette erreur est résolue.


Je relance la commande sudo apache2ctl configtest

AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK

Cette erreur est un simple avertissement qui n'empêche pas le fonctionnement du serveur Apache.

Définir la directive 'ServerName' globalement pour supprimer ce message. Cette erreur est résolue.

Démarrer Apache2

sudo service apache2 start
Saisir localhost dans la barre d'adresses url du navigateur.
It works!
Apache2-debian-default-page.png


Debian-apache2-configuration-overview.png

Identifier et corriger les erreurs de démarrage de Apache2 installé par défaut

Lancer la commande sudo apache2 -k start pour simuler le démarrage de Apache2

[Sun Jul 17 00:06:34.871360 2016] [core:warn] [pid 12027] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined
[Sun Jul 17 00:06:34.871428 2016] [core:warn] [pid 12027] AH00111: Config variable ${APACHE_PID_FILE} is not defined
[Sun Jul 17 00:06:34.871443 2016] [core:warn] [pid 12027] AH00111: Config variable ${APACHE_RUN_USER} is not defined
[Sun Jul 17 00:06:34.871450 2016] [core:warn] [pid 12027] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined
[Sun Jul 17 00:06:34.871465 2016] [core:warn] [pid 12027] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Sun Jul 17 00:06:34.876551 2016] [core:warn] [pid 12027:tid 139957733336960] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Sun Jul 17 00:06:34.876713 2016] [core:warn] [pid 12027:tid 139957733336960] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Sun Jul 17 00:06:34.876730 2016] [core:warn] [pid 12027:tid 139957733336960] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf:
Invalid Mutex directory in argument file:${APACHE_LOCK_DIR}


  • Vu sur un forum

faire export des 2 variables d'environnement

export APACHE_RUN_USER=www-data export APACHE_RUN_GROUP=www-data

faire export de la variable

export APACHE_PID_FILE=/var/run/apache2.pid

Installer PHP

PHP multi-versions sur le même Apache

Ko.png Source : http://www.pulsar-informatique.com/actus-blog/entry/php-multi-versions-sur-le-meme-apache

Installer php7.0

sudo apt install php7.0 libapache2-mod-php7.0 php7.0-cli php7.0-common php7.0-mbstring php7.0-gd php7.0-intl php7.0-xml php7.0-mysql php7.0-mcrypt
sudo apt install php-zip
# Le message suivant est affiché lors de l'installation du paquet php-zip
# perl: warning: Setting locale failed.
# perl: warning: Please check that your locale settings:
# 	LANGUAGE = (unset),
# 	LC_ALL = (unset),
# 	LC_TIME = "fr_FR.UTF-8",
# 	LC_MONETARY = "fr_FR.UTF-8",
# 	LC_ADDRESS = "fr_FR.UTF-8",
# 	LC_TELEPHONE = "fr_FR.UTF-8",
# 	LC_NAME = "fr_FR.UTF-8",
# 	LC_MEASUREMENT = "fr_FR.UTF-8",
# 	LC_IDENTIFICATION = "fr_FR.UTF-8",
# 	LC_NUMERIC = "fr_FR.UTF-8",
# 	LC_PAPER = "fr_FR.UTF-8",
# 	LANG = "en_US.UTF-8"
#     are supported and installed on your system.
# perl: warning: Falling back to a fallback locale ("en_US.UTF-8").
# locale: Cannot set LC_ALL to default locale: No such file or directory

Configurer php7.0

Le fichier php.ini de apache2 : /etc/php7.0/apache2/php.ini.
Le fichier php.ini de Nginx : /etc/php/7.0/fpm/php.ini
Ne pas fournir la version de PHP :
expose_php = Off
Restreindre les emplacements du site :
open_basedir = /var/www
De ce fait, si je me place à la racine du site, il me sera impossible d'inclure
 le fichier ../../../../../../../etc/passwd par exemple.
Désactiver certaines commandes :
disable_functions = php_uname, getmyuid, getmypid, passthru, leak, listen, diskfreespace, tmpfile, link, ignore_user_abord, shell_exec, dl, set_time_limit, exec, system, highlight_file, source, show_source, fpaththru, virtual, posix_ctermid, posix_getcwd, posix_getegid, posix_geteuid, posix_getgid, posix_getgrgid, posix_getgrnam, posix_getgroups, posix_getlogin, posix_getpgid, posix_getpgrp, posix_getpid, posix, _getppid, posix_getpwnam, posix_getpwuid, posix_getrlimit, posix_getsid, posix_getuid, posix_isatty, posix_kill, posix_mkfifo, posix_setegid, posix_seteuid, posix_setgid, posix_setpgid, posix_setsid, posix_setuid, posix_times, posix_ttyname, posix_uname, proc_open, proc_close, proc_get_status, proc_nice, proc_terminate, phpinfo
Interdire l'ouverture et l'inclusion de fichiers distants :
allow_url_fopen = Off
allow_url_include = Off
Si vous n'utilisez pas de formulaires pour l'envoi de fichiers, il est bon de désactivé le système d'envoi de fichiers.
Pour être totalement certain qu’aucun upload ne pourra être fait par quiconque (y compris vous).
On peut créer un fichier php.ini à la racine de son site et y inclure cette ligne.
file_uploads = Off
Par contre si vous avez ce genre de formulaire, il faut limiter un répertoire d'envoi et une taille maximale :
upload_tmp_dir = /var/php_tmp
upload_max_filezize = 2M
Enfin, une dernière chose des plus convoitée, les sessions.
Enregistrement des sessions : session.save_path = /var/lib/php
Il est déconseillé demanipuler vos sessions à l'aide de JavaScript.
À l'aide de cette directive, JavaScript ne pourra lire les sessions (afin d'éviter le XSS) :
session.cookie_httponly = 1
De ce fait, JavaScript ne pourra accéder qu'aux cookies.
Ne pas loguer une erreur récurrente :
ignore_repeated_errors = On
Fichier log :
error_log = /var/log/php_errors.log
Ou bien configurer-le tel qu'il redirige les messages vers syslog-NG (voir section Syslog-NG).
Configurer l'envoi de mails
Paramètres pour envoyer les mails dans php.ini avec le paramètre -f dans sendmail_path. (?)

module MySQL pour PHP

php7.0-mysql : https://packages.debian.org/sid/php7.0-mysql

Support ZIP natif

; Installer le paquet php-zip sur Debian va également installer le paquet php7.0-zip.
; Ajouter la ligne suivante dans le fichier php.ini  
; extension=zip.so
Avec php7.0 il semble qu'il ne soit plus nécessaire de charger le module dans le php.ini

Variables d'environnement

Export des 2 variables d'environnement :
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
Export de la variable pid :
export APACHE_PID_FILE=/var/run/apache2.pid
La commande suivante test la configuration d'un serveur apache.
sudo apache2 -t
La commande à lancer pour tester la configuration d'Apache2 qui prend en compte les variables d'environnement.
apache2ctl -t

Sécurité

 directives de configuration pour Apache 2.2 .

mod-security2

Installer mod-security2

Voir aussi : https://www.skyminds.net/serveur-dedie-securiser-apache-2-avec-mod-security/
On va installer mod-security2 un pare-feu web pour Apache.
Créer le fichier /etc/apt/sources.list.d/mod-security2.list et y inscrire :
### Dépôt pour mod-security2 ###
deb //etc.inittab.org/~agi/debian/libapache-mod-security2 ./
Récupérer la clef gpg :
[email protected] # gpg --keyserver pgpkeys.mit.edu --recv-keys C514AF8E4BA401C3
[email protected] # gpg --export -a C514AF8E4BA401C3 | apt-key add - 
Mettre à jour les dépôts :
[email protected] # aptitude update 
Installer le module :
[email protected] # aptitude install libapache-mod-security mod-security-common

Configurer mod-security2

Configuration du module, créer le fichier /etc/apache2/conf.d/mod-security.conf et ajouter ceci :
<IfModule mod_security2.c>
 Include /etc/modsecurity/*.conf
</IfModule>
Il va falloir créer le dossier /etc/modsecurity et copier les fichiers de configuration :
[email protected] # mkdir /etc/modsecurity
[email protected] # cd /usr/share/doc/mod-security-common/examples/rules
[email protected] # cp *.conf base_rules/* /etc/modsecurity/ 
De plus, il faut créer le dossier pour les logs :
[email protected] # mkdir /etc/apache2/logs 
Optionnel : commenter la ligne contenant Host header is a numeric IP address du fichier /etc/modsecurity/modsecurity_crs_21_protocol_anomalies.conf pour autoriser l'accès au site par l'intermédiaire d'une adresse IP.

Activer le module mod-security2

[email protected] # a2enmod mod-security 
Relancer Apache :
[email protected] # apache2ctl restart 
# Vérifier que le module est bien chargé :
[email protected] # cat /var/log/apache2/error.log | grep ModSecurity 
# Devrait renvoyer :
[notice] ModSecurity for Apache/2.5.12 (http://www.modsecurity.org/) configured.
Bien qu'il s'agisse là d'un excellent module et d'une protection fiable, il se peut qu'il soit un peu extrême lorsque vous développez en local.
Le comportement de PHPmyAdmin peut être altéré, certains scripts retournerons une erreur car jugés dangereux.
Afin de parer ce problème, et ce seulement en développement, vous pouvez ajouter une règle dans les options du vhost ou dans un .htaccess qui désactivera mod-security :
SecRuleEngine Off
Bien entendu, une fois le développement terminé, il est plus que fortement conseillé de rétablir la sécurité.

VirtualHost

Exemples de la documentation : http://httpd.apache.org/docs/2.2/fr/vhosts/examples.html
Dans les fichiers d'options des vhosts ou dans un fichier .htaccess il est possible de bloquer certaines actions.
Empêcher le listage des répertoires
Options -Indexes

Peaufiner Apache

Désactiver diverses divulgations d'informations comme la signature du serveur, la méthode TRACE, et caetera.
Éditer le fichier /etc/apache2/apache2.conf et ajouter ces lignes :
ServerSignature Off
ServerTokens Prod
TraceEnable Off
Optionnel : si le module rewrite est installé et activé, voici quelque protections supplémentaires, à placer dans un fichier .htaccess :
# Empêcher les attaques par include de fichier externe
RewriteEngine On
RewriteCond %{QUERY_STRING} =//
RewriteRule .* - [F,L]

# Bloquer l'accès au site pour libwww-perl
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} libwww [NC]
RewriteRule .* - [F,L]
Optionnel : autre protection, à placer aussi dans un fichier .htaccess :
# Protection contre les attaques se servant de register global on
SetEnv REGISTER_GLOBALS 0
Empêcher de pouvoir accéder à un page par sonNom.php ou sonNom
Options -MultiViews
Ne pas suivre les liens symboliques
Options -FollowSymLinks
Note : pour combiner plusieurs options, il faut les mettres à la suite tel que :
Options -Indexes -FollowSymLinks -MultiViews
Attention : il est déconseillé de sécuriser un répertoire par un accès à l'aide de la méthode d'authentification d'Apache.
Le pourquoi du comment est simple : les informations transitent en clair, de ce fait, à l'aide d'une attaque MITM, il est très facile d'obtenir celles-ci.

Sécurité Serveur que faire de plus pour aller plus loin

Modifier le nom du script d'accès à APC (?)
port-knocking

Bibliographie

Ok-ko.png Documentation Apache2 Ubuntu : https://doc.ubuntu-fr.org/apache2
Ok-ko.png Utiliser la documentation officielle pour le serveur HTTP Apache Version 2.4 : https://httpd.apache.org/docs/2.4/
Ok-ko.png Debian 9 - Apache MariaDB PHPMyAdmin : http://jc.etiemble.free.fr/abc/index.php/realisations/trucs-astuces/deb9php7
Ok-ko.png Installer Apache PHP MySQL et Webmin : https://www.skyminds.net/serveur-dedie-installation-dapache-php-mysql-et-webmin/
Ok-ko.png Installer un serveur web : http://www.linux-note.com/installer-un-serveur-web/

Autres liens à survoler

http://www.commentcamarche.net/contents/796-installation-d-un-serveur-web-sous-linux-apache-php-et-mysql
http://olange.developpez.com/articles/debian/installation-serveur-dedie/
http://debian-facile.org/doc:reseau:apache2:multisite
https://www.mistra.fr/tutoriel-linux-serveur-web-apache2.html

NAVIGATION

PARTICIPER ET PARTAGER

Vous êtes sur le wiki de Vision du Web.
Les pages présentées sur le wiki évoluent tous les jours.
Certaines recherches sont peu abouties et incluent des erreurs.
Pour participer sur le wiki, créer un compte utilisateur en haut à droite.
La recherche interne du wiki permet de trouver le contenu qui vous intéresse.
Identifiez-vous pour poser vos questions sur la page de discussion de VisionDuWeb.
Améliorer le contenu des pages en faisant des propositions depuis l'onglet discussion.
Pour écrire en Markdown : Éditeur - Générateur de tableau 1 - Générateur de tableau 2.
Les informations du wiki ne doivent pas servir à nuire à autrui ou à un système informatique.
De nombreux outils gratuits sont listés et disponibles dans la boîte à outils de Vision du web.
D'autres pages du wiki peuvent correspondre à vos attentes. La liste de toutes les pages du wiki.

VALORISER LE WIKI

Valoriser le contenu partagé sur le wiki avec un don en monnaie numérique :
AEON - Bitcoins (BTC) - Bitcoins Cash - Bitcoins Gold - Bitcore (BTX) - Blackcoins - Bytecoins - Clams - Dash - Monero - Dogecoins - Ethereum - Ethereum Classique - Litecoins - Potcoins - Solarcoins - Zcash

OBTENIR DE LA MONNAIE NUMERIQUE

Obtenir gratuitement de la monnaie numérique :
Gagner des Altcoins - Miner des Altcoins.