Jaringan pengiriman atau perantara mengakhiri sambungan itu lalu membuat sambungannya sendiri kepada Anda. Karena itu server Anda melihat alamat perantara pada setiap permintaan, dan itu diam-diam merusak apa pun yang bergantung pada pengetahuan tentang siapa yang bertanya.
Apa yang rusak
- Pembatasan laju — semua pengunjung menjadi satu alamat, jadi entah semuanya dibatasi atau tak seorang pun.
- Pemblokiran — fail2ban memblokir perantaranya, dan itu berarti memblokir semua orang.
- Log dan statistik — satu alamat untuk seluruh dunia.
- Aturan per negara — negara simpul tepinya, bukan negara pengunjungnya.
Beri tahu server di mana alamat yang sebenarnya
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
# ... the rest of the provider's ranges
real_ip_header CF-Connecting-IP;
real_ip_recursive on;
Percayai tajuk itu hanya bila datang dari rentang milik perantaranya sendiri. Mempercayainya dari mana saja berarti siapa pun bisa mengirim tajuk itu dan mengaku sebagai alamat apa pun yang ia mau, dan itu mengubah daftar blokir Anda menjadi senjata terhadap pengunjung Anda sendiri.
Dan di mana https berada
Kalau perantaranya mengakhiri TLS, server Anda melihat http polos dan bisa memutuskan bahwa pengunjungnya perlu dialihkan ke https — padahal ia sudah berada di sana. Itulah putaran pengalihan.
# PHP, before the framework loads
if ((@$_SERVER["HTTP_X_FORWARDED_PROTO"] ?? "") === "https") {
$_SERVER["HTTPS"] = "on";
}
Pastikan itu berhasil
tail -5 /var/log/nginx/access.log
Alamat yang nyata dan beragam berarti sudah benar. Alamat yang sama di setiap baris berarti belum.
Setelah berjalan, tutuplah porta 80 dan 443 untuk semuanya kecuali rentang perantaranya. Kalau tidak, siapa pun yang mengetahui alamat asal Anda bisa melewati perantara itu sama sekali.
