VPN салсны дараа ч хамгаалалтын унтраалга урсгалыг блоклосон хэвээр байна
Хамгаалалтын унтраалгын шүүлтүүр ба drop дүрмүүд клиентээс илүү удаан амьдардаг. Windows-ийн WFP төлөв, Linux-ийн iptables дүрмийг уншиж, хамгийн нарийн объектыг устгаад, дараа нь түүнийг дахин тавьдаг эзнийг ол.
Туннель алга, сүлжээний дүрс хэвийн харагдаж байна, гэхдээ юу ч ачаалагдахгүй. Та VPN-ээ салгасан, устгасан эсвэл дахин ачаалсан, гэтэл холболт тасрах үед таныг хамгаалах ёстой байсан блок одоо ч зогсож байна. Клиентийн цонх үүнийг тайлбарлаж чадахгүй, учир нь таныг блоклож байгаа нь клиент биш: шийдвэрийг таны нэрээр цөмд бичсэн бөгөөд түүнийг арилгах юу ч үлдээгүй. Windows-д энэ төлөв Windows Filtering Platform дотор байна; Linux-д энэ нь iptables эсвэл nftables дахь дүрмийн багц бөгөөд ихэвчлэн ачаалах үед дахин хэрэгждэг зурагтай байдаг. Дараах нь миний ашигладаг дараалал: төлөвийг унш, алдааг тайлбарлах хамгийн нарийн объектыг устга, дараа нь түүнийг байнга буцааж тавьдаг зүйлийг ол.
Хамгаалалтын унтраалга бол тохиргоо биш, цөмийн төлөв
Ширээний клиентүүд блоклолыг туннелиас гадуурх урсгалыг хориглодог шүүлтүүр нэмэх замаар хэрэгжүүлдэг. Windows-д эдгээр нь connect-redirect болон transport давхаргын WFP шүүлтүүр бөгөөд зарим нь байнгын: тэдгээрийг Base Filtering Engine бодлогын санд бүртгэж, ямар ч VPN програм ажиллахаас өмнө машин ачаалах үед сэргээдэг. Клиентүүд цэвэрлэх цагаараа ялгаатай. Зарим нь салгах үед шүүлтүүрийг хасдаг, зарим нь зөвхөн цэвэр гарах үед, зарим нь эхлээд унтраалгыг унтраасан үед л хасдаг. Блок идэвхтэй үед програмыг устга, эсвэл процессыг ал, шүүлтүүрүүд үлдэнэ.
Linux дахь эквивалент нь гарах зам дахь drop эсвэл reject дүрэм, заримдаа forwarding дүрэм, заримдаа өөрчилсөн chain бодлого юм. Эдгээр дүрмүүд тэдгээрийг нэмсэн процессаас илүү удаан амьдардаг, учир нь тэдгээр нь цөмийн төлөв: клиентийг ал, унага, эсвэл цахилгааныг салга — цөм пакетуудыг хаясаар байх бөгөөд буцаах юу ч үлдэхгүй. Байнгын багц нь одоогийн дүрмийн багцын зургийг авч, ачаалах үед сэргээснээр хоёр дахь байнгын давхаргыг нэмдэг тул дараагийн эхлэл блок аль хэдийн суулгасан байдаг.
Ямар нэгэн зүйлийг устгахаас өмнө WFP төлөвийг унш
Windows-д шаардлагатай хэрэгслүүд байдаг. Администраторын терминал нээж, платформын төлөвийг гарга; гаргалт ажлын хавтаст wfpstate.xml болж бичигдэнэ.
netsh wfp show state
netsh wfp show filters
Get-Service bfe
XML дотроос явсан нийлүүлэгчийн нэр, Block үйлдэл, давхаргыг хай. Энгийн урсгалыг эвддэг нь connect-redirect болон transport шүүлтүүр; receive-accept давхаргын шүүлтүүр ихэвчлэн таны шалтгаан биш. Хэрэв Base Filtering Engine огт ажиллахгүй бол өөр газраас хай, учир нь эдгээр шүүлтүүрийг өөр юу ч хэрэгжүүлж чадахгүй.
Энгийн галт ханын харагдацыг ч хөндлөн шалга, учир нь ихэнх хүмүүс хоёрын зөвхөн нэгийг нь шалгадаг:
netsh advfirewall show allprofiles
Get-NetFirewallProfile | Select-Object Name,Enabled,DefaultInboundAction
Суурилуулсан профайлууд асаалттай бөгөөд бүтэлгүйтэж буй урсгалд ямар ч дүрэм тохирохгүй бол блок нь Windows Firewall биш, харин гуравдагч нийлүүлэгчээс ирдэг. Энэ ялгаа нь засварт аль хэрэгслийг ашиглахаа шийддэг.
Linux дүрмийг устгах синтаксоор унш
iptables -S дүрмүүдийг нэмсэн хэлбэрээрээ хэвлэдэг тул гаргалтыг устгахад шууд дахин ашиглаж болно. iptables -L -v -n пакетын тоолуур нэмдэг бөгөөд эдгээр тоолуур нь дүрэм таны бүтэлгүйтсэн хүсэлтэд үнэхээр тохирч байгаа эсэх, эсвэл зүгээр л chain дотор сууж байгааг хэлж өгдөг.
sudo iptables -S
sudo ip6tables -S
sudo iptables -t nat -S
Зөвхөн дүрэм төдийгүй chain бодлогыг унш: -P OUTPUT DROP ямар ч дүрэм тохирохгүй ч урсгалыг блоклодог. IPv6-г тусад нь шалга, учир нь хоёр гэр бүлийг суулгасан клиент IPv4 дүрмүүд арилсны дараа IPv6 блокийг үлдээж болох бөгөөд шинж тэмдэг нь програм аль гэр бүлд давуу эрх өгч байгаагаас хамаарна. nftables хэрэглэж байгаа газарт nft list ruleset-г ч ажиллуул; хоёр хэрэгсэл нийцлийн давхаргаар зэрэгцэн оршиж, нэг жагсаалт пакет хаяж болох бүх дүрмийг заавал харуулдаггүй.
Алдааг тайлбарлах хамгийн нарийн объектыг устга
Windows-д эхний алхам нь нийлүүлэгчийн өөрийн устгах зам хэвээр: суулгагчийг дахин ажиллуулж repair эсвэл uninstall ашигла, эсвэл нийлүүлэгч нийтэлдэг бол цэвэрлэх хэрэгслийг ажиллуул. Үлдсэн үйлчилгээ болон товлосон ажлууд нийтлэг бөгөөд нэвтрэх үед клиентийг эхлүүлдэг ажил дараагийн ачаалалд шүүлтүүрийг дахин суулгана. Клиентийн бүртгэлийн түлхүүрийг уншиж байхдаа бүтэлгүйтдэг устгалт нь ихэвчлэн үйлчилгээ эсвэл ажил түүнийг одоо ч барьж байгааг илэрхийлдэг, бүртгэл гэмтсэнг биш.
Get-ScheduledTask | Where-Object TaskName -like '*vpn*'
Get-Service | Where-Object DisplayName -like '*vpn*'
Байнгын шүүлтүүр нь хамгийн сүүлийн арга. Тэдгээр нь HKLM\SYSTEM\CurrentControlSet\Services\BFE\Parameters\Policy\Persistent\Filter-ийн доор, шүүлтүүр бүрт GUID-ээр түлхүүрлэсэн нэг утга байна. Эхлээд түлхүүрийг экспортол, устгах GUID-үүдээ тэмдэглэ, явсан клиентэд хамаарах утгуудыг л устга, дараа нь хөдөлгүүр төлөвөө дахин бүтээхийн тулд дахин ачаал. Бүх түлхүүрийг бүү устга, Base Filtering Engine-ийг бүү идэвхгүй болго: Windows Firewall болон Defender түүнээс хамаардаг бөгөөд нэг саатыг илүү муу зүйлээр солих болно.
reg export "HKLM\SYSTEM\CurrentControlSet\Services\BFE\Parameters\Policy\Persistent" C:\temp\bfe-backup.reg
Linux-д iptables -S-ийн хэвлэсэн мөрийг аваад -A-г -D-ээр соль. Таниулсан нэг дүрмийг устгах нь chain-ийг бүрэн цэвэрлэхээс дээр, учир нь өөрийн бодлого хөндөгдөхгүй үлддэг.
sudo iptables -D OUTPUT -p udp -j REJECT
Хэрэв drop хэрэглэгчийн тодорхойлсон chain дотор байвал эхлээд тэр chain руу үсрэлтийг устгаад, дараа нь chain-ийг -X-ээр арилга. drop дүрмүүд байсаар байхад chain бодлогыг ACCEPT болгох нь бодлогын шийдвэрт хүрдэг пакетуудад л тусална. Бүх хүснэгтийг цэвэрлэх нь хамгийн сүүлийн арга: энэ нь өөр шалтгаанаар нэмсэн дүрмүүдийг ч хасдаг, ufw асаалттай үед үйлчилгээг байхгүй chain-уудыг эзэмшдэг гэж бодоход хүргэдэг.
Түүнийг буцааж тавьдаг эзнийг ол
Шуурхай засварын дараа төлөвийг сэргээх зүйлийг хай. Linux-д байнгын нэгж идэвхтэй эсэх, клиентэд нэвтрэх үед галт ханыг сэргээх тохиргоо байгаа эсэх, /etc-ийн доор хадгалсан дүрмийн файл байгаа эсэхийг шалга. Windows-д эхлэх бичлэг, үйлчилгээ, товлосон ажлыг дахин шалгаад, дараа нь дахин ачаалж өмнөхтэй ижил командаар төлөвийг дахин унш.
Хэрэв блок буцаж ирвэл устгалт нь шийдэл биш байсан; эзэн нь шийдэл байсан. Аль клиент эсвэл үйлчилгээ үүнийг суулгадгийг тэмдэглэж, функцийг тэнд идэвхгүй болго, салгах бүрт галт ханын давхаргад тэмцэхийн оронд.
Нэг ping биш, бодит урсгалаар шалга
Нэрийн шийдэлт, TCP холболт, шинэ хөтчийн сессийг туршаад, дараа нь дахин ачаалж мөнөөх гурван шалгалтыг давт. HTTPS бүтэлгүйтэж байхад ping ажиллаж байвал энэ нь сүлжээ биш, transport давхаргын шүүлтүүр рүү заана; зөвхөн дахин ачаалсны дараа дахин гарч ирдэг блок нь таны олж амжаагүй эзэн рүү заана.
Нотолгоог хадгал: экспортолсон BFE түлхүүр эсвэл өөрчлөлтөөс өмнө авсан iptables -S-ийн гаргалт. Зассан гэж хэлэхийн өмнө объектыг аль давхаргаас устгасан, түүнийг дахин суулгаж чадах эзэн, нэг цэвэр дахин ачааллын дараах төлөв, VPN процесс ажиллахгүйгээр энгийн вэб үзэх ажиллаж байгааг батал. iptables(8) гарын авлагын хуудсанд цэвэрлэлтийг скрипт болговол яг устгах болон бодлогын синтакс байна.