OpenVPN шлюзін UFW ережелерімен бір LAN-ға шектеу
Туннель клиенттері бір ішкі желіге ғана жетсін, басқа еш жерге емес. UFW-дің ерте қабылдауларының алдындағы қорғаныс тізбектері, маршрут рұқсаты және шекараны дәлелдейтін тесттер.
Өрт қабырғасының файлын ашпас бұрын рұқсатты шешіңіз: аутентификацияланған клиенттер бір нақты ішкі желіге қосылым аша алады, ал шлюз кез келген басқа транзиттік жолды қабылдамауға тиіс, тіпті клиент қосымша маршруттар орнатса да. Сол сөйлем — дизайн, және төмендегі әрбір ереже оны орындау үшін бар. Одан кеңірек нәрсе, мысалы бүкіл жеке мекенжай кеңістігі, туннель арқылы интернетке шығу немесе тең дәрежелі трафик, өз шешімін қажет ететін басқа дизайн. Ережелер әдейі зеріктіретін де, өйткені ақылды өрт қабырғасы дегеніміз кейін ешкім аудиттей алмайтын қабырға.
Алдымен топология мен рұқсатты жазып алыңыз
Мысалда пайдаланушы кеңістігіндегі TUN құрылғысы деп аталатын Community OpenVPNtun0 сервері, клиент пулы 10.77.0.0/24, және бір қосылған ішкі желі 192.168.60.0/24 lan0 интерфейсінде қолданылады. IPv4 қайта бағыттау әлдеқашан жұмыс істейді және LAN-ның пулға қайтару маршруты бар, сондықтан мұнда ештеңе олардың арасындағы трансляцияға тәуелді емес.
Бұл хосттағы өрт қабырғасы UFW-ге тиесілі және ешбір контейнер ережелер жинағы немесе жеке nftables кестесі неғұрлым ерте қабылдау жолын орната алмайды. Сүзгіні айналып өтетін ағынды жүктеуден шығару қысқа жолы қорғаныс тізбектерін тек әшекейге айналдырар еді, сондықтан ешқайсысы белсенді емес екенін растаңыз. OpenVPN-нің өзінің client-to-client қайта бағыттауын өшірулі қалдырыңыз, өйткені операциялық жүйенің сүзгісінен ешқашан өтпейтін тең дәрежелі трафикті онымен шектеу мүмкін емес. Сыртқы тыңдаушы мен әкімшілік ережелер сол қалпында қалады, өйткені бұл өзгеріс өрт қабырғасын ауыстырудың орнына шифрланған туннель трафигін басқарады.
Қорғаныстарды UFW-дің ерте қабылдауларының алдына қойыңыз
Маршрут рұқсаты мен одан кейінгі бас тарту қатаң шекара үшін жеткіліксіз. Стандартты before ережелері кез келген пайдаланушы ережесі қарастырылмай тұрып орныққан трафикті және кейбір ICMP-ні қабылдайды, сондықтан өткен аптада рұқсат етілген ағын жаңа межелік шектеуінен тыс қалуы мүмкін, тек оның әлі күйі бар болғандықтан. UFW файлдарының сақтық көшірмесін жасаңыз және өңдеуден бұрын белдеуден тыс консулды ашық ұстаңыз.
Файлдың *filter бөлімінде /etc/ufw/before.rules бар декларациялардың қасында және кез келген ереже жолының алдында екі тізбекті жариялаңыз.
:vpn-src-guard - [0:0]
:vpn-reply-guard - [0:0]Декларациялардан кейін бірден және кіру мен қайта бағыттау рұқсаттарының алдында оларға секіріп, нені жіберетінін анықтаңыз.
-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 DROPБөлімнің қалғанын және оның COMMIT жолын сақтаңыз. Екінші сүзгі кестесін қою немесе байланысы жоқ ережелерді жою — өрт қабырғасының өзгерісін үзіліске айналдыратын жол, ал файл маңызды жалғыз көшірме болудан бір қайта жүктеу қашықтықта.
Әрбір қорғаныстың нені жіберетінін және нені қабылдамайтынын оқыңыз
Бірінші тізбек өңдеуді тек дереккөз пулда болғанда, межелік сол бір ішкі желі болғанда, шығу интерфейсі LAN болғанда және пакет ағынының бастапқы бағытымен жүргенде жалғастырады. Туннельден келген қалғанның бәрі тасталады, оның ішінде пулдан тыс дереккөз және рұқсат етілген ішкі желіден тыс кез келген межелік.
Тең дәрежелі пакет tun0 ішіне кіріп, одан шығады, сондықтан ол межелікті тексеруге жетпей тұрып LAN интерфейсінің тестінен өтпейді. LAN-нан клиенттерге жаңа қосылымдар да жауап бағытының тестінен өтпейді, бұл әдепкі бойынша кері шақыру жолын жабады.
RETURN мақсаты қарапайым UFW саясатын күшінде ұстайды. Бұл тізбектер сүзеді, ал келесі қосатын маршрут рұқсаты аман қалған пакеттің қабылданатынын әлі де шешеді. Дәл осы бөліну кейін рұқсат етілген ішкі желіні бір жерде өзгертуге мүмкіндік береді. Егер қорғаныстар пакеттерді бірден қабылдаса, әрбір болашақ ереже екі рет қосылуы керек еді.
Ішкі желіге рұқсат беріңіз және бүйір есіктерді жабыңыз
Алдымен маршрут рұқсатын алдын ала қараңыз, содан кейін оны қолдану үшін алдын ала қарау жалаушасын алыңыз: sudo ufw --dry-run route allow in on tun0 out on lan0 from 10.77.0.0/24 to 192.168.60.0/24. Одан кейін пайдаланушы ережелерінің ретін қарап шығыңыз, өйткені ертерек бас тарту кейінгі рұқсаттан әлі де жеңеді. Бүкіл ішкі желіге рұқсат та дұрыс емес нысан, қашан тек бір хосттың HTTPS порты қолжетімді болуы керек болса.
Кіруді тастау не істейтініне назар аударыңыз: туннель клиенттері шлюздің өзіндегі ешбір қызметке жете алмайды, оның ішінде LAN мекенжайына байланған DNS тыңдаушысы да бар. Онда DNS орналастыру тастаудан бұрын әдейі жасалған ерекшелікті және қайта қаралған рұқсат шартын қажет етеді. Егер UFW IPv6-ны басқарса, tun0 үшін before6.rules файлында да сәйкес тастауларды қосыңыз, өйткені IPv4 межеліктер тізімі IPv6 пакеттері туралы ештеңе айтпайды.
Алдын ала қарауды емес, жүктелген саясатты тексеріңіз
Қайта жүктеуді алдын ала қараңыз, оны қызмет көрсету терезесінде қолданыңыз және тірі ережелер жинағын оқыңыз.
sudo ufw --dry-run reload
sudo ufw show rawТуннель қорғаныстары әдепкі күй және ICMP рұқсаттарының алдында пайда болатынын растаңыз. Қарапайым ufw status қолмен өңделген before ережелерін көрсетпейді, сондықтан операторлар ереже жоқ деп қорытынды жасайды, ал шын мәнінде ол жүктелген. Үзінді іздеудің орнына шикі тізімді жоғарыдан төменге оқыңыз. Егер қорғаныстар күй рұқсатынан кейін пайда болса, шекара файл ұсынғанды істемейді.
Содан кейін мәтінді емес, әрекетті тексеріңіз. Рұқсат етілген хостқа жаңа қосылым ашып, жауапты бақылаңыз, зиянсыз сұранысты ішкі желіден тыс межелікке жіберіп, оның өлетінін растаңыз, тең дәрежелі қосылымды байқап көріңіз, шлюздегі жергілікті қызметті байқап көріңіз және сұралмаған LAN-нан клиентке қосылымды байқап көріңіз. Өзгеріске дейін болған ауқымнан тыс бір ағынды қосыңыз және машинаның бүкіл бақылау кестесін босатудың орнына тек сол ағынды тазалаңыз.
Шектеулерді ережелердің қасына жазыңыз: бұл транзитті шектейді, басқа ештеңені емес. Бұл клиенттің өз интернет қосылымын пайдалануына кедергі келтірмейді, рұқсат етілген LAN хосттың трафикті әрі қарай жіберуіне кедергі келтірмейді және рұқсат етілген қызметтердің ішіндегі аутентификацияны алмастырмайды.