iptables: lërini klientët VPN të arrijnë vetëm një host
Rregulli që ju nevojitet është në FORWARD, jo në INPUT. Lejoni një destinacion për grupin VPN, refuzoni pjesën tjetër, më pas provojeni me numërues dhe një komandë kthimi.
Dy bileta mbështetjeje që duken të palidhura ndajnë në fund një shkak. Në të parën, një administrator dëshiron që serveri të pranojë lidhje vetëm nga tuneli; në të dytën, përdoruesit e VPN duhet të arrijnë një host të brendshëm të vetëm dhe asgjë më shumë. Të dyja politikat i përkasin FORWARD, dhe të dyja zakonisht provohen në INPUT. Rezultati duket si mur zjarri dhe sillet si vendmbajtës.
Cili zinxhir i përgjigjet pyetjes tuaj
Paketat që një klient VPN dërgon në një host të LAN-it, ose më tej në internet, bërthama i përcjell dhe ato vlerësohen në FORWARD. INPUT dhe OUTPUT shohin vetëm trafikun që përfundon në vetë serverin ose që niset prej tij. Prandaj refuzimi i çdo gjëje që nuk vjen në tun0 mbron dëgjuesit e vetë serverit, dhe gjithashtu do të mbyllë sesionin tuaj SSH nëse rrjedhat e vendosura nuk lejohen së pari. Nuk ndryshon asgjë për vendin ku klientët lejohen të shkojnë.
Së pari emërtoni pyetjen: kush mund të arrijë serverin, ose ku mund të shkojnë klientët. Shumica e rrjeteve kanë nevojë për të dyja përgjigjet, në zinxhirë të ndryshëm.
Së pari gjendja, pastaj leja, pastaj refuzimi
Një listë lejimesh funksionon vetëm nëse leja specifike qëndron mbi refuzimin e përgjithshëm dhe nëse trafiku i kthimit lejohet mbi të dyja. Futni rregullat në pozicione të qarta, më pas nxirrni zinxhirin me iptables -S FORWARD që radha të jetë e dukshme dhe jo e supozuar.
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 REJECTDy detaje vendosin nëse kjo i reziston kontaktit me trafikun real. Pa rregullin e gjendjes, përgjigjet ndaj lidhjeve që sapo lejuat vlerësohen vetë kundër refuzimit dhe hidhen. Një rregull LOG pa kufi mund të mbushë një ndarje të vogël herën e parë që një skanim e godet, prandaj shtoni -m limit --limit 10/min përpara se të vazhdoni regjistrimin. REJECT kthen një gabim menjëherë, që është më miqësore ndërsa rregulloni listën; DROP e hedh në heshtje, kështu që çdo gabim shfaqet si skadim kohe. Zgjidhni një me qëllim dhe shkruajeni zgjedhjen në regjistrin e ndryshimeve.
Përcjellja dhe NAT-i duhet të funksionojnë tashmë
Filtrimi nuk mund të provojë se ekziston një rrugë. Së pari konfirmoni se bërthama përcjell fare, dhe bëjeni këtë cilësim të përhershëm në vend të një komande njëherëshe në shell. Filtri është shtresa e fundit, jo e para.
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s "$POOL" -o eth0 -j MASQUERADEKu i takon maskarimit varet nga ajo se ku dalin klientët. Nëse dalin përmes tunelit drejt një rrjeti të largët, rregulli NAT vendoset në atë ndërfaqe dhe jo në ndërfaqen WAN. Pastaj shikoni numëruesit: nëse numëruesi POSTROUTING nuk lëviz kurrë ndërsa numri i lejeve në FORWARD rritet, rruga e kthimit është e prishur dhe filtri është në rregull. Ai lexim kursen një pasdite rishkrim rregullash që nuk ishin kurrë problemi.
Blloku i postës i takon një zinxhir më tej
Bllokimi i portës 25 në INPUT ndal vetëm postën e adresuar te serveri VPN. Një klient i komprometuar që dërgon postë përmes tunelit përcillet, prandaj blloku duhet të qëndrojë në FORWARD pranë 465 dhe 587. Nëse një aplikacion e përcjell postën në mënyrë legjitime, vendosni destinacionin dhe portën e tij mbi atë rregull.
iptables -I FORWARD 2 -s "$POOL" -p tcp -m multiport --dports 25,465,587 -j REJECTLëreni numëruesin e refuzimeve të punojë një javë përpara se të shtrëngoni diçka tjetër. Numri që ndalon së rrituri është rrjedha legjitime që sapo thevet.
Lexojeni përsëri, më pas provojeni nga një klient
Lexoni grupin e rregullave siç e raporton bërthama, jo siç e shkroi skenari juaj. Filloni me iptables -S FORWARD, pastaj tabela NAT me iptables -t nat -L POSTROUTING -n -v, pastaj hyrja conntrack për rrjedhën që po testoni. Mbani një komandë kthimi ose një pastrim të planifikuar për sa zgjat puna. Çdo thirrje ka nevojë për -w, përndryshe dy administratorë do të përplasen në kyçin e xtables. Asgjë nga kjo nuk është opsionale në një dritare ndryshimesh.
Përfundoni duke testuar nga një klient brenda grupit dhe nga një jashtë tij. Një rregull që funksionon vetëm nga makina ku e shkruat nuk është politikë.