Skip to content

🌐 The report of the 5th module practicum of my college's Computer Network subject

Notifications You must be signed in to change notification settings

zetsux/Jarkom-Modul-5-A07-2023

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 

Repository files navigation

Jarkom-Modul-5-A07-2023

Praktikum Jaringan Komputer Modul 5 Tahun 2023

Author

Nama NRP Github
Dimas Fadilah Akbar 5025211010 https://github.com/dimss113
Kevin Nathanael Halim 5025211140 https://github.com/zetsux

Laporan Resmi

Daftar Isi

Task A (Topologi)

Tugas pertama, buatlah peta wilayah sesuai berikut ini:

Keterangan: Richter adalah DNS Server, Revolte adalah DHCP Server, Sein dan Stark adalah Web Server, Jumlah Host pada SchwerMountain adalah 64, Jumlah Host pada LaubHills adalah 255, Jumlah Host pada TurkRegion adalah 1022, Jumlah Host pada GrobeForest adalah 512

NetWork Configuration

  • Aura
auto eth0
iface eth0 inet dhcp
up /sbin/iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source $(/sbin/ip -4 a show eth0 | /bin/grep -Po 'inet \K[0-9.]*')

auto eth1
iface eth1 inet static
	address 192.172.0.1
	netmask 255.255.255.252

auto eth2
iface eth2 inet static
	address 192.172.0.5
	netmask 255.255.255.252


  • Heiter
auto eth0
iface eth0 inet static
	address 192.172.0.2
	netmask 255.255.255.252
        up echo nameserver 192.168.122.1 > /etc/resolv.conf

auto eth1
iface eth1 inet static
	address 192.172.8.1
	netmask 255.255.248.0

auto eth2
iface eth2 inet static
	address 192.172.4.1
	netmask 255.255.252.0


  • Client (TurkRegion, GrobeForest, LaubHilss, SchwerMountain)
auto eth0
iface eth0 inet dhcp

  • Stark
auto eth0
iface eth0 inet static
	address 192.172.4.2
  gateway 192.172.4.1
	netmask 255.255.252.0
  up echo nameserver 192.168.122.1 > /etc/resolv.conf

  • Frieren

auto eth0
iface eth0 inet static
	address 192.172.0.6
	netmask 255.255.255.252
        up echo nameserver 192.168.122.1 > /etc/resolv.conf

auto eth1
iface eth1 inet static
	address 192.172.0.9
	netmask 255.255.255.252

auto eth2
iface eth2 inet static
	address 192.172.0.13
	netmask 255.255.255.252


  • Stark
auto eth0
iface eth0 inet static
	address 192.172.0.10
  gateway 192.172.0.9
	netmask 255.255.255.252
  up echo nameserver 192.168.122.1 > /etc/resolv.conf

  • Himmel

auto eth0
iface eth0 inet static
	address 192.172.0.14
	netmask 255.255.255.252
  up echo nameserver 192.168.122.1 > /etc/resolv.conf

auto eth1
iface eth1 inet static
	address 192.172.2.1
	netmask 255.255.254.0

auto eth2
iface eth2 inet static
	address 192.172.0.129
	netmask 255.255.255.128


  • Fern

auto eth0
iface eth0 inet static
	address 192.172.0.130
	netmask 255.255.255.128
  up echo nameserver 192.168.122.1 > /etc/resolv.conf

auto eth1
iface eth1 inet static
	address 192.172.0.17
	netmask 255.255.255.252

auto eth2
iface eth2 inet static
	address 192.172.0.21
	netmask 255.255.255.252


  • Ritcher

auto eth0
iface eth0 inet static
	address 192.172.0.18
        gateway 192.172.0.17
	netmask 255.255.255.252

  • Revolte

auto eth0
iface eth0 inet static
	address 192.172.0.22
  gateway 192.172.0.21
	netmask 255.255.255.252
  up echo nameserver 192.168.122.1 > /etc/resolv.conf

Task B (VLSM)

  • Subnetting Process

jarkom modul 5

  • Classless method untuk menentukan length netmask yang akan digunakan
image
  • Untuk menghitung rute-rute yang diperlukan, gunakan perhitungan dengan metode VLSM. Buat juga pohonnya, dan lingkari subnet yang dilewati.

jarkom modul 5 (1)

  • Pembagian IP hasil dari VLSM TREE
image

Task C (Routing)

Kemudian buatlah rute sesuai dengan pembagian IP yang kalian lakukan.

  • Routing di Aura
# Routing Ke Frieren
# route add -net <NID subnet> netmask <netmask> gw <IP gateway>
# A5
route add -net 192.172.0.8 netmask 255.255.255.252 gw 192.172.0.6
# A6
route add -net 192.172.0.12 netmask 255.255.255.252 gw 192.172.0.6
# A7
route add -net 192.172.2.0 netmask 255.255.254.0 gw 192.172.0.6
# A8
route add -net 192.172.0.128 netmask 255.255.255.128 gw 192.172.0.6
# A9
route add -net 192.172.0.16 netmask 255.255.255.252 gw 192.172.0.6
# A10
route add -net 192.172.0.20 netmask 255.255.255.252 gw 192.172.0.6


# Routing ke Heiter
# A2
route add -net 192.172.8.0 netmask 255.255.248.0 gw 192.172.0.2
# A3
route add -net 192.172.4.0 netmask 255.255.252.0 gw 192.172.0.2


  • Routing di Fern
# Backrouting
route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.172.0.129


  • Routing di Frieren

# Ke Himmel
# Backrouting
route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.172.0.5
# A7
route add -net 192.172.2.0 netmask 255.255.254.0 gw 192.172.0.14
# A8
route add -net 192.172.0.128 netmask 255.255.255.128 gw 192.172.0.14
# A9
route add -net 192.172.0.16 netmask 255.255.255.252 gw 192.172.0.14
# A10
route add -net 192.172.0.20 netmask 255.255.255.252 gw 192.172.0.14

  • Routing di Heiter

# Backrouting
route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.172.0.1


  • Routing di Himmel

# Backrouting
route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.172.0.13
# A9
route add -net 192.172.0.16 netmask 255.255.255.252 gw 192.172.0.130
# A10
route add -net 192.172.0.20 netmask 255.255.255.252 gw 192.172.0.130

  • Test ping hasil Routing (Dari Fern ke Heiter)
image

Task D (DHCP)

Tugas berikutnya adalah memberikan ip pada subnet SchwerMountain, LaubHills, TurkRegion, dan GrobeForest menggunakan bantuan DHCP.

  • Configure DHCP Server di Revolte

apt-get update -y

apt-get install isc-dhcp-server -y

echo "
INTERFACES=\"eth0\"
" > /etc/default/isc-dhcp-server

echo "

default-lease-time 28800;
max-lease-time 57600;

ddns-update-style none;


subnet 192.172.0.20 netmask 255.255.255.252 {
    option routers 192.172.0.21;
    option broadcast-address 192.172.0.23;
    option domain-name-servers 192.168.122.1;
}

# Turk Region
subnet 192.172.8.0 netmask 255.255.248.0 {
    range 192.172.8.0 192.172.15.254;
    option routers 192.172.8.1;
    option broadcast-address 192.172.15.255;
    option domain-name-servers 192.168.122.1;
}

# Grobe Forest
subnet 192.172.4.0 netmask 255.255.252.0 {
    range 192.172.4.1 192.172.7.254;
    option routers 192.172.4.1;
    option broadcast-address 192.172.7.255;
    option domain-name-servers 192.168.122.1;
}

# LaubHilss
subnet 192.172.2.0 netmask 255.255.254.0 {
    range 192.172.2.0 192.172.3.254;
    option routers 192.172.2.1;
    option broadcast-address 192.172.3.255;
    option domain-name-servers 192.168.122.1;
}

# SchwerMountain
subnet 192.172.0.128 netmask 255.255.255.128 {
    range 192.172.0.129 192.172.0.254;
    option routers 192.172.0.129;
    option broadcast-address 192.172.0.255;
    option domain-name-servers 192.168.122.1;
}

" > /etc/dhcp/dhcpd.conf

rm /var/run/dhcpd.pid

service isc-dhcp-server restart
service isc-dhcp-server status

  • Configure DHCP Relay di Himmel dan Heiter

apt-get update

apt-get install isc-dhcp-relay -y

echo '
SERVERS="192.172.0.22"
INTERFACES="eth0 eth1 eth2"
OPTIONS=""
' > /etc/default/isc-dhcp-relay

echo '
net.ipv4.ip_forward=1
' > /etc/sysctl.conf

service isc-dhcp-relay restart

  • DHPC Result LaubHilss
image
  • DHCP Result SchwerMountain
image
  • DHCP Result Turk Region
image
  • DHCP Result GrobeForest
image

Soal 1

Agar topologi yang kalian buat dapat mengakses keluar, kalian diminta untuk mengkonfigurasi Aura menggunakan iptables, tetapi tidak ingin menggunakan MASQUERADE.

  • Tambahkan iptables berikut pada Aura
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source $(/sbin/ip -4 a show eth0 | /bin/grep -Po 'inet \K[0-9.]*')

Tujuan dari iptables berikut yaitu untuk mengganti IP dari source packet yang akan keluar melalui interface eth0 Aura menuju keluar NAT. command $(/sbin/ip -4 a show eth0 | /bin/grep -Po 'inet \K[0-9.]*') digunakan untuk mendapatkan IP eth0 dari router Aura.

image
  • Test ping dengan google
image

Soal 2

Kalian diminta untuk melakukan drop semua TCP dan UDP kecuali port 8080 pada TCP.

  • Configure iptables berikut pada client
iptables -F
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp -j DROP
iptables -A INPUTΒ -pΒ udpΒ -jΒ DROP

  • Test TCP connection menggunakan telnet dengan port selain 8080
image
  • Test TCP connection menggunakan telnet dengan port 8080
image
  • Test UDP connection using nc

Soal 3

Kepala Suku North Area meminta kalian untuk membatasi DHCP dan DNS Server hanya dapat dilakukan ping oleh maksimal 3 device secara bersamaan, selebihnya akan di drop.

  • Tambahkan iptables berikut pada DHCP server dan DNS server
#No 3
iptables -F
iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 3/second -j ACCEPT 
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP


maka hanya akan bisa di ping tiap detiknya oleh maksimal 3 node.

Soal 4

Lakukan pembatasan sehingga koneksi SSH pada Web Server hanya dapat dilakukan oleh masyarakat yang berada pada GrobeForest.

Scripts

  • Range IP dari subnet warga GrobeForest adalah 192.172.4.1 - 192.172.7.254

  • Buat sebuah file .sh di kedua web server (Sein & Stark), sebut saja iptables.sh yang menyimpan script untuk menambahkan iptables rules sebagai berikut,

    iptables -A INPUT -p tcp --dport 22 -m iprange --src-range 192.172.4.1-192.172.7.254  -j ACCEPT
    iptables -A OUTPUT -p tcp --sport 22 -m iprange --dst-range 192.172.4.1-192.172.7.254 -j ACCEPT
    iptables -A INPUT -p tcp --dport 22 -j DROP
    iptables -A OUTPUT -p tcp --sport 22 -j DROP

    Penjelasan

    • Yang dilakukan oleh baris ke-3 dan ke-4 adalah melakukan DROP terhadap semua request INPUT yang diarahkan ke port 22 (TCP) dan OUTPUT yang berasal dari port 22 (TCP), yaitu port default SSH
    • Kemudian ditambahkan rules pada baris ke-1 dan ke-2 untuk menerima request serupa hanya bila range ip tujuan merupakan bagian dari subnet warga GrobeForest untuk INPUT dan range ip asal merupakan bagian dari subnet warga GrobeForest untuk OUTPUT

Bukti

  • Setelah melakukan run pada script di atas, maka dapat dilakukan pembuktian dengan melakukan SSH dari GrobeForest ke web server sebagai berikut,

    • Stark (192.172.0.10) :
      image

    • Sein (192.172.4.2) :
      image

      Note : Didapatkan response "Connection refused" dikarenakan belum terdapat service ssh yang di-enable. Untuk sekedar testing apakah ssh berhasil atau tidak sebenarnya cukup sekian, tetapi bila ingin melakukan SSH yang sebenarnya maka dapat dilakukan install terhadap openssh-server dan diikuti service ssh start.

  • Bila dilakukan dari warga dari subnet client lain, maka akan sebagai berikut

    • Stark (192.172.0.10) :
      image

    • Sein (192.172.4.2) :
      image

      Note : Keluaran bukan kosong melainkan proses terus berjalan tanpa henti hingga di-terminate karena server ssh tidak dapat diraih.

Soal 5

Selain itu, akses menuju WebServer hanya diperbolehkan saat jam kerja yaitu Senin-Jumat pada pukul 08.00-16.00.

Scripts

Pada iptables.sh di kedua web server (Sein & Stark), tambahkan script untuk menambahkan iptables rules di atas script untuk no. 4 sebagai berikut,

iptables -A INPUT -m time --weekdays Sat,Sun -j DROP
iptables -A INPUT -p all -m time --timestart 16:00 --timestop 23:59:59 -j DROP
iptables -A INPUT -p all -m time --timestart 00:00 --timestop 08:00 -j DROP

Penjelasan

  • Baris ke-2 dan ke-3 melakukan DROP terhadap semua request INPUT di luar dari range waktu yang diinginkan (08:00 - 16:00), yakni sebelum jam 8 pagi (00:00 - 08:00) dan sesudah jam 4 sore (16:00 - 23:59:59)
  • Baris ke-1 melakukan DROP terhadap semua request INPUT di luar hari kerja (Senin - Jumat), yakni pada hari Sabtu dan Minggu

Bukti

  • Sebelum itu perlu dipastikan waktu terkini dengan command date, hasilnya sebagai berikut,
    image

  • Karena waktu masih masuk di hari kerja dan jam kerja, maka waktu harus diatur terlebih dahulu ke hari lain. Untuk membuktikan di hari weekend maka waktu diset ke hari Minggu pukul 10:00 menggunakan command date -s "17 dec 2023 10:00". Bila dilakukan tes dengan ping pada Sein diperoleh hasil sebagai berikut,

    • Sebelum ditambahkan iptables rules,
      image

    • Setelah ditambahkan iptables rules,
      image

  • Untuk pembuktian jam kerja, maka waktu diatur ke hari kerja dengan jam di luar jam kerja dengan command date -s "18 dec 2023 20:00". Bila dilakukan tes dengan ping pada Stark diperoleh hasil sebagai berikut,

    • Sebelum ditambahkan iptables rules,
      image

    • Setelah ditambahkan iptables rules,
      image

Soal 6

Lalu, karena ternyata terdapat beberapa waktu di mana network administrator dari WebServer tidak bisa stand by, sehingga perlu ditambahkan rule bahwa akses pada hari Senin - Kamis pada jam 12.00 - 13.00 dilarang (istirahat maksi cuy) dan akses di hari Jumat pada jam 11.00 - 13.00 juga dilarang (maklum, Jumatan rek).

Scripts

Pada iptables.sh di kedua web server (Sein & Stark), tambahkan script untuk menambahkan iptables rules di atas script untuk no. 5 sebagai berikut,

iptables -A INPUT -m time --timestart 12:00 --timestop 13:00 --weekdays Mon,Tue,Wed,Thu -j DROP
iptables -A INPUT -m time --timestart 11:00 --timestop 13:00 --weekdays Fri -j DROP

Penjelasan

  • Baris ke-1 melakukan DROP terhadap semua request INPUT di hari Senin - Kamis pada jam makan siang (12:00 - 13:00)
  • Baris ke-2 melakukan DROP terhadap semua request INPUT di hari Jumat pada jam jumatan (11:00 - 13:00)

Bukti

  • Untuk pembuktian di jam makan siang, maka waktu diset ke hari Senin pukul 12:30 menggunakan command date -s "18 dec 2023 12:30". Bila dilakukan tes dengan ping pada Sein diperoleh hasil sebagai berikut,

    • Sebelum ditambahkan iptables rules,
      image

    • Setelah ditambahkan iptables rules,
      image

  • Untuk pembuktian di jam jumatan, maka waktu diatur ke hari Jumat pada jam 12:30 dengan command date -s "15 dec 2023 12:30". Bila dilakukan tes dengan ping pada Stark diperoleh hasil sebagai berikut,

    • Sebelum ditambahkan iptables rules,
      image

    • Setelah ditambahkan iptables rules,
      image

Soal 7

Karena terdapat 2 WebServer, kalian diminta agar setiap client yang mengakses Sein dengan Port 80 akan didistribusikan secara bergantian pada Sein dan Stark secara berurutan dan request dari client yang mengakses Stark dengan port 443 akan didistribusikan secara bergantian pada Sein dan Stark secara berurutan.

Scripts

Pada iptables.sh di router-router yang berkaitan dengan client (Heiter & Himmel), tambahkan script untuk menambahkan iptables rules sebagai berikut,

iptables -A PREROUTING -t nat -p tcp --dport 80 -d 192.172.4.2 -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination 192.172.0.10:80
iptables -A PREROUTING -t nat -p tcp --dport 443 -d 192.172.0.10 -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination 192.172.4.2:443

Penjelasan

  • Baris ke-1 melakukan pengalihan request yang diarahkan ke IP Sein (192.172.4.2) pada port 80 agar secara bergantian diarahkan kesana dan juga ke Stark (192.172.0.10) pada port yang sama
  • Baris ke-2 melakukan pengalihan request yang diarahkan ke IP Stark (192.172.0.10) pada port 443 agar secara bergantian diarahkan kesana dan juga ke Sein (192.172.4.2) pada port yang sama

Bukti

  • Sebelum pembuktian lakukan instalasi netcat pada semua web server dan client

  • Untuk pembuktian di port 80, kita bisa jalankan script while true; do nc -l -p 80 -c 'echo "stark"'; done pada Stark dan script while true; do nc -l -p 80 -c 'echo "sein"'; done pada Sein. Bila dilakukan tes dengan nc 192.172.4.2 80 pada client (sebagai contoh digunakan LaubHills, TurkRegion, dan SchwerMountain) dan akan diperoleh hasil sebagai berikut,

    • LaubHills :
      image

    • TurkRegion :
      image

    • SchwerMountain :
      image

  • Untuk pembuktian di port 443, kita bisa jalankan script while true; do nc -l -p 443 -c 'echo "stark"'; done pada Stark dan script while true; do nc -l -p 443 -c 'echo "sein"'; done pada Sein. Bila dilakukan tes dengan nc 192.172.0.10 443 pada client (sebagai contoh digunakan LaubHills dan TurkRegion) dan akan diperoleh hasil sebagai berikut,

    • LaubHills :
      image

    • TurkRegion :
      image

    • SchwerMountain :
      image

Soal 8

Karena berbeda koalisi politik, maka subnet dengan masyarakat yang berada pada Revolte dilarang keras mengakses WebServer hingga masa pencoblosan pemilu kepala suku 2024 berakhir. Masa pemilu (hingga pemungutan dan penghitungan suara selesai) kepala suku bersamaan dengan masa pemilu Presiden dan Wakil Presiden Indonesia 2024.

Scripts

Pada iptables.sh di kedua web server (Sein & Stark), tambahkan script untuk menambahkan iptables rules di atas script untuk no. 6 sebagai berikut,

iptables -A INPUT -m time --datestart "2023-10-19T00:00:00" --datestop "2024-6-28T00:00:00" -m iprange --src-range 192.172.0.21-192.172.0.24 -j DROP

Penjelasan

  • Melakukan DROP terhadap semua request INPUT selama masa pemilu yakni diawali dari tanggal 19 November 2023 pukul 00:00 hingga tanggal 28 Juni 2024 pukul 00:00 (tanggal selesai perhitungan suara putaran kedua) untuk IP yang adalah bagian dari subnet Revolte yakni di antara 192.172.0.21 - 192.172.0.24

Bukti

  • Untuk pembuktian, maka waktu diset ke hari Jumat, 15 Desember 2023 pada pukul 10:00 menggunakan command `date -s "15 dec 2023 10:00" Bila dilakukan tes dengan ping dari Revolte pada Stark & Sein diperoleh hasil sebagai berikut,

    • Stark (192.172.0.10) :

      • Sebelum ditambahkan iptables rules,
        image

      • Setelah ditambahkan iptables rules,
        image

    • Sein (192.172.4.2) :

      • Sebelum ditambahkan iptables rules,
        image

      • Setelah ditambahkan iptables rules,
        image

Soal 9

Sadar akan adanya potensial saling serang antar kubu politik, maka WebServer harus dapat secara otomatis memblokir alamat IP yang melakukan scanning port dalam jumlah banyak (maksimal 20 scan port) di dalam selang waktu 10 menit. (clue: test dengan nmap)

Scripts

Pada iptables.sh di kedua web server (Sein & Stark), tambahkan script untuk menambahkan iptables rules di antara script no. 4 dan 5 sebagai berikut,

iptables -N PORTSCAN
iptables -A INPUT -m recent --name portscan --update --seconds 600 --hitcount 20 -j DROP
iptables -A FORWARD -m recent --name portscan --update --seconds 600 --hitcount 20 -j DROP
iptables -A INPUT -m recent --name portscan --set -j ACCEPT
iptables -A FORWARD -m recent --name portscan --set -j ACCEPT

Penjelasan

  • Melakukan DROP terhadap IP yang melakukan portscan / request INPUT maupun FORWARD lebih dari 20x hit dalam waktu 10 menit

Bukti

  • Untuk pembuktian, sebenarnya dapat dilakukan dengan nmap. Akan tetapi, akan lebih cepat bila menggunakan ping seperti biasa dan dilihat apakah setelah 20x ping masih dapat berjalan atau tidak. Contohnya dilakukan dari GrobeForest sebagai berikut,

    • Stark (192.172.0.10) :
      image

    • Sein (192.172.4.2) :
      image

Soal 10

Karena kepala suku ingin tau paket apa saja yang di-drop, maka di setiap node server dan router ditambahkan logging paket yang di-drop dengan standard syslog level.

Scripts

Pada iptables.sh di semua router dan server, tambahkan script untuk menambahkan iptables rules di atas script untuk no. 6 sebagai berikut,

service rsyslog restart
iptables -A INPUT -j LOG --log-prefix "Dropped: " --log-level debug -m limit --limit 1/second

Penjelasan

  • Baris ke-2 melakukan logging setiap kali terdapat input dengan prefix Dropped yang menggunakan log level debug dengan limit 1 per detik
  • Baris ke-1 menyalakan service rsyslog yang diperlukan untuk proses logging pada /var/log/syslog

About

🌐 The report of the 5th module practicum of my college's Computer Network subject

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published