Keamanan Sistem Informasi – Pengertian, Proses & Fungsi Traceroute Serta Implementasinya dalam Delphi


Bahasan Keamanan Sistem informasi kali ini adalah Pengertian, Proses & Fungsi Traceroute Serta Implementasinya dalam Delphi.

Pengertian Traceroute

Traceroute (Tracert) adalah perintah untuk menunjukkan rute yang dilewati paket untuk mencapai tujuan. Ini dilakukan dengan mengirim pesan Internet Control Message Protocol (ICMP) Echo Request Ke tujuan dengan nilai Time to Live yang semakin meningkat. Rute yang ditampilkan adalah daftar interface router (yang paling dekat dengan host) yang terdapat pada jalur antara host dan tujuan.

Proses Traceroute

Proses Traceroute

Proses Traceroute

Untuk mengetahui jalur yang ditempuh untuk mencapai suatu node, traceroute mengirimkan 3 buah paket probe tipe UDP dari port sumber berbeda, dengan TTL bernilai 1. Saat paket tersebut mencapai router next-hop, TTL paket akan dikurangi satu sehingga menjadi 0, dan router next-hop akan menolak paket UDP tersebut sembari mengirimkan paket ICMP Time-to-Live Exceeded ke node asal traceroute tersebut. Dengan cara ini, pengirim traceroute tahu alamat IP pertama dari jalur yang ditempuh.

Kemudian, sumber traceroute mengirimkan 3 buah paket UDP lagi dengan nilai TTL yang dinaikkan 1 (TTL = 2), sehingga router pertama di jalur menuju tujuan traceroute akan melewatkan paket UDP tersebut ke router selanjutnya. Router hop kedua akan melihat bahwa paket tersebut sudah expired (TTLnya jadi 1, setelah dikurangi oleh router pertama). Maka, seperti halnya router pertama, router tersebut akan mengirimkan paket ICMP Time-to-Live Exceeded ke sumber traceroute. Sekarang, sumber traceroute telah mengetahui hop kedua dari jalur menuju tujuan traceroute.

Sumber traceroute akan mengirimkan lagi paket UDP dengan TTL ditambah 1 (TTL = 3). Router hop ketiga akan membalas dengan paket ICMP Time-to-Live Exceeded ke sumber traceroute, sehingga sumber traceroute mengetahui alamat IP router hop ketiga. Proses ini akan diulang terus paket UDP yang dikirimkan mencapai alamat IP tujuan traceroute. Tiga buah paket UDP traceroute adalah jumlah paket default dari aplikasi traceroute. Inilah mengapa kita melihat tiga buah tampilan latensi saat melihat hasil traceroute yang dijalankan.

Tidak semua aplikasi traceroute menggunakan UDP. Windows menggunakan paket ICMP, sedangkan sejumlah aplikasi tertentu menggunakan paket TCP.

Cara menghitung latensi tiap hop adalah dengan mengukur selisih antara timestamp paket probe yang dikirimkan dengan timestamp dari paket ICMP TTL exceeded yang diterima. Router yang berada sepanjang jalur pengiriman tidak akan melakukan pemrosesan data timestamp. Dari cara ini, yang kita ketahui hanyalah waktu total pulang-pergi dari sumber ke router hop tertentu. Delay yang terjadi sepanjang perjalanan kembali ke sumber juga akan berpengaruh.

Kemudian, alamat IP dari interface manakah yang kita lihat dari hasil traceroute?

traceroute ingress

traceroute ingress

Alamat IP yang kita lihat dari hasil traceroute adalah IP dari interface ingress router. Sebenarnya, RFC 1812 menyebutkan bahwa sumber ICMP haruslah dari interface egress. Namun, hal ini akan menyebabkan hasil traceroute menjadi kacau.

Traceroute pada Windows

Cara Melakukan Traceroute :

  1. Klik Start –> Run
  2. Setelah muncul pop up lalu anda tinggal ketikkan –> CMD
  3. Lalu munculah gambar seperti di bawah ini , kemudian anda  tinggal ketikkan –> tracert (spasi) namadomainanda

Interpretasi DNS dari Hasil Traceroute

Dengan traceroute, kita dapat menganalisis informasi mengenai lokasi router, tipe dan kapasitas interface, tipe dan fungsi router, serta batas-batas network yang dilalui, berdasarkan DNS interface yang dilalui. IUntuk lebih memperjelas, berikut ini adalah contoh hasil traceroute kewww.berkeley.edu:

$ traceroute www.berkeley.edu
traceroute to amber.Berkeley.EDU (128.32.25.12), 30 hops max, 40 byte packets
1 203.130.216.2 (203.130.216.2) 137 ms 151 ms 151 ms
2 203.130.216.1 (203.130.216.1) 151 ms 137 ms 138 ms
3 192.168.8.49 (192.168.8.49) 137 ms 151 ms 151 ms
4 S12-0-11.kbl.surabaya.telkom.net.id (202.134.3.45) 192 ms 151 ms 151 ms
5 FE0-0-gw3.cibinong.telkom.net.id (202.134.3.134) 165 ms 151 ms 151 ms
6 hssi-gw3.hk.telkom.net.id (202.134.3.1) 659 ms 659 ms 645 ms
7 202.130.129.61 (202.130.129.61) 645 ms 687 ms 659 ms
8 321.ATM5-0-0.XR1.HKG2.ALTER.NET (210.80.3.1) 645 ms 659 ms 645 ms
9 POS1-0-0.TR1.HKG2.Alter.Net (210.80.48.21) 672 ms 646 ms 645 ms
10 384.ATM4-0.IR1.LAX12.Alter.Net (210.80.50.189) 838 ms 796 ms 796 ms
11 137.39.31.222 (137.39.31.222) 810 ms 852 ms 810 ms
12 122.at-5-1-0.TR1.LAX9.ALTER.NET (152.63.10.237) 824 ms 810 ms 810 ms
13 297.at-1-0-0.XR1.LAX9.ALTER.NET (152.63.112.237) 824 ms 838 ms 824 ms
14 191.ATM6-0.BR1.LAX9.ALTER.NET (152.63.113.9) 837 ms 797 ms 810 ms
15 acr1-loopback.Anaheim.cw.net (208.172.34.61) 810 ms 1071 ms 782 ms
16 acr1-loopback.SanFranciscosfd.cw.net (206.24.210.61) 783 ms 810 ms 769 ms
17 BERK-7507--BERK.POS.calren2.net (198.32.249.69) 810 ms 1126 ms 796 ms
18 pos1-0.inr-000-eva.Berkeley.EDU (128.32.0.89) 796 ms 824 ms 796 ms
19 pos5-0-0.inr-001-eva.Berkeley.EDU (128.32.0.66) 796 ms 783 ms 783 ms
20 fast1-0-0.inr-007-eva.Berkeley.EDU (128.32.0.7) 810 ms 810 ms 797 ms
21 f8-0.inr-100-eva.Berkeley.EDU (128.32.235.100) 797 ms 782 ms 769 ms
22 amber.Berkeley.EDU (128.32.25.12) 796 ms 769 ms 810 msTraceroute akan menampilkan titik-titik perantara yang menjembatani anda dan titik tujuan anda, ‘jembatan’ inilah yang biasa disebut dengan router, data yang andakirimkan akan meloncat melewati jembatan-jembatan ini. Ada tiga buah waktu yang menunjukkan berapa waktu yang dibutuhkan oleh paket tersebut untuk berjalan dari komputer anda ke router.Untuk dapat memahami seluruh data yang dihasilkan oleh traceroute tersebut, kita harus memahami bagaimana cara traceroute bekerja.

Berikut ini adalah contoh yang lebih kompleks dengan melakukan traceroute ke finland:

% traceroute www.hut.fi
traceroute to info-e.hut.fi (130.233.224.28), 30 hops max, 40-byte packets
1 203.130.216.2 (203.130.216.2) 137 ms 124 ms 137 ms
2 203.130.216.1 (203.130.216.1) 137 ms 124 ms 124 ms
3 192.168.8.49 (192.168.8.49) 137 ms 151 ms 151 ms
4 S12-0-11.kbl.surabaya.telkom.net.id (202.134.3.45) 192 ms 151 ms 151 ms
5 FE0-0-gw3.cibinong.telkom.net.id (202.134.3.134) 164 ms 165 ms 151 ms
6 hssi-gw3.hk.telkom.net.id (202.134.3.1) 673 ms 645 ms 645 ms
7 202.130.129.61 (202.130.129.61) 659 ms 646 ms 659 ms
8 321.ATM5-0-0.XR1.HKG2.ALTER.NET (210.80.3.1) 659 ms 645 ms 659 ms
9 POS1-0-0.TR1.HKG2.Alter.Net (210.80.48.21) 659 ms 632 ms 659 ms
10 284.ATM6-0.IR1.SAC2.Alter.Net (210.80.50.1) 797 ms 823 ms 797 ms
11 POS2-0.IR1.SAC1.ALTER.NET (137.39.31.190) 796 ms 1566 ms 810 ms
12 122.at-6-1-0.TR1.LAX9.ALTER.NET (152.63.10.218) 838 ms 823 ms 824 ms
13 297.at-2-0-0.XR1.SAC1.ALTER.NET (152.63.50.133) 933 ms 824 ms 838 ms
14 185.ATM5-0.BR4.SAC1.ALTER.NET (152.63.52.201) 810 ms 824 ms 851 ms
15 137.39.52.86 (137.39.52.86) 810 ms 1071 ms 810 ms
16 sl-bb21-ana-15-0.sprintlink.net (144.232.1.173) 769 ms (ttl=246!) 796 ms (ttl=246!) 783 ms (ttl=246!)
17 sl-bb20-pen-8-0.sprintlink.net (144.232.18.45) 893 ms 851 ms (ttl=245!) 893 ms
18 sl-bb22-pen-11-0.sprintlink.net (144.232.18.78) 893 ms (ttl=244!) 879 ms (ttl=244!) 879 ms (ttl=244!)
19 sl-bb10-nyc-9-0.sprintlink.net (144.232.7.1) 865 ms 879 ms 879 ms
20 sl-bb10-nyc-10-0.sprintlink.net (144.232.13.158) 879 ms 892 ms 893 ms
21 gblon505-tc-p6-3.ebone.net (195.158.229.46) 865 ms 879 ms 920 ms
22 bebru204-tc-p5-0.ebone.net (195.158.232.42) 961 ms 948 ms 934 ms
23 nlams303-tc-p1-0.ebone.net (195.158.225.86) 962 ms 961 ms 934 ms
24 dedus205-tc-p8-0.ebone.net (213.174.70.133) 934 ms 961 ms 947 ms
25 dkcop204-tb-p3-0.ebone.net (213.174.71.50) 975 ms 975 ms *
26 * * *
27 ne-gw.nordu.net (195.158.226.86) 1002 ms 962 ms 1016 ms
28 hutnet-gw.csc.fi (128.214.248.65) 1027 ms (ttl=238!) 1040 ms (ttl=238!) 1026 ms (ttl=238!)
29 hutnet-gw.hut.fi (193.166.43.253) 1020 ms 1037 ms 1023 ms
30 info-e.hut.fi (130.233.224.28) 1091 ms (ttl=46!) 1027 ms (ttl=46!) 1067 ms (ttl=46!) 

Baris pertama hanya menunjukkan apa yang akan dilakukan oleh traceroute yaitu melakukan
trace ke host yang bernama info-e.hut.fi dengan maksimum loncatan 30 dan besar paket
yang dikirimkan adalah 40 byte.

Hasilnya, paket tersebut melewati 30 router atau 30 kali loncatan. Loncatan yang pertama sampai kelima hanya memakan waktu sekitar 100-200 mili detik adalah loncatan dari komputer penulis ke jaringan milik Telkomnet di Indonesia. Pada loncatan ke enam, waktu yang diperlukan meningkat banyak sekali menjadi sekitar 650 mili detik, ini dikarenakan loncatan tersebut memang jauh, yaitu dari stasiun bumi Telkomnet yang ada di Cibinong ke gateway milik Telkomnet yang ada di Hongkong. Kadang waktu yang diperlukan meningkat banyak sekali karena jarak yang jauh atau jaringan yang dilewati memang sedang padat. Anda harus mencurigai titik-titik dimana waktu yang diperlukan menjadi besar sekali. Jika hal ini terjadi, anda dapat mengeceknya dengan melakukan ping ke router tersebut beberapa kali untuk melihat apakah paket yang kita kirimkan di drop, atau apakah ada variasi waktu yang besar. Kemudian pada loncatan ke 16 sampai 18 anda melihat (ttl=246!) di sebelah kolom waktu. Ini adalah indikasi dari trceroute bahwa TTL yang kembali tidak sesuai dengan sewaktu dikirimkan ini menunjukkan adanya asymmetric path, yaitu router yang dilewati paketsewaktu berangkat tidak sesuai dengan router yang dilewati sewaktu paket tersebutkembali. Tetapi hal itu adalah normal.

Tanda asterik pada loncatan ke 25 dan 26 menandakan bahwa traceroute tidak menerima  respon dari komputer tersebut, pada loncatan ke 26 kemungkinan dikarenakan router  tersebut tidak mengirimkan paket ICMP, sedangkan pada loncatan ke 25 kemungkinan adalah hasil dari paket ICMP yang dikirimkan oleh router tersebut hilang di perjalanan karena suatu sebab.

Dikombinasikan dengan ping, traceroute menjadi alat analisa jaringan yang baik dengan  melihat loncatan mana yang memakan waktu yang besar atau paket yang di drop, kita dapat menentukan dimana titik kritisnya. Kemudian dengan melakukan ping pada titik tersebut dan satu titik sebelumnya, kita dapat menemukan masalah yang ada dalam jaringan.

Impelementasi Traceroute menggunakan Delphi

Desain Form

Form Traceroute

Form Traceroute

unit fmTraceRouteMainU;

interface

uses
  {$IFDEF Linux}
  QGraphics, QControls, QForms, QDialogs, QStdCtrls, QComCtrls, QExtCtrls,
  QActnList,
  {$ELSE}
  Windows, Messages, Graphics, Controls, Forms, Dialogs, ComCtrls, ActnList,
  StdCtrls, Spin, ExtCtrls,
  {$ENDIF}
  SysUtils, Classes, IdBaseComponent, IdComponent, IdRawBase, IdRawClient, IdIcmpClient,
  IdAntiFreezeBase, IdAntiFreeze;

type
  TfmTracertMain = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    lbLog: TListBox;
    Label1: TLabel;
    Label2: TLabel;
    ActionList1: TActionList;
    edTarget: TEdit;
    seMaxHops: TSpinEdit;
    Button1: TButton;
    acGo: TAction;
    acResolve: TAction;
    acPing: TAction;
    acTrace: TAction;
    lvTrace: TListView;
    IdIcmpClient: TIdIcmpClient;
    IdAntiFreeze1: TIdAntiFreeze;
    Splitter1: TSplitter;
    Button2: TButton;
    acStop: TAction;
    procedure edTargetChange(Sender: TObject);
    procedure acResolveExecute(Sender: TObject);
    procedure acGoExecute(Sender: TObject);
    procedure acPingExecute(Sender: TObject);
    procedure acTraceExecute(Sender: TObject);
    procedure lvTraceCompare(Sender: TObject; Item1, Item2: TListItem;
      Data: Integer; var Compare: Integer);
    procedure acStopExecute(Sender: TObject);
  private
    { Private declarations }
    bResolved: Boolean;
    ResolvedHost: String;
    Stopped: Boolean;
    function PingHost(Host: string; TTL: Integer): boolean;
    function FindItem(TTL: Integer; Add: boolean): TListItem;
  public
    { Public declarations }
  end;

var
  fmTracertMain: TfmTracertMain;

implementation

uses idStack, IdException;
{$IFDEF Linux}{$R *.xfm}{$ELSE}{$R *.DFM}{$ENDIF}

procedure TfmTracertMain.edTargetChange(Sender: TObject);
begin
  bResolved := false;
end;

procedure TfmTracertMain.acResolveExecute(Sender: TObject);
begin
  bResolved := false;
  lbLog.Items.Append(Format('resolving %s',[edTarget.text]));
  try
    Application.ProcessMessages;
    ResolvedHost := gStack.WSGetHostByName(edTarget.text);
    bResolved := true;
    lbLog.Items.Append(format('%s resolved to %s',[edTarget.text, ResolvedHost]));
  except
    on e: EIdSocketError do
      lbLog.Items.text  := lbLog.Items.text + e.message;
  end;
end;

procedure TfmTracertMain.acGoExecute(Sender: TObject);
var
  saveCursor: TCursor;
begin
  saveCursor := Screen.Cursor;
  Screen.Cursor := crHourGlass;
  try
      Stopped := false;
      acGo.Enabled := false;
      acStop.enabled := true;
      acResolve.execute;
      if bResolved and not stopped then
      begin
        acPing.execute;
        if not stopped then
          acTrace.Execute;
      end;
      acGo.Enabled := true;
      acStop.enabled := false;
  finally
  	Screen.Cursor := saveCursor;
  end;  { try/finally }
end;

function TfmTracertMain.PingHost(Host: string; TTL: Integer): Boolean;
begin
  result := false;
  IdIcmpClient.Host := Host;
  IdIcmpClient.TTL := TTL;
  IdIcmpClient.ReceiveTimeout := 5000;
  IdIcmpClient.Ping;
  case IdIcmpClient.ReplyStatus.ReplyStatusType of
    rsEcho:
    begin
      lbLog.Items.Append(format('response from host %s in %d millisec.',
                                [
                                IdIcmpClient.ReplyStatus.FromIpAddress,
                                IdIcmpClient.ReplyStatus.MsRoundTripTime
                                ]));
      result := true;
    end;
    rsError:
      lbLog.Items.Append('Unknown error.');
    rsTimeOut:
      lbLog.Items.Append('Timed out.');
    rsErrorUnreachable:
      lbLog.Items.Append(format('Host %s reports destination network unreachable.',
                                [
                                IdIcmpClient.ReplyStatus.FromIpAddress
                                ]));
    rsErrorTTLExceeded:
      lbLog.Items.Append(format('Hope %d %s: TTL expired.',
                                [
                                IdIcmpClient.TTL,
                                IdIcmpClient.ReplyStatus.FromIpAddress
                                ]));
  end; // case
end;

procedure TfmTracertMain.acPingExecute(Sender: TObject);
begin
  PingHost(ResolvedHost, seMaxHops.value);
  Application.ProcessMessages;
end;

function TfmTracertMain.FindItem(TTL: Integer; Add: boolean): TListItem;
var
  i: Integer;
begin
  result := nil;
  // Find the TTL item
  if lvTrace.Items.Count < TTL Then
  begin
    for i := 0 to lvTrace.Items.Count - 1 do
    begin
      if StrToIntDef(lvTrace.Items[i].Caption, -1) = TTL then
      begin
        result := lvTrace.Items[i];
        Break;
      end;
    end;
  end;
  if not assigned( result ) then
  begin
    // Not found, add it
    result := lvTrace.Items.Add;
    result.Caption := IntToStr(TTL);
  end;
end;

procedure TfmTracertMain.acTraceExecute(Sender: TObject);
var
  TTL: Integer;
  Reached: boolean;
  aItem: TListItem;
begin
  TTL := 0;
  reached := false;
  lvTrace.Items.Clear;
  repeat
    inc(TTL);
    IdIcmpClient.Host := ResolvedHost;
    IdIcmpClient.TTL := TTL;
    IdIcmpClient.ReceiveTimeout := 5000;
    IdIcmpClient.Ping;
    aItem := FindItem(TTL, True);
    aItem.SubItems.Clear;
    case IdIcmpClient.ReplyStatus.ReplyStatusType of
      rsEcho:
      begin
        aItem.SubItems.Append(IdIcmpClient.ReplyStatus.FromIpAddress);
        aItem.SubItems.Append(format('Reached in : %d ms', [IdIcmpClient.ReplyStatus.MsRoundTripTime]));
        reached := true;
      end;
      rsError:
      begin
        aItem.SubItems.Append(IdIcmpClient.ReplyStatus.FromIpAddress);
        aItem.SubItems.Append('Unknown error.');
      end;
      rsTimeOut:
      begin
        aItem.SubItems.Append('?.?.?.?');
        aItem.SubItems.Append('Timed out.');
      end;
      rsErrorUnreachable:
      begin
        aItem.SubItems.Append(IdIcmpClient.ReplyStatus.FromIpAddress);
        aItem.SubItems.Append(format('Destination network unreachable', [IdIcmpClient.ReplyStatus.MsRoundTripTime]));
        break;
      end;
      rsErrorTTLExceeded:
      begin
        aItem.SubItems.Append(IdIcmpClient.ReplyStatus.FromIpAddress);
        aItem.SubItems.Append(format('TTL=%d', [IdIcmpClient.ReplyStatus.TimeToLive]));
      end;
    end; // case
    Application.ProcessMessages;
  until reached or (TTL > seMaxHops.value) or Stopped;
end;

procedure TfmTracertMain.lvTraceCompare(Sender: TObject; Item1,
  Item2: TListItem; Data: Integer; var Compare: Integer);
begin
  Compare := StrToIntDef(Item1.Caption, -1) - StrToIntDef(Item2.Caption, -1);
end;

procedure TfmTracertMain.acStopExecute(Sender: TObject);
begin
  Stopped := true;
  acStop.enabled := false;
end;

end.
About these ads

4 thoughts on “Keamanan Sistem Informasi – Pengertian, Proses & Fungsi Traceroute Serta Implementasinya dalam Delphi

  1. mas,saya mw nnya..kan max ttl buat windows tu 128..dan kalo lbh dari 128 maka request yang kita lakukan akan dihentikan,tpi pass saya coba ping ke facebook k’ ttl nya bisa dpt 255..mohon penjelasan mas :)

Berikan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Logout / Ubah )

Twitter picture

You are commenting using your Twitter account. Logout / Ubah )

Facebook photo

You are commenting using your Facebook account. Logout / Ubah )

Google+ photo

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s