Sizning OpenVPN serveringizdagi bitta mijoz LANga kirishni yo'qotishi kerak, qolgan barcha tunnellar ishlab turishi kerak. Buni qidirsangiz, eng yaxshi javob odatda daemon buni qila olmaydi deydi, bu faqat yarmi to'g'ri: OpenVPNda har bir mijoz uchun xavfsizlik devori yo'q, lekin tunnelni tugatuvchi xost paketlarni allaqachon filtrlaydi. Muhim ikkita qaror — siz bloklayotgan shaxs va qoidaning joyi. Ikkalasini to'g'ri qilsangiz, o'zgarish sinab ko'rish va olib tashlash mumkin bo'lgan bitta satrga aylanadi.

Qoidani yozishdan oldin mijozni bog'lang

OpenVPN tunnel manzillarini hovuzdan ijaraga beradi, shuning uchun 10.8.0.6 — odam emas, o'rindiq. Sessiya tugagach ijara qaytadi va keyingi ulanishga berilishi mumkin, ya'ni o'sha manzilga qarshi yozilgan qoida o'rindiqqa ergashadi, foydalanuvchiga emas. Shuning uchun avval nima bloklayotganingizni hal qiling: qisqa tajriba uchun manzilmi yoki tashqarida saqlamoqchi bo'lgan odamning sertifikatimi.

Manzilni sertifikatga bog'lash uchun client-config-dir ko'rsatgan katalogda fayl yarating va faylga sertifikatning common name qiymatini aynan bering. Ichiga bitta direktiva qo'ying, ifconfig-push 10.8.0.6 255.255.255.0, va bu mijoz qayta ulanganda ham o'sha tunnel manzilini saqlaydi. Bu kuchga kirishi uchun ikkita sozlama bo'lishi kerak: client-config-dir server konfiguratsiyasida e'lon qilinishi va yuboriladigan manzil server marshrutlay oladigan quyi tarmoqda bo'lishi kerak. Bittasi yetishmasa, fayl xatosiz e'tiborsiz qoldiriladi, bu keyingi xavfsizlik devori sinovini chalg'itadi.

Vaqtinchalik blok hovuz manzilidan foydalanishi mumkin, agar chiptada o'sha paytda qaysi sessiya uni ushlab turgani yozilgan bo'lsa.

Tartib tashlashning bajarilishini hal qiladi

Tunnel va LAN o'rtasida yo'naltiruvchi Linux darvozasida paketlar FORWARD zanjiridan o'tadi. Quyidagi buyruqni gap sifatida o'qing: FORWARD boshiga kiriting, tun0 dan kiruvchi, faqat o'sha bitta xostdan, LAN quyi tarmog'iga yo'naltirilgan trafikni moslang va tashlang.

iptables -I FORWARD -i tun0 -s 10.8.0.6/32 -d 192.168.1.0/24 -j DROP

-I qoidani ishga tushiradi. -A bilan qo'shilsa, u tunnel quyi tarmog'i uchun har qanday keng ruxsat ostida qoladi va hech qachon paket ko'rmaydi. Joyni iptables -vnL FORWARD --line-numbers bilan tekshiring va hisoblagichlarni ham o'qing: yuqoridagi tashlash hech narsani sanamasa, trafik boshqa yo'ldan kelmoqda.

Darvozaning o'z LAN manzili boshqa yo'l. Qutining o'ziga yuborilgan paketlar INPUT ga ketadi, FORWARD ga emas, shuning uchun mijoz LAN xostini yo'qotib, baribir routerning boshqaruv sahifasini ochishi mumkin. Bu muhim bo'lganda mos INPUT qoidasini qo'shing.

Filtr ko'ra olmaydigan narsa

Filtr paket baholanganda ishlaydi, shuning uchun o'rnatilgan TCP sessiyasi yopilguncha yoki qayta tiklangancha davom etishi mumkin. Blok darhol ta'sir qilishi kerak bo'lsa, qoida kiritilgach o'sha manba uchun kuzatilgan oqimlarni conntrack -D -s 10.8.0.6 bilan tozalang. Bir necha soniyalik ustma-ustlik maqbul bo'lsa, bu tanlovni yashirin qoldirmasdan yozib qo'ying. Qanday bo'lmasin, keyingi odam qoida tirik trafikni to'xtatadimi yoki faqat yangi ulanishlarni bilishi kerak.

Juftlar orasidagi trafik xostning xavfsizlik devoriga hech qachon tegmaydi. client-to-client yoqilganda OpenVPN bu paketlarni daemon ichida uzatadi, shuning uchun ularni FORWARD ham, INPUT ham ko'rmaydi. Yagona yechim client-to-clientni o'chirish yoki juftlar bir-biriga yeta olishini qabul qilish; iptables qoidasi bu trafikni ko'rmaydi.

IPv6, firmware va qayta ishga tushirishdan keyingi bardoshlik

IPv4 qoidasi IPv6 haqida hech narsa demaydi. Tunnel va LAN ikkala oilani ham tashisa, ekvivalent qoida ip6tables da yoki o'sha xostda siyosatga ega nftables qoidalar to'plamida bo'lishi kerak. Router firmware netfilterni ko'pincha o'z abstraksiyasi ortiga yashiradi, shuning uchun forumdan ko'chirilgan sintaksis va jadval nomlari amal qilmasligi mumkin.

OpenWrt da hujjatlashtirilgan yo'l xavfsizlik devori konfiguratsiya yozuvi, qo'lda yozilgan iptables satri emas, va qo'lda yozilgan satr xavfsizlik devori qayta yuklanganda yo'qolishi mumkin. Boshqa distributivlar qoidalarni netfilter-persistent, yuklash birligi yoki ishlab chiqaruvchi ombori orqali tiklaydi va bu mexanizmlar bir-birini almashtirmaydi. Tanlaganingizni qayta ishga tushirish bilan isbotlang, chunki qayta yuklash boshqa yo'lni mashq qiladi.

Yo'l bo'yicha tekshiring, so'ng toza qaytaring

Har bir yo'lni alohida sinang, chunki bitta muvaffaqiyatli tekshiruv qolganlarini yashiradi. Bloklangan mijoz tunnel orqali internetga yetib borishi, lekin LAN xostiga qarshi muvaffaqiyatsiz bo'lishi kerak, ikkinchi mijoz o'sha xostga yetishi kerak, darvoza manzili va juft yo'li esa har biri o'z kuzatuvini talab qiladi. Natijalarni qoida yoniga yozing, keyingi o'zgarishga asos bo'lsin. Quyidagi jadval chiptada saqlashga arziydigan to'plam.

Yo'lQoida bilan kutilganMuvaffaqiyatsiz bo'lganda
Bloklangan mijoz LAN xostigaJavob yo'qQoida ruxsat ostida, yoki manba mos kelmaydi
Bloklangan mijoz internetgatun0 orqali ishlaydiQoida juda keng, manzil mosligisiz
Ikkinchi mijoz o'sha LAN xostigaIshlaydiQoida ko'zda tutilgan xostdan ko'proqqa mos keldi
Bloklangan mijoz darvozaning LAN manziligaFaqat mos INPUT qoidasi bilan bloklanadiINPUT qoidasi yo'q
Bloklangan mijoz juftning tunnel manziligaHali ham ishlaydiclient-to-client yoqilgan va xavfsizlik devori doirasidan tashqarida

Qaytarish spetsifikatsiya bo'yicha o'chirish, flush emas: iptables -D FORWARD -i tun0 -s 10.8.0.6/32 -d 192.168.1.0/24 -j DROP aynan o'sha yozuvni olib tashlaydi va zanjirning qolgan qismini buzilmasdan qoldiradi. Xuddi shu satrni yuklashda qoidalarni tiklaydigan har qanday fayldan olib tashlang, uni qayta yuklang va mijoz yana LAN xostiga yetishini tasdiqlang. FORWARD ni flush qilish siz yozmagan qoidalarni ham bekor qiladi, bu qaytarishni ikkinchi hodisaga aylantiradi.

Chiptani yopishdan oldin uch narsani tasdiqlang: bog'langan manzil sertifikatga mos keladi, qoida ruxsatlar ustida va hisoblagich nolga teng emas, va saqlash faylida siz sinagan qoidaning o'zi bor. Bulardan biri bo'lmasa, blok shell sessiyasidagi xayol.

O'xshash maqolalar