Ноўтбукі за хатнім роўтарам без перанакіравання партоў па-ранейшаму прымаюць SSH-злучэнні, якія прыходзяць праз VPN. Гэта не супярэчнасць, бо дзве розныя прылады ацэньваюць два розныя пакеты. Роўтар перадае зашыфраваны транспарт, а хост вырашае, што рабіць з расшыфраваным пакетам, які даходзіць да яго тунельнага інтэрфейсу. Трымаць гэтыя два рашэнні асобна — усё практыкаванне.

Роўтар перадае тунель, хост ацэньвае пакет

Намалюйце шлях ад аддаленай крыніцы да сэрвісу, перш чым глядзець на адзінае правіла. Знешняя частка — гэта транспарт VPN, якім займаюцца роўтар і шлюз. Унутраная частка пачынаецца, калі канцавы пункт здымае тунельны слой і хост атрымлівае пакет, адрасаваны яго адрасу VPN.

Аб'яднайце гэтыя дзве часткі, і роўтар атрымае заслугу за рашэнне, якое прымае хост. Старонка перанакіравання партоў або журнал роўтара апісваюць толькі знешнія размовы, і ніводзін не кажа, які расшыфраваны трафік хост прыме. Хост ужывае ўласную палітыку ўваходу да ўнутранага пакета, гэтак жа, як да любога пакета, што прыходзіць на інтэрфейс. Менавіта ў гэтай палітыцы пытанне пра ўздзеянне і вырашаецца.

Слухач з сімвалам замяшчэння — не публічны сэрвіс

У Linux прывязка да INADDR_ANY азначае кожны лакальны адрас, таму сэрвіс можа адказваць на тунельным інтэрфейсе, які ён ніколі не называў. Даведнік па IP-сокетах апісвае гэтую прывязку, і яго варта прачытаць, перш чым рабіць высновы са спісу слухачоў. Запіс з сімвалам замяшчэння — гэта факт пра сокет, а не сцвярджэнне пра дасяжнасць.

Два радкі ніжэй — гэта адзін і той жа сэрвіс у двух розных прывязках, і розніца — увесь адказ на пытанне, ці мае значэнне інтэрфейс. Спачатку прачытайце, на якім адрасе сядзіць сокет.

ss -lntp "sport = :22"
LISTEN 0 4096 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=812,fd=3))
LISTEN 0 4096 10.8.0.6:22 0.0.0.0:* users:(("sshd",pid=812,fd=4))

Назавіце ўладкаванне, якое магло б дасягнуць порта

Тры ўладкаванні ставяць пакет на гэты інтэрфейс, і ў іх розныя ўладальнікі. Назваць правільнае — значыць вырашыць, хто павінен змяніць палітыку.

ArrangementWhat reaches the portWhere the decision lives
Another permitted VPN peerA packet from the same tunnel subnetGateway forwarding policy and host input rules
A deliberate public forwardTraffic the gateway publishes on purposeGateway service definition
A subnet routed behind the gatewayClient traffic from the far sideGateway route and host input rules

Вынік браўзера з публічным адрасам выхаду нічога не кажа ні пра адно з трох, бо апісвае, як выходзіць знешні трафік, а не што дазволена ўваходнаму. Працуйце ў адваротным кірунку ад слухача і адраса крыніцы ў журнале сэрвісу. Калі крыніца — іншы вузел тунеля, палітыка шлюза — гэта цікавы дакумент. Калі гэта перакладзены адрас, знайдзіце пераклад, перш чым змяняць правіла.

Абмяжуйце сэрвіс тым шляхам, які вы мелі на ўвазе

Калі SSH патрэбны толькі з шляху кіравання, запішыце гэты шлях як дыяпазон крыніц плюс інтэрфейс. Затым абмяжуйце правілы ўваходу хоста па інтэрфейсе, прызначэнні і крыніцы, а не па назве сеткі, бо назва, якая выглядае прыватнай, можа азначаць любы адрас. Пакіньце маршрут для чалавека, які вырашыць наступную праблему.

nft add rule inet filter input iifname "tun0" ip saddr 10.8.0.0/24 tcp dport 22 accept
nft list chain inet filter input

Правіла, якое называе тунельны інтэрфейс і дыяпазон кіравання, выказвае намер у адным месцы. Параўнайце яго з правілам, напісаным для сеткі Wi-Fi, якое нічога не кажа пра расшыфраваны тунельны трафік. Калі два ўзроўні не згаджаюцца, палітыка хоста — тая, якую сустракае пакет.

Пакіньце ўваходы і латкі менавіта там, дзе яны ёсць; дасягнуць порта ніколі не было тым самым, што дазвол карыстацца ім. Запішыце сямейства адрасоў і час для любой невядомай крыніцы і даследуйце, перш чым вінаваціць функцыю або ўразлівасць. Правіла, якое пускае кожны вузел тунеля, — іншы дызайн, чым тое, якое пускае падсетку кіравання, і ніводзін радок журнала не скажа, якое мелася на ўвазе.

Прыміце выпраўленне з адным поспехам і адной адмовай

Дакажыце абедзве паловы: адно дазволенае злучэнне паспяховае, а адзін выключаны шлях адхіляецца. Адмова — гэта палова, якую людзі прапускаюць, і менавіта яна паказвае, што правіла працуе, а не стаіць побач з дазвольным значэннем па змаўчанні. Тэстуйце з выключанага боку, а не разважайце пра гэта.

Паўтарыце пару пасля перападлучэння, бо тунель, які вяртаецца з іншай назвай інтэрфейсу, можа ціха абысці правіла, абмежаванае старым. Мяжа, якая мае значэнне, — тая, якую хост ужывае да пакетаў, што ён сапраўды атрымлівае.

Падобныя артыкулы