Teknologian jakaminen

Apache anti-leeching, web-sivujen pakkaus, web-sivujen välimuisti

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Sisällysluettelo

Web-sivujen pakkaus

tyyppi

Esimerkki

Lisää dynaamisesti moduulin toimintavaiheita

Apachen uudelleenasennuksen vaiheet

verkkovälimuisti

Esimerkki

Askeleet

Piilota versiotiedot

Askeleet

Apache anti-leeching

määritelmä

periaate

Määritä anti-hotlink-kokeellinen ympäristö

laboratorioympäristö

Esimerkki paikallisen kuvan linkittämisestä

Askeleet

Esimerkki anti-hotlink

Askeleet


Web-sivujen pakkaus

Verkkosivuston pääsynopeuteen vaikuttavat useat tekijät, kuten sovelluksen vastenopeus, verkon kaistanleveys, palvelimen suorituskyky, verkon lähetysnopeus asiakkaan kanssa jne. Yksi tärkeimmistä tekijöistä on itse Apachen reagointikyky. Voit lisätä sovelluksesi nopeutta verkkopakkauksella. Vielä tärkeämpää on, että se ei maksa lainkaan, ja se lisää vain hieman palvelimen suorittimen käyttöä yhdellä tai kahdella prosenttiyksiköllä tai vähemmän.

tyyppi

  • gzip
    • Korkea pakkausteho, korkea suorittimen käyttö
  • tyhjentää
    • Pakkausteho ei ole yhtä korkea kuin gzip, ja se kuluttaa vähemmän prosessoria.

Esimerkki

Web-sivujen pakkaus tyhjennysmoduulin kautta

Jos olet jo asentanut Apachen lähdekoodipaketin kautta, jos säilytät lähdekoodipaketin, voit määrittää sen uudelleen, kääntää ja asentaa Apachen uudelleenasentaminen ei vaikuta aiempiin parametreihin.

Tai jos olet määrittänyt moduulien dynaamisen lataamisen viimeisen asennuksen aikana, voit käyttää apxs-työkaluja lisätäksesi moduuleja dynaamisesti ilman uudelleenasennusta.

Lisää dynaamisesti moduulin toimintavaiheita

Lisää tyhjennysmoduuli dynaamisesti asentamatta Apachea uudelleen

cd Apache HTTP-palvelimelle suodattimiin liittyvän moduulikoodin tallentamiseksi

Käytä apxs-työkalua toimiaksesi

  • -i: Asenna moduuli. Asenna käännetty moduuli Apache-palvelimeen.
  • -c: Käännösmoduuli. Käännä lähdekooditiedosto (tässä mod_deflate.c) jaetuksi objektitiedostoksi (.so-tiedosto).
  • -a: Aktivoi moduuli automaattisesti. Moduulin kääntämisen ja asennuksen jälkeen ota se käyttöön välittömästi, konfiguraatiotiedostoa ei tarvitse muokata manuaalisesti.

Käytä lopuksi apachectl-komentoa pipesilla ja grepillä tarkistaaksesi, onko deflate-moduuli latautunut.

  1. [root@localhost filters]# cd /root/httpd-2.4.25/modules/filters/
  2. [root@localhost filters]# apxs -i -c -a mod_deflate.c
  3. [root@localhost filters]# apachectl -t -D DUMP_MODULES | grep deflate
  4. deflate_module (shared)

Ota mod_deflate-moduuli käyttöön httpd-määritystiedostossa

  1. [root@localhost filters]# vim /usr/local/httpd/conf/httpd.conf
  2. 在末行模式下搜索:/deflate
  3. LoadModule deflate_module modules/mod_deflate.so # 去掉开头注释
  4. <IfModule mod_deflate.c>
  5. # 对指定的类型应用deflat进行压缩(文本、样式表、图像)
  6. AddOutputFilterByType DEFLATE text/html text/css text/jpg text/png text/gif
  7. DeflateCompressionLevel 9 # 指定了压缩级别为9,表示最高级别的压缩(压缩比最高,但消耗CPU资源较多)
  8. SetOutputFilter DEFLATE # 指定默认的输出过滤器为deflate进行输出内容的压缩
  9. </IfModule>

Apachen uudelleenasennuksen vaiheet

Lisää tyhjennysmoduuli asentamalla Apache suoraan uudelleen

Käytä ensin apachectl -t -D DUMP_MODUULIT | grep tyhjentääKomento tarkistaa, onko Apachella tällä hetkellä tyhjennysmoduuli

Jos Apache on käytössä, käytäsystemctl stop httpdSulje palvelu

Anna lähdekoodipaketin purkuhakemisto, määritä asennushakemisto ja ota käyttöön joitakin toimintoja. Tyhjennysmoduulia käytetään verkkosivujen pakkaamiseen.

./configureKäsittelyn jälkeen käytätee && tee asennusKomento kääntää ja asentaa

  1. [root@localhost httpd-2.4.25]# ./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi --enable-deflate
  2. [root@localhost httpd-2.4.25]# make && make install

Käytä ll-komentoa tarkistaaksesi, onko deflate-moduuli käytössä. Voit nähdä, että mod_deflate.so-tiedosto on olemassa.

  1. [root@localhost httpd-2.4.25]# ll /usr/local/httpd/modules/mod_deflate.so
  2. -rwxr-xr-x 1 root root 53096 7月 10 20:43 /usr/local/httpd/modules/mod_deflate.so

Mutta käytä apachectl -t -D DUMP_MODUULIT | grep tyhjentääKomentoa ei voi kysyä, koska se ei ole käytössä Apache-määritystiedostossa.

Muokkaa httpd:n pääasetustiedostoa Noin riviltä 143 näet, että niitä on useitaLoadModulelausekkeet, lisäämme näiden LoadModulien alle uusia moduulin latauskäskyjä.

Moduulin latauskäskyn toisessa osassa voit käyttää absoluuttista polkua tai suhteellista polkua. Koska Apachea asennettaessa etuliite (etuliite) -sääntö määritetään ./configure-komentosarjan kautta, joten haluat määrittää tietyn polun. Apache-määritystiedosto Polku tiedostoon, etuliitepolku voidaan jättää pois

IfModule-tunnistetta käytetään moduulin konfiguroinnin ehdolliseen lataamiseen. Sen tehtävänä on tarkistaa, onko määritetty moduuli ladattu nykyiseen Apache-ympäristöön. IfModule-tunnisteeseen käärityt konfigurointiohjeet tulevat voimaan.

  1. [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf
  2. LoadModule deflate_module modules/mod_deflate.so
  3. <IfModule mod_deflate.c> # 只有当 mod_deflate 模块加载时才会执行下面的配置
  4. DeflateCompressionLevel 6 # 压缩级别,数字越大压缩比就越大
  5. SetOutputFilter DEFLATE # 启用deflate模块
  6. # 告诉服务器对哪些文件进行压缩,如果是已经压缩过的,就不再压缩
  7. AddOutputFilterByType DEFLATE text/html text/plain text/xml text/csstext/javascript application/x-javascript application/javascript application/json
  8. SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
  9. SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
  10. SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
  11. AddOutputFilterByType DEFLATE text/*
  12. AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript
  13. AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp
  14. </IfModule>

Tallenna ja poistu, voit käyttäähttpd -tSen tunnistaminen, onko konfiguraatiotiedostossa syntaksivirheitä. Jos se pyytää Syntaksi OK, virheitä ei ole.

Koska httpd:n on ladattava muokattu määritystiedosto uudelleen, jotta juuri lisätyt asetukset tulevat voimaan, käynnistä palvelu uudelleen.

Tällä hetkellä käytä verkkopalvelinta selaimessa, avaa kehittäjätyökalut painamalla näppäimistön F12-näppäintä, valitse verkkopalvelimen IP-osoite ja näet vastauksen otsikossa, että pakkaustekniikka on gzip.

Kokeilu päättyy


verkkovälimuisti

Web-sivujen välimuistissa tallennetaan välimuistiin jotkin sivut, jotka eivät usein muutu tai muuttuvat harvoin. Seuraavan kerran kun selain käyttää näitä sivuja uudelleen, näitä sivuja ei tarvitse ladata uudelleen, mikä parantaa käyttäjän pääsyn nopeutta. Apachen mod_expires-moduuli luo automaattisesti Expires-tunnisteen ja Cache-Control-tunnisteen sivun otsikkotietoihin Asiakasselain päättää tagien perusteella hankkia sivun paikallisen koneen välimuistiin seuraavaa käyntiä varten ilman toista pyyntöä. Vähennä palvelimeen pääsyn tiheyttä ja määrää tarpeettoman liikenteen vähentämiseksi ja pääsyn nopeuden lisäämiseksi.

Esimerkki

Ota käyttöön web-sivujen välimuisti

Askeleet

Avaa httpd-pääkonfiguraatiotiedosto, ota käyttöön expires-moduuli ja lisää se ja käynnistä palvelu uudelleen.

  1. [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf
  2. 在末行模式搜索:/expires_module
  3. 将前面的注释去掉,开启expires模块
  4. LoadModule expires_module modules/mod_expires.so
  5. <IfModule mod_expires.c>
  6. ExpiresActive On # 开启缓存功能
  7. ExpiresDefault "access plus 60 seconds" # 缓存时间设置为60秒
  8. </IfModule>
  9. 检测语法正确性,重启服务
  10. [root@localhost httpd-2.4.25]# httpd -t
  11. Syntax OK
  12. [root@localhost httpd-2.4.25]# systemctl restart httpd

Kun olet käynnistänyt palvelun uudelleen, siirry selaimeen päästäksesi verkkopalvelimeen, ja näet, että vastauksen otsikossa on vielä kaksi riviä tietoja.


Piilota versiotiedot

Ohjelmiston haavoittuvuustiedot liittyvät tiettyyn versioon, joten versionumero on hyökkääjille erittäin hyödyllinen. Selaimen kehittäjätyökaluissa näet Apachen versiotiedot palvelinkohdassa vastausotsikossa.

Jos verkkohyökkääjä saa Apachen versiotiedot, hän suorittaa kohdennettuja hyökkäyksiä ja aiheuttaa tappioita verkkosivustolle. Siksi varsinaisessa tuotantoympäristössä Apachen versionumero tulisi piilottaa hyökkäysten riskin vähentämiseksi.

Askeleet

  1. [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/httpd.conf
  2. 在末行模式下搜索:/httpd-default
  3. 将Include语句前的注释去掉,表示包含Include语句后面指定的文件在当前文件中(相当于把指定文件的内容复制粘贴到当前文件的当前Include语句的位置)
  4. # Various default settings
  5. Include conf/extra/httpd-default.conf

Tallenna ja poistu, avaa httpd.default-tiedosto

  1. [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/extra/httpd-default.conf
  2. 在第55行就可以设置隐藏版本信息,这里改为Prod
  3. ServerTokens Prod

Voit nähdä, että vaihtoehdot ovat kommenteissa: Aseta johonkin seuraavista: Full | OS | Pieni | Minimi | Majuri | Tuot

Vaihtoehdot

havainnollistaa

ServerTokens täynnä

Palauttaa yksityiskohtaisimmat palvelintiedot, mukaan lukien käyttöjärjestelmän tyypin ja kootun moduuliluettelon.

Esimerkki: Apache/2.4.41 (Unix) OpenSSL/1.1.1d PHP/7.3.11

ServerTokens OS

Vain käyttöjärjestelmän tyyppi palautetaan.

Esimerkki: Apache/2.4.41 (Unix)

ServerTokens Minor

Palauttaa pää- ja sivuversionumerot.

Esimerkiksi: Apache/2.4

ServerTokens Minimaalinen

Palauttaa pääversionumeron.

Esimerkiksi: Apache/2

ServerTokens Major

Vain pääversionumero palautetaan.

Esimerkiksi: Apache/2

ServerTokens Prod

Palauttaa vähimmäistiedot, näyttää vain Apachen, mutta jättää pois versionumeron.

Esimerkiksi: Apache

Tallenna ja poistu, käynnistä palvelu uudelleen.Käytä verkkopalvelinta

Voit nähdä, että versiotiedoissa näkyy vain yksi Apache


Apache anti-leeching

Apachen hotlinking on suojatoimenpide, joka estää muita verkkosivustoja tai luvattomia kolmansia osapuolia linkittämästä suoraan kuvia, videoita, ääniä tai muita verkkosivustosi resursseja.

Kun verkkosivusto käyttää resursseja suoraan sivustostasi, ne itse asiassa kuluttavat kaistanleveyttäsi ja palvelinresurssejasi, mahdollisesti ilman lupaasi.

määritelmä

  • Hotlinkingin esto tarkoittaa ulkoisten verkkosivustojen tai luvattomien kolmansien osapuolien kieltämistä käyttämästä suoraan resurssilinkkejä verkkosivustollasi palvelimen määrityksen kautta. Jos joku yrittää käyttää resurssilinkkiäsi suoraan sivullaan, vierailijat näkevät sivulla ongelman, jossa resurssia ei voi ladata, tai vaihtoehtoista sisältöä tulee näkyviin.

periaate

  • HTTP-viittaustarkistus: Palvelin määrittää resurssipyynnön lähteen tarkistamalla HTTP-pyynnön Referer-otsikon. Jos todetaan, että viittaaja ei ole peräisin sallimastasi lähteestä (kuten omalta verkkosivustoltasi), palvelin voi kieltäytyä toimittamasta resurssia tai palauttaa vaihtoehtoista sisältöä.
  • Uudelleenkirjoitussäännöt: Käytä Apachen uudelleenkirjoitussääntöjä pyyntöjen uudelleenkirjoittamiseen, tarkista Viittausotsikko ja päätä sitten, tarjotaanko resursseja vai hylätäänkö pyyntö asetusten perusteella.

Määritä anti-hotlink-kokeellinen ympäristö

CPU:n nimi

verkkotunnus

IP-osoite

käyttöjärjestelmä

Pääohjelmistot ja versiot

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 tai yum-asennus

asiakas

Windows 10

Selain

laboratorioympäristö

Kloonaa ensimmäinen palvelin suoraan tai käytä yum -y install httpd asentaaksesi httpd ja muuta IP-osoitteeksi 192.168.10.102.

Muokkaa kahden palvelimen isäntänimiä

  1. 101主机
  2. [root@localhost ~]# hostname apache1
  3. [root@localhost ~]# bash
  4. [root@apache1 ~]#
  5. 201主机
  6. [root@localhost ~]# hostname apache2
  7. [root@localhost ~]# bash
  8. [root@apache2 ~]#

Muokkaa kahden verkkopalvelimen isäntätiedostoja, jotta ne voivat selvittää vastaavat verkkotunnukset.

Muokkaa 201-isäntää noudattamalla alla olevia samoja vaiheita

  1. [root@apache1 ~]# vim /etc/hosts
  2. 在hosts文件末尾追加
  3. 192.168.10.101 www.e1.com
  4. 192.168.10.201 www.e2.com

Kaksoisnapsauta Win10-asiakaspalvelimen hosts-tiedostoa kohdassa C:WindowsSystem32driversetc avataksesi sen Notepadilla.

Sammuta kahden Web-palvelimen palomuurin ja ytimen suojausmekanismi, ota httpd-palvelu käyttöön ja yritä nähdä, voitko käyttää kahta Web-palvelinta asiakaspalvelimella.

  1. 在两个Web服务器操作
  2. [root@apache1 ~]# systemctl start httpd
  3. [root@apache1 ~]# setenforce 0

Esimerkki paikallisen kuvan linkittämisestä

101-isäntä on sivustoni, ja minun on varastettava kuvat 201-isäntäverkkopalvelimelta.

Eli www.e1.com varastaa www.e2.comin kuvalinkin

Askeleet

Tule 201-isäntälle

Anna hakemisto, johon httpd tallentaa verkkosivutiedostot, vedä kuva sisään ja muokkaa index.html-tiedostoa.

  1. [root@apache2 ~]# cd /usr/local/httpd/htdocs/
  2. 在该目录下从宿主机拖入一张图片
  3. [root@apache2 htdocs]# vim index.html
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. <title>标题</title>
  8. </head>
  9. <body>
  10. <h1>原图网站</h1>
  11. <img src="logo.jpg" /> # 如果图片文件是在网页文件同一目录下,可以不用加路径
  12. </body>
  13. </html>

Tallenna ja poistu Tällä hetkellä käy selaimella isäntäkoneella osoitteessa www.e2.com ja näet, että verkkosivulla on kuvia.

Jos haluat varastaa kuvia muilta sivustoilta, tarvitset linkin kuvaan napsauttamalla hiiren kakkospainikkeella kuvaa selaimessa ja valitsemalla Kopioi kuvalinkki.

Tule 101 Hostille

Lisää linkki kuvaan 101Web-palvelimen etusivulla

  1. [root@apache1 ~]# cd /var/www/html # 使用yum安装httpd的存放网页文件的目录
  2. [root@apache1 html]# vim index.html
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <title>标题</title>
  7. </head>
  8. <body>
  9. <h1>盗图网站</h1>
  10. <img src="http://www.e2.com/logo.jpg" />
  11. </body>
  12. </html>

Tallenna ja poistu, siirry asiakkaan Win10-isäntään ja käy kahdessa URL-osoitteessa www.e1.com ja www.e2.com

Avaa kehittäjätyökalut F12-näppäimellä. Verkosta näet, että www.e2.comin pyynnön URL-osoite ja kuvalinkit ovat www.e2.comin omia.

Sivuston www.e1.com pyynnön URL-osoite on www.e1.com, mutta kuvapyyntö on www.e2.com-palvelimen IP-osoite + kuvalinkki

Toistaiseksi on otettu käyttöön yksinkertainen paikallinen kuvalinkki.

Esimerkki anti-hotlink

Jos toinen isäntä varastaa 201-isännän kuvalinkin, vain kiinteä kuva näytetään sen kuvan sijaan, jonka toinen osapuoli haluaa varastaa.

Askeleet

Tuo toinen kuva (error.jpg) 201-isännän htdocs-hakemistoon (www.e2.com), joka tarjoaa alkuperäisen kuvan likaantumisen estokokeiluja varten.

Muokkaa sitten httpd:n asetustiedostoa ja ota uudelleenkirjoitusmoduuli käyttöön (osoitteen uudelleenkirjoitus). Uudelleenkirjoituksen tarkoitus on, että jos joku pyytää logoni.jpg, ohjaa pyyntö osoitteeseen error.jpg.

Osoitteen uudelleenkirjoitustoiminnolla pyyntö voidaan tarkastella ja arvioida. Jos pyynnön etuliite on www.e2.com, pääsy sallitaan ei sallita.

  1. [root@apache2 htdocs]# vim /usr/local/httpd/conf/httpd.conf
  2. 在末行模式下搜索:/rewrite
  3. LoadModule rewrite_module modules/mod_rewrite.so # 将开头注释去掉,启用rewrite模块
  4. 在末行模式下搜索:/htdocs
  5. 在<Directory "/usr/local/httpd/htdocs">标签内往下翻
  6. 找到AllowOverride参数的行,修改内容为下方内容
  7. AllowOverride None
  8. RewriteEngine On
  9. RewriteCond %{HTTP_REFERER} !^http://e2.com$ [NC]
  10. RewriteCond %{HTTP_REFERER} !^http://e2.com/.*$ [NC]
  11. RewriteCond %{HTTP_REFERER} !^http://www.e2.com$ [NC]
  12. RewriteCond %{HTTP_REFERER} !^http://www.e2.com/.*$ [NC]
  13. RewriteRule .*.(gif|jpg|swf)$ http://www.e2.com/error.png

parametri

havainnollistaa

SalliOverride ALL

Salli RewriteEngine ja muut uudelleenkirjoitussäännöt .htaccess-tiedostoissa.

KAIKKI: Sallii kaikentyyppisten uudelleenkirjoituskäskyjen ohittamisen .htaccess-tiedoston säännöillä.

Ei mitään: Estää tämän hakemiston .htaccess-tiedostojen käytön palvelimen määrityksen ohittamiseen

RewriteEngine päällä

Ota uudelleenkirjoitus käyttöön, tämä on ensimmäinen askel uudelleenkirjoitussääntöjen ottamiseksi käyttöön

RewriteCond

Määritä uudelleenkirjoitusehdot

%{HTTP_REFERER}

Se on Apachen sisäänrakennettu muuttuja Tämä muuttuja voi saada URL-osoitteen pyyntöviestin otsikkotiedoissa, kun käyttäjä käyttää.

Yhdistä pyynnössä oleva viittausarvo

!^http://www.e2.com/.*$

Mikä tahansa URL-osoitteen alla oleva tiedosto (.*: vastaa yhtä tai useampaa mitä tahansa merkkiä)

Osoittaa, että se ei vastaa merkkijonoa, joka alkaa http://www.e2.com/ ja päättyy yhteen tai useampaan merkkiin

[NC]

Suodatus ei erota kirjainkoolla

RewriteRule

Määritä uudelleenkirjoitussäännöt

.*.(gif|jpg|swf)$ http://www.e2.com/error.png

Kun edellinen uudelleenkirjoitusehto vastaa, jos pyydetyn URL-osoitteen lopussa on .gif, .jpg tai .swf

Sitten pyyntö ohjataan osoitteeseen http://www.e2.com/error.png

.*: vastaa mitä tahansa määrää mitä tahansa merkkejä

.: Pakomerkin poistama piste, tässä on yksinkertaisen pisteen merkitys

Tallenna ja poistu, käynnistä palvelu uudelleen.

Lopuksi tulimme asiakaspalvelimeen (Win10) testaamaan, ettei selain joutuisi kuvan välimuistiin, joten käytä Ctrl + Shift + Delete -pikanäppäimiä selaimen välimuistin tyhjentämiseen.

Vieraile sitten osoitteessa www.e2.com ja kaikki toimii hyvin

Kun vierailet osoitteessa www.e1.com, varastetusta kuvalinkistä tulee uudelleenohjattu error.png-kuva.