ngrep - Linux-നുള്ള ഒരു നെറ്റ്uവർക്ക് പാക്കറ്റ് അനലൈസർ


Ngrep (നെറ്റ്uവർക്ക് grep) ലളിതവും എന്നാൽ ശക്തവുമായ ഒരു നെറ്റ്uവർക്ക് പാക്കറ്റ് അനലൈസർ ആണ്. ഇത് നെറ്റ്uവർക്ക് ലെയറിലേക്ക് പ്രയോഗിക്കുന്ന ഗ്രെപ്പ് പോലെയുള്ള ഉപകരണമാണ് - ഇത് ഒരു നെറ്റ്uവർക്ക് ഇന്റർഫേസിലൂടെയുള്ള ട്രാഫിക്കുമായി പൊരുത്തപ്പെടുന്നു. പാക്കറ്റുകളുടെ ഡാറ്റാ പേലോഡുകളുമായി (യഥാർത്ഥ വിവരങ്ങളോ സന്ദേശമോ, എന്നാൽ സ്വയമേവ സൃഷ്ടിക്കപ്പെട്ട മെറ്റാഡാറ്റയോ അല്ല) പൊരുത്തപ്പെടുത്തുന്നതിന് വിപുലീകൃത റെഗുലർ അല്ലെങ്കിൽ ഹെക്സാഡെസിമൽ എക്സ്പ്രഷൻ വ്യക്തമാക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു.

ഈ ടൂൾ IPv4/6, TCP, UDP, ICMPv4/6, IGMP കൂടാതെ നിരവധി ഇന്റർഫേസുകളിൽ റോ ഉൾപ്പെടെയുള്ള വിവിധ തരം പ്രോട്ടോക്കോളുകൾക്കൊപ്പം പ്രവർത്തിക്കുന്നു. tcpdump പാക്കറ്റ് സ്നിഫിംഗ് ടൂളിന്റെ അതേ രീതിയിലാണ് ഇത് പ്രവർത്തിക്കുന്നത്.

കാണിച്ചിരിക്കുന്നതുപോലെ പാക്കേജ് മാനേജ്മെന്റ് ടൂൾ ഉപയോഗിച്ച് മുഖ്യധാരാ ലിനക്സ് വിതരണങ്ങളിലെ ഡിഫോൾട്ട് സിസ്റ്റം റിപ്പോസിറ്ററികളിൽ നിന്നും ഇൻസ്റ്റോൾ ചെയ്യുന്നതിനായി പാക്കേജ് ngrep ലഭ്യമാണ്.

$ sudo apt install ngrep
$ sudo yum install ngrep
$ sudo dnf install ngrep

ngrep ഇൻസ്റ്റാൾ ചെയ്ത ശേഷം, ഇനിപ്പറയുന്ന ഉദാഹരണങ്ങൾ ഉപയോഗിച്ച് നിങ്ങളുടെ Linux നെറ്റ്uവർക്കിലെ ട്രാഫിക് വിശകലനം ചെയ്യാൻ നിങ്ങൾക്ക് കഴിയും.

1. ഡിഫോൾട്ട് വർക്കിംഗ് ഇന്റർഫേസിലെ എല്ലാ പിംഗ് അഭ്യർത്ഥനകളും പൊരുത്തപ്പെടുത്താൻ ഇനിപ്പറയുന്ന കമാൻഡ് നിങ്ങളെ സഹായിക്കും. നിങ്ങൾ മറ്റൊരു ടെർമിനൽ തുറന്ന് മറ്റൊരു റിമോട്ട് മെഷീൻ പിംഗ് ചെയ്യാൻ ശ്രമിക്കേണ്ടതുണ്ട്. -q ഫ്ലാഗ്, പാക്കറ്റ് ഹെഡറുകളും അവയുടെ പേലോഡുകളും ഒഴികെയുള്ള വിവരങ്ങളൊന്നും ഔട്ട്uപുട്ട് ചെയ്യാതിരിക്കാൻ, നിശബ്ദമായി പ്രവർത്തിക്കാൻ ngrep-നോട് പറയുന്നു.

$ sudo ngrep -q '.' 'icmp'

interface: enp0s3 (192.168.0.0/255.255.255.0)
filter: ( icmp ) and ((ip || ip6) || (vlan && (ip || ip6)))
match: .

I 192.168.0.104 -> 192.168.0.103 8:0
  ]...~oG[....j....................... !"#$%&'()*+,-./01234567                                                                                                             

I 192.168.0.103 -> 192.168.0.104 0:0
  ]...~oG[....j....................... !"#$%&'()*+,-./01234567                                                                                                             

I 192.168.0.104 -> 192.168.0.103 8:0
  ]....oG[............................ !"#$%&'()*+,-./01234567                                                                                                             

I 192.168.0.103 -> 192.168.0.104 0:0
  ]....oG[............................ !"#$%&'()*+,-./01234567  

ഇത് അവസാനിപ്പിക്കാൻ നിങ്ങൾക്ക് Ctrl + C അമർത്താം.

2. ഒരു പ്രത്യേക ലക്ഷ്യസ്ഥാന സൈറ്റിലേക്ക് പോകുന്ന ട്രാഫിക്കുമായി മാത്രം പൊരുത്തപ്പെടുന്നതിന്, ഉദാഹരണത്തിന് 'google.com', ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുക, തുടർന്ന് ഒരു ബ്രൗസറിൽ നിന്ന് അത് ആക്uസസ് ചെയ്യാൻ ശ്രമിക്കുക.

$ sudo ngrep -q '.' 'host google.com'

interface: enp0s3 (192.168.0.0/255.255.255.0)
filter: ( host google.com ) and ((ip || ip6) || (vlan && (ip || ip6)))
match: .

T 172.217.160.174:443 -> 192.168.0.103:54008 [AP]
  ..................;.(...RZr..$....s=..l.Q+R.U..4..g.j..I,.l..:{y.a,....C{5>[email                                                                        

T 172.217.160.174:443 -> 192.168.0.103:54008 [AP]
  .............l.......!,0hJ....0.%F..!...l|.........PL..X...t..T.2DC..... ..y...~Y;[email 

3. നിങ്ങൾ വെബിൽ സർഫിംഗ് നടത്തുകയാണെങ്കിൽ, നിങ്ങളുടെ ബ്രൗസർ അഭ്യർത്ഥിക്കുന്ന ഫയലുകൾ നിരീക്ഷിക്കാൻ ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുക:

$ sudo ngrep -q '^GET .* HTTP/1.[01]'

interface: enp0s3 (192.168.0.0/255.255.255.0)
filter: ((ip || ip6) || (vlan && (ip || ip6)))
match: ^GET .* HTTP/1.[01]

T 192.168.0.104:43040 -> 172.217.160.174:80 [AP]
  GET / HTTP/1.1..Host: google.com..User-Agent: Links (2.13; Linux 4.17.6-1.el7.elrepo.x86_64 x86_64; 
  GNU C 4.8.5; text)..Accept: */*..Accept-Language: en,*;q=0.1..Accept-
  Encoding: gzip, deflate, bzip2..Accept-Charset: us-ascii,ISO-8859-1,ISO-8859-2,ISO-8859-3,ISO-8859-4,
  ISO-8859-5,ISO-8859-6,ISO-8859-7,ISO-8859-8,ISO-8859-9,ISO-8859-10,I
  SO-8859-13,ISO-8859-14,ISO-8859-15,ISO-8859-16,windows-1250,windows-1251,windows-1252,windows-1256,
  windows-1257,cp437,cp737,cp850,cp852,cp866,x-cp866-u,x-mac,x-mac-ce,x-
  kam-cs,koi8-r,koi8-u,koi8-ru,TCVN-5712,VISCII,utf-8..Connection: keep-alive.... 

4. എല്ലാ ആക്റ്റിവിറ്റി ക്രോസിംഗ് സോഴ്സ് അല്ലെങ്കിൽ ഡെസ്റ്റിനേഷൻ പോർട്ട് 25 (SMTP) കാണുന്നതിന്, ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

$ sudo ngrep port 25

5. \പിശക് എന്ന വാക്ക് ഉണ്ടാകുന്നതിനായി ഏതെങ്കിലും നെറ്റ്uവർക്ക് അടിസ്ഥാനമാക്കിയുള്ള സിസ്uലോഗ് ട്രാഫിക് നിരീക്ഷിക്കുന്നതിന്, ഇനിപ്പറയുന്ന കമാൻഡ് ഉപയോഗിക്കുക.

 
$ sudo ngrep -d any 'error' port 514

പ്രധാനമായി, ഈ ടൂളിന് \/etc/services (Linux പോലുള്ള Unix പോലുള്ള സിസ്റ്റങ്ങളിൽ) സംഭരിച്ചിരിക്കുന്ന സർവീസ് പോർട്ട് നാമങ്ങളെ പോർട്ട് നമ്പറുകളിലേക്ക് പരിവർത്തനം ചെയ്യാൻ കഴിയും. ഈ കമാൻഡ് മുകളിലെ കമാൻഡിന് തുല്യമാണ്.

$ sudo ngrep -d any 'error' port syslog

6. നിങ്ങൾക്ക് ഒരു HTTP സെർവറിനെതിരെ (പോർട്ട് 80) ngrep പ്രവർത്തിപ്പിക്കാനും കഴിയും, ഇത് കാണിച്ചിരിക്കുന്നതുപോലെ ലക്ഷ്യസ്ഥാന ഹോസ്റ്റിലേക്കുള്ള എല്ലാ അഭ്യർത്ഥനകളുമായും പൊരുത്തപ്പെടും.

$ sudo ngrep port 80

interface: eth0 (64.90.164.72/255.255.255.252)
filter: ip and ( port 80 )
####
T 67.169.59.38:42167 -> 64.90.164.74:80 [AP]
  GET / HTTP/1.1..User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i
  686) Opera 7.21  [en]..Host: www.darkridge.com..Accept: text/html, applicat
  ion/xml;q=0.9, application/xhtml+xml;q=0.9, image/png, image/jpeg, image/gi
  f, image/x-xbitmap, */*;q=0.1..Accept-Charset: iso-8859-1, utf-8, utf-16, *
  ;q=0.1..Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0..Cookie: SQ
  MSESSID=5272f9ae21c07eca4dfd75f9a3cda22e..Cookie2: $Version=1..Connection:
  Keep-Alive, TE..TE: deflate, gzip, chunked, identity, trailers....
##

മുകളിലെ ഔട്ട്uപുട്ടിൽ നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, എല്ലാ HTTP ഹെഡർ ട്രാൻസ്മിഷനുകളും അവയുടെ വിശദാംശങ്ങളിൽ പ്രദർശിപ്പിച്ചിരിക്കുന്നു. എന്നിരുന്നാലും പാഴ്uസ് ചെയ്യുന്നത് ബുദ്ധിമുട്ടാണ്, അതിനാൽ നിങ്ങൾ -W ബൈലൈൻ മോഡ് പ്രയോഗിക്കുമ്പോൾ എന്താണ് സംഭവിക്കുന്നതെന്ന് നോക്കാം.

$ sudo ngrep -W byline port 80

interface: eth0 (64.90.164.72/255.255.255.252)
filter: ip and ( port 80 )
####
T 67.169.59.38:42177 -> 64.90.164.74:80 [AP]
GET / HTTP/1.1.
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; X11; Linux i686) Opera ...
Host: www.darkridge.com.
Accept: text/html, application/xml;q=0.9, application/xhtml+xml;q=0.9 ...
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1.
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0.
Cookie: SQMSESSID=5272f9ae21c07eca4dfd75f9a3cda22e.
Cookie2: $Version=1.
Cache-Control: no-cache.
Connection: Keep-Alive, TE.
TE: deflate, gzip, chunked, identity, trailers.

7. ഒരു പാക്കറ്റ് പൊരുത്തപ്പെടുത്തുമ്പോഴെല്ലാം YYYY/MM/DD HH:MM:SS.UUUUUU എന്ന രൂപത്തിൽ ഒരു ടൈംസ്റ്റാമ്പ് പ്രിന്റ് ചെയ്യാൻ, -t ഫ്ലാഗ് ഉപയോഗിക്കുക.

$ sudo ngrep -t -W byline port 80

interface: enp0s3 (192.168.0.0/255.255.255.0)
filter: ( port 80 ) and ((ip || ip6) || (vlan && (ip || ip6)))
####
T 2018/07/12 16:33:19.348084 192.168.0.104:43048 -> 172.217.160.174:80 [AP]
GET / HTTP/1.1.
Host: google.com.
User-Agent: Links (2.13; Linux 4.17.6-1.el7.elrepo.x86_64 x86_64; GNU C 4.8.5; text).
Accept: */*.
Accept-Language: en,*;q=0.1.
Accept-Encoding: gzip, deflate, bzip2.
Accept-Charset: us-ascii,ISO-8859-1,ISO-8859-2,ISO-8859-3,ISO-8859-4,ISO-8859-5,utf-8.
Connection: keep-alive.

8. നിരീക്ഷിക്കപ്പെടുന്ന ഇന്റർഫേസ് പ്രോമിസ്uക്യൂസ് മോഡിലേക്ക് ഇടുന്നത് ഒഴിവാക്കുന്നതിന് (അത് ഓരോ നെറ്റ്uവർക്ക് പാക്കറ്റും പൂർണ്ണമായി തടഞ്ഞ് വായിക്കുന്നിടത്ത്), -p ഫ്ലാഗ് ചേർക്കുക.

$ sudo ngrep -p -W byline port 80

9. മറ്റൊരു പ്രധാന ഓപ്ഷൻ -N ആണ്, നിങ്ങൾ അസംസ്കൃത അല്ലെങ്കിൽ അജ്ഞാതമായ പ്രോട്ടോക്കോളുകൾ നിരീക്ഷിക്കുകയാണെങ്കിൽ ഇത് ഉപയോഗപ്രദമാണ്. സിംഗിൾ ക്യാരക്ടർ ഐഡന്റിഫയറിനൊപ്പം സബ് പ്രോട്ടോക്കോൾ നമ്പർ പ്രദർശിപ്പിക്കാൻ ഇത് ngrep-നോട് പറയുന്നു.

$ sudo ngrep -N -W byline

കൂടുതൽ വിവരങ്ങൾക്ക്, ngrep man പേജ് കാണുക.

$ man ngrep

ngrep Github ശേഖരം: https://github.com/jpr5/ngrep

അത്രയേയുള്ളൂ! Ngrep (നെറ്റ്uവർക്ക് grep) അതേ ഫാഷൻ tcpdump-ൽ BPF ഫിൽട്ടർ ലോജിക് മനസ്സിലാക്കുന്ന ഒരു നെറ്റ്uവർക്ക് പാക്കറ്റ് അനലൈസർ ആണ്. അഭിപ്രായ വിഭാഗത്തിൽ ngrep-നെക്കുറിച്ചുള്ള നിങ്ങളുടെ ചിന്തകൾ അറിയാൻ ഞങ്ങൾ ആഗ്രഹിക്കുന്നു.