شبكة التوزيع أو الوسيط تُنهي الاتّصال وتفتح اتّصالها هي إليك. فيرى خادمك عنوان الوسيط على كل طلب، وهذا يكسر بصمت كل ما يعتمد على معرفة مَن السائل.
ما ينكسر
- تحديد المعدّل — كل الزوّار عنوانٌ واحد، فإمّا أن يُحدَّ الجميع وإمّا ألّا يُحدَّ أحد.
- الحظر — يحظر fail2ban الوسيط، فيحظر الجميع.
- السجلّات والإحصاءات — عنوانٌ واحد للعالم كلّه.
- قواعد البلدان — بلد عقدة الحافّة لا بلد الزائر.
دلّ الخادم على العنوان الحقيقيّ
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;
ولا تثق بتلك الترويسة إلّا من نطاقات الوسيط نفسه. فالثقة بها من أي مكان تعني أن أي أحد يقدر على إرسالها ويدّعي أي عنوان يشاء، وبهذا تصير قائمة الحظر عندك سلاحًا ضدّ زوّارك أنت.
وأين هو https
إن كان الوسيط يُنهي TLS، رأى خادمك http عاديًّا وربّما قرّر أن الزائر يحتاج تحويلًا إلى https — وهو فيه أصلًا. وتلك حلقة تحويل مفرغة.
# PHP, before the framework loads
if ((@$_SERVER["HTTP_X_FORWARDED_PROTO"] ?? "") === "https") {
$_SERVER["HTTPS"] = "on";
}
وتأكّد أنه نجح
tail -5 /var/log/nginx/access.log
عناوينُ حقيقية متنوّعة تعني أنه سليم. والعنوان نفسه في كل سطر يعني أنه ليس كذلك.
وأغلق المنفذَين 80 و443 أمام كل شيء إلّا نطاقات الوسيط متى عمل. وإلّا فكلُّ من يعرف عنوان أصلك يستطيع تجاوز الوسيط تمامًا.
