Две тикети за поддршка што изгледаат неповрзани на крајот делат една причина. Во првата, администратор сака серверот да прифаќа врски само од тунелот; во втората, VPN корисниците треба да достигнат еден внатрешен домаќин и ништо повеќе. Двете политики припаѓаат на FORWARD, и двете обично се обидуваат во INPUT. Резултатот изгледа како огнен ѕид, а се однесува како привремена замена.

Кој синџир одговара на вашето прашање

Пакетите што VPN клиент ги испраќа до домаќин во LAN или понатаму кон интернет, јадрото ги препраќа и тие се оценуваат во FORWARD. INPUT и OUTPUT гледаат само сообраќај што завршува на самиот сервер или потекнува од него. Затоа одбивањето на сето што не пристигнува на tun0 ги штити сопствените слушатели на серверот, и исто така ќе ја прекине вашата SSH сесија ако утврдените текови не се дозволат прво. Тоа не менува ништо за тоа каде смеат да одат клиентите.

Прво именувајте го прашањето: кој смее да го достигне серверот, или каде смеат да одат клиентите. Повеќето мрежи ги бараат двата одговора, во различни синџири.

Прво состојбата, потоа дозволата, потоа одбивањето

Списокот на дозволи работи само ако конкретната дозвола стои над општото одбивање и ако повратниот сообраќај е дозволен над двете. Вметнете правила на експлицитни позиции, потоа испечатете го синџирот со iptables -S FORWARD за да биде редоследот видлив, а не претпоставен.

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 REJECT

Два детали одлучуваат дали ова ќе издржи контакт со вистински сообраќај. Без правилото за состојба, одговорите на врските што штотуку ги дозволивте самите се оценуваат против одбивањето и се отфрлаат. LOG правило без ограничување може да исполни мала партиција при првото скенирање, затоа додајте -m limit --limit 10/min пред да продолжите со евидентирање. REJECT веднаш враќа грешка, што е попријателски додека го дотерувате списокот; DROP отфрла тивко, па секоја грешка изгледа како истек на време. Изберете едно намерно и запишете го изборот во записот за промена.

Препраќањето и NAT веќе мора да работат

Филтрирањето не може да докаже дека патеката постои. Прво потврдете дека јадрото воопшто препраќа и направете го ова поставување трајно, а не еднократна команда во школката. Филтерот е последниот слој, не првиот.

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s "$POOL" -o eth0 -j MASQUERADE

Каде припаѓа маскирањето зависи од тоа каде излегуваат клиентите. Ако излегуваат низ тунелот кон оддалечена мрежа, NAT правилото оди на тој интерфејс, а не на WAN интерфејсот. Потоа гледајте ги бројачите: ако бројачот POSTROUTING никогаш не се помести додека бројот на дозволи во FORWARD расте, повратната патека е расипана, а филтерот е во ред. Тоа читање заштедува попладне препишување на правила што никогаш не биле проблем.

Блокот за пошта припаѓа еден синџир подалеку

Блокирањето на портата 25 во INPUT запира само пошта наменета за VPN серверот. Компромитиран клиент што испраќа пошта низ тунелот се препраќа, затоа блокот мора да стои во FORWARD покрај 465 и 587. Ако една апликација легитимно ја препраќа поштата, ставете ја нејзината дестинација и порта над тоа правило.

iptables -I FORWARD 2 -s "$POOL" -p tcp -m multiport --dports 25,465,587 -j REJECT

Пуштете го бројачот на одбивања една недела пред да затегнете нешто друго. Бројот што престанува да расте е легитимниот тек што штотуку го скршивте.

Прочитајте го назад, потоа докажете го од клиент

Читајте го множеството правила како што известува јадрото, а не како што го напишала вашата скрипта. Започнете со iptables -S FORWARD, потоа NAT табелата со iptables -t nat -L POSTROUTING -n -v, потоа записот conntrack за текот што го проверувате. Држете команда за враќање или закажано чистење додека трае работата. Секој повик бара -w, инаку двајца администратори ќе се судрат на бравата на xtables. Ништо од тоа не е изборно во прозорецот за промени.

Завршете со тестирање од клиент внатре во базенот и од оној надвор од него. Правило што работи само од машината на која сте го внеле не е политика.

Поврзани статии