13 Conseils de sécurité et de durcissement du serveur Web Apache

13 Conseils de sécurité et de durcissement du serveur Web Apache

Nous connaissons tous très bien Apache serveur Web, il s'agit d'un serveur Web très populaire pour héberger vos fichiers Web ou votre site Web sur le Web. Voici quelques liens qui peuvent vous aider à configurer le serveur Web Apache sur votre boîte Linux.

Conseils de sécurité et de durcissement Apache
  1. Installer le serveur Web Apache
  2. Configurez votre site Web dans votre boîte Linux

Ici, dans ce tutoriel, je couvrirai quelques conseils principaux pour sécuriser votre serveur Web. Avant d'appliquer ces modifications dans votre serveur Web, vous devriez avoir des bases du serveur Apache.

  1. Répertoire des racines du document: / var / www / html ou / var / www
  2. Fichier de configuration principale: / etc / httpd / conf / httpd.confli (Rhel / centos / fedora) et / etc / apache2 / apache2.confli (Debian / Ubuntu).
  3. Port HTTP par défaut: 80 TCP
  4. Port HTTPS par défaut: 443 TCP
  5. Testez vos paramètres de fichier de configuration et votre syntaxe: httpd -t
  6. Accédez aux fichiers journaux du serveur Web: / var / log / httpd / access_log
  7. Fichiers journaux d'erreur du serveur Web: / var / log / httpd / error_log

1. Comment masquer la version Apache et l'identité du système d'exploitation à partir des erreurs

Lorsque vous installez Apache avec source ou tout autre programme d'installations comme Miam, il affiche le Version de votre Apache serveur Web installé sur votre serveur avec le Nom du système d'exploitation de votre serveur dans les erreurs. Il montre également les informations sur Modules Apache installés dans votre serveur.

Afficher la version Apache

Dans l'image ci-dessus, vous pouvez voir que Apache montre son version avec le OS installé dans votre serveur. Cela peut être une menace de sécurité majeure pour votre serveur Web ainsi que votre boîte Linux. Pour prévenir Apache Pour ne pas afficher ces informations dans le monde, nous devons apporter des modifications dans le fichier de configuration principale Apache.

Ouvrez le fichier de configuration avec l'éditeur VIM et recherchez «Signature de serveurs«, C'est par défaut sur. Nous devons le faire Désactivé ces signatures de serveur et la deuxième ligne "Servertokens prod"Dit qu'Apache ne renvoie qu'apache en tant que produit dans l'en-tête de réponse du serveur sur la demande de chaque page, il supprime le système d'exploitation, les informations de version majeure et mineure.

# vim / etc / httpd / conf / httpd.conf (rhel / centos / fedora) # vim / etc / apache2 / apache2.conf (Debian / Ubuntu)
SERVERSIGNATURE OFF SERVERTOKENS PROD
# service httpd redémarrage (rhel / centos / fedora) # service apache2 redémarrage (debian / ubuntu)
Masquer la version Apache

2. Désactiver la liste des répertoires

Par défaut, liste apache tous les contenu du répertoire racine de document en l'absence de fichier d'index. Veuillez voir l'image ci-dessous.

Liste du répertoire Apache

Nous pouvons éteindre Listing d'annuaire en utilisant Directive des options dans le fichier de configuration pour un répertoire spécifique. Pour cela, nous devons faire une entrée dans httpd.confli ou apache2.confli déposer.

 Options - Indexes 
Masquer la liste du répertoire Apache

3. Continuez à mettre à jour Apache régulièrement

Apache Developer Community travaille continuellement sur les problèmes de sécurité et libérer son Version mise à jour avec nouveau options de sécurité. Il est donc toujours recommandé d'utiliser le dernière version de Apache Comme votre serveur Web.

Vérifier Version Apache: Vous pouvez vérifier votre version actuelle avec httpd -v commande.

# Version du serveur httpd -v: apache / 2.2.15 (UNIX) Serveur construit: 13 août 2013 17:29:28

Vous pouvez mettre à jour votre version avec la commande suivante.

# yum update httpd # apt-get install apache2

Il est également recommandé de garder votre Noyau et OS Mis à jour aux dernières versions stables si vous n'exécutez aucune application spécifique qui ne fonctionne que sur un système d'exploitation ou un noyau spécifique.

4. Désactiver les modules inutiles

Il est toujours bon de miner les chances d'être victime de tout attaque Web. Il est donc recommandé de désactiver tous ceux modules qui ne sont pas utilisés actuellement. Vous pouvez répertorier tous les modules compilés de serveur Web, en utilisant la commande suivante.

# grep Loadmodule / etc / httpd / conf / httpd.Conf # doit placer des lignes «LoadModule» correspondantes à cet emplacement afin que les modules Foo_Module # LoadModule / mod_foo.SO LOADMODULE AUTH_BASIC_MODULE MODULES / MOD_AUTH_BASIC.SO LOADMODULE AUTH_DIGEST_MODULE Modules / mod_auth_digest.SO LOADMODULE AUTHN_FILE_MODULE Modules / mod_authn_file.SO LOADMODULE AUTHN_ALIAS_MODULE MODULES / MOD_AUTHN_ALIAS.SO LOADMODULE AUTHN_ANON_MODULE MODULES / MOD_AUTHN_ANON.SO LOADMODULE AUTHN_DBM_MODULE MODULES / MOD_AUTHN_DBM.SO LOADMODULE AUTHN_DEFAULT_MODULE MODULES / MOD_AUTHN_DEFAULT.SO LOADMODULE AUTHZ_HOST_MODULE MODULES / MOD_AUTHZ_HOST.SO LOADMODULE AUTHZ_USER_MODULE Modules / mod_authz_user.SO LOADMODULE AUTHZ_OWNER_MODULE Modules / mod_authz_owner.SO LOADMODULE AUTHZ_GROUPFILE_MODULE MODULES / MOD_AUTHZ_GROUPFILE.SO LOADMODULE AUTHZ_DBM_MODULE MODULES / MOD_AUTHZ_DBM.SO LOADMODULE AUTHZ_DEFAULT_MODULE MODULES / MOD_AUTHZ_DEFAULT.SO LOADMODULE LDAP_MODULE MODULES / MOD_LDAP.SO LOADMODULE Authnz_ldap_module Modules / mod_authnz_ldap.donc LoadModule inclut_module modules / mod_include.SO LOADMODULE LOG_CONFIG_MODULE MODULES / MOD_LOG_CONFIG.SO LOADMODULE LOGIO_MODULE MODULES / MOD_LOGIO.So chargemodule Env_module modules / mod_env.SO LOADMODULE EXT_FILTER_MODULE MODULES / MOD_EXT_FILTER.donc… 

Ci-dessus est la liste des modules activés par défaut mais qui ne sont souvent pas nécessaires: mod_imap, mod_include, mod_info, mod_userdir, mod_autoindex. Pour désactiver le module particulier, vous pouvez insérer un «#«Au début de cette ligne et redémarrer le service.

5. Exécutez Apache en tant qu'utilisateur et groupe séparé

Avec une installation par défaut Apache Exécute son processus avec l'utilisateur personne ou démon. Pour des raisons de sécurité, il est recommandé de fonctionner Apache à lui-même sans privé compte. Par exemple: http-web.

Créer un utilisateur et un groupe Apache
# groupadd http-web # userAdd -d / var / www / -g http-web -s / bin / nologin http-web

Maintenant tu dois dire Apache Pour fonctionner avec ce nouvel utilisateur et pour le faire, nous devons faire une entrée dans / etc / httpd / conf / httpd.confli et redémarrer le service.

Ouvrir / etc / httpd / conf / httpd.confli avec l'éditeur VIM et la recherche de mots clés "Utilisateur" et "Groupe»Et là, vous devrez spécifier le nom d'utilisateur et nom de groupe utiliser.

Utilisateur HTTP-Web Group Http-Web

6. Utiliser Autoriser et nier pour restreindre l'accès aux répertoires

Nous pouvons restreindre l'accès aux répertoires avec «Permettre" et "Refuser«Options dans httpd.confli déposer. Ici, dans cet exemple, nous obtiendrons répertoire racine, pour cela en définissant ce qui suit dans le httpd.confli déposer.

 Options Aucune ordonnance nier, permettez de nier à tous 
  1. Options «Aucun» - Cette option ne permettra pas aux utilisateurs d'activer les fonctionnalités facultatives.
  2. Commander nier, permettez - C'est l'ordre dans lequel le «Refuser" et "Permettre»Les directives seront traitées. Ici, ce sera «refuser"Premièrement et"permettre" suivant.
  3. Nier de tous - Cela refusera la demande de tout le monde à la répertoire racine, Personne ne pourra accéder au répertoire racine.

7. Utilisez des modules Mod_Security et Mod_evasive pour sécuriser Apache

Ces deux modules «mod_security" et "mod_evasive«Sont des modules très populaires d'Apache en termes de sécurité.

Mod_security

mod_security fonctionne comme un pare-feu pour nos applications Web et nous permet de surveiller le trafic en temps réel. Il nous aide également à protéger nos sites Web ou nos serveurs Attaques de force brute. Vous pouvez simplement installer mod_security sur votre serveur à l'aide de vos installateurs de package par défaut.

Installez MOD_SECURITY sur Ubuntu / Debian
$ sudo apt-get install libapache2-modsecurity $ sudo a2enmod mod-security $ sudo / etc / init.d / apache2 Force-reload
Installez MOD_SECURITY sur RHEL / CENTOS / FEDORA /
# yum install mod_security # / etc / init.D / httpd redémarrer
Mod_evasive

mod_evasive fonctionne très efficacement, il faut une demande pour le traiter et le traiter très bien. Ça previent Attaques DDOS de faire autant de dégâts. Cette caractéristique de mod_evasive lui permet de gérer le Force brute http et Dos ou DDOS attaque. Ce module détecte les attaques avec trois méthodes.

  1. Si tant de demandes arrivent à une même page à quelques fois par seconde.
  2. Si un enfant processus essayant de faire plus que 50 Demandes simultanées.
  3. Si seulement IP J'essaie toujours de faire de nouvelles demandes quand c'est temporairement sur liste noire.

mod_evasive peut être installé directement à partir de la source. Ici, nous avons un guide d'installation et de configuration de ces modules qui vous aidera à configurer ces modules Apache dans votre boîte Linux.

  1. Protégez Apache à l'aide de mod_security et mod_evasive

8. Désactiver la suite des liens symboliques d'Apache

Par défaut Apache suit liaisons symboliques, nous pouvons éteindre Cette fonctionnalité avec Suivant avec Directive des options. Et pour ce faire, nous devons faire l'entrée suivante dans le fichier de configuration principale.

Options - SollowSymLinks

Et, si un particulier utilisateur ou site Internet besoin Suivant Activer, nous pouvons simplement écrire une règle dans «.htaccess»Fichier de ce site Web.

# Activer les options de liens symboliques + suitSymLinks

Note: Pour permettre la réécriture des règles à l'intérieur «.htaccess" déposer "Allaiter tout«Doit être présent dans la configuration principale dans le monde entier.

9. Désactiver le côté serveur comprend et l'exécution de CGI

Nous pouvons éteindre Le côté serveur comprend (mod_include) et CGI exécution si ce n'est pas nécessaire et pour ce faire, nous devons modifier le fichier de configuration principale.

Options - Comprend les options -execcgi

Nous pouvons également le faire pour un répertoire particulier avec une balise de répertoire. Ici dans cet exemple, nous sommes éteindre Comprend et exécutions de fichiers CGI pour «/ var / www / html / web1»Répertoire.

 Options -Cludes -execcgi 

Voici quelques autres valeurs avec peut être allumé ou désactivé avec directive d'options.

  1. Options - Pour activer toutes les options à la fois. Ceci est la valeur par défaut, si vous ne souhaitez pas spécifier des valeurs explicitement dans le fichier apache confie ou .htaccess.
  2. Les options incluent le NOEXEC - Cette option permet au côté serveur inclut sans l'autorisation d'exécuter à une commande ou des fichiers CGI.
  3. Options Multiviews - Permet des multi-commentaires négociés de contenu avec le module MOD_NEGOTIATION.
  4. Options SymLinkSifownMatch - C'est similaire à suivant. Mais cela ne suivra que lorsque le propriétaire est le même entre le lien et le répertoire d'origine auquel il est lié.

dix. Taille de la demande de limite

Par défaut Apache n'a aucune limite sur la taille totale de la demande HTTP I.e. illimité et lorsque vous autorisez de grandes demandes sur un serveur Web, il est possible que vous puissiez être victime de Attaques de déni de service. Nous pouvons limiter la taille des demandes d'une directive Apache "LimitRequestbody”Avec la balise du répertoire.

Vous pouvez définir la valeur en octets de 0 (illimité) pour 2147483647 (2 Go) qui sont autorisés dans un corps de demande. Vous pouvez définir cette limite en fonction des besoins de votre site, supposons que vous ayez un site où vous autorisez les téléchargements et que vous souhaitez limiter la taille du téléchargement pour un répertoire particulier.

Ici dans cet exemple, user_uploads est un répertoire qui contient des fichiers téléchargés par les utilisateurs. Nous mettons une limite de 500k pour ça.

 LimitRequestbody 512000 

11. Protéger les attaques DDOS et le durcissement

Eh bien, il est vrai que vous ne pouvez pas protéger complètement votre site Web de Attaques DDOS. Voici quelques directives qui peuvent vous aider à avoir un contrôle à ce sujet.

  1. Temps libre : Cette directive vous permet de définir le temps que le serveur attendra que certains événements se terminent avant qu'il échoue. Sa valeur par défaut est 300 secondes. Il est bon de maintenir cette valeur basse sur les sites qui sont soumis à Attaques DDOS. Cette valeur dépend totalement du type de demande que vous obtenez sur votre site Web. Note: Cela pourrait poser des problèmes avec Come CGI scripts.
  2. Les clients de Max : Cette directive vous permet de définir la limite des connexions qui seront servies simultanément. Chaque nouvelle connexion sera mise en file d'attente après cette limite. Il est disponible avec Préficher et Ouvrier les deux MPM. La valeur par défaut est 256.
  3. Keepalivetimeout : C'est le temps que le serveur attendra une demande ultérieure avant de fermer la connexion. La valeur par défaut est 5 secondes.
  4. LimitRequestfields : Cela nous aide à fixer une limite au nombre de champs d'en-tête de la demande HTTP qui seront acceptés par les clients. Sa valeur par défaut est 100. Il est recommandé de réduire cette valeur si Attaques DDOS se produisent à la suite de tant d'en-têtes de demande HTTP.
  5. LimitRequestFieldSize : Il nous aide à définir une limite de taille sur l'en-tête de demande HTTP.

12. Activer la journalisation Apache

Apache vous permet de vous connecter indépendamment de votre Journalisation du système d'exploitation. Il est sage d'activer la journalisation Apache, car il fournit plus d'informations, telles que les commandes entrées par des utilisateurs qui ont interagi avec votre serveur Web.

Pour ce faire, vous devez inclure le mod_log_config module. Il existe trois principales directives liées à la journalisation disponibles avec Apache.

  1. Transfert: Création d'un fichier journal.
  2. Logique : Spécification d'un format personnalisé.
  3. Coutumelog : Création et formatage d'un fichier journal.

Vous pouvez également les utiliser pour un site Web particulier que vous faites Hébergement virtuel Et pour cela, vous devez le spécifier dans la section hôte virtuel. Par exemple, voici la configuration de l'hôte virtuel de mon site Web avec journalisation activée.

 DocumentRoot / var / www / html / exemple.com / servername www.exemple.com DirectoryIndex index.index HTM.index html.Exemple PHP Serveralias.com erordocument 404 / histoire.PHP Errorlog / var / log / httpd / exemple.com_error_log Coutumelog / var / log / httpd / exemple.com_access_log combiné 

13. Sécuriser Apache avec les certificats SSL

Dernier mais pas des moindres Certificats SSL, Vous pouvez sécuriser toute votre communication de manière cryptée sur Internet avec un certificat SSL. Supposons que vous ayez un site Web dans lequel les gens se connectent en prouvant leurs informations d'identification de connexion ou que vous avez un site Web de commerce électronique où les gens fournissent leur coordonnées bancaires ou Débit/ /Crédit Détails de la carte pour acheter des produits, par défaut, votre serveur Web envoie ces détails en format de texte en simple mais lorsque vous utilisez Certificats SSL à vos sites Web, Apache Envoie toutes ces informations dans le texte crypté.

Tu peux Acheter des certificats SSL de tant de fournisseurs de SSL différents comme namecheap.com. Si vous dirigez une très petite entreprise Web et que vous ne voulez pas acheter un certificat SSL vous pouvez toujours attribuer un Certificat auto-signé à votre site Web. Apache utilise le mod_ssl module à supporter Certificat SSL.

# OpenSSL GENRSA -DES3 -out Exemple.com.Key 1024 # OpenSSL REQ -NEW -Key Exemple.com.clé -out exmaple.CSR # OpenSSL X509 -req -Days 365 -in Exemple.com.com.Exemple CSR -SignKey.com.com.Exemple de clé.com.com.CRT

Une fois votre certificat créé et signé. Vous devez maintenant l'ajouter dans la configuration Apache. Ouvrez le fichier de configuration principale avec Vim Editor et ajoutez les lignes suivantes et redémarrez le service.

 Sslengine sur sslcertificatefile / etc / pki / tls / certs / exemple.com.CRT SSLCertificateKeyFile / etc / PKI / TLS / CERTS / Exemple.com.clé sslcertificatechainfile / etc / pki / tls / certs / sf_bundle.CRT ServerAdmin [Protégé par e-mail] Exemple de nom de serveur.com documentroot / var / www / html / exemple / errorlog / var / log / httpd / exemple.com-error_log customlog / var / log / httpd / exemple.com-access_log commun 

Ouvrez votre navigateur, tapez https: // exemple.com, Et vous pourrez voir le nouveau certificat auto-signé.

Ce sont quelques conseils de sécurité que vous pouvez utiliser pour Sélectionnez votre serveur Web Apache installation. Pour des conseils et des idées de sécurité plus utiles, consultez la documentation officielle en ligne du serveur HTTP Apache.