Table of Contents

Apache

Généralités

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.

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 <domaine.tld>

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

<VirtualHost ADRESSE_IP_DU_SERVER:8180>
        UseCanonicalName off
        SSLEngine on
        SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
        SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
        <Location />
                AuthType basic
                AuthName "Authorized Access Only"
                AuthzLDAPMethod ldap
                AuthzLDAPServer <nom_domain_controller>.<domaine>.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
        </Location>

        DocumentRoot /var/www/web_admin
        AliasMatch ^/manual(?:/(?:de|en|fr|ja|ko|ru))?(/.*)?$ "/var/www/manual$1"
        <Directory "/var/www/manual">
                Options Indexes
                AllowOverride None
                Order allow,deny
                Allow from all
        <Files *.html>
                SetHandler type-map
        </Files>
                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
        </Directory>
        Alias /awstats /var/www/awstats/
        Alias /awstatsclasses /var/www/awstats/classes/
        Alias /awstatscss /var/www/awstats/css/
        Alias /awstatsicons /var/www/awstats/icon/

        <Directory /var/www/awstats/>
                DirectoryIndex awstats.pl
                Options Indexes MultiViews ExecCGI
                AddHandler cgi-script .cgi .pl
                AllowOverride None
                Order allow,deny
                Allow from all
        </Directory>
        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
</VirtualHost>


<VirtualHost 127.0.0.1:80>
       UseCanonicalName off
       ServerName localhost:80
        <Location /server-status>
                SetHandler server-status
                Order deny,allow
                Deny from all
                Allow from 127.0.0.1
        </Location>
</VirtualHost>

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.