നിങ്ങൾ ഒരു Linux IPsec ഗേറ്റ്‌വേയുടെ പുറം ഇന്റർഫേസിൽ tcpdump പ്രവർത്തിപ്പിക്കുകയും ഒരേസമയം രണ്ടു കാര്യങ്ങൾ കാണുകയും ചെയ്യുന്നു: വരുന്ന ESP ഫ്രെയിമുകളും, അവയ്ക്കു ശേഷം തന്നെ ഡീക്രിപ്റ്റ് ചെയ്ത ഉൾപ്പെട്ട പാക്കറ്റുകളും. പുറത്തേക്കുള്ള ദിശയിൽ ESP മാത്രം കാണാം. സ്വാഭാവിക നിഗമനം പ്രതികരണങ്ങൾ അയയ്ക്കുന്നില്ല അല്ലെങ്കിൽ IPsec ഒരു ദിശ എൻക്രിപ്റ്റ് ചെയ്ത് മറ്റേത് മറക്കുന്നു എന്നതാണ്. രണ്ടും ശരിയല്ല.

നിങ്ങൾ കാണുന്നത് ഒരു ക്യാപ്ചർ പോയിന്റ് ആണ്. ഉപകരണത്തിന്റെ ട്രാൻസ്മിറ്റ് പാത അവയെ പാക്കറ്റ് സോക്കറ്റിന് കൈമാറുന്നതിന് മുമ്പ് കെർണൽ പുറത്തേക്കുള്ള പാക്കറ്റുകൾ രൂപാന്തരപ്പെടുത്തുന്നു, അതിനാൽ സോക്കറ്റ് പുറത്തേക്ക് പോകുന്ന ആന്തരിക രൂപം ഒരിക്കലും കാണുന്നില്ല. അകത്തേക്ക് വരുമ്പോൾ പാക്കറ്റ് ആദ്യം ESP ആയി പിടിക്കപ്പെടുന്നു, ഡീകാപ്സുലേറ്റ് ചെയ്ത പകർപ്പ് അത് വീണ്ടും സ്റ്റാക്കിലേക്ക് പ്രവേശിക്കുമ്പോൾ ദൃശ്യമാകുന്നു. ഒരേ ട്രാഫിക്, രണ്ട് വ്യത്യസ്ത നിരീക്ഷണ ജാലകങ്ങൾ.

എന്താണ് നിങ്ങൾ കാണുന്നതെന്ന് ക്യാപ്ചർ പോയിന്റ് തീരുമാനിക്കുന്നു

സാധാരണ ഇന്റർഫേസിൽ AF_PACKET സോക്കറ്റ് ഉപകരണ പാളിക്ക് അടുത്ത് ഇരിക്കുന്നു. ഹോസ്റ്റ് വിടുന്ന പാക്കറ്റുകൾ ആദ്യം IPsec ഔട്ട്പുട്ട് പ്രോസസ്സിംഗിലൂടെ കടന്നുപോകുന്നു, അത് ആന്തരിക TCP സെഗ്മെന്റിനെ ESP അല്ലെങ്കിൽ UDP-4500 ഡാറ്റാഗ്രാമാക്കി മാറ്റുന്നു, അതിനുശേഷം മാത്രം ആ പാളിയിൽ എത്തുന്നു. വരുന്ന പാക്കറ്റുകൾ കമ്പിയിൽ നിന്ന് വരുമ്പോൾ തന്നെ, ഇപ്പോഴും എൻക്രിപ്റ്റ് ചെയ്ത നിലയിൽ സോക്കറ്റിലേക്ക് പകർത്തപ്പെടുന്നു, ഡീക്രിപ്റ്റ് ചെയ്ത ഫലം സ്റ്റാക്ക് അത് പ്രാദേശികമായി എത്തിക്കുകയോ കൈമാറുകയോ ചെയ്യുമ്പോൾ പിന്നീട് ദൃശ്യമാകുന്നു.

ആ ക്രമമാണ് അസമത്വത്തെ പൂർണ്ണമായി വിശദീകരിക്കുന്നത്. ഇത് ദിശ, നയം അല്ലെങ്കിൽ ആപ്ലിക്കേഷന്റെ പെരുമാറ്റം എന്നിവയെക്കുറിച്ചുള്ള തെളിവല്ല, അങ്ങനെ കണക്കാക്കുന്നത് എപ്പോഴും ശരിയായി അയച്ചിരുന്ന ഒരു പ്രതികരണത്തിന് പിന്നാലെ ആളുകളെ ഓടിക്കുന്നു. ഇത് അപാകത സൃഷ്ടിക്കുന്നത് നെറ്റ്‌വർക്കല്ല, ഉപകരണമാണ് എന്ന അപൂർവ നെറ്റ്‌വർക്കിംഗ് കടങ്കഥകളിൽ ഒന്നാണ്.

ഉദ്ദേശിക്കുന്ന പാളിയുമായി ഫിൽട്ടർ യോജിപ്പിക്കുക

tcp port 443 പോലുള്ള ഒരു പദപ്രയോഗം ഒരു ആന്തരിക TCP കണക്ഷൻ തിരഞ്ഞെടുക്കുന്നു. പുറത്തേക്കുള്ള ദിശയിൽ, സോക്കറ്റിനോട് ചോദിക്കുമ്പോഴേക്കും ആ കണക്ഷൻ ESP ആയി മാറിയിരിക്കുന്നു, അതിനാൽ ഫിൽട്ടർ ഒന്നിനും പൊരുത്തപ്പെടുന്നില്ല. സംരക്ഷിത ട്രാഫിക് എണ്ണണമെങ്കിൽ, പകരം പുറം രൂപത്തിൽ ഫിൽട്ടർ ചെയ്യുക: അസംസ്കൃത ESP-ന് പ്രോട്ടോക്കോൾ 50, അല്ലെങ്കിൽ NAT ട്രാവേഴ്സൽ ഉപയോഗിക്കുമ്പോൾ UDP പോർട്ട് 4500. രണ്ട് ഫിൽട്ടറുകളും രണ്ട് പിയറുകൾക്കിടയിൽ താരതമ്യം ചെയ്യാവുന്ന ഒരു പാക്കറ്റ് എണ്ണം നൽകുന്നു, സാധാരണയായി എണ്ണാനുള്ള കാരണവും അതാണ്. രണ്ടിൽ ഒന്നും ആന്തരിക അഭ്യർത്ഥനയ്ക്ക് മറുപടി ലഭിച്ചോ എന്ന് പറയുന്നില്ല.

UDP 4500 എണ്ണത്തെ ESP പാക്കറ്റ് എണ്ണമായി കണക്കാക്കരുത്. IKE ആ പോർട്ട് NAT-T കീപ്പലൈവുകൾക്കും എൻകാപ്സുലേറ്റഡ് കൈമാറ്റത്തിനും ഉപയോഗിക്കുന്നു, അതിനാൽ ഈ സംഖ്യ നിങ്ങൾ അളക്കാൻ ഉദ്ദേശിച്ച ഡാറ്റയല്ലാത്ത ട്രാഫിക്കും ഉൾക്കൊള്ളുന്നു. UDP 500-ലെ പ്രാരംഭ IKE കൈമാറ്റത്തിന് അതാണ് ചോദ്യമെങ്കിൽ സ്വന്തം ഫിൽട്ടർ വേണം. നിയന്ത്രണ ട്രാഫിക് ഡാറ്റയുമായി കലർത്തുന്ന ഒരു സംഖ്യ ഏതൊരു ബാൻഡ്‌വിഡ്ത്ത് കണക്കുകൂട്ടലിനെയും അജ്ഞാതമായ അളവിൽ തെറ്റാക്കുന്നു. വേറിട്ട എണ്ണലുകൾ വേറിട്ട ചോദ്യങ്ങൾക്ക് ഉത്തരം നൽകുന്നു.

ഫിൽട്ടർ അത് ഉത്തരം നൽകുന്ന ചോദ്യത്തിന് അടുത്ത് എഴുതുക. «ബോക്സിൽ നിന്ന് എത്ര ESP പുറത്തുപോയി», «വെബ് അഭ്യർത്ഥന ബോക്സിൽ നിന്ന് പുറത്തുപോയോ» എന്നിവ വ്യത്യസ്ത ഫിൽട്ടറുകളുള്ള വ്യത്യസ്ത അളവുകളാണ്, ഒരു ക്യാപ്ചർ രണ്ടിനെയും തീരുമാനിക്കാനാവില്ല. ആ കുറിപ്പില്ലാതെ രണ്ട് പേർ ഒരിക്കലും ഒരേ കാര്യം എണ്ണിയിട്ടില്ലാത്ത സംഖ്യകൾ താരതമ്യം ചെയ്യും.

രൂപാന്തരത്തിന് മുമ്പ് നിരീക്ഷിക്കുക, ശേഷമല്ല

പുറത്തേക്കുള്ള പ്ലെയിൻടെക്സ്റ്റ് കാണേണ്ടതുണ്ടെങ്കിൽ, നിരീക്ഷണ പോയിന്റ് നേരത്തേക്ക്, IPsec ഔട്ട്പുട്ട് പ്രോസസ്സിംഗിന് മുമ്പ് നീക്കുക. NFLOG നിങ്ങൾക്ക് ഒരു Netfilter ഹുക്ക് നൽകുന്നു, അവിടെ ഒരു നിയമത്തിന് തിരഞ്ഞെടുത്ത പാക്കറ്റുകൾ ഉപയോക്തൃ ഇടത്തിലെ സോക്കറ്റിലേക്ക് പകർത്താം, അത് tcpdump-ന് വായിക്കാം. strongSwan-ന്റെ ട്രാഫിക് ഡംപ് ഗൈഡ് ഈ സമീപനം രേഖപ്പെടുത്തുന്നത് ഇതേ കാരണത്താലാണ്.

നയ പൊരുത്തം നിയമത്തെ ടണലിലേക്ക് കടക്കാൻ പോകുന്ന ട്രാഫിക്കിൽ മാത്രം പരിമിതപ്പെടുത്തുന്നു. ബോക്സ് അയയ്ക്കുന്ന ഓരോ പാക്കറ്റും ലോഗ് ചെയ്യുന്നതിനുപകരം നിയമത്തെ നിർദ്ദിഷ്ടമാക്കുന്നത് -m policy --pol ipsec --dir out ആണ്. തുടർന്ന് ലോഗ് ഗ്രൂപ്പ് പരിമിതമായ ക്യാപ്ചർ ഉപയോഗിച്ച് വായിക്കുക: ചെറിയ സ്നാപ്പ്ഷോട്ട് എണ്ണവും വലുപ്പ പരിധിയും രോഗനിർണയം ട്രാഫിക് ആർക്കൈവ് ആകുന്നത് തടയുന്നു. പരിമിതമായ ക്യാപ്ചർ അപ്രസക്തമായ പേലോഡ് വലിച്ചിടാതെ ഒരു അവലോകകന് കൈമാറാനും എളുപ്പമാണ്. എത്ര വന്നുവെന്ന് കണ്ടതിന് ശേഷമല്ല, തുടങ്ങുന്നതിന് മുമ്പ് സംഖ്യ തീരുമാനിക്കുക.

iptables -I OUTPUT 1 -d 10.83.0.44/32 -p tcp --dport 8443 -m policy --pol ipsec --dir out -j NFLOG --nflog-group 5
tcpdump -ni nflog:5 -s 128 -c 20 'host 10.83.0.44 and tcp port 8443'

പ്രവാഹത്തിന് യോജിച്ച ഹുക്ക് തിരഞ്ഞെടുക്കുക. OUTPUT ഗേറ്റ്‌വേ സ്വയം സൃഷ്ടിക്കുന്ന ട്രാഫിക് ഉൾക്കൊള്ളുന്നു; LAN ക്ലയന്റിൽ നിന്നുള്ള കടന്നുപോകൽ പകരം FORWARD ശൃംഖലയിലൂടെ പോകുന്നു, OUTPUT-ലെ ഒരു നിയമം അത് ഒരിക്കലും കാണില്ല. മുകളിലെ വിലാസവും പോർട്ടും അംഗീകരിച്ച പരീക്ഷണ ലക്ഷ്യത്തിനുള്ള പ്ലേസ്‌ഹോൾഡറുകളാണ്.

നിരീക്ഷണം എന്ത് തെളിയിക്കുന്നു

NFLOG ഒരു ലോഗിംഗ് ലക്ഷ്യമാണ്, സ്വീകാര്യതാ തീരുമാനമല്ല. അവിടെ പ്രത്യക്ഷപ്പെടുന്ന ഒരു പാക്കറ്റ് അത് ഹുക്കിൽ എത്തി നിയമവുമായി പൊരുത്തപ്പെട്ടു എന്ന് കാണിക്കുന്നു. പിന്നീടുള്ള ഫിൽട്ടർ അത് അനുവദിച്ചു, ഉപകരണം അത് കൈമാറി, അല്ലെങ്കിൽ പിയർ എന്തെങ്കിലും സ്വീകരിച്ചു എന്ന് അത് കാണിക്കുന്നില്ല.

ശൂന്യമായ ലോഗും അത്രതന്നെ അവ്യക്തമാണ്. നിയമത്തിന്റെ പാക്കറ്റ് കൗണ്ടർ പരിശോധിക്കുക, ദിശ സ്ഥിരീകരിക്കുക, പ്രവാഹം യഥാർത്ഥത്തിൽ ഒരു IPsec നയവുമായി പൊരുത്തപ്പെട്ടു എന്ന് സ്ഥിരീകരിക്കുക, ലക്ഷ്യം സ്ഥിരീകരിക്കുക. രണ്ട് പിയറുകളിലും പൊരുത്തപ്പെടുന്ന കൗണ്ടർ മാത്രമാണ് നിരീക്ഷണത്തെ നിഗമനമാക്കി മാറ്റുന്നത്. തുടർന്ന് അതേ നിയന്ത്രിത ശ്രമത്തിന് രണ്ട് പിയറുകളിലെയും സുരക്ഷാ സംഘടനയുടെ കൗണ്ടറുകൾ താരതമ്യം ചെയ്യുക, കാരണം SA കൗണ്ടറുകളാണ് എന്ത് സംരക്ഷിക്കപ്പെട്ടു, അയയ്ക്കപ്പെട്ടു എന്നതിന്റെ അധികാരമുള്ള രേഖ.

ഇനിയും ഒരു കെണി: ഈ സന്ദർഭത്തിൽ «പ്ലെയിൻടെക്സ്റ്റ്» എന്നത് IPsec എൻക്രിപ്ഷൻ പാളിക്ക് പുറത്ത് എന്നാണ്. ആന്തരിക HTTPS സെഷന് ഇപ്പോഴും സ്വന്തം TLS ഉണ്ട്. ഡീകാപ്സുലേറ്റ് ചെയ്ത പാക്കറ്റ് പിടിക്കുന്നത് ആപ്ലിക്കേഷന്റെ TLS ഡീക്രിപ്റ്റ് ചെയ്യുന്നില്ല, അവിടെ വായിക്കാവുന്ന HTTP കാണുന്നത് ആപ്ലിക്കേഷൻ ഒരിക്കലും HTTPS ഉപയോഗിച്ചിരുന്നില്ല എന്നാണ് അർത്ഥമാക്കുന്നത്.

വൃത്തിയാക്കി രണ്ട് അറ്റങ്ങളും താരതമ്യം ചെയ്യുക

നിരീക്ഷണം കഴിഞ്ഞ ഉടനെ നിങ്ങൾ ചേർത്ത കൃത്യമായ നിയമം അതിന്റെ ഉടമയനുസരിച്ച് നീക്കം ചെയ്യുക. ലോഗിംഗ് നിയമം അവിടെ വിടുന്നത് പൊരുത്തപ്പെടുന്ന ഓരോ പാക്കറ്റിനും CPU ചെലവാക്കുകയും ശബ്ദമില്ലാതെ ഡാറ്റ നിലനിർത്തൽ പ്രശ്നം സൃഷ്ടിക്കുകയും ചെയ്യുന്നു. നിങ്ങളുടേതല്ലാത്ത ഒരു ശൃംഖല ഫ്ലഷ് ചെയ്യുന്നതിനുപകരം -D ഉപയോഗിച്ച് നിയമം ആവർത്തിച്ച് ഇല്ലാതാക്കുക.

iptables -D OUTPUT -d 10.83.0.44/32 -p tcp --dport 8443 -m policy --pol ipsec --dir out -j NFLOG --nflog-group 5

വിന്യാസം ഉപയോക്തൃ ഇട IPsec, XFRM ഇന്റർഫേസ് അല്ലെങ്കിൽ ഹാർഡ്‌വെയർ ഓഫ്‌ലോഡ് ഉപയോഗിക്കുന്നുവെങ്കിൽ, നിരീക്ഷണ പോയിന്റുകൾ നീങ്ങുന്നു, ഈ പാചകക്കുറിപ്പ് ഒട്ടും ബാധകമല്ലായിരിക്കാം. libipsec-നൊപ്പം ആന്തരിക ട്രാഫിക് നിരീക്ഷിക്കാനുള്ള രേഖപ്പെടുത്തിയ സ്ഥലം TUN ഉപകരണമാണ്. ആദ്യം പാത കണ്ടെത്തുക, പിന്നീട് ചോദ്യത്തിന് ഉത്തരം നൽകുന്ന പോയിന്റ് തിരഞ്ഞെടുക്കുക, രൂപാന്തരത്തിന്റെ തെറ്റായ വശം നോക്കുമ്പോൾ മാത്രമേ രണ്ട് ദിശകളും വ്യത്യസ്തമായി കാണൂ എന്ന് പ്രതീക്ഷിക്കുക.

അനുബന്ധ ലേഖനങ്ങൾ