Berbagi teknologi

Anti-leeching Apache, kompresi halaman web, caching halaman web

2024-07-12

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

Daftar isi

Kompresi halaman web

jenis

Contoh

Tambahkan langkah-langkah operasi modul secara dinamis

Langkah-langkah untuk menginstal ulang Apache

tembolok web

Contoh

Langkah

Sembunyikan informasi versi

Langkah

Apache anti-lintah

definisi

prinsip

Konfigurasikan lingkungan eksperimental anti-hotlink

lingkungan laboratorium

Contoh hotlinking gambar lokal

Langkah

Contoh anti-hotlink

Langkah


Kompresi halaman web

Kecepatan akses suatu situs web ditentukan oleh banyak faktor, termasuk kecepatan respons aplikasi, bandwidth jaringan, kinerja server, kecepatan transmisi jaringan dengan klien, dll. Salah satu faktor yang paling penting adalah daya tanggap dari Apache itu sendiri. Anda dapat menggunakan kompresi web untuk meningkatkan kecepatan aplikasi Anda. Lebih penting lagi, ini tidak memerlukan biaya apa pun, dan hanya akan sedikit meningkatkan penggunaan CPU server sebesar satu atau dua poin persentase atau kurang.

jenis

  • gzip
    • Efisiensi kompresi tinggi, penggunaan CPU tinggi
  • menurunkan
    • Efisiensi kompresinya tidak setinggi gzip, dan menggunakan lebih sedikit CPU.

Contoh

Kompresi halaman web melalui modul deflate

Jika Anda telah menginstal Apache melalui paket kode sumber, jika Anda masih menyimpan paket kode sumber, Anda dapat mengkonfigurasi ulang, mengkompilasi, dan menginstalnya. Menginstal ulang Apache tidak akan mempengaruhi parameter sebelumnya.

Atau jika Anda telah mengonfigurasi fungsi memuat modul secara dinamis selama instalasi terakhir, Anda dapat menggunakan alat apxs untuk menambahkan modul secara dinamis tanpa menginstal ulang.

Tambahkan langkah-langkah operasi modul secara dinamis

Tambahkan modul deflate secara dinamis tanpa menginstal ulang Apache

cd ke server HTTP Apache untuk menyimpan kode modul yang terkait dengan filter

Gunakan alat apxs untuk mengoperasikannya

  • -i: Instal modul. Instal modul yang dikompilasi ke server Apache.
  • -c: Kompilasi modul. Kompilasi file kode sumber (di sini mod_deflate.c) ke dalam file objek bersama (file .so).
  • -a: Aktifkan modul secara otomatis. Setelah mengkompilasi dan menginstal modul, segera aktifkan, tidak perlu mengedit file konfigurasi secara manual.

Terakhir, gunakan perintah apachectl dengan pipa dan grep untuk memeriksa apakah modul deflate berhasil dimuat.

  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)

Aktifkan modul mod_deflate di file konfigurasi httpd

  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>

Langkah-langkah untuk menginstal ulang Apache

Tambahkan modul deflate dengan langsung menginstal ulang Apache

Gunakan duluapachectl -t -D DUMP_MODULES | grep mengempiskanPerintah untuk memeriksa apakah Apache saat ini memiliki modul deflate

Jika Apache diaktifkan, gunakansystemctl hentikan httpdTutup layanan

Masuk ke direktori dekompresi paket kode sumber, tentukan direktori instalasi, dan aktifkan beberapa fungsi. Modul deflate digunakan untuk kompresi halaman web.

./konfigurasiSetelah diproses, gunakanmembuat && membuat instalPerintah untuk mengkompilasi dan menginstal

  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

Gunakan perintah ll untuk memeriksa apakah modul deflate diaktifkan. Anda dapat melihat bahwa file mod_deflate.so ada.

  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

Tapi gunakanapachectl -t -D DUMP_MODULES | grep mengempiskanPerintah ini tidak dapat ditanyakan karena tidak diaktifkan di file konfigurasi Apache.

Edit file konfigurasi utama httpdModul Muatpernyataan, kami akan menambahkan pernyataan pemuatan modul baru di bawah LoadModules ini.

Di bagian kedua dari pernyataan pemuatan modul, Anda dapat menggunakan jalur absolut atau jalur relatif. Karena saat menginstal Apache, aturan awalan (awalan) ditentukan melalui skrip ./configure, jadi Anda ingin menentukan yang tertentu di dalamnya. file konfigurasi Apache. Jalur ke file, jalur awalan dapat dihilangkan

Tag IfModule digunakan untuk memuat konfigurasi modul secara kondisional. Fungsinya adalah untuk memeriksa apakah modul yang ditentukan dimuat di lingkungan Apache saat ini. Hanya ketika modul dimuat, instruksi konfigurasi yang dibungkus dalam tag IfModule akan berlaku.

  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>

Simpan dan keluar, Anda dapat menggunakanhttpd-tUntuk mendeteksi apakah ada kesalahan sintaks pada file konfigurasi. Jika diminta Sintaks OK, berarti tidak ada kesalahan.

Karena httpd perlu memuat ulang file konfigurasi yang dimodifikasi agar konfigurasi yang baru ditambahkan dapat diterapkan, mulai ulang layanan.

Saat ini, akses server web di browser, tekan F12 pada keyboard untuk membuka alat pengembang, pilih alamat IP server web, dan Anda dapat melihat di header respons bahwa teknologi kompresinya adalah gzip

Eksperimen berakhir


tembolok web

Caching halaman web adalah untuk men-cache beberapa halaman yang sering tidak berubah atau jarang berubah. Saat browser mengakses halaman tersebut lagi, tidak perlu mendownload halaman tersebut lagi, sehingga meningkatkan kecepatan akses pengguna. Modul mod_expires Apache akan secara otomatis menghasilkan tag Kedaluwarsa dan tag Kontrol Cache di informasi header halaman, Berdasarkan tag tersebut, browser klien memutuskan untuk mendapatkan halaman di cache mesin lokal untuk kunjungan berikutnya, tanpa membuat permintaan lain ke sana. server. Kurangi frekuensi dan jumlah akses klien untuk mencapai tujuan mengurangi lalu lintas yang tidak perlu dan meningkatkan kecepatan akses.

Contoh

Menerapkan cache halaman web

Langkah

Buka file konfigurasi utama httpd, aktifkan modul expired dan tambahkan, lalu mulai ulang layanan.

  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

Setelah memulai ulang layanan, buka browser untuk mengakses server web, dan Anda dapat melihat ada dua baris informasi lagi di header respons.


Sembunyikan informasi versi

Informasi kerentanan perangkat lunak terkait dengan versi tertentu, sehingga nomor versi sangat berguna bagi penyerang. Di alat pengembang di browser, Anda dapat melihat informasi versi Apache di item server di header respons.

Jika penyerang jaringan memperoleh informasi versi Apache, ia akan melakukan serangan yang ditargetkan dan menyebabkan kerugian pada situs web. Oleh karena itu, dalam lingkungan produksi sebenarnya, nomor versi Apache harus disembunyikan untuk mengurangi risiko serangan.

Langkah

  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

Simpan dan keluar, buka file httpd.default

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

Anda dapat melihat bahwa opsi disediakan di komentar:Diatur ke salah satu dari: Penuh | OS | Kecil | Minimal | Utama | Prod

Pilihan

menjelaskan

ServerTokens Penuh

Mengembalikan informasi server paling detail, termasuk jenis sistem operasi dan daftar modul yang dikompilasi.

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

Sistem Operasi ServerTokens

Hanya jenis sistem operasi yang dikembalikan.

Misalnya: Apache/2.4.41 (Unix)

ServerTokens Kecil

Mengembalikan nomor versi mayor dan minor.

Misalnya: Apache/2.4

Token Server Minimal

Mengembalikan nomor versi utama.

Misalnya: Apache/2

ServerTokens Utama

Hanya nomor versi utama yang dikembalikan.

Misalnya: Apache/2

Token Server Produksi

Mengembalikan informasi minimal, hanya menampilkan Apache, menghilangkan nomor versi.

Misalnya: Apache

Simpan dan keluar, mulai ulang layanan.Akses server web

Anda dapat melihat bahwa informasi versi hanya menampilkan satu Apache


Apache anti-lintah

Hotlinking Apache adalah tindakan perlindungan yang mencegah situs web lain atau pihak ketiga yang tidak berwenang untuk secara langsung menautkan ke gambar, video, audio, atau sumber daya lain di situs web Anda.

Ketika sebuah situs web menggunakan sumber daya langsung dari situs Anda, mereka sebenarnya menghabiskan bandwidth dan sumber daya server Anda, mungkin tanpa izin Anda.

definisi

  • Anti-hotlinking mengacu pada larangan situs web eksternal atau pihak ketiga yang tidak berwenang untuk secara langsung menggunakan tautan sumber daya di situs web Anda melalui konfigurasi server. Jika seseorang mencoba menggunakan link sumber daya Anda langsung di halaman mereka, pengunjung akan melihat masalah di halaman tersebut dimana sumber daya tidak dapat dimuat, atau konten alternatif akan muncul.

prinsip

  • Pemeriksaan Referer HTTP: Server menentukan sumber permintaan sumber daya dengan memeriksa header Referer dalam permintaan HTTP. Jika ditemukan bahwa Perujuk bukan dari sumber yang Anda izinkan (seperti situs web Anda sendiri), server dapat menolak menyediakan sumber daya atau mengembalikan konten alternatif.
  • Aturan penulisan ulang: Gunakan aturan Penulisan Ulang Apache untuk menulis ulang permintaan, periksa header Referer, lalu putuskan apakah akan menyediakan sumber daya atau menolak permintaan berdasarkan pengaturan.

Konfigurasikan lingkungan eksperimental anti-hotlink

nama CPU

nama domain

alamat IP

sistem operasi

Perangkat lunak dan versi utama

apache1

www.e1.com

192.168.10.101

Bahasa Indonesia: Bahasa Indonesia: CentOS7.9

httpd-2.4.25.tar.gz

Bahasa Inggris: apache2

www.e2.com

192.168.10.201

Bahasa Indonesia: Bahasa Indonesia: CentOS7.9

httpd-2.4.25.tar.gz atau instalasi yum

klien

Windows 10

Peramban

lingkungan laboratorium

Kloning server pertama secara langsung atau gunakan yum -y install httpd untuk menginstal httpd, dan ubah alamat IP menjadi 192.168.10.102

Ubah nama host kedua server

  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 ~]#

Ubah file host dari dua server web sehingga dapat menentukan nama domain yang sesuai.

Ikuti langkah yang sama di bawah ini untuk memodifikasi host 201

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

Untuk file host dari host klien Win10, di bawah C:WindowsSystem32driversetc, klik dua kali file host untuk membukanya dengan Notepad.

Matikan firewall dan mekanisme keamanan kernel kedua server Web, aktifkan layanan httpd, dan coba lihat apakah Anda dapat mengakses dua server Web di host klien.

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

Contoh hotlinking gambar lokal

101 host adalah situs saya dan saya perlu mencuri gambar di server web 201 host.

Artinya, www.e1.com mencuri link gambar www.e2.com

Langkah

Datanglah ke tuan rumah 201

Masuk ke direktori tempat httpd menyimpan file halaman web, seret gambar, dan edit file index.html.

  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>

Simpan dan keluar. Saat ini, gunakan browser untuk mengunjungi www.e2.com di mesin host dan Anda dapat melihat ada gambar di halaman web.

Jika Anda ingin mencuri gambar dari situs web lain, Anda memerlukan tautan ke gambar tersebut. Klik kanan gambar di browser dan pilih Salin Tautan Gambar.

Datanglah ke 101 Host

Tambahkan tautan ke gambar di beranda server 101Web

  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>

Simpan dan keluar, buka host klien Win10 dan kunjungi dua URL www.e1.com dan www.e2.com

Gunakan F12 untuk membuka alat pengembang. Anda dapat melihat di jaringan bahwa URL permintaan dan tautan gambar www.e2.com adalah milik www.e2.com.

URL permintaan www.e1.com adalah www.e1.com, tetapi permintaan gambar adalah IP host www.e2.com + tautan gambar

Sejauh ini, hotlinking gambar lokal sederhana telah direalisasikan.

Contoh anti-hotlink

Jika host lain mencuri link gambar dari host 201, hanya gambar tetap yang akan ditampilkan, bukan gambar yang ingin dicuri pihak lain.

Langkah

Impor gambar lain (error.jpg) ke direktori htdocs dari host 201 (www.e2.com) yang menyediakan gambar asli untuk eksperimen anti-lintah.

Kemudian edit file konfigurasi httpd dan aktifkan modul rewrite (penulisan ulang alamat). Tujuan penulisan ulang adalah jika seseorang meminta logo.jpg saya, arahkan permintaan tersebut ke error.jpg.

Dengan fungsi penulisan ulang alamat, permintaan dapat ditinjau dan dinilai. Jika permintaan diawali dengan www.e2.com, akses akan diizinkan. Jika awalan permintaan bukan www.e2.com, akses ke gambar akan tidak diperbolehkan.

  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

parameter

menjelaskan

IzinkanOverride SEMUA

Izinkan RewriteEngine dan aturan penulisan ulang lainnya di file .htaccess.

SEMUA: Mengizinkan semua jenis arahan penulisan ulang ditimpa oleh aturan dalam file .htaccess.

Tidak Ada: Melarang penggunaan file .htaccess di direktori ini untuk mengesampingkan konfigurasi server

Tulis Ulang Mesin Hidup

Aktifkan penulisan ulang, ini adalah langkah pertama untuk mengaktifkan aturan penulisan ulang

Tulis UlangKond

Tentukan kondisi penulisan ulang

%{HTTP_REFERER}

Ini adalah variabel bawaan Apache. Variabel ini dapat memperoleh URL di informasi header pesan permintaan ketika pengguna mengakses.

Cocokkan nilai Referer dalam permintaan

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

File apa pun di bawah URL (.*: cocok dengan satu atau beberapa karakter apa pun)

Menunjukkan bahwa ini tidak cocok dengan string yang dimulai dengan http://www.e2.com/ dan diakhiri dengan satu atau beberapa karakter

[NC]

Pemfilteran tidak peka huruf besar-kecil

Aturan Penulisan Ulang

Tentukan aturan penulisan ulang

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

Jika kondisi penulisan ulang sebelumnya cocok, jika URL yang diminta diakhiri dengan .gif, .jpg, atau .swf

Kemudian permintaan akan diarahkan ke http://www.e2.com/error.png

.*: cocok dengan sejumlah karakter apa pun

.: Titik yang di-escape oleh karakter escape, berikut arti dari titik sederhana

Simpan dan keluar, mulai ulang layanan.

Terakhir, kami datang ke host klien (Win10) untuk menguji agar gambar tidak di-cache oleh browser, jadi gunakan tombol pintas Ctrl + Shift + Delete untuk menghapus cache browser.

Kemudian kunjungi www.e2.com dan semuanya berfungsi dengan baik

Saat mengunjungi www.e1.com, tautan gambar yang dicuri menjadi gambar error.png yang dialihkan.