OpenVPN shlyuzini UFW qoidalari bilan bitta LAN bilan cheklash
Tunnel mijozlari faqat bitta quyi tarmoqqa yetib borsin, boshqa joyga emas. UFW ning erta qabul qilishlaridan oldin qo'riqlash zanjirlari, marshrut ruxsati va chegarani isbotlovchi sinovlar.
Olov devori faylini ochishdan oldin ruxsatni hal qiling: autentifikatsiyadan o'tgan mijozlar bitta aniq quyi tarmoqqa ulanish ochishi mumkin, shlyuz esa mijoz qo'shimcha marshrutlar o'rnatsa ham boshqa har qanday tranzit yo'lni rad etishi kerak. O'sha gap dizaynning o'zi va quyidagi har bir qoida uni amalga oshirish uchun mavjud. Kengroq narsa, masalan butun xususiy manzil fazosi, tunnel orqali internetga chiqish yoki tengdoshlar orasidagi trafik, o'z qarorini talab qiladigan boshqa dizayn. Qoidalar ham ataylab zerikarli, chunki aqlli olov devori — keyinchalik hech kim audit qila olmaydigan devor.
Avval topologiya va ruxsatni yozib oling
Misol foydalanuvchi fazosidagi TUN qurilmasi deb nomlangan Community OpenVPNtun0 serveri, mijozlar puli 10.77.0.0/24, va bitta ulangan quyi tarmoq 192.168.60.0/24 lan0 da ishlatiladi. IPv4 yo'naltirish allaqachon ishlaydi va LAN ning pulga qaytish marshruti allaqachon bor, shuning uchun bu yerda hech narsa ular orasidagi tarjimaga bog'liq emas.
Bu xostdagi olov devori UFW ga tegishli va hech qanday konteyner qoidalar to'plami hamda alohida nftables jadvali oldingi qabul yo'lini o'rnata olmaydi. Filtrni chetlab o'tuvchi oqim tushirish yorlig'i qo'riqlash zanjirlarini faqat bezakka aylantiradi, shuning uchun hech biri faol emasligini tasdiqlang. OpenVPN ning o'z client-to-client yo'naltirishini o'chirilgan holda qoldiring, chunki operatsion tizim filtrini hech qachon kesib o'tmaydigan tengdoshlar orasidagi trafikni u bilan cheklab bo'lmaydi. Tashqi tinglovchi va ma'muriy qoidalar o'z holicha qoladi, chunki bu o'zgarish olov devorini almashtirish o'rniga shifri ochilgan tunnel trafigini boshqaradi.
Qo'riqchilarni UFW ning erta qabul qilishlaridan oldin joylashtiring
Marshrut ruxsati va undan keyingi rad etish qat'iy chegara uchun yetarli emas. Standart before qoidalari har qanday foydalanuvchi qoidasi ko'rilishidan oldin o'rnatilgan trafikni va ba'zi ICMP ni qabul qiladi, shuning uchun o'tgan hafta ruxsat berilgan oqim faqat hali holati borligi sababli yangi manzil cheklovidan tashqarida qolishi mumkin. UFW fayllarini zaxiralang va tahrirlashdan oldin tashqi konsolni ochiq tuting.
Faylning *filter bo'limida /etc/ufw/before.rules, mavjud e'lonlar yonida va har qanday qoida satridan oldin ikkita zanjirni e'lon qiling.
:vpn-src-guard - [0:0]
:vpn-reply-guard - [0:0]E'lonlardan darhol keyin va kirish hamda yo'naltirish ruxsatlaridan oldin ularga sakrab o'ting va nimalarni o'tkazishini belgilang.
-A ufw-before-input -i tun0 -j DROP
-A ufw-before-forward -i tun0 -j vpn-src-guard
-A ufw-before-forward -o tun0 -j vpn-reply-guard
-A vpn-src-guard -o lan0 -d 192.168.60.0/24 -s 10.77.0.0/24 -m conntrack --ctdir ORIGINAL -j RETURN
-A vpn-src-guard -j DROP
-A vpn-reply-guard -i lan0 -d 10.77.0.0/24 -s 192.168.60.0/24 -m conntrack --ctstate RELATED,ESTABLISHED --ctdir REPLY -j RETURN
-A vpn-reply-guard -j DROPBo'limning qolgan qismini va uning COMMIT satrini saqlang. Ikkinchi filtr jadvalini qo'yish yoki aloqasiz qoidalarni o'chirish — olov devori o'zgarishining uzilishga aylanish yo'li, fayl esa muhim bo'lgan yagona nusxa bo'lishdan bitta qayta yuklash uzoqda.
Har bir qo'riqchi nimani o'tkazishi va nimani rad etishini o'qing
Birinchi zanjir ishlov berishni faqat manba pulda, manzil o'sha bitta quyi tarmoq, chiqish interfeysi LAN bo'lganda va paket oqimining asl yo'nalishida harakatlanganda davom ettiradi. Tunneldan kelgan qolgan hamma narsa tashlanadi, jumladan puldan tashqaridagi manba va ruxsat etilgan quyi tarmoqdan naridagi har qanday manzil.
Tengdoshlar orasidagi paket tun0 ga kiradi va undan chiqadi, shuning uchun manzil tekshiruviga yetmasdan turib LAN interfeys sinovida yiqiladi. LAN dan mijozlar tomon yangi ulanishlar ham javob yo'nalishi sinovida yiqiladi, bu esa sukut bo'yicha teskari qayta qo'ng'iroq yo'lini yopadi.
RETURN nishoni odatdagi UFW siyosatini kuchda qoldiradi. Bu zanjirlar filtrlaydi, keyin qo'shadigan marshrut ruxsati omon qolgan paket qabul qilinishini hali ham hal qiladi. Aynan shu ajratish keyinchalik ruxsat etilgan quyi tarmoqni bir joyda o'zgartirish imkonini beradi. Agar qo'riqchilar paketlarni to'g'ridan-to'g'ri qabul qilganda, har bir kelgusi qoida ikki marta qo'shilishi kerak bo'lardi.
Quyi tarmoqqa ruxsat bering va yon eshiklarni yoping
Avval marshrut ruxsatini oldindan ko'ring, so'ngra qo'llash uchun oldindan ko'rish bayrog'ini olib tashlang: sudo ufw --dry-run route allow in on tun0 out on lan0 from 10.77.0.0/24 to 192.168.60.0/24. Shundan keyin foydalanuvchi qoidalari tartibini ko'rib chiqing, chunki oldingi rad etish keyingi ruxsatdan hali ham ustun. Butun quyi tarmoqqa ruxsat ham noto'g'ri shakl, qachonki faqat bitta xostning HTTPS porti ochiq bo'lishi kerak bo'lsa.
Kirishni tashlash nima qilishiga e'tibor bering: tunnel mijozlari shlyuzning o'zidagi hech qanday xizmatga yeta olmaydi, uning LAN manziliga bog'langan DNS tinglovchisi ham. U yerda DNS joylashtirish tashlashdan oldin atayin qilingan istisno va qayta ko'rilgan ruxsat shartnomasini talab qiladi. Agar UFW IPv6 ni boshqarsa, tun0 uchun before6.rules faylida ham mos tashlashlarni qo'shing, chunki IPv4 manzillar ro'yxati IPv6 paketlari haqida hech narsa demaydi.
Oldindan ko'rishni emas, yuklangan siyosatni tekshiring
Qayta yuklashni oldindan ko'ring, uni texnik xizmat oynasida qo'llang va jonli qoidalar to'plamini o'qing.
sudo ufw --dry-run reload
sudo ufw show rawTunnel qo'riqchilari sukut bo'yicha holat va ICMP ruxsatlaridan oldin ko'rinishini tasdiqlang. Oddiy ufw status qo'lda tahrirlangan before qoidalarini ko'rsatmaydi, shuning uchun operatorlar qoida yo'q degan xulosaga keladi, holbuki u aslida yuklangan. Fragment qidirish o'rniga xom ro'yxatni yuqoridan pastga o'qing. Agar qo'riqchilar holat ruxsatidan keyin ko'rinsa, chegara fayl aytgan ishni qilmayapti.
Keyin matnni emas, xatti-harakatni sinang. Ruxsat etilgan xostga yangi ulanish oching va javobni kuzating, zararsiz so'rovni quyi tarmoqdan tashqaridagi manzilga yuboring va u o'lishini tasdiqlang, tengdoshlar orasidagi ulanishni sinab ko'ring, shlyuzdagi mahalliy xizmatni sinab ko'ring va so'ralmagan LAN-dan-mijozga ulanishni sinab ko'ring. O'zgarishdan oldin mavjud bo'lgan dohiradan tashqari bitta oqimni qo'shing va mashinaning butun kuzatuv jadvalini bo'shatish o'rniga faqat o'sha oqimni tozalang.
Cheklovlarni qoidalar yonida qayd eting: bu tranzitni cheklaydi va boshqa hech narsani emas. Bu mijozning o'z internet ulanishidan foydalanishiga to'sqinlik qilmaydi, ruxsat etilgan LAN xostning trafikni keyinga uzatishiga to'sqinlik qilmaydi va ruxsat etilgan xizmatlar ichidagi autentifikatsiyani almashtirmaydi.