2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Inhaltsverzeichnis
Fügen Sie Modulbetriebsschritte dynamisch hinzu
Schritte zur Neuinstallation von Apache
Versionsinformationen ausblenden
Konfigurieren Sie die experimentelle Anti-Hotlink-Umgebung
Beispiel für lokales Bild-Hotlinking
Die Zugriffsgeschwindigkeit einer Website wird von mehreren Faktoren bestimmt, darunter der Reaktionsgeschwindigkeit der Anwendung, der Netzwerkbandbreite, der Serverleistung, der Netzwerkübertragungsgeschwindigkeit mit dem Client usw. Einer der wichtigsten Faktoren ist die Reaktionsfähigkeit von Apache selbst. Mithilfe der Webkomprimierung können Sie die Geschwindigkeit Ihrer Anwendung erhöhen. Noch wichtiger ist, dass es überhaupt nichts kostet und die CPU-Auslastung des Servers nur geringfügig um ein oder zwei Prozentpunkte oder weniger erhöht.
Webseitenkomprimierung durch Deflate-Modul
Wenn Sie Apache bereits über das Quellcodepaket installiert haben und das Quellcodepaket weiterhin behalten, können Sie es neu konfigurieren, kompilieren und installieren. Eine Neuinstallation von Apache hat keine Auswirkungen auf die vorherigen Parameter.
Oder wenn Sie bei der letzten Installation die Funktion zum dynamischen Laden von Modulen konfiguriert haben, können Sie mit den Apxs-Tools Module dynamisch hinzufügen, ohne sie neu zu installieren.
Fügen Sie das Deflate-Modul dynamisch hinzu, ohne Apache neu zu installieren
cd an den Apache-HTTP-Server, um Modulcode für Filter zu speichern
Verwenden Sie zum Betrieb das Apxs-Tool
Verwenden Sie abschließend den Befehl apachectl mit Pipes und grep, um zu überprüfen, ob das Deflate-Modul erfolgreich geladen wurde.
- [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)
Aktivieren Sie das Modul mod_deflate in der httpd-Konfigurationsdatei
- [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>
Fügen Sie das Deflate-Modul hinzu, indem Sie Apache direkt neu installieren
Zuerst verwendenapachectl -t -D DUMP_MODULES | grep deflateBefehl zum Überprüfen, ob Apache derzeit über ein Deflate-Modul verfügt
Wenn Apache aktiviert ist, verwenden Siesystemctl stoppt httpdEnger Service
Geben Sie das Dekomprimierungsverzeichnis des Quellcodepakets ein, geben Sie das Installationsverzeichnis an und aktivieren Sie einige Funktionen. Das Deflate-Modul wird für die Webseitenkomprimierung verwendet.
./konfigurierenNach der Verarbeitung verwendenmachen && machen installierenBefehl zum Kompilieren und Installieren
- [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
Überprüfen Sie mit dem Befehl ll, ob das Deflate-Modul aktiviert ist. Sie können sehen, dass die Datei mod_deflate.so vorhanden ist.
- [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
Aber nutzenapachectl -t -D DUMP_MODULES | grep deflateDer Befehl kann nicht abgefragt werden, da er in der Apache-Konfigurationsdatei nicht aktiviert ist.
Bearbeiten Sie die Hauptkonfigurationsdatei von httpd. Ungefähr in Zeile 143 können Sie sehen, dass es viele gibtLademodulAnweisungen hinzufügen, werden wir unterhalb dieser LoadModules neue Anweisungen zum Laden von Modulen hinzufügen.
Im zweiten Teil der Modulladeanweisung können Sie einen absoluten Pfad oder einen relativen Pfad verwenden. Da bei der Installation von Apache die Präfixregel (Präfix) über das Skript ./configure definiert wird, möchten Sie einen bestimmten Pfad angeben die Apache-Konfigurationsdatei. Der Pfad zur Datei, der Präfixpfad kann weggelassen werden
Das IfModule-Tag wird zum bedingten Laden der Modulkonfiguration verwendet. Seine Funktion besteht darin, zu überprüfen, ob das angegebene Modul in der aktuellen Apache-Umgebung geladen ist. Nur wenn das Modul geladen wird, werden die im IfModule-Tag enthaltenen Konfigurationsanweisungen wirksam.
- [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>
Speichern und beenden, Sie können es verwendenhttpd -tUm zu erkennen, ob Syntaxfehler in der Konfigurationsdatei vorhanden sind, bedeutet dies, dass keine Fehler vorliegen.
Da httpd die geänderte Konfigurationsdatei neu laden muss, damit die neu hinzugefügte Konfiguration wirksam wird, starten Sie den Dienst neu.
Greifen Sie zu diesem Zeitpunkt im Browser auf den Webserver zu, drücken Sie F12 auf der Tastatur, um die Entwicklertools zu öffnen, wählen Sie die IP-Adresse des Webservers aus und Sie können im Antwortheader sehen, dass die Komprimierungstechnologie gzip ist
Das Experiment endet
Beim Zwischenspeichern von Webseiten werden einige Seiten zwischengespeichert, die sich häufig nicht oder nur selten ändern. Wenn der Browser das nächste Mal auf diese Seiten zugreift, ist es nicht erforderlich, diese Seiten erneut herunterzuladen, wodurch die Zugriffsgeschwindigkeit des Benutzers verbessert wird. Das Modul mod_expires von Apache generiert automatisch das Expires-Tag und das Cache-Control-Tag in den Seitenkopfinformationen. Basierend auf den Tags entscheidet der Client-Browser, die Seite für den nächsten Besuch im Cache des lokalen Computers abzurufen, ohne eine weitere Anfrage zu stellen Reduzieren Sie die Häufigkeit und Anzahl der Clientzugriffe, um unnötigen Datenverkehr zu reduzieren und die Zugriffsgeschwindigkeit zu erhöhen.
Implementieren Sie das Caching von Webseiten
Öffnen Sie die httpd-Hauptkonfigurationsdatei, aktivieren Sie das Ablaufmodul, fügen Sie es hinzu und starten Sie den Dienst neu.
- [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
Rufen Sie nach dem Neustart des Dienstes den Browser auf, um auf den Webserver zuzugreifen. Sie können sehen, dass der Antwortheader zwei weitere Informationszeilen enthält.
Die Schwachstelleninformationen der Software beziehen sich auf eine bestimmte Version, daher ist die Versionsnummer für Angreifer sehr nützlich. In den Entwicklertools im Browser können Sie die Versionsinformationen von Apache im Serverelement im Antwortheader sehen.
Erlangt ein Netzwerkangreifer die Versionsinformationen von Apache, führt er gezielte Angriffe durch und verursacht Verluste auf der Website. Daher sollte in der tatsächlichen Produktionsumgebung die Versionsnummer von Apache ausgeblendet werden, um das Risiko von Angriffen zu verringern.
- [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
Speichern und beenden, die Datei httpd.default öffnen
- [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/extra/httpd-default.conf
- 在第55行就可以设置隐藏版本信息,这里改为Prod
- ServerTokens Prod
Sie können sehen, dass die Optionen in den Kommentaren bereitgestellt werden:Auf einen der folgenden Werte einstellen: Full | OS | Minor | Minimal | Major | Prod
Optionen | veranschaulichen |
ServerTokens voll | Gibt die detailliertesten Serverinformationen zurück, einschließlich Betriebssystemtyp und kompilierter Modulliste. Zum Beispiel: Apache/2.4.41 (Unix) OpenSSL/1.1.1d PHP/7.3.11 |
ServerTokens OS | Es wird nur der Betriebssystemtyp zurückgegeben. Beispiel: Apache/2.4.41 (Unix) |
ServerTokens Minor | Gibt die Haupt- und Nebenversionsnummern zurück. Beispiel: Apache/2.4 |
ServerTokens Minimal | Gibt die Hauptversionsnummer zurück. Beispiel: Apache/2 |
ServerTokens Major | Es wird nur die Hauptversionsnummer zurückgegeben. Beispiel: Apache/2 |
ServerTokens Prod | Gibt minimale Informationen zurück und zeigt nur Apache an, ohne die Versionsnummer. Zum Beispiel: Apache |
Speichern und beenden Sie den Dienst und starten Sie ihn neu.Auf den Webserver zugreifen
Sie können sehen, dass die Versionsinformationen nur einen Apache anzeigen
Apache-Hotlinking ist eine Schutzmaßnahme, die verhindert, dass andere Websites oder unbefugte Dritte direkt auf Bilder, Videos, Audios oder andere Ressourcen auf Ihrer Website verlinken.
Wenn eine Website Ressourcen direkt von Ihrer Website nutzt, verbrauchen sie tatsächlich Ihre Bandbreite und Serverressourcen, möglicherweise ohne Ihre Erlaubnis.
CPU-Name | Domainname | IP Adresse | Betriebssystem | Hauptsoftware und Versionen |
apache1 | www.e1.com | 192.168.10.101 | CentOS7.9 | httpd-2.4.25.tar.gz |
apache2 | www.e2.com | 192.168.10.201 | CentOS7.9 | httpd-2.4.25.tar.gz oder Yum-Installation |
Klient | Windows 10 | Browser |
Klonen Sie den ersten Server direkt oder verwenden Sie yum -y install httpd, um httpd zu installieren, und ändern Sie die IP-Adresse in 192.168.10.102
Ändern Sie die Hostnamen der beiden Server
- 101主机
- [root@localhost ~]# hostname apache1
- [root@localhost ~]# bash
- [root@apache1 ~]#
- 201主机
- [root@localhost ~]# hostname apache2
- [root@localhost ~]# bash
- [root@apache2 ~]#
Ändern Sie die Hosts-Dateien der beiden Webserver so, dass sie die entsprechenden Domänennamen auflösen können.
Führen Sie die folgenden Schritte aus, um den 201-Host zu ändern
- [root@apache1 ~]# vim /etc/hosts
- 在hosts文件末尾追加
- 192.168.10.101 www.e1.com
- 192.168.10.201 www.e2.com
Doppelklicken Sie für die Hosts-Datei des Win10-Client-Hosts unter C:WindowsSystem32driversetc auf die Hosts-Datei, um sie mit Notepad zu öffnen.
Schalten Sie die Firewall und den Kernel-Sicherheitsmechanismus der beiden Webserver aus, aktivieren Sie den httpd-Dienst und prüfen Sie, ob Sie auf dem Client-Host auf die beiden Webserver zugreifen können.
- 在两个Web服务器操作
- [root@apache1 ~]# systemctl start httpd
- [root@apache1 ~]# setenforce 0
101 Host ist meine Website und ich muss die Bilder auf dem 201 Host-Webserver stehlen.
Das heißt, www.e1.com stiehlt den Bildlink von www.e2.com
Kommen Sie zu 201 Gastgeber
Geben Sie das Verzeichnis ein, in dem httpd Webseitendateien speichert, ziehen Sie ein Bild hinein und bearbeiten Sie die Datei 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>
Speichern und beenden Sie zu diesem Zeitpunkt den Browser, um www.e2.com auf dem Host-Computer zu besuchen, und Sie können sehen, dass auf der Webseite Bilder vorhanden sind.
Wenn Sie Bilder von anderen Websites stehlen möchten, benötigen Sie einen Link zum Bild. Klicken Sie mit der rechten Maustaste auf das Bild im Browser und wählen Sie Bildlink kopieren.
Kommen Sie zu 101 Host
Fügen Sie einen Link zum Bild auf der Homepage des 101Web-Servers hinzu
- [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>
Speichern und beenden Sie, gehen Sie zum Client-Win10-Host und besuchen Sie die beiden URLs www.e1.com und www.e2.com
Verwenden Sie F12, um die Entwicklertools zu öffnen. Im Netzwerk können Sie sehen, dass die Anforderungs-URL und die Bildlinks von www.e2.com von www.e2.com stammen.
Die Anforderungs-URL von www.e1.com lautet www.e1.com, aber die Bildanforderung ist die IP des www.e2.com-Hosts + Bildlink
Bisher wurde ein einfaches lokales Bild-Hotlinking realisiert.
Wenn ein anderer Host den Bildlink des 201-Hosts stiehlt, wird anstelle des Bildes, das die andere Partei stehlen möchte, nur das feste Bild angezeigt.
Importieren Sie ein weiteres Bild (error.jpg) in das htdocs-Verzeichnis des 201-Hosts (www.e2.com), der das Originalbild für Anti-Leeching-Experimente bereitstellt.
Bearbeiten Sie dann die Konfigurationsdatei von httpd und aktivieren Sie das Rewrite-Modul (Adressumschreibung). Der Zweck des Rewrite besteht darin, die Anfrage an error.jpg umzuleiten, wenn jemand mein logo.jpg anfordert.
Mit der Adressumschreibungsfunktion kann die Anfrage überprüft und beurteilt werden. Wenn der Anfrage das Präfix www.e2.com vorangestellt ist, wird der Zugriff erlaubt nicht erlaubt sein.
- [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
Parameter | veranschaulichen |
AllowOverride ALL | RewriteEngine und andere Rewrite-Regeln in .htaccess-Dateien zulassen. ALL: Ermöglicht das Überschreiben aller Arten von Rewrite-Anweisungen durch Regeln in der .htaccess-Datei. Keine: Verbietet die Verwendung von .htaccess-Dateien in diesem Verzeichnis zum Überschreiben der Serverkonfiguration |
RewriteEngine aktiviert | Umschreiben aktivieren. Dies ist der erste Schritt zum Aktivieren von Umschreibregeln |
UmschreibenCond | Definieren Sie Umschreibebedingungen |
%{HTTP_REFERER} | Es handelt sich um eine integrierte Variable von Apache. Diese Variable kann die URL in den Header-Informationen der Anforderungsnachricht abrufen, wenn der Benutzer darauf zugreift. Passen Sie den Referrer-Wert in der Anfrage an |
!^http://www.e2.com/.*$ | Jede Datei unter der URL (.*: entspricht einem oder mehreren beliebigen Zeichen) Zeigt an, dass es nicht mit einer Zeichenfolge übereinstimmt, die mit http://www.e2.com/ beginnt und mit einem oder mehreren Zeichen endet |
[NC] | Beim Filtern wird die Groß-/Kleinschreibung nicht beachtet |
Regel neu schreiben | Definieren Sie Rewrite-Regeln |
.*.(gif|jpg|swf)$ http://www.e2.com/error.png | Wenn die vorherige Umschreibebedingung übereinstimmt und die angeforderte URL mit .gif, .jpg oder .swf endet Anschließend wird die Anfrage an http://www.e2.com/error.png weitergeleitet .*: entspricht einer beliebigen Anzahl beliebiger Zeichen .: Der Punkt wird durch das Escape-Zeichen maskiert. Hier ist die Bedeutung eines einfachen Punktes |
Speichern und beenden Sie den Dienst und starten Sie ihn neu.
Schließlich kamen wir zum Client-Host (Win10), um zu testen, ob das Bild vom Browser zwischengespeichert wird. Verwenden Sie daher die Tastenkombinationen Strg + Umschalt + Entf, um den Browser-Cache zu leeren.
Dann besuchen Sie www.e2.com und alles funktioniert einwandfrei
Beim Besuch von www.e1.com wird der gestohlene Bildlink zum umgeleiteten error.png-Bild.