OpenVPN Access Server uchun Fail2ban filtri: real_ip va jail
Access Server o‘z jurnal formatini yozadi, shuning uchun standart filtrlar hech narsa topmaydi. real_ip ga bog‘laning, jail-larni yuza bo‘yicha ajrating va manzil proksi emasligini tekshiring.
Siz jamoa postidan bitta OpenVPN jail nusxaladingiz, fail2ban-ni qayta ishga tushirdingiz va hech bir manzil hech qachon bloklanmaydi. Sabab deyarli har doim jurnal formati: Access Server standart filtr kutadigan autentifikatsiya xatosi satrlarini yozmaydi. Filtrga tegishdan oldin yozuvlar umuman borligini tekshiring, chunki shablon xizmat hech qachon yozmagan narsaga mos kela olmaydi.
Bu men Access Server xostida amal qiladigan tartib: yozuv shaklini tasdiqlash, bitta bog‘langan ifoda yozish, uni haqiqiy jurnalda sinash, so‘ng jail-larni hujum qilinayotgan yuza bo‘yicha ajratish va blok firewallgacha yetib borishini tekshirish.
Xato yozuvi borligini tasdiqlang
Access Server o‘zining tuzilgan satrlarini /var/log/openvpnas.log ga yozadi, mijoz manzili esa syslog satrining boshida emas, qo‘shtirnoq ichidagi real_ip maydonida bo‘ladi. Har qanday shablon yozishdan oldin sodir bo‘lganini bilgan muvaffaqiyatsiz kirishni qidiring:
grep -i 'LOG ERR' /var/log/openvpnas.log | tail -20Hech narsa ko‘rinmasa, keyingi gumondor jurnal darajasi. Access Server-da /usr/local/openvpn_as/etc/as.conf da jurnal ma’lumotlar bazasining disk raskadrovka kaliti bor (DEBUG_LOGDB=1), va uni o‘zgartirgandan keyin xizmatni qayta ishga tushirish kerak. O‘sha kalitga shablon tayyor bo‘lgach yana tushiriladigan diagnostika sozlamasi sifatida qarang, doimiy konfiguratsiya sifatida emas.
Faylda bo‘lganingizda qaysi yuzalar unga yozishini belgilang. Mijoz portali, administrator interfeysi va tunnel autentifikatsiyasining xatolari bir faylga turli belgilar bilan tushadi, va bu tafsilot keyinchalik jail tartibini belgilaydi.
real_ip ga bitta filtrni bog‘lang
Ifodani tor tuting. IP manzili bor har bir satrni talab qiladigan filtr odamlarni oddiy uzilishlar uchun bloklaydi, va band serverda yagona alomat foydalanuvchilarning noutbukni yopgani uchun qulflanganidan shikoyat qilishi. Xato yozuvini talab qiling va qo‘shtirnoq ichidagi manzilni ushlang:
# /etc/fail2ban/filter.d/openvpnaccess.local
[Definition]
failregex = ^ .*LOG ERR.*"real_ip": "<HOST>".*
ignoreregex =Boshidagi bo‘sh joy bezak emas. Access Server yozuvlarini ichkariga suradi, va unga bog‘lanish shablonning o‘sha faylga yozadigan aloqasiz xizmatlar satrlarini ham talab qilishiga yo‘l qo‘ymaydi. Agar yozuvlaringiz boshida uning o‘rniga vaqt tamg‘asi bo‘lsa, o‘sha prefiksga moslashing, lekin talab qilmoqchi bo‘lgan har bir yozuvda haqiqatan mavjud narsaga bog‘laning.
Yuza bo‘yicha aniqlik kerak bo‘lsa, o‘sha satrda yuza belgisini (WEB_CLIENT, WEB_ADMIN yoki VPN) talab qilib, yanada toraytiring. Bitta so‘z bilan farq qiladigan uchta filtrdan ko‘ra uchta shablonli bitta filtrni tekshirish osonroq.
jail-ni yoqishdan oldin ifodani sinang
Ishlab chiqarish jurnalida ishga tushirmagan filtri hech qachon yoqmang. Hujjatlashtirilgan test filtrni ikki marta o‘tkazadi, bir marta yuklash va bir marta qo‘llash uchun, va o‘tkazib yuborilgan satrlar hisoboti o‘qishga arziydigan qismdir:
fail2ban-regex --print-all-missed /var/log/openvpnas.log \
/etc/fail2ban/filter.d/openvpnaccess.local \
/etc/fail2ban/filter.d/openvpnaccess.local > missed.txtMos kelishlar sonini birinchi qadamda tasdiqlagan xatolar bilan solishtiring. Nol mos kelish shablon noto‘g‘ri ekanini bildiradi; autentifikatsiya xatosi bo‘lmagan satrlardagi mos kelishlar u juda keng ekanini bildiradi. Talab qilmaslikka qaror qilgan har bir satrni tushuntira olguningizcha missed.txt ni o‘qing.
Jurnal katta bo‘lsa bu testni nusxada bajaring, va Access Server-ning har qanday yangilanishidan keyin uni takrorlang. Jurnal formati siz moslashtiruvchi interfeys, va u barqaror API emas.
jail-larni yuza bo‘yicha ajrating, daemon bo‘yicha emas
Bitta Access Server bir nechta autentifikatsiya yuzasini taqdim etadi: 943/tcp da mijoz va administrator veb-interfeyslari, va aksariyat joylashtirishlarda tunnel 1194/udp yoki 443/tcp da. Barchasini qamrab olgan bitta jail tunnelda taxmin qilish urinishlariga sizning administrator yo‘lingiz ham bo‘lgan manzilni bloklashga imkon beradi va qaysi yuza haqiqatan hujum ostida ekanini yashiradi. Har bir yuzaga o‘z porti va chegaralari bo‘lgan alohida jail bering:
# /etc/fail2ban/jail.d/openvpnaccess.local
[openvpnas-web-client]
enabled = true
port = 943
protocol = tcp
filter = openvpnaccess
logpath = /var/log/openvpnas.log
maxretry = 3
findtime = 10m
bantime = 1h
[openvpnas-tunnel]
enabled = true
port = 443
protocol = udp
filter = openvpnaccess
logpath = /var/log/openvpnas.log
maxretry = 5
findtime = 10m
bantime = 1hKichik hisoblagichlar va qisqa blokdan boshlang, bir hafta haqiqiy trafikni kuzatgandan keyin ularni oshiring. Umumiy ofis manzilidagi saxiy chegara bitta NAT orqasidagi har bir foydalanuvchini jazolaydi, tunnel yuzasidagi tajovuzkor blok esa saqlangan hisob ma’lumotlari tunda tugagan qonuniy mijozlarni uzadi.
Blok, backend va nojo‘ya zararni tekshiring
Qayta ishga tushirgandan keyin holat chiqishi jail mavjudligini va sanayotganini tasdiqlashning eng tez usuli:
fail2ban-client status
fail2ban-client status openvpnas-tunnelKeyin blok siz haqiqatan boshqaradigan firewallgacha yetib borishini tasdiqlang, chunki hech kim amal qilmaydigan backend uchun sozlangan jail hech narsani himoya qilmaydi. iptables amali bilan manzillar jail nomidagi zanjirda ko‘rinadi (f2b-openvpnas-tunnel); nftables amali bilan ular fail2ban-ning o‘z jadvalida to‘plamga tushadi. Taxmin qilish o‘rniga xostingiz ishlatadiganini tekshiring.
Ikki nojo‘ya tekshiruv blokning o‘zidan muhimroq. Birinchidan, real_ip mijoz manzili ekanini, yuk balanslagichi yoki teskari proksi emasligini tasdiqlang; proksi orqasida har bir blok proksiga tushadi va butun xizmatni o‘zi bilan birga yiqitadi. Ikkinchidan, blokdan chiqarish tartibini yozib qo‘ying, chunki 02:00 da chegaradan oshgan manzil odatda navbatchi muhandisniki: fail2ban-client set openvpnas-tunnel unbanip 203.0.113.24.
Sozlash paytida chegarani yodda tuting. Fail2ban bitta autentifikatsiya yuzasidagi tezlik cheklagichi, kirishni boshqarish qatlami emas. U MFA, har bir hisob bo‘yicha cheklovlar yoki administrator interfeysini ochiq internetdan tashqarida saqlashni almashtirmaydi, va Access Server-ning bir portda ikkita tezlik cheklagichini qo‘yishdan oldin tekshirishga arziydigan o‘z autoban sozlamalari bor.