le mie informazioni di contatto
Posta[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Sommario
Aggiungi dinamicamente i passaggi operativi del modulo
Passaggi per reinstallare Apache
Nascondi le informazioni sulla versione
Configura l'ambiente sperimentale anti-hotlink
Esempio di hotlinking di immagini locali
La velocità di accesso di un sito web è determinata da molteplici fattori, tra cui la velocità di risposta dell'applicazione, la larghezza di banda della rete, le prestazioni del server, la velocità di trasmissione della rete con il client, ecc. Uno dei fattori più importanti è la reattività di Apache stesso. Puoi utilizzare la compressione web per aumentare la velocità della tua applicazione. Ancora più importante, non costa nulla e aumenterà solo leggermente l'utilizzo della CPU del server di uno o due punti percentuali o meno.
Compressione delle pagine Web tramite il modulo di sgonfiaggio
Se hai già installato Apache tramite il pacchetto del codice sorgente, se conservi ancora il pacchetto del codice sorgente, puoi riconfigurarlo, compilarlo e installarlo. La reinstallazione di Apache non influirà sui parametri precedenti.
Oppure se hai configurato la funzione di caricamento dinamico dei moduli durante l'ultima installazione, puoi utilizzare gli strumenti apxs per aggiungere dinamicamente i moduli senza reinstallarli.
Aggiungi dinamicamente il modulo di sgonfiaggio senza reinstallare Apache
cd sul server HTTP Apache per memorizzare il codice del modulo relativo ai filtri
Utilizzare lo strumento apxs per operare
Infine, utilizza il comando apachectl con pipe e grep per verificare se il modulo deflate è stato caricato correttamente.
- [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)
Abilita il modulo mod_deflate nel file di configurazione 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>
Aggiungi il modulo di sgonfiaggio reinstallando direttamente Apache
Utilizzare primaapachectl -t -D DUMP_MODULES | grep deflateComando per verificare se Apache attualmente dispone del modulo deflate
Se Apache è abilitato, utilizzaresystemctl ferma httpdServizio vicino
Immettere la directory di decompressione del pacchetto del codice sorgente, specificare la directory di installazione e abilitare alcune funzioni. Il modulo deflate viene utilizzato per la compressione della pagina Web.
./configurareDopo l'elaborazione, utilizzarecrea && crea installazioneComando per compilare e installare
- [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
Usa il comando ll per verificare se il modulo deflate è abilitato. Puoi vedere che il file mod_deflate.so esiste.
- [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
Ma usaapachectl -t -D DUMP_MODULES | grep deflateNon è possibile eseguire query sul comando perché non è abilitato nel file di configurazione di Apache.
Modifica il file di configurazione principale di httpd Verso la riga 143, puoi vedere che ce ne sono moltiCaricaModuloistruzioni, aggiungeremo nuove istruzioni di caricamento del modulo sotto questi LoadModules.
Nella seconda parte dell'istruzione di caricamento del modulo, puoi utilizzare un percorso assoluto o relativo. Poiché durante l'installazione di Apache, la regola del prefisso (prefisso) viene definita tramite lo script ./configure, quindi è necessario specificarne uno specifico. il file di configurazione di Apache Il percorso del file, il percorso del prefisso può essere omesso
Il tag IfModule viene utilizzato per caricare in modo condizionale la configurazione del modulo. La sua funzione è verificare se il modulo specificato è caricato nell'ambiente Apache corrente. Solo quando il modulo viene caricato, le istruzioni di configurazione racchiuse nel tag IfModule avranno effetto.
- [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>
Salva ed esci, puoi utilizzarehttpd -tPer rilevare se sono presenti errori di sintassi nel file di configurazione. Se viene richiesto Sintassi OK, significa che non ci sono errori.
Poiché httpd deve ricaricare il file di configurazione modificato per rendere effettiva la configurazione appena aggiunta, riavviare il servizio.
A questo punto, accedi al server web nel browser, premi F12 sulla tastiera per aprire gli strumenti di sviluppo, seleziona l'indirizzo IP del server web e potrai vedere nell'intestazione della risposta che la tecnologia di compressione è gzip
L'esperimento termina
La memorizzazione nella cache delle pagine Web consiste nel memorizzare nella cache alcune pagine che spesso non cambiano o cambiano raramente La prossima volta che il browser accede nuovamente a queste pagine, non è necessario scaricare nuovamente queste pagine, migliorando così la velocità di accesso dell'utente. Il modulo mod_expires di Apache genererà automaticamente il tag Expires e il tag Cache-Control nelle informazioni dell'intestazione della pagina. In base ai tag, il browser client decide di ottenere la pagina nella cache del computer locale per la visita successiva, senza effettuare un'altra richiesta. il server. Ridurre la frequenza e il numero di accessi client per raggiungere lo scopo di ridurre il traffico non necessario e aumentare la velocità di accesso.
Implementare la memorizzazione nella cache delle pagine Web
Apri il file di configurazione principale httpd, abilita il modulo di scadenza, aggiungilo e riavvia il servizio.
- [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
Dopo aver riavviato il servizio, vai al browser per accedere al server web e puoi vedere che ci sono altre due righe di informazioni nell'intestazione della risposta.
Le informazioni sulla vulnerabilità del software si riferiscono a una versione specifica, quindi il numero di versione è molto utile per gli aggressori Negli strumenti per sviluppatori nel browser, puoi vedere le informazioni sulla versione di Apache nella voce server nell'intestazione della risposta.
Se un utente malintenzionato ottiene informazioni sulla versione di Apache, eseguirà attacchi mirati e causerà danni al sito web. Pertanto, nell’ambiente di produzione reale, il numero di versione di Apache dovrebbe essere nascosto per ridurre il rischio di attacchi.
- [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
Salva ed esci, apri il file httpd.default
- [root@localhost httpd-2.4.25]# vim /usr/local/httpd/conf/extra/httpd-default.conf
- 在第55行就可以设置隐藏版本信息,这里改为Prod
- ServerTokens Prod
Puoi vedere che le opzioni sono fornite nei commenti:Imposta su uno dei seguenti: Completo | Sistema operativo | Minore | Minimo | Maggiore | Prod
Opzioni | illustrare |
ServerTokens pieni | Restituisce le informazioni più dettagliate sul server, incluso il tipo di sistema operativo e l'elenco dei moduli compilato. Ad esempio: Apache/2.4.41 (Unix) OpenSSL/1.1.1d PHP/7.3.11 |
Sistema operativo ServerTokens | Viene restituito solo il tipo di sistema operativo. Ad esempio: Apache/2.4.41 (Unix) |
ServerToken Minore | Restituisce i numeri di versione principale e secondaria. Ad esempio: Apache/2.4 |
ServerTokens Minimo | Restituisce il numero della versione principale. Ad esempio: Apache/2 |
ServerTokens Maggiore | Viene restituito solo il numero della versione principale. Ad esempio: Apache/2 |
Produzione di ServerTokens | Restituisce informazioni minime, mostrando solo Apache, omettendo il numero di versione. Ad esempio: Apache |
Salva ed esci, riavvia il servizio.Accedi al server web
Puoi vedere che le informazioni sulla versione mostrano solo un Apache
L'hotlinking di Apache è una misura di protezione che impedisce ad altri siti Web o a terze parti non autorizzate di collegarsi direttamente a immagini, video, audio o altre risorse sul tuo sito Web.
Quando un sito Web utilizza le risorse direttamente dal tuo sito, in realtà consuma la larghezza di banda e le risorse del server, possibilmente senza la tua autorizzazione.
Nome della CPU | nome del dominio | indirizzo IP | sistema operativo | Principali software e versioni |
apache1 | www.e1.com | 192.168.10.101 | CentOS7.9 | il file httpd-2.4.25.tar.gz |
apache2 | www.e2.com | 192.168.10.201 | CentOS7.9 | installazione httpd-2.4.25.tar.gz o yum |
cliente | Windows 10 | Navigatore |
Clona direttamente il primo server o usa yum -y install httpd per installare httpd e cambia l'indirizzo IP in 192.168.10.102
Modificare i nomi host dei due server
- 101主机
- [root@localhost ~]# hostname apache1
- [root@localhost ~]# bash
- [root@apache1 ~]#
- 201主机
- [root@localhost ~]# hostname apache2
- [root@localhost ~]# bash
- [root@apache2 ~]#
Modificare i file host dei due server web in modo che possano risolvere i nomi di dominio corrispondenti.
Seguire gli stessi passaggi seguenti per modificare l'host 201
- [root@apache1 ~]# vim /etc/hosts
- 在hosts文件末尾追加
- 192.168.10.101 www.e1.com
- 192.168.10.201 www.e2.com
Per il file host dell'host client Win10, in C:WindowsSystem32driversetc, fare doppio clic sul file host per aprirlo con Blocco note.
Disattivare il firewall e il meccanismo di sicurezza del kernel dei due server Web, abilitare il servizio httpd e provare a vedere se è possibile accedere ai due server Web sull'host client.
- 在两个Web服务器操作
- [root@apache1 ~]# systemctl start httpd
- [root@apache1 ~]# setenforce 0
L'host 101 è il mio sito e devo rubare le immagini sul server web host 201.
Cioè, www.e1.com ruba il collegamento immagine di www.e2.com
Vieni all'host 201
Inserisci la directory in cui httpd memorizza i file delle pagine web, trascina un'immagine e modifica il file 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>
Salva ed esci A questo punto, utilizza il browser per visitare www.e2.com sul computer host e potrai vedere che ci sono immagini sulla pagina web.
Se desideri rubare immagini da altri siti Web, hai bisogno di un collegamento all'immagine. Fai clic con il pulsante destro del mouse sull'immagine nel browser e seleziona Copia collegamento immagine.
Vieni a 101Host
Aggiungi un collegamento all'immagine sulla home page del server 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>
Salva ed esci, vai sul client host Win10 e visita i due URL www.e1.com e www.e2.com
Utilizza F12 per aprire gli strumenti per sviluppatori. Puoi vedere sulla rete che l'URL della richiesta e i collegamenti alle immagini di www.e2.com sono di proprietà di www.e2.com.
L'URL della richiesta di www.e1.com è www.e1.com, ma la richiesta dell'immagine è l'IP dell'host www.e2.com + collegamento immagine
Finora è stato implementato un semplice hotlinking di immagini locali.
Se un altro host ruba il collegamento dell'immagine dell'host 201, verrà visualizzata solo l'immagine fissa invece dell'immagine che l'altra parte vuole rubare.
Importa un'altra immagine (error.jpg) nella directory htdocs dell'host 201 (www.e2.com) che fornisce l'immagine originale per gli esperimenti anti-leeching.
Quindi modifica il file di configurazione di httpd e abilita il modulo di riscrittura (riscrittura degli indirizzi). Lo scopo della riscrittura è che se qualcuno richiede il mio logo.jpg, reindirizza la richiesta a error.jpg.
Con la funzione di riscrittura dell'indirizzo, la richiesta può essere esaminata e giudicata. Se il prefisso della richiesta è www.e2.com, l'accesso sarà consentito. Se il prefisso della richiesta non è www.e2.com, l'accesso all'immagine sarà consentito non essere consentito.
- [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
parametro | illustrare |
ConsentiOverride TUTTI | Consenti RewriteEngine e altre regole di riscrittura nei file .htaccess. ALL: consente a tutti i tipi di direttive di riscrittura di essere sovrascritte dalle regole nel file .htaccess. Nessuno: impedisce l'uso dei file .htaccess in questa directory per sovrascrivere la configurazione del server |
Riscrivi il motore acceso | Abilita riscrittura, questo è il primo passo per abilitare le regole di riscrittura |
RiscriviCond | Definire le condizioni di riscrittura |
%{REFERENTE_HTTP} | È una variabile incorporata di Apache Questa variabile può ottenere l'URL nelle informazioni di intestazione del messaggio di richiesta quando l'utente accede. Abbina il valore Referer nella richiesta |
!^http://www.e2.com/.*$ | Qualsiasi file sotto l'URL (.*: corrisponde a uno o più caratteri) Indica che non corrisponde a una stringa che inizia con http://www.e2.com/ e termina con uno o più caratteri |
[Non ci sono commenti] | Il filtro non distingue tra maiuscole e minuscole |
Regola di riscrittura | Definire le regole di riscrittura |
.*.(gif|jpg|swf)$ http://www.e2.com/error.png | Quando la condizione di riscrittura precedente corrisponde, se l'URL richiesto termina con .gif, .jpg o .swf Quindi la richiesta verrà reindirizzata a http://www.e2.com/error.png .*: corrisponde a qualsiasi numero di caratteri .: Il punto sfuggito dal carattere escape, ecco il significato di punto semplice |
Salva ed esci, riavvia il servizio.
Infine, siamo arrivati all'host client (Win10) per testare ed evitare che l'immagine venga memorizzata nella cache del browser, quindi utilizza i tasti di scelta rapida Ctrl + Maiusc + Canc per svuotare la cache del browser.
Quindi visita www.e2.com e tutto funziona correttamente
Quando si visita www.e1.com, il collegamento all'immagine rubata diventa l'immagine error.png reindirizzata.