iptables: VPN клиентүүдийг зөвхөн нэг хост руу хүргэх
Танд хэрэгтэй дүрэм нь FORWARD-д байна, INPUT-д биш. VPN пулд нэг очих газрыг зөвшөөрч, бусадaас татгалзаж, дараа нь тоолуур болон буцаах командаар нотлоорой.
Хамааралгүй мэт харагдах хоёр дэмжлэгийн тасалбар нэг шалтгаантай байдаг. Эхнийх нь администратор сервер зөвхөн туннелээс холболт хүлээж авахыг хүсч байна; хоёр дахь нь 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-ийн зөвшөөрлийн тоо өсч байвал буцах зам эвдэрсэн, шүүлт нь хэвийн. Энэ уншилт хэзээ ч асуудал болоогүй дүрмүүдийг дахин бичих өдрийн хагасыг хэмнэдэг.
Шуудангийн блок нэг гинж цааш
INPUT-д 25 портыг блоклох нь зөвхөн VPN серверт хаягласан шуудангаас сэргийлнэ. Туннелээр шуудан илгээж буй эвдэрсэн клиент дамжуулагддаг тул блок 465 ба 587-ийн хажууд FORWARD-д байх ёстой. Нэг аппликейшн шуудангаар хууль ёсоор дамжуулдаг бол түүний очих газар, портыг тэр дүрмээс дээгүүр тавь.
iptables -I FORWARD 2 -s "$POOL" -p tcp -m multiport --dports 25,465,587 -j REJECTӨөр юу ч чангаруулахаасаа өмнө татгалзалын тоолуурыг долоо хоног ажиллуул. Өсөхөө болих тоо нь чиний саяхан эвдсэн хууль ёсны урсгал юм.
Буцааж уншаад, дараа нь клиентээс нотлоорой
Дүрмийн багцыг цөм мэдээлж байгаагаар унш, таны скрипт бичсэнээр биш. iptables -S FORWARD-аар эхэл, дараа нь iptables -t nat -L POSTROUTING -n -v-оор NAT хүснэгт, дараа нь шалгаж буй урсгалын conntrack бичлэг. Ажил үргэлжилэх хугацаанд буцаах команд эсвэл товлосон цэвэрлэгээг бэлэн байлга. Дуудлага бүрд -w хэрэгтэй, эс бөгөөс хоёр администратор xtables-ийн цоож дээр мөргөлдөнө. Өөрчлөлтийн цонхонд эдгээр бүгд заавал байх ёстой.
Пул доторх клиент болон түүний гаднах клиентээс туршиж дуусга. Зөвхөн өөрөө бичсэн машинаас ажилладаг дүрэм бол бодлого биш.