iptables: VPN ക്ലയന്റുകളെ ഒരു ഹോസ്റ്റിൽ മാത്രം എത്തിക്കുക
നിങ്ങൾക്ക് വേണ്ട നിയമം FORWARD-ൽ ആണ്, INPUT-ൽ അല്ല. VPN പൂളിന് ഒരു ലക്ഷ്യസ്ഥാനം അനുവദിക്കുക, ബാക്കിയുള്ളവ നിരസിക്കുക, പിന്നീട് കൗണ്ടറുകളും റോൾബാക്ക് കമാൻഡും ഉപയോഗിച്ച് അത് തെളിയിക്കുക.
ബന്ധമില്ലാത്തതായി തോന്നുന്ന രണ്ട് സപ്പോർട്ട് ടിക്കറ്റുകൾ യഥാർത്ഥത്തിൽ ഒരു കാരണം പങ്കിടുന്നു. ആദ്യത്തേതിൽ, സർവർ ടണലിൽ നിന്ന് മാത്രം കണക്ഷനുകൾ സ്വീകരിക്കണമെന്ന് അഡ്മിനിസ്ട്രേറ്റർ ആഗ്രഹിക്കുന്നു; രണ്ടാമത്തേതിൽ, 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 ലോക്കിൽ കൂട്ടിയിടിക്കും. മാറ്റ വിൻഡോയിൽ ഇവയൊന്നും ഐച്ഛികമല്ല.
പൂളിനുള്ളിലെ ഒരു ക്ലയന്റിൽ നിന്നും അതിന് പുറത്തുള്ള ഒരു ക്ലയന്റിൽ നിന്നും പരീക്ഷിച്ച് അവസാനിപ്പിക്കുക. നിങ്ങൾ ടൈപ്പ് ചെയ്ത യന്ത്രത്തിൽ നിന്ന് മാത്രം പ്രവർത്തിക്കുന്ന നിയമം നയമല്ല.