iptables: VPN mijozlari faqat bitta hostga yetib borsin
Sizga kerakli qoida INPUT emas, FORWARD ichida. VPN havzasi uchun bitta manzilni ruxsat eting, qolganini rad eting, so‘ng buni hisoblagichlar va orqaga qaytarish buyrug‘i bilan isbotlang.
Aloqasiz ko‘rinadigan ikki qo‘llab-quvvatlash chiptasi aslida bitta sababni bo‘lishadi. Birinchisida administrator server faqat tunneldan ulanishlarni qabul qilishini xohlaydi; ikkinchisida VPN foydalanuvchilari bitta ichki hostga yetib borishi kerak, undan ortig‘iga emas. Ikkala siyosat ham FORWARD ga tegishli va ikkalasi ham odatda INPUT da sinaladi. Natija xavfsizlik devoriga o‘xshaydi, lekin vaqtinchalik to‘ldiruvchi kabi ishlaydi.
Qaysi zanjir sizning savolingizga javob beradi
VPN mijozi LAN hostiga yoki undan keyin internetga yuboradigan paketlarni yadro uzatadi va ular FORWARD da baholanadi. INPUT va OUTPUT faqat serverning o‘zida tugaydigan yoki undan boshlanadigan trafikni ko‘radi. Shuning uchun tun0 ga kelmaydigan hamma narsani rad etish serverning o‘z tinglovchilarini himoya qiladi, shuningdek o‘rnatilgan oqimlarga avval ruxsat berilmasa SSH sessiyangizni ham tugatadi. Bu mijozlar qayerga borishi mumkinligi haqida hech narsani o‘zgartirmaydi.
Avval savolni nomlang: kim serverga yetib borishi mumkin yoki mijozlar qayerga borishi mumkin. Ko‘p tarmoqlarga ikkala javob ham kerak, turli zanjirlarda.
Avval holat, keyin ruxsat, keyin rad etish
Ruxsat ro‘yxati faqat aniq ruxsat umumiy rad etishdan yuqori turganida va qaytish trafigi ikkalasidan ham yuqorida ruxsat etilganda ishlaydi. Qoidalarni aniq pozitsiyalarga kiriting, so‘ng tartib taxmin qilinmasligi uchun zanjirni iptables -S FORWARD bilan chiqaring.
POOL=10.99.0.0/24
iptables -I FORWARD 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -I FORWARD 2 -s "$POOL" -d 172.31.20.15 -p tcp -m multiport --dports 443,3389 -j ACCEPT
iptables -I FORWARD 3 -s "$POOL" -j REJECTBu haqiqiy trafik bilan to‘qnashuvda bardosh beradimi, buni ikki tafsilot hal qiladi. Holat qoidasi bo‘lmasa, hozir ruxsat bergan ulanishlarga keladigan javoblar o‘zlari rad etishga qarshi baholanib tashlanadi. Cheklanmagan LOG qoidasi birinchi skanerlashdayoq kichik bo‘limni to‘ldirib qo‘yishi mumkin, shuning uchun qayd etishni davom ettirishdan oldin -m limit --limit 10/min qo‘shing. REJECT darhol xato qaytaradi, bu ro‘yxatni sozlashda qulayroq; DROP jimgina tashlaydi, shuning uchun har bir xato vaqt tugashi kabi ko‘rinadi. Birini ataylab tanlang va tanlovni o‘zgarish yozuviga yozing.
Uzatish va NAT allaqachon ishlashi kerak
Filtrlash yo‘l borligini isbotlay olmaydi. Avval yadro umuman uzatishini tasdiqlang va bu sozlamani qobiqdagi bir martalik buyruq emas, doimiy qiling. Filtr oxirgi qatlam, birinchisi emas.
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s "$POOL" -o eth0 -j MASQUERADEMaskarad qayerda turishi mijozlar qayerdan chiqishiga bog‘liq. Agar ular tunnel orqali uzoq tarmoqqa chiqsa, NAT qoidasi WAN interfeysiga emas, o‘sha interfeysga qo‘yiladi. Keyin hisoblagichlarga qarang: agar POSTROUTING hisoblagichi hech qachon qimirlamasa, FORWARD ruxsatlari soni esa oshsa, qaytish yo‘li buzilgan, filtr esa joyida. Bu o‘qish hech qachon muammo bo‘lmagan qoidalarni qayta yozishga ketadigan yarim kunni tejaydi.
Pochta bloki bitta zanjir narida
INPUT da 25-portni bloklash faqat VPN serveriga yo‘naltirilgan pochtani to‘xtatadi. Tunnel orqali pochta yuborayotgan buzilgan mijoz uzatiladi, shuning uchun blok 465 va 587 ning yonida FORWARD da turishi kerak. Agar bitta dastur pochtani qonuniy uzatsa, uning manzili va portini o‘sha qoidadan yuqoriga qo‘ying.
iptables -I FORWARD 2 -s "$POOL" -p tcp -m multiport --dports 25,465,587 -j REJECTBoshqa narsani qattiqlashtirishdan oldin rad etish hisoblagichini bir hafta ishlating. Ko‘tarilishdan to‘xtagan son — hozir sindirgan qonuniy oqim.
Uni qayta o‘qing, so‘ng mijozdan isbotlang
Qoidalar to‘plamini yadro xabar berganidek o‘qing, skriptingiz yozganidek emas. iptables -S FORWARD bilan boshlang, keyin iptables -t nat -L POSTROUTING -n -v bilan NAT jadvali, keyin tekshirayotgan oqimning conntrack yozuvi. Ish davom etar ekan, orqaga qaytarish buyrug‘i yoki rejalashtirilgan tozalashni qo‘lingizda tuting. Har bir chaqiruvga -w kerak, aks holda ikki administrator xtables qulfida to‘qnashadi. O‘zgarish oynasida bularning hech biri ixtiyoriy emas.
Havza ichidagi mijozdan va undan tashqaridagi mijozdan sinab tugating. Faqat siz tergan mashinadan ishlaydigan qoida siyosat emas.