====== Apache ====== ===== Généralités ===== * [[http://fr.wikipedia.org/wiki/Apache_HTTP_Server|Apache]]. Apache est un serveur Web. Il est utilisé pour des applications Web de type PHP, ou associé à Tomcat pour gérer des servlets Java. L'objet de ce document est de montrer la configuration d'Apache pour gérer une interface d'administration. En effet, chaque serveur Linux dispose d’un serveur Web Apache de lancé même s'il ne gère pas l'hébergement d'un site. Il est utilisé pour afficher son état générale d'utilisation des ressources (PHPSysinfo), l'état de ses processus (monit) ou fournit une administration complète du système (Webmin), le tout de manière sécurisée. ===== Documentation ===== Dans ''/var/www/manual'' sous Linux. * Site officiels : http://httpd.apache.org * Site officiels France : http://www.apachefrance.com ===== Installation ===== yum install httpd aptitude install apache2 Vérifier qu'Apache est au démarrage. chkconfig --list | grep httpd chkconfig --list | grep apache2 Si non, mettre Apache au démarrage du système. chkconfig httpd on insserv apache2 ===== Configuration ===== ==== Emplacements ==== ^ Emplacement ^ Fonction ^ | /etc/httpd/* | Emplacement de toute la configuration d'Apache. | | /etc/httpd/conf/* | Dossier qui contient la configuration générale du service Apache ainsi que la gestion des certificats. | | /etc/httpd/conf/httpd.conf | Fichier de configuration d'Apache. | | /etc/httpd/conf.d/* | Emplacement des fichiers de vhosts ou de configuration propre à un service. | | /etc/httpd/logs | Fichiers de logs d’Apache. | Sous Debian, le dossier est ''/etc/apache2''. FIXME utilisateurs documentroot sécurité (interdiction d'accès à tout sauf le nécessaire). fichiers de vhosts (sites-available et sites-enabled) ==== Configuration type pour une interface d'administration ==== L'idée de cette interface d'administration servie par un serveur Web Apache est de regrouper sur une même page XHTML statique l'ensemble des moyens web de monitoring, supervision, statistiques de chaque machine sur laquelle les outils sont installés. ^ Emplacement ^ Fonction ^ | /etc/httpd/conf.d/web_admin.conf | Fichier qui décrit le vhost de la page d’administration. | === Modules === Pour bien gérer le serveur Apache il faut installer le serveur et des modules qui lui sont associés. Voici une liste non exhaustive des principaux modules dont nous allons avoir besoin. LoadModule access_module modules/mod_access.so LoadModule auth_module modules/mod_auth.so LoadModule auth_anon_module modules/mod_auth_anon.so LoadModule auth_dbm_module modules/mod_auth_dbm.so LoadModule auth_digest_module modules/mod_auth_digest.so LoadModule ldap_module modules/mod_ldap.so LoadModule auth_ldap_module modules/mod_auth_ldap.so LoadModule include_module modules/mod_include.so LoadModule log_config_module modules/mod_log_config.so LoadModule env_module modules/mod_env.so LoadModule mime_magic_module modules/mod_mime_magic.so LoadModule cern_meta_module modules/mod_cern_meta.so LoadModule expires_module modules/mod_expires.so LoadModule deflate_module modules/mod_deflate.so LoadModule headers_module modules/mod_headers.so LoadModule usertrack_module modules/mod_usertrack.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule mime_module modules/mod_mime.so LoadModule dav_module modules/mod_dav.so LoadModule status_module modules/mod_status.so LoadModule autoindex_module modules/mod_autoindex.so LoadModule asis_module modules/mod_asis.so LoadModule info_module modules/mod_info.so LoadModule dav_fs_module modules/mod_dav_fs.so LoadModule vhost_alias_module modules/mod_vhost_alias.so LoadModule negotiation_module modules/mod_negotiation.so LoadModule dir_module modules/mod_dir.so LoadModule imap_module modules/mod_imap.so LoadModule actions_module modules/mod_actions.so LoadModule speling_module modules/mod_speling.so LoadModule userdir_module modules/mod_userdir.so LoadModule alias_module modules/mod_alias.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule cache_module modules/mod_cache.so LoadModule suexec_module modules/mod_suexec.so LoadModule disk_cache_module modules/mod_disk_cache.so LoadModule file_cache_module modules/mod_file_cache.so LoadModule mem_cache_module modules/mod_mem_cache.so LoadModule cgi_module modules/mod_cgi.so LoadModule version_module modules/mod_version.so === httpd.conf/apache2.conf === Attribuer un nom au serveur. ServerName Désactiver affichage de la version Apache. vi /etc/apache2/httpd.conf #Disable display of Apache version ServerTokens Prod #Disable apache version in the error messages ServerSignature off Pour avoir plus d’information avec ''mod_status'', modifier ce fichier avec la directive. ExtendedStatus On Changement du charset par défaut qui était UTF-8. AddDefaultCharset ISO-8859-1 Pour les certificats avec passphrase, il faut ajouter à la dernière ligne. SSLPassPhraseDialog exec:/sbin/apachepass ''/sbin/apachepass'' contient la passphrase en clair. Ajouter cette directive uniquement si elle a besoin d’être présente. === web_admin.conf === Voici le fichier ''web_admin.conf'' qui peut être utilisé sur la majorité des serveurs pour disposer d'un accès à PHPSysinfo, monit, Webmin, awstats... #ATTENTION A PENSER A MODIFIER L’ADRESSE IP DU VHOST Listen 8180 UseCanonicalName off SSLEngine on SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key AuthType basic AuthName "Authorized Access Only" AuthzLDAPMethod ldap AuthzLDAPServer ..local AuthzLDAPUserBase "OU=Users,OU=SERVICE,OU=SOUS_SERVICE,OU=UsersServices,OU=Orga_2012,DC=domaine,DC=local" AuthzLDAPUserKey sAMAccountName AuthzLDAPUserScope subtree AuthzLDAPBindDN "cn=ConnectorADSLinux,OU=Services,DC=domaine,DC=local" AuthzLDAPBindPassword "PASSWORD" AuthzLDAPLogLevel info require valid-user DocumentRoot /var/www/web_admin AliasMatch ^/manual(?:/(?:de|en|fr|ja|ko|ru))?(/.*)?$ "/var/www/manual$1" Options Indexes AllowOverride None Order allow,deny Allow from all SetHandler type-map SetEnvIf Request_URI ^/manual/de/ prefer-language=de SetEnvIf Request_URI ^/manual/en/ prefer-language=en SetEnvIf Request_URI ^/manual/fr/ prefer-language=fr SetEnvIf Request_URI ^/manual/ja/ prefer-language=ja SetEnvIf Request_URI ^/manual/ko/ prefer-language=ko SetEnvIf Request_URI ^/manual/ru/ prefer-language=ru RedirectMatch 301 ^/manual(?:/(de|en|fr|ja|ko|ru)){2,}(/.*)?$ /manual/$1$2 Alias /awstats /var/www/awstats/ Alias /awstatsclasses /var/www/awstats/classes/ Alias /awstatscss /var/www/awstats/css/ Alias /awstatsicons /var/www/awstats/icon/ DirectoryIndex awstats.pl Options Indexes MultiViews ExecCGI AddHandler cgi-script .cgi .pl AllowOverride None Order allow,deny Allow from all Alias /webalizer /var/www/usage Alias /mrtg /var/www/mrtg Alias /phpsysinfo /var/www/phpsysinfo #Alias /lshw /var/www/lshw ProxyPass /server-status http://localhost/server-status ProxyPassReverse /server-status http://localhost/server-status ProxyPass /webmin/ http://localhost:10000/ ProxyPassReverse /webmin/ http://localhost:10000/ ProxyPass /monit http://localhost:2812/ ProxyPassReverse /monit http://localhost:2812/ ErrorLog logs/ssl_error_log CustomLog logs/ssl_access_log combined UseCanonicalName off ServerName localhost:80 SetHandler server-status Order deny,allow Deny from all Allow from 127.0.0.1 Copier le fichier ''web_admin.conf'' d’un autre serveur dans ''/etc/httpd/conf.d'' ou le créer avec l’exemple du dessus. Copier le dossier ''/var/www/web_admin'' qui contient les fichiers html et les styles dans le même endroit sur le nouveau serveur. Redémarrer le serveur Web. service httpd restart L’interface d’administration doit être accessible à l’adresse suivante : https://SERVER.DOMAINE.local:8180 L’interface doit fonctionner. Une authentification LDAP nous est demandée. Il faut disposer d’un compte valide sur l’AD. Cependant, aucun des services affichés ne fonctionnent et c’est normal. Les seuls liens qui doivent fonctionner directement sont la documentation Apache et Apache Server Status. Faire fonctionner le reste, c’est tout l’intérêt des documentations réalisées à cet effet. ==== Certificats ==== La gestion des certificats auto-signés ne fonctionnent pas directement. Elle est expliquée dans la documentation [[Certificats]]. Cette opération est très importante. La réaliser tout de suite après avoir vérifier le fonctionnement de l’interface Web.