2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Table des matières
Ajouter dynamiquement les étapes de fonctionnement du module
Étapes pour réinstaller Apache
Masquer les informations de version
Configurer l'environnement expérimental anti-hotlink
Exemple de hotlinking d'images locales
La vitesse d'accès d'un site Web est déterminée par plusieurs facteurs, notamment la vitesse de réponse de l'application, la bande passante du réseau, les performances du serveur, la vitesse de transmission du réseau avec le client, etc. L'un des facteurs les plus importants est la réactivité d'Apache lui-même. Vous pouvez utiliser la compression Web pour augmenter la vitesse de votre application. Plus important encore, cela ne coûte rien du tout et n’augmentera que légèrement l’utilisation du processeur du serveur d’un ou deux points de pourcentage ou moins.
Compression de pages Web via le module deflate
Si vous avez déjà installé Apache via le package de code source, si vous conservez toujours le package de code source, vous pouvez le reconfigurer, le compiler et l'installer. La réinstallation d'Apache n'affectera pas les paramètres précédents.
Ou si vous avez configuré la fonction de chargement dynamique des modules lors de la dernière installation, vous pouvez utiliser les outils apxs pour ajouter dynamiquement des modules sans réinstaller.
Ajoutez dynamiquement le module deflate sans réinstaller Apache
cd sur le serveur HTTP Apache pour stocker le code du module lié aux filtres
Utilisez l'outil apxs pour fonctionner
Enfin, utilisez la commande apachectl avec pipes et grep pour vérifier si le module deflate est chargé avec succès.
- [root@localhost filters]# cd /root/httpd-2.4.25/modules/filters/
- [root@localhost filters]# apxs -i -c -a mod_deflate.c
- [root@localhost filters]# apachectl -t -D DUMP_MODULES | grep deflate
- deflate_module (shared)
Activer le module mod_deflate dans le fichier de configuration httpd
- [root@localhost filters]# vim /usr/local/httpd/conf/httpd.conf
- 在末行模式下搜索:/deflate
- LoadModule deflate_module modules/mod_deflate.so # 去掉开头注释
- <IfModule mod_deflate.c>
- # 对指定的类型应用deflat进行压缩(文本、样式表、图像)
- AddOutputFilterByType DEFLATE text/html text/css text/jpg text/png text/gif
- DeflateCompressionLevel 9 # 指定了压缩级别为9,表示最高级别的压缩(压缩比最高,但消耗CPU资源较多)
- SetOutputFilter DEFLATE # 指定默认的输出过滤器为deflate进行输出内容的压缩
- </IfModule>
Ajoutez le module deflate en réinstallant directement Apache
Utiliser en premierapachectl -t -D DUMP_MODULES | grep deflateCommande pour vérifier si Apache a actuellement le module deflate
Si Apache est activé, utilisezsystemctl arrête httpdFermer le service
Entrez le répertoire de décompression du package de code source, spécifiez le répertoire d'installation et activez certaines fonctions. Le module deflate est utilisé pour la compression des pages Web.
./configurerAprès traitement, utilisezfaire && faire installerCommande pour compiler et installer
- [root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-deflate
- [root@localhost httpd-2.4.25]# make && make install
Utilisez la commande ll pour vérifier si le module deflate est activé. Vous pouvez voir que le fichier mod_deflate.so existe.
- [root@localhost httpd-2.4.25]# ll /usr/local/httpd/modules/mod_deflate.so
- -rwxr-xr-x 1 root root 53096 7月 10 20:43 /usr/local/httpd/modules/mod_deflate.so
Mais utiliseapachectl -t -D DUMP_MODULES | grep deflateLa commande ne peut pas être interrogée car elle n'est pas activée dans le fichier de configuration Apache.
Modifiez le fichier de configuration principal de httpd Vers la ligne 143, vous pouvez voir qu'il y en a beaucoup.Module de chargement, nous ajouterons de nouvelles instructions de chargement de module sous ces LoadModules.
Dans la deuxième partie de l'instruction de chargement du module, vous pouvez utiliser un chemin absolu ou un chemin relatif. Parce que lors de l'installation d'Apache, la règle de préfixe (préfixe) est définie via le script ./configure, vous souhaitez donc en spécifier une certaine. le fichier de configuration Apache Le chemin d'accès au fichier, le chemin du préfixe peut être omis.
La balise IfModule est utilisée pour charger conditionnellement la configuration du module. Sa fonction est de vérifier si le module spécifié est chargé dans l'environnement Apache actuel. Ce n'est que lorsque le module est chargé que les instructions de configuration enveloppées dans la balise IfModule prendront effet.
- [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf
-
- LoadModule deflate_module modules/mod_deflate.so
- <IfModule mod_deflate.c> # 只有当 mod_deflate 模块加载时才会执行下面的配置
- DeflateCompressionLevel 6 # 压缩级别,数字越大压缩比就越大
- SetOutputFilter DEFLATE # 启用deflate模块
- # 告诉服务器对哪些文件进行压缩,如果是已经压缩过的,就不再压缩
- AddOutputFilterByType DEFLATE text/html text/plain text/xml text/csstext/javascript application/x-javascript application/javascript application/json
- SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
- SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
- SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
- AddOutputFilterByType DEFLATE text/*
- AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript
- AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp
- </IfModule>
Enregistrez et quittez, vous pouvez utiliserhttpd -tPour détecter s'il y a des erreurs de syntaxe dans le fichier de configuration. S'il demande Syntaxe OK, cela signifie qu'il n'y a aucune erreur.
Étant donné que httpd doit recharger le fichier de configuration modifié pour que la configuration nouvellement ajoutée prenne effet, redémarrez le service.
À ce stade, accédez au serveur Web dans le navigateur, appuyez sur F12 sur le clavier pour ouvrir les outils de développement, sélectionnez l'adresse IP du serveur Web et vous pourrez voir dans l'en-tête de réponse que la technologie de compression est gzip.
Fin du test
La mise en cache des pages Web consiste à mettre en cache certaines pages qui ne changent souvent pas ou changent rarement la prochaine fois que le navigateur accède à nouveau à ces pages, il n'est pas nécessaire de télécharger à nouveau ces pages, améliorant ainsi la vitesse d'accès de l'utilisateur. Le module mod_expires d'Apache générera automatiquement la balise Expires et la balise Cache-Control dans les informations d'en-tête de la page. En fonction des balises, le navigateur client décide d'obtenir la page dans le cache de la machine locale pour la prochaine visite, sans faire une autre demande. le serveur. Réduisez la fréquence et le nombre d’accès clients pour atteindre l’objectif de réduire le trafic inutile et d’augmenter la vitesse d’accès.
Implémenter la mise en cache des pages Web
Ouvrez le fichier de configuration principal httpd, activez le module expire, ajoutez-le, puis redémarrez le service.
- [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf
- 在末行模式搜索:/expires_module
- 将前面的注释去掉,开启expires模块
- LoadModule expires_module modules/mod_expires.so
- <IfModule mod_expires.c>
- ExpiresActive On # 开启缓存功能
- ExpiresDefault "access plus 60 seconds" # 缓存时间设置为60秒
- </IfModule>
-
- 检测语法正确性,重启服务
- [root@localhost httpd-2.4.25]# httpd -t
- Syntax OK
- [root@localhost httpd-2.4.25]# systemctl restart httpd
Après avoir redémarré le service, accédez au navigateur pour accéder au serveur Web et vous pouvez voir qu'il y a deux autres lignes d'informations dans l'en-tête de réponse.
Les informations de vulnérabilité du logiciel sont liées à une version spécifique, le numéro de version est donc très utile pour les attaquants. Dans les outils de développement du navigateur, vous pouvez voir les informations de version d'Apache dans l'élément serveur dans l'en-tête de réponse.
Si un attaquant du réseau obtient les informations de version d'Apache, il mènera des attaques ciblées et causera des pertes au site Web. Par conséquent, dans l’environnement de production actuel, le numéro de version d’Apache doit être masqué pour réduire le risque d’attaques.
- [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf
- 在末行模式下搜索:/httpd-default
- 将Include语句前的注释去掉,表示包含Include语句后面指定的文件在当前文件中(相当于把指定文件的内容复制粘贴到当前文件的当前Include语句的位置)
- # Various default settings
- Include conf/extra/httpd-default.conf
Enregistrez et quittez, ouvrez le fichier httpd.default
- [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/extra/httpd-default.conf
- 在第55行就可以设置隐藏版本信息,这里改为Prod
- ServerTokens Prod
Vous pouvez voir que les options sont proposées dans les commentaires :Définir sur l'un des éléments suivants : Complet | Système d'exploitation | Mineur | Minimal | Majeur | Prod
Possibilités | illustrer |
Jetons de serveur complets | Renvoie les informations les plus détaillées sur le serveur, y compris le type de système d'exploitation et la liste des modules compilés. Par exemple : Apache/2.4.41 (Unix) OpenSSL/1.1.1d PHP/7.3.11 |
Système d'exploitation ServerTokens | Seul le type de système d'exploitation est renvoyé. Par exemple : Apache/2.4.41 (Unix) |
Jetons de serveur mineurs | Renvoie les numéros de version majeure et mineure. Par exemple : Apache/2.4 |
Jetons de serveur minimaux | Renvoie le numéro de version majeure. Par exemple : Apache/2 |
Jetons de serveur majeurs | Seul le numéro de version majeure est renvoyé. Par exemple : Apache/2 |
Production de jetons de serveur | Renvoie des informations minimales, affichant uniquement Apache, en omettant le numéro de version. Par exemple : Apache |
Enregistrez et quittez, redémarrez le service.Accéder au serveur Web
Vous pouvez voir que les informations de version n'affichent qu'un seul Apache
Le hotlinking Apache est une mesure de protection qui empêche d'autres sites Web ou des tiers non autorisés de créer des liens directs vers des images, des vidéos, des audios ou d'autres ressources de votre site Web.
Lorsqu'un site Web utilise des ressources directement à partir de votre site, il consomme en réalité votre bande passante et les ressources de votre serveur, éventuellement sans votre autorisation.
Nom du processeur | nom de domaine | adresse IP | système opérateur | Principaux logiciels et versions |
apache1 | www.e1.com | 192.168.10.101 | CentOS 7.9 | httpd-2.4.25.tar.gz |
apache2 | www.e2.com | 192.168.10.201 | CentOS 7.9 | httpd-2.4.25.tar.gz ou installation miam |
client | Windows 10 | Navigateur |
Clonez directement le premier serveur ou utilisez yum -y install httpd pour installer httpd et modifiez l'adresse IP en 192.168.10.102
Modifier les noms d'hôtes des deux serveurs
- 101主机
- [root@localhost ~]# hostname apache1
- [root@localhost ~]# bash
- [root@apache1 ~]#
- 201主机
- [root@localhost ~]# hostname apache2
- [root@localhost ~]# bash
- [root@apache2 ~]#
Modifiez les fichiers hosts des deux serveurs web afin qu'ils puissent résoudre les noms de domaine correspondants.
Suivez les mêmes étapes ci-dessous pour modifier l'hôte 201
- [root@apache1 ~]# vim /etc/hosts
- 在hosts文件末尾追加
- 192.168.10.101 www.e1.com
- 192.168.10.201 www.e2.com
Pour le fichier hosts de l'hôte client Win10, sous C:WindowsSystem32driversetc, double-cliquez sur le fichier hosts pour l'ouvrir avec le Bloc-notes.
Désactivez le mécanisme de sécurité du pare-feu et du noyau des deux serveurs Web, activez le service httpd et essayez de voir si vous pouvez accéder aux deux serveurs Web sur l'hôte client.
- 在两个Web服务器操作
- [root@apache1 ~]# systemctl start httpd
- [root@apache1 ~]# setenforce 0
L'hôte 101 est mon site et je dois voler les images sur le serveur Web hôte 201.
Autrement dit, www.e1.com vole le lien image de www.e2.com
Venez chez l'hôte 201
Entrez le répertoire dans lequel httpd stocke les fichiers de pages Web, faites glisser une image et modifiez le fichier index.html.
- [root@apache2 ~]# cd /usr/local/httpd/htdocs/
- 在该目录下从宿主机拖入一张图片
- [root@apache2 htdocs]# vim index.html
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>标题</title>
- </head>
- <body>
- <h1>原图网站</h1>
- <img src="logo.jpg" /> # 如果图片文件是在网页文件同一目录下,可以不用加路径
- </body>
- </html>
Enregistrez et quittez. À ce moment, utilisez le navigateur pour visiter www.e2.com sur la machine hôte et vous pourrez voir qu'il y a des images sur la page Web.
Si vous souhaitez voler des images d'autres sites Web, vous avez besoin d'un lien vers l'image. Cliquez avec le bouton droit sur l'image dans le navigateur et sélectionnez Copier le lien de l'image.
Venez chez 101 Hôte
Ajouter un lien vers l'image sur la page d'accueil du serveur 101Web
- [root@apache1 ~]# cd /var/www/html # 使用yum安装httpd的存放网页文件的目录
- [root@apache1 html]# vim index.html
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>标题</title>
- </head>
- <body>
- <h1>盗图网站</h1>
- <img src="http://www.e2.com/logo.jpg" />
- </body>
- </html>
Enregistrez et quittez, accédez à l'hôte client Win10 et visitez les deux URL www.e1.com et www.e2.com
Utilisez F12 pour ouvrir les outils de développement. Vous pouvez voir sur le réseau que l'URL de requête et les liens d'image de www.e2.com appartiennent à www.e2.com.
L'URL de requête de www.e1.com est www.e1.com, mais la demande d'image est l'IP de l'hôte www.e2.com + lien image
Jusqu’à présent, un simple hotlinking d’images locales a été réalisé.
Si un autre hôte vole le lien d'image de l'hôte 201, seule l'image fixe sera affichée à la place de l'image que l'autre partie souhaite voler.
Importez une autre image (error.jpg) dans le répertoire htdocs de l'hôte 201 (www.e2.com) qui fournit l'image originale pour les expériences anti-sangsues.
Modifiez ensuite le fichier de configuration de httpd et activez le module de réécriture (réécriture d'adresse). Le but de la réécriture est que si quelqu'un demande mon logo.jpg, redirigez la demande vers error.jpg.
Avec la fonction de réécriture d'adresse, la demande peut être examinée et jugée. Si la demande est préfixée par www.e2.com, l'accès sera autorisé. Si le préfixe de la demande n'est pas www.e2.com, l'accès à l'image sera autorisé. ne soit pas autorisé.
- [root@apache2 htdocs]# vim /usr/local/httpd/conf/httpd.conf
- 在末行模式下搜索:/rewrite
- LoadModule rewrite_module modules/mod_rewrite.so # 将开头注释去掉,启用rewrite模块
-
- 在末行模式下搜索:/htdocs
- 在<Directory "/usr/local/httpd/htdocs">标签内往下翻
- 找到AllowOverride参数的行,修改内容为下方内容
- AllowOverride None
- RewriteEngine On
- RewriteCond %{HTTP_REFERER} !^http://e2.com$ [NC]
- RewriteCond %{HTTP_REFERER} !^http://e2.com/.*$ [NC]
-
-
- RewriteCond %{HTTP_REFERER} !^http://www.e2.com$ [NC]
- RewriteCond %{HTTP_REFERER} !^http://www.e2.com/.*$ [NC]
- RewriteRule .*.(gif|jpg|swf)$ http://www.e2.com/error.png
paramètre | illustrer |
AutoriserRemplacer TOUT | Autoriser RewriteEngine et d'autres règles de réécriture dans les fichiers .htaccess. ALL : permet à tous les types de directives de réécriture d'être remplacées par les règles du fichier .htaccess. Aucun : interdit l'utilisation de fichiers .htaccess dans ce répertoire pour remplacer la configuration du serveur |
Moteur de réécriture activé | Activer la réécriture, c'est la première étape pour activer les règles de réécriture |
RéécrireCond | Définir les conditions de réécriture |
%{Référencement_HTTP} | Il s'agit d'une variable intégrée d'Apache. Cette variable peut obtenir l'URL dans les informations d'en-tête du message de requête lorsque l'utilisateur y accède. Faites correspondre la valeur du référent dans la demande |
!^http://www.e2.com/.*$ | Tout fichier sous l'URL (.* : correspond à un ou plusieurs caractères) Indique qu'il ne correspond pas à une chaîne commençant par http://www.e2.com/ et se terminant par un ou plusieurs caractères. |
[NC] | Le filtrage n'est pas sensible à la casse |
Règle de réécriture | Définir des règles de réécriture |
.*.(gif|jpg|swf)$ http://www.e2.com/error.png | Lorsque la condition de réécriture précédente correspond, si l'URL demandée se termine par .gif, .jpg ou .swf Ensuite la requête sera redirigée vers http://www.e2.com/error.png .* : correspond à n'importe quel nombre de caractères .: Le point échappé par le caractère d'échappement, voici la signification du point simple |
Enregistrez et quittez, redémarrez le service.
Enfin, nous sommes venus chez l'hôte client (Win10) pour tester afin d'éviter que l'image ne soit mise en cache par le navigateur, utilisez donc les touches de raccourci Ctrl + Maj + Suppr pour vider le cache du navigateur.
Alors visitez www.e2.com et tout fonctionne bien
Lors de la visite de www.e1.com, le lien de l’image volée devient l’image error.png redirigée.