Soutenir Vision du Web dans son partage de logiciels et de ressources libres
Merci de désactiver votre bloqueur de publicité.
Aucune publicité ne sera affichée.
Le montant des donations pour Vision du web est de 0.046176192993616 Monero.
Installer Apache2 sur Debian
Sommaire
- 1 Exemples
- 2 Informations complémentaires
- 3 Installer et démarrer Apache2 sur GNU/Linux Debian Jessie 8.5
- 4 Identifier un problème sur Apache2 : Etat, logs, journal
- 5 Résoudre les éventuels incidents
- 6 Identifier et corriger les erreurs de démarrage de Apache2 installé par défaut
- 7 Que donne
- 8 Consulter les status du service Apache2
- 9 Installer PHP
- 10 Variables d'environnement
- 11 mod-security2
- 12 Peaufiner Apache
- 13 Autres liens à survoler
- 14 Sécurité Serveur que faire de plus pour aller plus loin
- 15 Bibliographie
- 16 NAVIGATION
Exemples
Le besoin premier est de pouvoir envoyer des mails avec un serveur fonctionnel. Mon étude ne porte pas sur l'ensemble des impactes de sécurité : 391 directives de configuration pour Apache 2.2 . Paramètres pour envoyer les mails dans php.ini avec le paramètre -f dans sendmail_path. Mise en place des logs pour la remontée des erreurs. Les logs de Apache pour PHP sont à configurer - à identifer. Les logs des Mails sont à configurer - à identifier.
Redémarrer les services de Apache en ligne de commande
# /etc/init.d/httpd restart
Exemple de redémarrage 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 ]
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
Vérifiez les fichiers logs régulièrement dans /var/log/ afin de détecter les erreurs
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 qui m'a servit de référence sur une Centos en 2014 : Exemple Apache pour le fichier php ini
Informations complémentaires
user_ini.filename et user_ini.cache_ttl ont été ajoutées pour contrôler l'utilisation des fichiers INI utilisateurs. exit_on_timeout a été ajouté pour forcer les fils Apache 1.x à se terminer si un délai d'exécution maximal PHP survient. Ajout de mbstring.http_output_conv_mimetype. Cette directive définit une expression rationnelle qui identifie les types de contenus pour lesquels mb_output_handler() est activé. Ajout de request_order. Autorise le contrôle des options de requêtes disponibles dans $_REQUEST.
Le directives INI suivantes ont changé de valeur par défaut : session.use_only_cookies vaut maintenant "1" (activé) par défaut. oci8.default_prefetch a changé de valeur par défaut, passant de "10" à "100".
############################### ############################### ###############################
Installer et démarrer Apache2 sur GNU/Linux Debian Jessie 8.5
sudo apt-get install Apache2
Lancer le service avec /etc/init.d/apache2 start ou service apache2 start
.
Lancer la commande sudo apache2 -k start
permet d'afficher les erreurs éventuellement rencontrées.
Attention, sudo apache2 -k start
ne lance pas Apache2 mais n'affiche que les alertes.
L'option -k permet de vérifier la configuration en mode test.
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
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.
Apache démarre! It works!
sudo service apache2 start
Saisir localhost
dans la barre d'adresses url du navigateur.
It works!


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
Que donne
: sudo systemctl -l status apache2
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)
Installer PHP
PHP multi-versions sur le même Apache
http://www.pulsar-informatique.com/actus-blog/entry/php-multi-versions-sur-le-meme-apache
PHP5 configurations
Modifier le fichier /etc/php5/apache2/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 : 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).
module MySQL pour PHP
php7.0-mysql : https://packages.debian.org/sid/php7.0-mysql
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
mod-security2
Installer mod-security2
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]rveur # 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é.
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
Redémarrer apache : [email protected] # service apache2 restart
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
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.
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
Sécurité Serveur que faire de plus pour aller plus loin
Modifier le nom du script d'accès à APC (?) port-knocking
Bibliographie
Utiliser la documentation officielle pour le serveur HTTP Apache Version 2.4 : https://httpd.apache.org/docs/2.4/
Debian 9 - Apoache MariaDB PHPMyAdmin : http://jc.etiemble.free.fr/abc/index.php/realisations/trucs-astuces/deb9php7
Installer Apache PHP MySQL et Webmin : https://www.skyminds.net/serveur-dedie-installation-dapache-php-mysql-et-webmin/
Installer un serveur web : http://www.linux-note.com/installer-un-serveur-web/
NAVIGATION
COMPRENDRE LA BLOCKCHAIN PAR LA PRATIQUEObtenir gratuitement de la cryptomonnaie sur internet : https://www.visionduweb.eu/forum/bitcoin/1597-gagner-des-bitcoins-miner-des-bitcoins | |
---|---|
PARTICIPER ET PARTAGERVous êtes sur le HackerSpace 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. Pourquoi utiliser GNU/Linux ? Y'a moins bien, mais, c'est beaucoup plus cher. GNU/Linux, hackerspace, opensource, logiciels libres et transition écologique. La recherche interne du wiki permet de trouver le contenu qui vous intéresse. Les informations présentes sur cette page sont issues d'une recherche personnelle. 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. Vous pouvez partager les articles du wiki avec l'ensemble de la communauté des internautes. Les recherches sur la sécurité servent à administrer et protéger votre système informatique. 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. |
SOUTENIR VISIONDUWEBSoutenir Vision du web avec des Bitcoins : 33ZsupGQr1rUmwj62HadcZ55hsGJajD9wN Soutenir Vision du web avec des Bitcoins Cash : 15q5xAVFGpMbqgKsr8uhXymTv7kLfke7hq Soutenir Vision du web avec des Bitcoins Gold : GNcVseSdiEGRzKYwZWeCbGGg1sZ6Nax172 Soutenir Vision du web avec des Bitcore (BTX) : 1Ks9FDF4FVauAHBCpBFKySiSmD8LaQhqDH Soutenir Vision du web avec des Blackcoins : BKYBEhQGm9ExrYoWzbvmHA491sK2ArxFM6 Soutenir Vision du web avec des Bytecoins : Soutenir Vision du web avec des Clams : xMF9u1evuiN2zzEjg2KhgeYPcCLU84Ki5T Soutenir Vision du web avec des Dash : Xd4vJFnWy27be8cLGSiXVYzP6nKFbdHATU Soutenir Vision du web avec des Monero : Soutenir Vision du web avec des Dogecoins : A64jhqCgsUyrUCPte6fV3BcG2Y7daH13Ym Soutenir Vision du web avec des Ethereum : 0x0E4D6B7A1F88A56A1A66bf408c72FAE3d104D632 Soutenir Vision du web avec des Ethereum Classique : 0x633d83a4ab31e63d76d01edb660ecca4498ef8fa Soutenir Vision du web avec des Litecoins : 3LKigW6TCS5MvXrZFGh8VMEtZf6MtE86iz Soutenir Vision du web avec des Potcoins : PUYvjeJ3n2frypgD5yd95yNnwoztnZL5P3 Soutenir Vision du web avec des Solarcoins : 8aYbMcAL68U8f3c3o5pEKUKeWxx48gU1eq Soutenir Vision du web avec des Zcash : t1Tkiv7nTt9Gwwui9ifsBdp37dTnRG7oYHp |