iptables хосты тек VPN-мен: tun құрылғысын атаңыз, tun+ емес
tun+ машинадағы әрбір туннельге сәйкес келеді. Бір құрылғы атауын бекітіп, endpoint ерекшелігін бірінші қойып, саясатты сынап жатқанда қалпына келтіру жолын сақтаңыз.
-o tun+ деп жазу дәл нұсқаудай көрінеді, шын мәнінде бұл ядроның барлық туннеліне сәйкес келетін алмастырғыш таңба. Екінші VPN клиенті, контейнер көпірі немесе құлаған сессиядан қалған интерфейс — бәрі оны қанағаттандырады, содан кейін хост саясаттың алдын алуға арналған трафигіне жол береді. Төмендегі тәртіп бір құрылғы атауын бекітеді, туннель шынымен қалыптасуы үшін ерекшеліктерді реттейді және ережелер нашар түссе, қайта оралу жолын қалдырады. Әр қадам жеке-дара кері қайтарылатындай қысқа.
1-қадам: қазіргі ережелерді жазып алыңыз
Әдепкі саясатты өзгертудің алдында ағымдағы күйді сақтаңыз, сонда кері қайтару естелік емес, пәрмен болады. iptables-save > /root/iptables.pre әр кестені қалпына келтіруге болатын файлға жазады, ал root сессиясы ашық екінші терминал — орнатуға дайындалып жатқан саясат оны тасымалдаған қосылымды үзгенде, бұл артық сақтық емес. Егер қашықтан жұмыс істесеңіз, flush-ті де жедел өшіргіш ретінде жоспарлаңыз.
Содан кейін интерфейстерді тізімдеңіз, өйткені болжаған атауыңыз — оқуға тиіс болған атау: ip -br link дәл қазір не бар екенін көрсетеді, ал туннель көтерілмейінше көрінбейді. Оқыған сайын құрылғы атауларын жазып отырыңыз.
2-қадам: туннельге өз атауын беріңіз
OpenVPN клиент конфигурациясында dev tun_work қабылдайды, содан кейін Linux tun0 бөлудің орнына дәл сол атаумен интерфейс жасайды. Басқа ештеңе оған талап қоймаса, атау қайта қосылулар арасында тұрақты қалады, және құрылғыны атайтын ережені мағыналы ететін де осы.
Атауды басқару мүмкін болмаған жерде туннель мекенжайына немесе пакет белгісіне сәйкестендіріңіз. Екеуі де жұмыс істейді, екеуін де оқу қиын, және туннель қайта нөмірленгенде екеуі де неғұрлым үнсіз сәтсіздікке ұшырайды. Қалай болғанда да, бір нәрсеге сәйкестендіріп, қайсысы екенін анық айтыңыз.
3-қадам: саясатты endpoint ерекшелігімен бірінші жазыңыз
Тек VPN-мен жұмыс істейтін хост — қысқа ерекшелік тізімі бар әдепкі тыйым хосты, ал ең маңызды ерекшелік — туннельдің өмір сүруіне мүмкіндік беретін ереже. Оны осы ретпен құрыңыз, endpoint ережесі туннель құрылғысының ережесінен бұрын болсын, сонда қол алысуға баратын жері болады:
# allow the tunnel to be built, then everything the tunnel carries
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -d 198.51.100.7 -p udp --dport 1194 -j ACCEPT
iptables -A OUTPUT -o tun_work -j ACCEPT
iptables -A INPUT -i tun_work -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTEndpoint-тің нақты мекенжайы мен порты осы бетке емес, сіздің провайдеріңізге тиесілі. Егер endpoint хост атауы болса, оны бір рет шешіп, нәтижесін бекітіңіз, өйткені ереже атауды іздей алмайды және айналмалы жауап келесі DNS өзгерісінен кейін саясатты үнсіз бұзады. Портты да тексеріңіз, өйткені сізді TCP 443-ке көшіретін провайдерлер әйтпесе ешкім жазбаған ережені қажет етеді. Тек бір протоколда жұмыс істейтін туннель әдетте дәл осы қадағалаусыздық, ал өрт қабырғасының ақауы емес.
Маршрутизаторда дәл осы пішін оның артындағы клиенттер үшін FORWARD тізбегіне түседі, ал маршрутизатордың өз трафигіне өз ережелері қажет. Тек қайта бағытталған пакеттерді қамтитын ережелер жиынтығы SSH мен DNS-ті ескі жолда қалдырады, және туннель көтерілген сәтте маршрутизатордың қолжетімсіз болуы осыдан.
4-қадам: тек бар-жоғын емес, ретін тексеріңіз
Ережелер рет-ретімен бағаланады, сондықтан ертерек келетін ACCEPT кейінірек қосқан REJECT-ты жай ғана жасырады. established және related сәйкестігі — өз шығыс сұрауларыңызға жауаптардың жалпы кіріс жолын ашпай қайтуына мүмкіндік беретін нәрсе, ал оны туннельді қабылдаудан кейін қою құлаған туннельдің өз интерфейсінде қайтарым трафигін әлі де өткізетінін білдіреді.
Ережелер санын бір экранда оқылатындай аз ұстаңыз. Аудиттей алмайтын ережелер жиынтығы — жоғарыға ерекшеліктер қосып жамайтын жиынтық, және әдепкі тыйым саясаттары осылайша біртіндеп әдепкі рұқсаттың шетіне ие болады. Өзгеріске дейін және кейін ACCEPT-терді санаңыз.
5-қадам: оны жүктелуден және мекенжайлар тобынан өткізіңіз
Қолмен енгізілген ережелер қайта жүктеуде жоғалады, сондықтан оларды дистрибутивтің өрт қабырғасы қызметінен немесе туннель интерфейсі пайда болғаннан кейін іске қосылатын unit-тен жүктеңіз. OpenVPN басталмай тұрып орындалатын скриптте tun_work-ке сілтеме жасау — құлаған трафиктің жүктелу циклін жасаудың кең тараған жолы.
Содан кейін IPv6-ны бөлек тексеріңіз, өйткені IPv4 үшін жақсы әдепкі тыйым саясаты екінші топ туралы ештеңе айтпайды. ip -6 route хостта тек IPv4-ті өңдейтін туннельді айналып өтетін маршрут бар-жоғын айтады, ал ip6tables немесе nftables өз эквивалентті ережелерін қажет етеді. Ережелер жиынтығының симметриясына сенудің орнына IPv6-only межесімен сынаңыз.
6-қадам: тексеріңіз және қалпына келтіруге дайын болыңыз
Туннельді көтеріңіз, көздеген қызметтің жұмыс істейтінін растаңыз, содан кейін саясаттың бас тартуы тиіс нәрсені байқап көріңіз. Жауап сізді таңқалдырса, iptables-restore < /root/iptables.pre арқылы қалпына келтіріңіз, және содан кейін ғана ережелерді өңдеуді бастаңыз. Тұрақтылық пен сыналған қалпына келтіру жолы — осыны екі рет жасауға болатын өзгеріске айналдыратын нәрсе.