1 min read

Konfigurasi mencegah situs diakses memakai wget

Saat saya melihat situs bench.sh, saya tertarik akan caranya melayani akses download fle jika kita melakukan wget ke situs tersebut. Ternyata hal ini dengan memanfaatkan fungsi pendeteksian user agent oleh Nginx.

Kali ini, saya akan merubah pelayanan Nginx supaya ketika ada orang yang melakukan wget ke situs ini, akan mendownload file 100mb dari cachefly :p

Contoh file konfigurasi saya adalah /etc/nginx/sites-enabled/erawanarifnugroho.com.conf

server {
        ...

	# Konfigurasi jika ada yang memakai Wget, maka arahkan ke situs cachefly
	if ($http_user_agent ~* (wget) ) {
		rewrite     ^(.*)   http://cachefly.cachefly.net/100mb.bin permanent;
	}
	
}

 

Berikut adalah hasilnya jika ada yang mencoba melakukan wget :

# wget erawanarifnugroho.com
URL transformed to HTTPS due to an HSTS policy
--2018-09-03 14:49:08--  https://erawanarifnugroho.com/
Resolving erawanarifnugroho.com (erawanarifnugroho.com)...
Connecting to erawanarifnugroho.com (erawanarifnugroho.com)|... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://cachefly.cachefly.net/100mb.bin [following]
--2018-09-03 14:49:08--  http://cachefly.cachefly.net/100mb.bin
Resolving cachefly.cachefly.net (cachefly.cachefly.net)... 205.234.175.175
Connecting to cachefly.cachefly.net (cachefly.cachefly.net)|205.234.175.175|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 104857600 (100M) [application/octet-stream]
Saving to: ‘index.html’

 

Bisa juga, kita iseng mengarahkan request wget ke situs lain, misalnya FBI atau yang lain. Perhatikan pemakaian simbol $ pada contoh konfigurasi dibawah. Coba bandingkan antara memakai $ dan tidak memakai $, hasil requestnya seperti apa.

server {
        ...

	# Konfigurasi jika ada yang memakai Wget, maka arahkan ke fbi
	if ($http_user_agent ~* (wget) ) {
		rewrite     ^(.*)   http://fbi.gov$1 permanent;
	}
	
}

 

Jika kita ingin mematikan akses terhadap user agent wget secara total, maka berikut adalah contoh konfigurasinya

server {
        ...

	# Konfigurasi jika ada yang memakai Wget, maka matikan
	if ($http_user_agent ~* (wget) ) {
		return 403;

	}
	
}