Məzmuna keçin

Odoo 19 Community: Web RBL – öz veb saytlarımızda hücum trafiki üçün bloklama siyahısı

24 sentyabr 2026 tərəfindən
Odoo 19 Community: Web RBL – öz veb saytlarımızda hücum trafiki üçün bloklama siyahısı

Mənbə kodu: github.com/Alex0176/odoo-web-rbl — AGPL-3, sərbəst istifadə oluna bilər.

Odoo serverini internetdə işlədən kəsə qonaq gəlir. Ara-sıra yox, fasiləsiz. On yeddi gün ərzində beş veb saytımızda 731.297 sorğunu qeyd edib təhlil etdik. Onlardan 110.511-i ziyarətçi deyildi, zəifliklərin, giriş məlumatlarının və konfiqurasiya fayllarının avtomatlaşdırılmış axtarışı idi.

Bu yazı Web RBL-i təsvir edir – Odoo 19 Community üçün bu trafiki aşkar edən, qiymətləndirən, qeydə alan və rədd edən və bloklama siyahısını RBL siyahısı kimi yayımlayan açıq mənbəli modul, yəni firewall-ların və reverse proxy-lərin birbaşa oxuduğu formatda. Bütün rəqəmlər real istismardandır.

Modulun bacardıqları — funksiyalara ümumi baxış

FunksiyaNə edirÇatdırılma
Nümunə tanımaZondlamaları yol və uzantı üzrə tanıyır: .env, .git, konfiqurasiya faylları, bulud açarları, CI/CD qurma təlimatları, WordPress, PHP, yol keçidi (Path Traversal), verilənlər bazası idarəçisi, GraphQL, /api/fs/exec və oxşar interfeyslər vasitəsilə əmrin icrasıbloklamaq
Hər nümunə üzrə üç səviyyəbloklamaq, saymaq və ya bildirmək — hər nümunə üzrə koddan asılı olmayaraq dəyişdirilə bilərhər nümunə üzrə
HədlərBloklanmazdan əvvəl eyni nümunənin neçə rast gəlməsi; girişlər üçün ongirişdə 10
Giriş müdafiəsiForma və XML-RPC/JSON-RPC vasitəsilə uğursuz girişlər, uğursuz sessiya yoxlamaları, verilənlər bazası idarəçisinə girişlər — verilənlər bazasında, əməli yaddaşda yoxaktiv
Girişdə bot tanımaOn uğursuz cəhddən sonra gözləmə mesajına məhəl qoymayıb vurmağa davam edən dərhal bloklanırbloklamaq
Davranış tanımaBeş dəqiqədə iyirmi səhv səhifə və demək olar ki, heç bir uğurlu səhifə yaradan ünvanlar — yəni oxumaq əvəzinə təxmin edənlərbildirmək
Qiymətləndirmə 0–100Ünvanın arxasında hücumçu olduğuna nə qədər əminik? Nümunənin ciddiliyindən, fərqli nümunələrin sayından, nəzərəçarpan günlərdən, təsirlənmiş domenlərdən və rast gəlmə sayından — açıq mətnlə əsaslandırma iləaktiv
Qiymətləndirməyə görə giriş blokuTənzimlənə bilən qiymətləndirmədən başlayaraq giriş qadağan olunur, veb sayt oxunaqlı qalır40-dan
Oğurlanmış giriş məlumatlarına şübhəŞübhəli ünvandan edilən uğurlu giriş bildirilir və istəyə görə tapşırıq kimi təyin olunur — hər ünvan üçün gündə bir dəfəaktiv
Təhdid siyahılarıTor çıxış qovşaqları, Spamhaus DROP, FireHOL Level 1, blocklist.de əvvəlcədən konfiqurasiya olunub; hər hansı digər RBL siyahısı ünvanla əlavə edilə bilər, gündəlik müqayisə, hər siyahı üçün ayrıca səviyyəbildirmək
Girişə icazə yoxdurSiyahılar və ölkələr üçün dördüncü səviyyə: veb sayt oxunur, giriş forması və interfeyslər bağlıdır — Tor üçün uyğun cavabSeçim
Mənşə ölkəsiGeoLite2 vasitəsilə hər uyğunluq və ünvan üçün ölkə; modul verilənlər bazasını pulsuz lisenziya açarı ilə özü yeniləyirgöstər
Ölkə qaydalarıBlokla, girişə icazə vermə, bildir və ya açıq şəkildə azad et — hər ölkə üçün, qəsdən ilkin dəyər olmadanyoxdur
Yanlış konfiqurasiyalarQNAP, Synology, Exchange Autodiscover, ActiveSync, WebDAV/CalDAV/CardDAV aşkar edilir, heç vaxt bloklanmır və nəticə və təsirə məruz qalan domen ilə iş siyahısına əlavə olunurbildirmək
Hər ünvana bir biletNəticədən istəyə görə bilet yaranır — hər ünvana dəqiq bir bilet; bağlanmış bilet ikiqat yaranmaq əvəzinə yenidən açılırsöndürülüb
Məcburi səhifələr və yığıcılarKanonik Impressum yolu həmişə əlçatan qalır; yad yazılış variantlarının maşın vasitəsilə sınanması aşkar edilir və istəyə görə bloklanırbildirmək
İcazə siyahısıHeç vaxt bloklanmayan ünvanlar və şəbəkələr; hər gün firewall-dan (VPN qarşı tərəfləri) və Googlebot ilə Bingbot-un dərc edilmiş ünvan diapazonlarından doluraktiv
Müştəri təyinatıMüştərinin şəbəkəsindən gələn uyğunluq ona təyin olunur — icazə siyahısından, heç vaxt əllə təxmin edilmədənaktiv
Hər uyğunluq üçün domen və identifikatorHansı veb sayta müraciət edilib, hansı User-Agent ilə — hər ikisi giriş jurnalında yoxduraktiv
TəhlilBütün uyğunluqlar üzrə diaqram və pivot: şablon, gün, domen, ölkə, ünvan üzrəaktiv
YemZondlara kanar dəyəri olan uydurma cavablar verilir; onu sonradan çağıran şəxs cavabı oxuyubsöndürülüb
RBL çatdırılmasıBloklama siyahısı sadə ünvan siyahısı və ya JSON kimi, token ilə qorunan ayrıca ünvanda — HAProxy, OPNsense və URL siyahılarını oxuyan hər firewall üçünaktiv

Bildir, söndürülüb və ya seçim ilə təqdim olunan hər şey qəsdən belədir: Bloku aktivləşdirən şəxs bunu bir neçə gün baxdığına görə, kimin bu tələyə düşdüyünü gördüyünə görə etməlidir — ilkin parametr belə istədiyi üçün yox.

Web RBL təhlili: yeddi gün ərzində şablonlar üzrə uyğunluqlar

Təhlil: yeddi gün ərzində şablonlar üzrə uyğunluqlar. Ən hündür sütun .env fayllarının axtarışıdır.

RBL siyahıları: blokları çatdırmaq üçün standartlaşdırılmış yol

RBL Real-time Blackhole List sözlərinin abreviaturasıdır. Bu anlayış mail dünyasından gəlir; orada Spamhaus və digərləri doxsanıncı illərdən bəri zərərli göndərən ünvanların siyahılarını dərc edir. Prinsip olduqca sadədir və məhz buna görə geniş yayılıb: hər sətirdə bir ünvan, HTTP ilə əldə edilə bilən, müntəzəm yenidən yüklənən. Əvvəlcə analiz edilməli format yoxdur, alət tələb edən interfeys yoxdur.

Praktiki olaraq hər firewall və hər reverse proxy belə bir siyahını oxuyub ondan qaydalar yarada bilər. İstehsalçılar bunu fərqli adlandırır, mexanizm isə hər yerdə eynidir:

  • OPNsense və pfSense — URL Table Alias: ünvan siyahısını HTTP ilə yükləmək, firewall qaydalarında alias kimi istifadə etmək, saatlıq və ya gündəlik yenilənmə
  • HAProxy — ACL faylları və Map-lər: http-request deny qaydasında src -f sperrliste.txt, icra müddəti API-si vasitəsilə yenidən başlatmadan yenidən yüklənə bilər
  • nginx — qoşulmuş ünvan faylı ilə geo modulu və ya yaradılmış include faylından deny göstərişləri
  • Fortinet FortiGate — External Block List və ya Threat Feed: firewall-ın IP siyahısını götürüb siyasətlərdə istifadə etdiyi bir URL
  • Palo Alto Networks — External Dynamic List (EDL): eyni prinsip, təhlükəsizlik siyasətlərində ayrıca obyekt növü kimi
  • Check Point — URL vasitəsilə Custom Intelligence Feeds və IP Block Lists
  • Cisco Secure Firewall (Firepower) — öz siyahı mənbələri ilə Security Intelligence Feeds
  • Sophos Firewall — Third-Party Threat Feeds: bloklama qaydaları üçün mənbə kimi URL-dən ünvan siyahıları
  • Juniper SRX — feed-lərdən Dynamic Address Entries
  • MikroTik RouterOS — Address Lists, skript və fetch ilə URL-dən doldurulur
  • CrowdSec — dəstəklənən hər sistemdəki bouncer-lər üçün mənbə kimi öz siyahıları

Web RBL öz bloklama siyahısını məhz bu formatda təqdim edir. Firewall paketləri veb serverə çatmamış rədd edir — və onlarla birlikdə eyni ünvanın hər hansı digər cəhdini də, məsələn mail serverə və ya VPN gateway-ə.

Hər iki istiqamət, lakin düzgün yer

Yol əks istiqamətdə də işləyir: Web RBL-də istənilən RBL siyahısını qeyd etmək olar — bir URL, bir səviyyə, hazırdır. Tor çıxış qovşaqları, Spamhaus DROP, FireHOL və blocklist.de əvvəlcədən konfiqurasiya olunub, yenilərini üç klikləmə ilə əlavə etmək olar. Modul hər siyahını ünvan diapazonlarına bölür və hər sorğunu onlarla müqayisə edir, bir neçə mikrosaniyə ərzində.

Buna baxmayaraq: kənar siyahıları onun qarşısındakı firewall-da istifadə etmək daha məntiqlidir. Üç səbəbə görə. Firewall bütün xidmətləri görür, yalnız HTTP-ni yox — Spamhaus siyahısından olan ünvan mail serverdə və VPN-də də uğursuz olmalıdır. O, paket səviyyəsində, bağlantı ümumiyyətlə qurulmamışdan əvvəl rədd edir və beləliklə tətbiq serverinə heç nəyə başa gəlmir. Və bu siyahıların zatən saxlandığı yer məhz odur; tətbiqdə ikinci surət köhnələ bilən ikinci yer deməkdir.

Bəs siyahıların modulda nəyə faydası var: firewall-ın bacarmadığı şeylər üçün. O, giriş formasını tanımır. Web RBL Tor siyahısındakı ünvana girişdən imtina edə və veb saytı yenə də göstərə bilər — anonim oxumaq istəyən buna haqlıdır; anonim şəkildə parolları sınamaq istəyən isə yox. Və o, siyahıda olan ünvandan edilən uğurlu girişi şübhəli hal kimi bildirə bilər. Hər ikisi üçün siyahı girişin baş verdiyi yerdə lazımdır.

Qiymətləndirmə, təxmin deyil

Bir dəfə /wp-login.php soruşan ünvan, iki gün ərzində üç domen üzrə beş fərqli şablonla gəzən ünvandan tamamilə fərqlidir. Web RBL bunu 0-dan 100-ə qədər qiymətləndirməyə çevirir — özünün gördüklərindən, kənar xidmət olmadan və xaricə sorğu göndərmədən.

Web RBL qeydi, qiymətləndirmə 84 və əsaslandırma

Bir qeyd: 99 uyğunluq, qiymətləndirmə 84 və açıq mətnlə əsaslandırma — ən ağır şablon, beş fərqli ciddi şablon, iki şübhəli gün, iyirmidən çox uyğunluq.

Qiymətləndirmə iki şeyi müəyyən edir. Tənzimlənə bilən dəyərdən etibarən giriş qadağandır — veb sayt oxunaqlı qalır, lakin artıq giriş məlumatlarını axtarmış şəxs tapdıqlarını sınamaq imkanı əldə etmir. Və qiymətləndirməsi olan ünvandan edilən uğurlu giriş bildirilir: onda kimsə artıq təxmin etmir, bilirdi. Ya səlahiyyətli istifadəçi səfərdə idi, ya da giriş məlumatları itib — modul bunu həll etmir, soruşa biləcək birinin qarşısına qoyur. Parolun özünə isə heç vaxt toxunulmur.

Web RBL bloklama siyahısı, qiymətləndirməsi 40-dan yuxarı filtrlənib

Qiymətləndirməsi 40-dan yuxarı filtrlənmiş bloklama siyahısı: uyğunluqların sayı, şübhəli günlər, təsirə məruz qalan domenlər və hər ünvan üçün son yol.

Web RBL nəyi qoruyur — qorumanın təfərrüatları

1. Giriş məlumatları aşkarlanmamış qalır

Ölçülən ən böyük hücum sinfi Odoo-dakı boşluqları deyil, unudulub qalmış sirləri axtarır. On yeddi gün ərzində:

  • 57.721 sorğu .env fayllarına — orada verilənlər bazası parolları, API açarları və sessiya sirləri durur
  • Konfiqurasiya fayllarına 5.535 sorğu
  • Bulud giriş məlumatlarına 4.388 sorğu: credentials.json, service-account.json, firebase-adminsdk.json, rclone.conf, .git-credentials
  • 2.811 sorğu .git qovluqlarına — birini tapan şəxs tarixçəsi ilə birlikdə tam mənbə kodunu endirir
  • 1.907 sorğu .github/workflows/deploy.yml və ya .gitlab-ci.yml kimi, reyestrlərin və açar adlarının göstərildiyi build təlimatlarına

Burada həlledici olan sorğuların sayı deyil, fərqli ünvanların sayıdır: /credentials.json 98 ünvandan, /.git-credentials 92 ünvandan gəldi. Bu tək bir skaner deyil, bütün dünyada eyni vaxtda işləyən standart repertuardır.

2. Giriş cəhdləri boşa çıxır — davamlı olaraq

Odoo-nun parolların sınanmasına qarşı öz əyləci var. Onun üç hüdudu var və bunlar Odoo mənbə kodunun özündə sənədləşdirilib: Sayğac iş prosesinin əməli yaddaşındadır və hər yenidən başlatmada sıfırlanır, bloklamaq əvəzinə yalnız gecikdirir və yalnız parol yoxlamasına qədər çatan cəhdləri sayır.

Web RBL eyni nöqtələrdən işə qoşulur, lakin verilənlər bazasına yazır. Beləliklə:

  • Vəziyyət hər yenidən başlatmadan sağ çıxır və bütün iş proseslərində etibarlıdır
  • Hər iki yol qeydə alınır: /web/login giriş forması və /xmlrpc/2/common ilə /jsonrpc interfeysləri
  • Parol yoxlamasına heç vaxt çatmayan cəhdlər də qeydə alınır — məsələn etibarlı sessiya əlaməti olmadan edilən girişlər
  • Verilənlər bazası menecerində uğursuz giriş də sayılır; bu, ümumiyyətlə ən ağır giriş cəhdidir

Girişlər üçün hədd onda müəyyən edilib və səbəb ölçmədir: On yeddi gün ərzində doqquz uğursuz girişin əksəriyyəti müştərilərdən gəlirdi; onlar girişi özləri başqa cihazda qurur və bu zaman yanlış domen daxil edirdilər — bir halda öz domenlərini, yalnız nöqtə əvəzinə defislə. İlk uğursuz cəhddə blok hücumçuları deyil, qurulum zamanı müştərilərimizi vuracaqdı.

Server artıq „xahiş edirik bir az gözləyin" cavabını verdiyi halda yenə də döyənlər isə dərhal bloklanır. Bu mesajı insan oxuyur və gözləyir; onu nəzərə almayan isə proqramdır. Hədd sıfır olan ayrıca şablon məhz bu halı tutur və bir həmkarı vura bilməz: ora yalnız artıq on uğursuz cəhdi olan və bundan sonra davam edən şəxs çatır.

3. Hücum artıq serverə heç nəyə başa gəlmir

/@fs/../../.env kimi yola zond modul olmadan bahalı idi: Odoo xəta səhifəsini axtarır, onu render edir, ünvanı qurarkən nöqtə seqmentlərində büdrəyir və bunun nəticəsində xəta səhifəsinin xəta səhifəsində də uğursuz olur. Hər zond üçün iki stek jurnalı. On yeddi gün ərzində 28.401 belə xəta, bunlara əlavə olaraq 9.467 ardıcıl xəta ölçüldü.

Web RBL ir.http._match-a, yəni marşrut tapılmasından öncə müdaxilə edir. Cavab şablonsuz, bloklama yoxlamasından kənar verilənlər bazasına giriş olmadan və jurnal sətri olmadan verilir. İcazə siyahısına, təhdid siyahılarına və ölkə qaydalarına qarşı yoxlama keşdən sıralanmış ünvan diapazonları üzrə işləyir — bir neçə mikrosaniyə, hətta otuz mindən çox diapazonda da.

4. Firewall hücumçunu gəlib çatmamış kənara atır

Bloklama siyahısı RBL siyahısı kimi dərc olunur və HAProxy ilə OPNsense onu birbaşa oxuyur. Beləliklə hücumçu veb serverə ümumiyyətlə çatmır — eyni hostdakı başqa heç bir xidmətə də. Bir dəfə zərərli kimi tanınan giriş beləliklə bütün maşını geriyə dönük qoruyur.

Üç səviyyə: blokla, say, bildir

Boşluğa gedən hər sorğu hücum deyil. Buna görə Web RBL üç səviyyəni fərqləndirir və səviyyə hər şablon üçün koda toxunmadan dəyişdirilə bilər.

SəviyyəTətikləyən sorğuÜnvan üçün nəticə
bloklarədd edilir24 saat bloklanır, üç şübhəli gündən sonra daimi
saykeçiryalnız qeydə alınır, blok yoxdur
bildirkeçirnəticə mətni ilə qeydə alınır, heç vaxt bloklanmır

Təhdid siyahıları və ölkələr üçün dördüncüsü də var: girişə icazə yoxdur. Veb sayt oxunaqlı qalır, giriş forması və interfeyslər bağlıdır. Bu, şübhəli, lakin zərərli olması vacib olmayan hər şey üçün orta yoldur — Tor, bir məlumat mərkəzi diapazonu, müştərisi olmayan bir ölkə.

Hansı hücumlar aşkar edilir

Bütün şablonlar real trafikə qarşı yoxlanılıb. Fərqli ünvanların sayı qəsdən yanında göstərilib — o göstərir ki, şablon tək bir skaneri tutur, yoxsa geniş yayılmış üsulu.

Hücum sinfiSorğularÜnvanlar
.env oğurluğu57.721223
PHP zondları12.237256
Dəyərli hədəfə yönəlmiş yol traversalı10.04664
Konfiqurasiya faylları5.535114
Bulud giriş açarları4.388152
WordPress zondları3.366385
.git oğurluğu2.811255
Odoo kəşfiyyatı (verilənlər bazası meneceri, versiya sorğusu)2.500213
Süni intellekt alət zəncirləri və əmrlərin icrası (/mcp, /api/fs/exec)2.45074
Build təlimatları (CI/CD)1.90788
GraphQL son nöqtələri1.87871

Ən yeni sinif diqqətəlayiqdir. /api/fs/exec 54 fərqli ünvandan 369 dəfə soruşuldu — bu oxuma müraciəti deyil, əmrləri icra etmək cəhdidir. Belə hədəflər iki il əvvəl yox idi; onlar yeni süni intellekt alətlərinin və tapşırıq navbətlərinin interfeyslərindən qaynaqlanır. Müdafiəsini yalnız WordPress və PHP-yə yönəldən bundan heç nə görmür. Qiymətləndirmədə bu sinif müvafiq olaraq ağır çəkir.

Təhdid siyahıları və mənşə ölkəsi

Web RBL təhdid siyahıları: Tor, Spamhaus DROP, FireHOL, blocklist.de

Dörd siyahı, 32.851 ünvan diapazonu, hamısı „yalnız bildir" rejimində. Hər digər siyahı bir ünvan və bir səviyyədir.

Kənar siyahı bizim tanımadığımız səbəblərdən, heç vaxt görmədiyimiz trafik haqqında başqasının irəli sürdüyü iddiadır. O yanlış, köhnəlmiş və ya başqa məqsəd üçün nəzərdə tutulmuş ola bilər: blocklist.de daha çox başqa yerdə SSH girişlərini sınamış ünvanları toplayır və bu, veb server haqqında az şey deyir. Buna görə Web RBL kənar siyahıları öz bloklama siyahısından ayrı aparır və buna görə də ilkin dəyər bildir-dir. Və öz icazə siyahımız həmişə qalib gəlir: tanıdığımız müştəri üçüncü tərəfin qiymətləndirməsindən daha ağır çəkir.

Mənşə ölkəsi hər uyğunluqda və hər ünvanda göstərilir. Qiymətləndirmə üçün əvəzsizdir — öz ölkəsindən səhər saat onda edilən giriş cəhdi bir nəfər müştərisi olmayan ölkədən edilən cəhddən fərqlənir. Toplu bloklama üçün isə az yarayır və bunu öz rəqəmlərimiz deyir: Siyahımızdakı hücumçular əsasən Belçika, Finlandiya və Niderlanddakı bulud diapazonlarından gəlirdi. Alman dilli məkandan kənardakı hər şeyə qoyulan blok onları vurmazdı — əvəzində öz əməkdaşlarımızı məzuniyyətdə və müştərilərimizi iş səfərində vurardı.

Web RBL ölkə qaydaları: izahatla birlikdə boş təqdim olunur

Ölkə qaydaları boş təqdim olunur və görünüş nəyə görə olduğunu izah edir.

Yanlış konfiqurasiyaları bloklamaq əvəzinə bildir

Real trafikdə ən tez-tez rast gəlinən hal nə hücum, nə də ziyarətçidir, bəlkə də veb serveri başqa bir şey hesab edən nasaz proqram təminatıdır:

  • Bir QNAP NAS-ın veb interfeysinə 1.367 müraciət — hədəfi artıq düzgün olmayan sinxronizasiya müştərisi. Tək bir bağlantı 962 dəfə döydü.
  • 65 Autodiscover sorğusu — veb domeni öz Exchange-i hesab edən Outlook

Belə ünvanlar heç vaxt bloklanmır. Blok qüsuru aradan qaldırmır, onu gizlədir — və cihazı onsuz da yanlış qurulmuş şəxsi vurur. Əvəzində nəticə mətni və təsirə məruz qalan domenlərlə qeyd yaranır, ondan istəyə görə avtomatik bilet yaranır: hər ünvana dəqiq bir bilet, və bağlanıb ünvan yenidən diqqəti cəlb edərsə, ikinci bilet yaranmaq əvəzinə eyni bilet yenidən açılır.

QNAP, Synology, Exchange Autodiscover, ActiveSync və WebDAV, CalDAV və CardDAV müştəriləri aşkar edilir. Şablonlar dəqiq fayl adlarını və qovşaqları göstərir, heç vaxt sadəcə uzantıları yox: Eyni /cgi-bin/ qovluğunda zərərsiz sinxronizasiya sorğuları printenv.pl kimi klassik zondların birbaşa yanında yerləşir.

İcazə siyahısı: heç vaxt bloklanmayan ünvanlar

Səhvin qiyməti bütün ünvanlar üçün eyni deyil. Məlumat mərkəzindən olan skaner üçün yanlış həyəcan heç nəyə başa gəlmir. Filial tunelinin qarşı tərəfi üçün isə filiala başa gəlir.

Buna görə birincidən əvvəl duran ikinci siyahı var: heç vaxt bloklanmayan ünvanlar və şəbəkələr. O, heç nəyi susdurmur — orada olan yenə yoxlanılır və qeydə alınır, yalnız nəticə düşür. Firewall-dakı istisnadan fərqi budur: O kor edir, bu isə yalnız səbirli edir.

O, hər gün iki mənbədən doldurulur: firewall-ın özündən bütün VPN qarşı tərəfləri ilə, yeni qurulmuş tunelin kimsənin bloklama siyahısını düşünməsindən asılı olmaması üçün — və Google və Microsoft-un crawler-ləri üçün dərc etdiyi ünvan diapazonlarından. Yalnız belə həqiqi Googlebot-u özünü belə adlandıran skanerdən ayırmaq olar. Axtarış sistemləri heç vaxt bloklanmamalıdır; onları bloklayan saytını indeksləşdirmədən geri dönüşsüz çıxarır.

Burada müqayisədən daha vacib olan qayda geçərlidir: Boş cavab heç vaxt silmir. Mənbə cavab vermirsə, boş və ya anlaşılmaz cavab verirsə, siyahı dəyişməz qalır. Nasazlıq zamanı özünü boşaldan icazə siyahısı ən pis mümkün anda bütün tunelləri də özü ilə aparır.

İcazə siyahısı qeydi müştərini daşıyırsa, onun şəbəkəsindən gələn hər uyğunluq ona təyin olunur. Yanlış konfiqurasiyanın beləliklə dərhal əlaqə şəxsi olur, heç kimin ünvanları axtarmasına ehtiyac olmadan.

Məcburi məlumatlar və avtomatlaşdırılmış data yığıcıları

Impressum adi səhifə deyil. O, insanlar üçün əlçatan qalmalıdır, çünki onun bloklanması yığıcının axtardığı pozuntunu məhz yaradır. Eyni zamanda ad və ünvanın durduğu səhifədir — və beləliklə maşın yığımının hədəfidir.

Avstriyada yerləşdirilmiş Google şriftlərinə görə xəbərdarlıq məktubları dalğası zamanı jurnallar göstərdi ki, məktublar tək-tək ziyarətlərdən deyil, avtomatlaşdırılmış kütləvi hücumdan qaynaqlanırdı: bir-biri ilə əlaqəsi olmayan fərqli hostlar millisaniyə fasilələrlə.

Web RBL bunu istisna əvəzinə aşağı salma ilə həll edir. Kanonik /impressum yolu heç bir şablona düşmür və həmişə əlçatan qalır. /impressum.php kimi yad yazılışlar — Odoo saytında ola bilməyən — bildirilir və maşın yığımını qəbul etmək istəməyən parametri dəyişir. sitemap və robots bundan istisnadır və prinsipcə bloklana bilməz: onlar heç bir şəxsi məlumat ehtiva etmir və onları əldə etmək hər axtarış sistemi crawler-inin vəzifəsidir.

Domen və identifikator: giriş jurnalında nə çatışmır

werkzeug-un giriş jurnalı nə müraciət edilən hostu, nə də müraciət edənin identifikatorunu yazmır. Odoo hər ikisini təbii olaraq alır — hostsuz birdən çox veb sayt olduqda düzgününü ümumiyyətlə seçə bilməzdi. Lakin sonradan oxumaq mümkün deyil.

Web RBL hər uyğunluq üçün hər ikisini saxlayır. Bu, başqa cür cavablandırıla bilməyən iki sualı cavablandırır: hansı veb saytın yanlış konfiqurasiya ilə müraciət etdiyini — və beləliklə domenin hansı müştəriyə aid olduğunu — və ünvanın bir səhifəni, yoxsa hamısını ziyarət etdiyini. Eyni ünvanın bir-biri ilə əlaqəsi olmayan bir neçə domeni kütləvi hücumun əlamətidir və qiymətləndirməni artırır.

İdentifikatorun nə qədər əhəmiyyətli olduğunu veb saytlarımızdan birində aparılan təhlil göstərdi: Bütün trafikin yetmiş faizindən çoxu orada tək bir müraciət edənə aid idi, yüzdən çox ünvana bölünmüşdü. İdentifikator olmadan bu paylanmış scraper kimi görünərdi. Bu, OpenAI-ın crawler-i GPTBot idi — o, dönə-dönə robots.txt soruşurdu və tamamilə düzgün davranırdı.

Təhlükəsizlik aspektləri təfərrüatları ilə

1. Proxy aşkarlanması — ümumiyyətlə ən təhlükəli yer

Odoo reverse proxy arxasında işləyirsə və proxy_mode yanlış qurulubsa, modul hər sorğuda eyni ünvanı görür: proxy-nin ünvanını. Blok bu halda bütün ziyarətçiləri eyni anda kənarda qoyardı.

Buna görə Web RBL hər blokdan əvvəl ünvanın müəyyən edilməsinin etibarlı olub-olmadığını yoxlayır. O, proxy_mode-u yönləndirmə başlığı ilə birlikdə tələb edir, proxy_mode olmadan yönləndirmə gəldikdə işləməkdən imtina edir və eyni şəkildə birdən çox aralıq proxy olduqda imtina edir. Şübhə olduqda bloklanmır.

2. Öz şəbəkələrimizə heç vaxt

Şəxsi ünvan diapazonları, loopback, link-local və CGNAT sabit şəkildə istisna edilib. Onlar heç bir halda siyahıya düşə bilməz, əllə də olsa. Eyni şey kənar siyahılara da aiddir: Şəxsi və ayrılmış diapazonlar, həmçinin absurd dərəcədə böyük şəbəkələr oxunarkən rədd edilir.

3. Öz xətası veb saytı özü ilə aparmamalıdır

Bütün yoxlama hər xətanı tutan müdafiədə işləyir. Burada nəsə səhv gedərsə, jurnala yazılır və sorğu dəyişməz davam edir. Öz xətası zamanı veb saytı özü ilə aparan müdafiə modulu heç olmamasından da pisdir. Sorğu yolundakı bütün sorğular həmçinin ziyarətçinin brauzer dilindən asılı olmadan və tərcümə olunmuş sahələr üzrə çeşidləmə olmadan işləyir — quraşdırılmamış dildən olan ziyarətçi yoxlamanı uğursuz edə bilməz.

4. Bloklamadan əvvəl müşahidə

Quraşdırmadan sonra siyahıdakı ünvanların adi sorğularda bloklanması söndürülüb. Zondlar rədd edilir və qeydə alınır, qalan hər şey keçir. Beləliklə heç kim kənarda qalmamışdan əvvəl, siyahıya həqiqətən kimin düşdüyünü bir neçə gün oxumaq mümkündür. Eyni şey davranış aşkarlanması, təhdid siyahıları və ölkə qaydaları üçün də keçərlidir: əvvəlcə bildir, sonra baxdıqdan sonra blokla.

5. Geniş şəbəkələr əvəzinə dar şablonlar

Yanlış tanınmış ziyarətçi gözdən qaçmış zonddan daha bahalıdır. Buna görə hər şablon öz səviyyəsini daşıyır və o, hər şablon üçün dəyişdirilə bilər. Tək fayl uzantısı nadir hallarda kifayət edir: .php üçün 14.012 həqiqi zond bir ovuc köhnə linkə qarşı durur, .asp üçün isə nisbət əksinədir. Belə qərarlar ölçülməlidir, təxmin edilməməlidir.

6. Əllə edilən azad etmə qüvvədə qalır

Ünvanı azad edən şəxsin səbəbi olub. Növbəti uyğunluq bu qərarı səssizcə qüvvədən salmır.

7. Siyahı qorunur, lakin sirr deyil

Son nöqtə token tələb edir və etibarlı token olmadan 403 ilə yox, 404 ilə cavab verir — ünvanın varlığı beləliklə ümumiyyətlə təsdiqlənmir. Müqayisə sabit zamanda işləyir. Siyahının özündə məxfi heç nə yoxdur: O, özləri bizə müraciət etmiş ünvanlardan ibarətdir.

8. Mühasibatlıqda sirr yoxdur

Uğursuz girişlərdə sınanmış istifadəçi adı qeyd olunur, parol heç vaxt. Verilənlər bazası menecerində ötürülmüş dəyərlərdən heç nə oxunmur: orada ən önündə əsas parol durur və bloklama siyahısındakı qeyd hər verilənlər bazası ehtiyat nüsxəsinə düşür. GeoLite2 üçün lisenziya açarı yalnız sistem parametrində durur və heç bir jurnal sətrində yoxdur.

9. Yem istifadəyə yarayan heç nə vermir

İstəyə görə Web RBL zondlara birmənalı kanar dəyəri ehtiva edən uydurma məzmunla cavab verir. Bu dəyəri sonradan çağıran şəxs saxta cavabı oxuyub və buna görə hərəkət edib — yanlış həyəcan bu zaman istisna edilir. Yemlər istifadəyə yarayan məlumat, real yollar və etibarlı giriş məlumatları ehtiva etmir. Bu funksiya söndürülmüş halda təqdim olunur, çünki o, xaricə görünən davranışı dəyişir.

Modulun bacarmadıqları

O, firewall və Web Application Firewall-ı əvəz etmir. O, yollarda tanınmış yoxlama şablonlarını, uğursuz girişləri və şübhəli davranışı aşkar edir — formalara hücumları, parametrlərə yeridilmə cəhdlərini yox.

O, həmçinin yalnız HTTP ilə geri qayıdanı görür. Hücumçunun ələ keçirilmiş verilənlər bazası və ya poçt qutusu girişləri ilə nə etdiyi görünməz qalır — və məhz buna görə kanar dəyərləri giriş məlumatları deyil, yollardır.

Və o, ehtiyatlılığı əvəz etmir: .env zondlarını rədd edən modul səhvən çatdırılmış .env faylını təhlükəsiz etmir.

Mövcudluq

Web RBL AGPL-3 lisenziyası ilə açıq şəkildə mövcuddur və bizdə beş veb saytda istehsalatda işləyir:

github.com/Alex0176/odoo-web-rbl

Modul Odoo 19 Community tələb edir və base ilə web dışında asılılığı yoxdur. Bilet inteqrasiyası ixtiyaridir və müəyyən bilet sistemi tələb etmir; belə sistem olmadıqda sadəcə heç nə baş vermir. Mənşə ölkəsi MaxMind-in pulsuz GeoLite2 verilənlər bazasını tələb edir; o olmadıqda sahə boş qalır və qalan hər şey dəyişməz işləyir.

Daha ətraflı: Web RBL tam təhlükəsizlik arxitekturasına necə uyğun gəlir -- firewall, iki faktorlu autentifikasiya və səlahiyyətlərlə birlikdə, addım-addım təlimatla: Odoo 19 təhlükəsizlik arxitekturasını düzgün birləşdirmək.

Suallar, qeydlər və xəta hesabatlarını məmnuniyyətlə qəbul edirik — ən yaxşısı GitHub-da Issue kimi.