ടണൽ നിർത്താതെ ഒരു OpenVPN ക്ലയന്റിനെ LAN-ൽ നിന്ന് തടയുക
ക്ലയന്റിന്റെ ടണൽ വിലാസം അതിന്റെ സർട്ടിഫിക്കറ്റിലേക്ക് പിൻ ചെയ്യുക, FORWARD-ന്റെ തലയിൽ അതിന്റെ LAN ട്രാഫിക് ഇടുക, തുടർന്ന് IPv6, ട്രാക്ക് ചെയ്ത സെഷനുകൾ, റീബൂട്ടിന് ശേഷമുള്ള നിലനിൽപ്പ് എന്നിവ പരിശോധിക്കുക.
നിങ്ങളുടെ OpenVPN സെർവറിലെ ഒരു ക്ലയന്റ് LAN ആക്സസ് നഷ്ടപ്പെടണം, മറ്റെല്ലാ ടണലുകളും പ്രവർത്തിക്കണം. ഇത് തിരയുകയാണെങ്കിൽ, മികച്ച ഉത്തരം സാധാരണയായി ഡീമണിന് ഇത് ചെയ്യാനാകില്ലെന്ന് പറയുന്നു, അത് പകുതി മാത്രം ശരിയാണ്: OpenVPN-ന് ഓരോ ക്ലയന്റിനും ഫയർവാൾ ഇല്ല, പക്ഷേ ടണൽ അവസാനിപ്പിക്കുന്ന ഹോസ്റ്റ് ഇതിനകം പാക്കറ്റുകൾ ഫിൽട്ടർ ചെയ്യുന്നു. പ്രധാനമായ രണ്ട് തീരുമാനങ്ങൾ നിങ്ങൾ തടയുന്ന ഐഡന്റിറ്റിയും നിയമത്തിന്റെ സ്ഥാനവുമാണ്. ഇവ രണ്ടും ശരിയാക്കിയാൽ മാറ്റം പരിശോധിച്ച് നീക്കാനാകുന്ന ഒരു വരിയായി മാറും.
നിയമം എഴുതുന്നതിന് മുമ്പ് ക്ലയന്റിനെ പിൻ ചെയ്യുക
OpenVPN ഒരു പൂളിൽ നിന്ന് ടണൽ വിലാസങ്ങൾ പാട്ടത്തിന് നൽകുന്നു, അതിനാൽ 10.8.0.6 ഒരു വ്യക്തിയല്ല, ഒരു ഇരിപ്പിടമാണ്. സെഷൻ അവസാനിക്കുമ്പോൾ പാട്ടം തിരികെ വരുന്നു, അടുത്ത കണക്ഷന് നൽകാം, അതായത് ആ വിലാസത്തിനെതിരെ എഴുതിയ നിയമം ഉപയോക്താവിനെയല്ല, ഇരിപ്പിടത്തെ പിന്തുടരുന്നു. അതിനാൽ ആദ്യം നിങ്ങൾ യഥാർത്ഥത്തിൽ എന്താണ് തടയുന്നതെന്ന് തീരുമാനിക്കുക: ഒരു ചെറിയ പരീക്ഷണത്തിനുള്ള വിലാസം, അല്ലെങ്കിൽ പുറത്ത് നിർത്താൻ ആഗ്രഹിക്കുന്ന ഒരാളുടെ സർട്ടിഫിക്കറ്റ്.
വിലാസം സർട്ടിഫിക്കറ്റിലേക്ക് ബന്ധിക്കാൻ, client-config-dir പേരിടുന്ന ഡയറക്ടറിയിൽ ഒരു ഫയൽ സൃഷ്ടിച്ച് ഫയലിന് സർട്ടിഫിക്കറ്റിന്റെ common name കൃത്യമായി നൽകുക. അതിൽ ഒരു നിർദ്ദേശം ഇടുക, ifconfig-push 10.8.0.6 255.255.255.0, ആ ക്ലയന്റ് വീണ്ടും ബന്ധിപ്പിക്കുമ്പോഴും അതേ ടണൽ വിലാസം നിലനിർത്തുന്നു. ഇത് പ്രാബല്യത്തിൽ വരാൻ രണ്ട് ക്രമീകരണങ്ങൾ വേണം: സെർവർ കോൺഫിഗറേഷനിൽ client-config-dir പ്രഖ്യാപിക്കണം, അയയ്ക്കുന്ന വിലാസം സെർവറിന് റൂട്ട് ചെയ്യാനാകുന്ന സബ്നെറ്റിൽ ആയിരിക്കണം. ഒന്ന് വിട്ടുപോയാൽ ഫയൽ പിശകില്ലാതെ അവഗണിക്കപ്പെടും, ഇത് അടുത്ത ഫയർവാൾ പരിശോധനയെ തെറ്റിദ്ധരിപ്പിക്കും.
താൽക്കാലിക തടയൽ ഒരു പൂൾ വിലാസം ഉപയോഗിക്കാം, ആ സമയത്ത് ഏത് സെഷൻ അത് കൈവശം വച്ചിരുന്നു എന്ന് ടിക്കറ്റ് രേഖപ്പെടുത്തിയാൽ മതി.
ക്രമമാണ് ഡ്രോപ്പ് പ്രവർത്തിക്കുന്നുണ്ടോ എന്ന് തീരുമാനിക്കുന്നത്
ടണലിനും LAN-നും ഇടയിൽ ഫോർവേഡ് ചെയ്യുന്ന Linux ഗേറ്റ്വേയിൽ പാക്കറ്റുകൾ FORWARD ചെയിനിലൂടെ കടക്കുന്നു. താഴെയുള്ള കമാൻഡ് ഒരു വാക്യമായി വായിക്കുക: FORWARD-ന്റെ തലയിൽ ചേർക്കുക, tun0-ൽ നിന്ന് വരുന്ന, ആ ഒരു ഹോസ്റ്റിൽ നിന്നുള്ള, LAN സബ്നെറ്റിലേക്ക് ലക്ഷ്യമിടുന്ന ട്രാഫിക് പൊരുത്തപ്പെടുത്തി ഇടുക.
iptables -I FORWARD -i tun0 -s 10.8.0.6/32 -d 192.168.1.0/24 -j DROP-I ആണ് നിയമം പ്രവർത്തിപ്പിക്കുന്നത്. -A ഉപയോഗിച്ച് ചേർത്താൽ അത് ടണൽ സബ്നെറ്റിനുള്ള ഏതെങ്കിലും വിശാല അനുമതിക്ക് താഴെ വീഴുകയും ഒരിക്കലും പാക്കറ്റ് കാണുകയും ചെയ്യില്ല. സ്ഥാനം iptables -vnL FORWARD --line-numbers ഉപയോഗിച്ച് പരിശോധിക്കുക, കൗണ്ടറുകളും വായിക്കുക: മുകളിലെ ഡ്രോപ്പ് ഒന്നും എണ്ണുന്നില്ലെങ്കിൽ ട്രാഫിക് മറ്റൊരു വഴിയിലൂടെ വരുന്നു.
ഗേറ്റ്വേയുടെ സ്വന്തം LAN വിലാസം മറ്റൊരു വഴിയാണ്. ബോക്സിലേക്ക് തന്നെ അയയ്ക്കുന്ന പാക്കറ്റുകൾ INPUT-ലേക്ക് പോകുന്നു, FORWARD-ലേക്കല്ല, അതിനാൽ ഒരു ക്ലയന്റിന് LAN ഹോസ്റ്റ് നഷ്ടപ്പെട്ടാലും റൂട്ടറിന്റെ അഡ്മിൻ പേജ് തുറക്കാം. അത് പ്രധാനമാകുമ്പോൾ പൊരുത്തപ്പെടുന്ന INPUT നിയമം ചേർക്കുക.
ഫിൽട്ടറിന് കാണാനാകാത്തത്
പാക്കറ്റ് വിലയിരുത്തുമ്പോഴാണ് ഫിൽട്ടറിംഗ് നടക്കുന്നത്, അതിനാൽ സ്ഥാപിത TCP സെഷൻ അടയ്ക്കുന്നതുവരെ അല്ലെങ്കിൽ റീസെറ്റ് ചെയ്യുന്നതുവരെ തുടരാം. തടയൽ ഉടനടി ഫലിക്കണമെങ്കിൽ, നിയമം ഇട്ടതിന് ശേഷം ആ ഉറവിടത്തിന്റെ ട്രാക്ക് ചെയ്ത ഫ്ലോകൾ conntrack -D -s 10.8.0.6 ഉപയോഗിച്ച് മായ്ക്കുക. കുറച്ച് സെക്കൻഡ് ഓവർലാപ്പ് സ്വീകാര്യമാണെങ്കിൽ ആ തിരഞ്ഞെടുപ്പ് രേഖപ്പെടുത്തുക, പരോക്ഷമായി വിടരുത്. ഏതായാലും, അടുത്ത വ്യക്തി ഈ നിയമം ജീവനുള്ള ട്രാഫിക് നിർത്തുന്നുണ്ടോ പുതിയ കണക്ഷനുകൾ മാത്രമാണോ എന്ന് അറിയണം.
പിയർമാർക്കിടയിലെ ട്രാഫിക് ഒരിക്കലും ഹോസ്റ്റ് ഫയർവാളിനെ സ്പർശിക്കുന്നില്ല. client-to-client പ്രവർത്തനക്ഷമമാകുമ്പോൾ OpenVPN ആ പാക്കറ്റുകൾ ഡീമണിനുള്ളിൽ കൈമാറുന്നു, അതിനാൽ FORWARD ഉം INPUT ഉം അവ കാണുന്നില്ല. ഏക പരിഹാരം client-to-client ഓഫ് ചെയ്യുകയോ പിയർമാർ പരസ്പരം എത്താമെന്ന് സ്വീകരിക്കുകയോ ആണ്; iptables നിയമം ആ ട്രാഫിക് കാണില്ല.
IPv6, ഫേംവെയർ, റീബൂട്ടിന് ശേഷമുള്ള നിലനിൽപ്പ്
IPv4 നിയമം IPv6-നെക്കുറിച്ച് ഒന്നും പറയുന്നില്ല. ടണലും LAN-ഉം രണ്ട് കുടുംബങ്ങളും വഹിക്കുന്നുവെങ്കിൽ, തത്തുല്യമായ നിയമം ip6tables-ൽ അല്ലെങ്കിൽ ആ ഹോസ്റ്റിൽ നയം കൈവശമുള്ള nftables നിയമക്കൂട്ടത്തിൽ ഉണ്ടായിരിക്കണം. റൂട്ടർ ഫേംവെയർ പലപ്പോഴും netfilter-നെ സ്വന്തം അമൂർത്തീകരണത്തിന് പിന്നിൽ ഒളിപ്പിക്കുന്നു, അതിനാൽ ഫോറത്തിൽ നിന്ന് പകർത്തിയ വാക്യഘടനയും പട്ടിക നാമങ്ങളും ബാധകമായെന്ന് വരില്ല.
OpenWrt-ൽ രേഖപ്പെടുത്തിയ വഴി ഫയർവാൾ കോൺഫിഗറേഷൻ എൻട്രിയാണ്, കൈകൊണ്ടെഴുതിയ iptables വരിയല്ല, കൈകൊണ്ടെഴുതിയ വരി ഫയർവാൾ വീണ്ടും ലോഡ് ചെയ്യുമ്പോൾ അപ്രത്യക്ഷമാകാം. മറ്റ് വിതരണങ്ങൾ നിയമങ്ങൾ netfilter-persistent, ബൂട്ട് യൂണിറ്റ് അല്ലെങ്കിൽ വെണ്ടർ സ്റ്റോർ വഴി പുനഃസ്ഥാപിക്കുന്നു, ഈ സംവിധാനങ്ങൾ പരസ്പരം മാറ്റാനാവില്ല. നിങ്ങൾ തിരഞ്ഞെടുത്തത് ഒരു റീബൂട്ടിലൂടെ തെളിയിക്കുക, കാരണം വീണ്ടും ലോഡ് ചെയ്യൽ മറ്റൊരു വഴി പരിശീലിക്കുന്നു.
വഴിതോറും പരിശോധിച്ച്, പിന്നെ വൃത്തിയായി പിൻവലിക്കുക
ഓരോ വഴിയും വെവ്വേറെ പരീക്ഷിക്കുക, ഒരു വിജയകരമായ പരിശോധന മറ്റുള്ളവയെ മറയ്ക്കുന്നു. തടയപ്പെട്ട ക്ലയന്റ് ടണലിലൂടെ ഇന്റർനെറ്റിൽ എത്തണം, പക്ഷേ LAN ഹോസ്റ്റിനെതിരെ പരാജയപ്പെടണം; രണ്ടാമത്തെ ക്ലയന്റ് അതേ ഹോസ്റ്റിൽ എത്തണം; ഗേറ്റ്വേ വിലാസത്തിനും പിയർ വഴിക്കും ഓരോന്നിനും സ്വന്തം നിരീക്ഷണം വേണം. ഫലങ്ങൾ നിയമത്തിന് അടുത്ത് എഴുതുക, അടുത്ത മാറ്റത്തിന് അടിസ്ഥാനം ലഭിക്കും. താഴെയുള്ള പട്ടിക ടിക്കറ്റിൽ സൂക്ഷിക്കാൻ യോഗ്യമായ കൂട്ടമാണ്.
| വഴി | നിയമത്തോടെ പ്രതീക്ഷിക്കുന്നത് | പരാജയപ്പെടുമ്പോൾ |
|---|---|---|
| തടയപ്പെട്ട ക്ലയന്റ് LAN ഹോസ്റ്റിലേക്ക് | മറുപടിയില്ല | നിയമം അനുമതിക്ക് താഴെയാണ്, അല്ലെങ്കിൽ ഉറവിടം പൊരുത്തപ്പെടുന്നില്ല |
| തടയപ്പെട്ട ക്ലയന്റ് ഇന്റർനെറ്റിലേക്ക് | tun0 വഴി പ്രവർത്തിക്കുന്നു | നിയമം വളരെ വിശാലമാണ്, ലക്ഷ്യ പൊരുത്തമില്ല |
| രണ്ടാമത്തെ ക്ലയന്റ് അതേ LAN ഹോസ്റ്റിലേക്ക് | പ്രവർത്തിക്കുന്നു | നിയമം ഉദ്ദേശിച്ച ഹോസ്റ്റിനേക്കാൾ കൂടുതലിനെ പൊരുത്തപ്പെടുത്തി |
| തടയപ്പെട്ട ക്ലയന്റ് ഗേറ്റ്വേയുടെ LAN വിലാസത്തിലേക്ക് | പൊരുത്തപ്പെടുന്ന INPUT നിയമം ഉണ്ടെങ്കിൽ മാത്രം തടയപ്പെടുന്നു | INPUT നിയമം ഇല്ല |
| തടയപ്പെട്ട ക്ലയന്റ് പിയർ ടണൽ വിലാസത്തിലേക്ക് | ഇപ്പോഴും പ്രവർത്തിക്കുന്നു | client-to-client പ്രവർത്തനക്ഷമവും ഫയർവാളിന്റെ പരിധിക്ക് പുറത്തും |
പിൻവലിക്കൽ എന്നത് സ്പെസിഫിക്കേഷൻ പ്രകാരം ഇല്ലാതാക്കലാണ്, ഫ്ലഷ് അല്ല: iptables -D FORWARD -i tun0 -s 10.8.0.6/32 -d 192.168.1.0/24 -j DROP കൃത്യമായി ആ എൻട്രി നീക്കം ചെയ്യുകയും ചെയിനിന്റെ ബാക്കി അതേപടി നിർത്തുകയും ചെയ്യുന്നു. ബൂട്ടിൽ നിയമങ്ങൾ പുനഃസ്ഥാപിക്കുന്ന ഏത് ഫയലിൽ നിന്നും അതേ വരി നീക്കുക, അത് വീണ്ടും ലോഡ് ചെയ്യുക, ക്ലയന്റ് വീണ്ടും LAN ഹോസ്റ്റിൽ എത്തുന്നുവെന്ന് സ്ഥിരീകരിക്കുക. FORWARD ഫ്ലഷ് ചെയ്താൽ നിങ്ങൾ എഴുതാത്ത നിയമങ്ങളും റദ്ദാകും, അത് പിൻവലിക്കലിനെ രണ്ടാമത്തെ സംഭവമാക്കും.
ടിക്കറ്റ് അടയ്ക്കുന്നതിന് മുമ്പ് മൂന്ന് കാര്യങ്ങൾ സ്ഥിരീകരിക്കുക: പിൻ ചെയ്ത വിലാസം സർട്ടിഫിക്കറ്റുമായി പൊരുത്തപ്പെടുന്നു, നിയമം അനുമതികൾക്ക് മുകളിലാണ്, കൗണ്ടർ പൂജ്യമല്ല, സ്ഥിരതാ ഫയലിൽ നിങ്ങൾ പരീക്ഷിച്ച അതേ നിയമമുണ്ട്. ഇവയിൽ ഒന്ന് ഇല്ലെങ്കിൽ, തടയൽ ഒരു ഷെൽ സെഷനിലെ മായാജാലമാണ്.