Зошто домашниот NAT не ви го штити VPN интерфејсот
Домашниот рутер го проследува тунелот, но домаќинот го оценува дешифрираниот пакет. Читајте го слушачот, внатрешната патека и влезната политика одделно.
Преносните компјутери зад домашен рутер без проследување порти сѐ уште прифаќаат 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))
Именувајте го распоредот што би можел да ја достигне портата
Три распореди ставаат пакет на тој интерфејс и имаат различни сопственици. Именувањето на вистинскиот одлучува кој мора да смени политика.
| Arrangement | What reaches the port | Where the decision lives |
|---|---|---|
| Another permitted VPN peer | A packet from the same tunnel subnet | Gateway forwarding policy and host input rules |
| A deliberate public forward | Traffic the gateway publishes on purpose | Gateway service definition |
| A subnet routed behind the gateway | Client traffic from the far side | Gateway 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 мрежата, што не кажува ништо за дешифрираниот тунелски сообраќај. Кога двата слоја не се согласуваат, политиката на домаќинот е таа што пакетот ја среќава.
Оставете ги најавите и закрпите точно таму каде што се; достигнувањето порта никогаш не било исто што и дозвола да ја користите. Запишете го семејството адреси и времето за секој непознат извор и истражете пред да обвините функција или ранливост. Правило што го пушта секој јазол на тунелот е различен дизајн од она што пушта подмрежа за управување, и ниту еден ред од дневникот нема да каже кое било наменето.
Прифатете ја поправката со еден успех и едно одбивање
Докажете ги двете половини: една одобрена врска успева и една исклучена патека се одбива. Одбивањето е половината што луѓето ја прескокнуваат и токму таа покажува дека правилото работи наместо да стои покрај дозволувачка стандардна вредност. Тестирајте од исклучената страна наместо да размислувате за тоа.
Повторете го парот по повторно поврзување, бидејќи тунел што се враќа со друго име на интерфејс може тивко да го заобиколи правилото ограничено на стариот. Границата што е важна е онаа што домаќинот ја применува на пакети што навистина ги прима.