Laporan Resmi Praktikum Jaringan Komputer Modul 5
Nama | NRP |
---|---|
M. Dafian Zaki Akhdan | 5025211108 |
Dewangga Dika Darmawan | 5025211109 |
Setelah pandai mengatur jalur-jalur khusus, kalian diminta untuk membantu North Area menjaga wilayah mereka dan kalian dengan senang hati membantunya karena ini merupakan tugas terakhir.
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
Untuk menghitung rute-rute yang diperlukan, gunakan perhitungan dengan metode VLSM. Buat juga pohonnya, dan lingkari subnet yang dilewati:
- Pembagian rute:
- Tree VLSM:
Berikut merupakan link spreadsheet untuk pembagian ip masing-masing node.
Konfigurasi Subnetting (setiap node) dan Routing (Aura, Frieren, dan Himmel):
- Aura
# Static config for eth0
auto eth0
iface eth0 inet dhcp
# Static config for eth1
auto eth1
iface eth1 inet static
address 192.181.15.105
netmask 255.255.255.252
# Static config for eth2
auto eth2
iface eth2 inet static
address 192.181.15.109
netmask 255.255.255.252
# Routing eth1
up route add -net 192.181.0.0 netmask 255.255.248.0 gw 192.181.15.106
up route add -net 192.181.8.0 netmask 255.255.252.0 gw 192.181.15.106
# Routing eth2
up route add -net 192.181.15.112 netmask 255.255.255.252 gw 192.181.15.110
up route add -net 192.181.15.116 netmask 255.255.255.252 gw 192.181.15.110
up route add -net 192.181.12.0 netmask 255.255.254.0 gw 192.181.15.110
up route add -net 192.181.15.128 netmask 255.255.255.128 gw 192.181.15.110
up route add -net 192.181.15.120 netmask 255.255.255.252 gw 192.181.15.110
up route add -net 192.181.15.124 netmask 255.255.255.252 gw 192.181.15.110
- Heiter
# Static config for eth0
auto eth0
iface eth0 inet static
address 192.181.15.106
netmask 255.255.255.252
gateway 192.181.15.105
# Static config for eth1
auto eth1
iface eth1 inet static
address 192.181.0.1
netmask 255.255.248.0
# Static config for eth2
auto eth2
iface eth2 inet static
address 192.181.8.1
netmask 255.255.252.0
up echo nameserver 192.168.122.1 > /etc/resolv.conf
- TurkRegion (1022 Host)
# Static config for eth0
auto eth0
iface eth0 inet dhcp
gateway 192.181.0.1
up echo nameserver 192.168.122.1 > /etc/resolv.conf
- Sein (Web Server)
# Static config for eth0
auto eth0
iface eth0 inet static
address 192.181.8.2
netmask 255.255.252.0
gateway 192.181.8.1
up echo nameserver 192.168.122.1 > /etc/resolv.conf
- GrobeForest (512 Host)
# Static config for eth0
auto eth0
iface eth0 inet dhcp
gateway 192.181.8.1
up echo nameserver 192.168.122.1 > /etc/resolv.conf
- Frieren
# Static config for eth0
auto eth0
iface eth0 inet static
address 192.181.15.110
netmask 255.255.255.252
gateway 192.181.15.109
# Static config for eth1
auto eth1
iface eth1 inet static
address 192.181.15.113
netmask 255.255.255.252
# Static config for eth2
auto eth2
iface eth2 inet static
address 192.181.15.117
netmask 255.255.255.252
up echo nameserver 192.168.122.1 > /etc/resolv.conf
# Routing eth2
up route add -net 192.181.12.0 netmask 255.255.254.0 gw 192.181.15.118
up route add -net 192.181.15.128 netmask 255.255.255.128 gw 192.181.15.118
up route add -net 192.181.15.120 netmask 255.255.255.252 gw 192.181.15.118
up route add -net 192.181.15.124 netmask 255.255.255.252 gw 192.181.15.118
- Stark (Web Server)
# Static config for eth0
auto eth0
iface eth0 inet static
address 192.181.15.114
netmask 255.255.255.252
gateway 192.181.15.113
up echo nameserver 192.168.122.1 > /etc/resolv.conf
- Himmel
# Static config for eth0
auto eth0
iface eth0 inet static
address 192.181.15.118
netmask 255.255.255.252
gateway 192.181.15.117
# Static config for eth1
auto eth1
iface eth1 inet static
address 192.181.12.1
netmask 255.255.254.0
# Static config for eth2
auto eth2
iface eth2 inet static
address 192.181.15.129
netmask 255.255.255.128
up echo nameserver 192.168.122.1 > /etc/resolv.conf
# Routing eth2
up route add -net 192.181.15.120 netmask 255.255.255.252 gw 192.181.15.130
up route add -net 192.181.15.124 netmask 255.255.255.252 gw 192.181.15.130
- LaubHills (255 Host)
# Static config for eth0
auto eth0
iface eth0 inet dhcp
gateway 192.181.12.1
up echo nameserver 192.168.122.1 > /etc/resolv.conf
- SchwerMountain (64 Host)
# Static config for eth0
auto eth0
iface eth0 inet dhcp
gateway 192.181.15.129
up echo nameserver 192.168.122.1 > /etc/resolv.conf
- Fern
# Static config for eth0
auto eth0
iface eth0 inet static
address 192.181.15.130
netmask 255.255.255.128
gateway 192.181.15.129
# Static config for eth1
auto eth1
iface eth1 inet static
address 192.181.15.121
netmask 255.255.255.252
# Static config for eth2
auto eth2
iface eth2 inet static
address 192.181.15.125
netmask 255.255.255.252
up echo nameserver 192.168.122.1 > /etc/resolv.conf
- Ritcher (DNS Server)
# Static config for eth0
auto eth0
iface eth0 inet static
address 192.181.15.122
netmask 255.255.255.252
gateway 192.181.15.121
up echo nameserver 192.168.122.1 > /etc/resolv.conf
- Revolte (DHCP Server)
# Static config for eth0
auto eth0
iface eth0 inet static
address 192.181.15.126
netmask 255.255.255.252
gateway 192.181.15.125
up echo nameserver 192.168.122.1 > /etc/resolv.conf
Tugas berikutnya adalah memberikan ip pada subnet SchwerMountain, LaubHills, TurkRegion, dan GrobeForest menggunakan bantuan DHCP:
Revolte (DHCP Server)
- dhcp.conf
# A1
subnet 192.181.15.104 netmask 255.255.255.252 {
}
# A2
subnet 192.181.0.0 netmask 255.255.248.0 {
range 192.181.0.2 192.181.7.254;
option routers 192.181.0.1;
option broadcast-address 192.181.7.255;
option domain-name-servers 192.181.15.122;
default-lease-time 180;
max-lease-time 5760;
}
# A3
subnet 192.181.8.0 netmask 255.255.252.0 {
range 192.181.8.3 192.181.11.254;
option routers 192.181.8.1;
option broadcast-address 192.181.11.255;
option domain-name-servers 192.181.15.122;
default-lease-time 180;
max-lease-time 5760;
}
# A4
subnet 192.181.15.108 netmask 255.255.255.252 {
}
# A5
subnet 192.181.15.112 netmask 255.255.255.252 {
}
# A6
subnet 192.181.15.116 netmask 255.255.255.252 {
}
# A7
subnet 192.181.12.0 netmask 255.255.254.0 {
range 192.181.12.2 192.181.13.254;
option routers 192.181.12.1;
option broadcast-address 192.181.13.255;
option domain-name-servers 192.181.15.122;
default-lease-time 180;
max-lease-time 5760;
}
# A8
subnet 192.181.15.128 netmask 255.255.255.128 {
range 192.181.15.131 192.181.15.254;
option routers 192.181.15.129;
option broadcast-address 192.181.15.255;
option domain-name-servers 192.181.15.122;
default-lease-time 180;
max-lease-time 5760;
}
# A9
subnet 192.181.15.120 netmask 255.255.255.252 {
}
# A10
subnet 192.181.15.124 netmask 255.255.255.252 {
}
- isc-dhcp-server
INTERFACESv4="eth0"
Fern, Himmel, Frieren, Aura, Heiter (DHCP Relay)
- isc-dhcp-relay
SERVERS="192.181.15.126"
INTERFACES="eth0 eth2"
OPTIONS=
- sysctl.conf
net.ipv4.ip_forward=1
Agar topologi yang kalian buat dapat mengakses keluar, kalian diminta untuk mengkonfigurasi Aura menggunakan iptables, tetapi tidak ingin menggunakan MASQUERADE.
Penyelesaian:
- Aura
ETH0_IP=$(ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}')
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source $ETH0_IP -s 192.181.0.0/20
Keterangan:
ip
: menampilkan informasi konfigurasi antarmukaeth0
.grep
: digunakan untuk mengekstrak alamat IPv4 dari output tersebut.ETH0_IP
: variabel untuk menyimpan hasilnya.-t nat
: menentukan tabel iptables yang digunakan (dalam hal ini, tabelnat
).A POSTROUTING
: menambahkan aturan pada chain POSTROUTING setelah paket meninggalkan antarmuka.o eth0
: menentukan antarmuka keluar (outbound) sebagaieth0
.j SNAT
: menentukan tindakan yang akan diambil, yaitu melakukanSNAT
.--to-source $ETH0_IP
: Mengatur alamat sumber yang akan digunakan dalamSNAT
, yang dalam hal ini diambil dari variabelETH0_IP
.s 192.181.0.0/20
: Memilih paket-paket yang berasal dari subnet192.181.0.0/20
untuk dikenakanSNAT
.
Output:
Note: semua node bisa melakukan ping google.com
Kalian diminta untuk melakukan drop semua TCP dan UDP kecuali port 8080 pada TCP.
Penyelesaian:
- GrobeForest (512 Host)
iptables -A INPUT -p tcp ! --dport 8080 -j DROP
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
iptables -A INPUT -p udp -s 192.181.0.0/20 -j DROP
Keterangan:
A INPUT
: menambahkan aturan pada chainINPUT
(paket yang menuju sistem itu sendiri).-p tcp
: menentukan bahwa aturan ini berlaku untuk protokolTCP
.-p udp
: Menentukan bahwa aturan ini berlaku untuk protokol UDP.--dport 8080
: menentukan bahwa aturan ini akan diterapkan pada paket yang menuju port 8080.! --dport 8080
: menentukan bahwa aturan ini akan diterapkan pada semua port kecuali port 8080.-j DROP
: menentukan bahwa paket yang sesuai dengan aturan ini akan ditolak (DROP).-j ACCEPT
: menentukan bahwa paket yang sesuai dengan aturan ini akan diterima (ACCEPT).-s 192.181.0.0/20
: menentukan bahwa aturan ini akan diterapkan pada paket yang berasal dari subnet192.181.0.0/20
.
Output:
- Koneksi port tcp port 8080:
- Koneksi port tcp port lain (9000):
- Koneksi port udp port 8080:
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.
Penyelesaian:
- Revolte (DNS Server)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp -m connlimit --connlimit-above 3 --connlimit-mask 0 -j DROP
- Ritcher (DHCP Server)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp -m connlimit --connlimit-above 3 --connlimit-mask 0 -j DROP
Keterangan:
-m state --state ESTABLISHED,RELATED
: menggunakan modulstate
untuk memeriksa status koneksi. Aturan ini mengizinkan paket-paket yang terkait dengan koneksi yang sudah terbentuk atau terkait dengan koneksi yang sedang berlangsung (misalnya, paket yang merupakan bagian dari koneksi TCP yang sudah terbentuk).-p icmp
: menentukan bahwa aturan ini berlaku untuk paket ICMP (misalnya, ping).-m connlimit --connlimit-above 3 --connlimit-mask 0
: Menggunakan modulconnlimit
untuk membatasi jumlah koneksi ICMP. Aturan ini menolak paket-paket ICMP jika jumlah koneksi ICMP dari satu alamat IP melebihi 3 dalam waktu yang sama.
Output:
- Ping ke Revolte (DNS Server) ip
192.181.15.126
:
- Ping ke Ritcher (DHCP Server) ip
192.181.15.122
:
Nomor 4 Lakukan pembatasan sehingga koneksi SSH pada Web Server hanya dapat dilakukan oleh masyarakat yang berada pada GrobeForest.
Nomor 5 Selain itu, akses menuju WebServer hanya diperbolehkan saat jam kerja yaitu Senin-Jumat pada pukul 08.00-16.00.
Nomor 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).
Nomor 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.
Penyelesaian:
- Sein dan Stark (Web Server)
# IP Subnet dari Revolte
REVELTE_SUBNET="192.181.15.124/30"
MULAI_MASA_PEMILU=$(date -d "2023-10-19T00:00" +"%Y-%m-%dT%H:%M")
SELESAI_MASA_PEMILU=$(date -d "2024-02-15T00:00" +"%Y-%m-%dT%H:%M")
# Atur waktu untuk masa pemilu
iptables -A INPUT -p tcp -s $REVELTE_SUBNET -m time --datestart "$MULAI_MASA_PEMILU" --datestop "$SELESAI_MASA_PEMILU" -j DROP
iptables -A INPUT -p tcp -m time --weekdays Mon,Tue,Wed,Thu --timestart 12:00 --timestop 13:00 -j DROP
iptables -A INPUT -p tcp -m time --weekdays Fri --timestart 11:00 --timestop 13:00 -j DROP
iptables -A INPUT -p tcp -m time --weekdays Mon,Tue,Wed,Thu,Fri --timestart 08:00 --timestop 16:00 -s 192.181.8.0/22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 192.181.8.0/22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
Keterangan: (Nomor 4)
iptables -A INPUT -p tcp --dport 22 -s 192.181.8.0/22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
--dport 22
: menentukan bahwa aturan ini akan diterapkan pada paket yang menuju port 22 (SSH).
Keterangan: (Nomor 5)
Tambahkan aturan pada iptables -A INPUT -p tcp --dport 22 -j ACCEPT
menjadi:
iptables -A INPUT -p tcp -m time --weekdays Mon,Tue,Wed,Thu,Fri --timestart 08:00 --timestop 16:00 -s 192.181.8.0/22 -j ACCEPT
- mengizinkan akses SSH pada hari kerja (Senin hingga Jumat) pada jam kantor (08:00 - 16:00).
Keterangan: (Nomor 6)
iptables -A INPUT -p tcp -m time --weekdays Mon,Tue,Wed,Thu --timestart 12:00 --timestop 13:00 -j DROP
iptables -A INPUT -p tcp -m time --weekdays Fri --timestart 11:00 --timestop 13:00 -j DROP
- menetapkan pembatasan waktu untuk akses SSH pada hari kerja (Senin hingga Kamis) dan Jumat pada waktu-waktu tertentu. SSH tidak diizinkan selama jam makan dan jumatan (12:00 - 13:00 pada hari kerja dan 11:00 - 13:00 pada Jumat).
Keterangan: (Nomor 8)
# IP Subnet dari Revolte
REVELTE_SUBNET="192.181.15.124/30"
MULAI_MASA_PEMILU=$(date -d "2023-10-19T00:00" +"%Y-%m-%dT%H:%M")
SELESAI_MASA_PEMILU=$(date -d "2024-02-15T00:00" +"%Y-%m-%dT%H:%M")
# Atur waktu untuk masa pemilu
iptables -A INPUT -p tcp -s $REVELTE_SUBNET -m time --datestart "$MULAI_MASA_PEMILU" --datestop "$SELESAI_MASA_PEMILU" -j DROP
-A INPUT
: menambahkan aturan ke chainINPUT
.-p tcp
: menentukan protokol yang digunakan (TCP).-s $REVELTE_SUBNET
: menentukan sumber alamat IP, yaitu alamat IP subnet Revolte.-m time --datestart "$MULAI_MASA_PEMILU" --datestop "$SELESAI_MASA_PEMILU"
: menggunakan modul waktu untuk membatasi aturan selama periode tertentu, dalam hal ini, dari tanggal dan waktu mulai pemilu hingga tanggal dan waktu selesai pemilu.-j DROP
: Jika paket memenuhi syarat (berasal dari subnet Revolte dan berada dalam rentang waktu pemilu), aturan ini akan menjatuhkan (DROP) paket-paket tersebut, sehingga mencegah mereka melewati firewall.
Output:
- Nomor 4:
Menggunakan nmap 192.181.8.2 22
di GrobeForest dihasilkan open
dan LaubHills dihasilkan filtered
.
- Nomor 5:
Menggunakan nmap 192.181.8.2 22
di GrobeForest pada hari Rabu
dihasilkan open
dan pada hari Sabtu
dihasilkan filtered
.
- Nomor 6:
Pada hari Kamis pukul 11.30
dihasilkan open
dan pada pukul 12.30
dihasilkan filtered
.
Pada hari Jumat pukul 13.30
dihasilkan open
dan pada pukul 11.30
dihasilkan filtered
.
- Nomor 8:
Melakukan nmap
pada masa pemilu (tahun 2023).
Melakukan nmap
pada masa di luar pemilu (tahun 2024).
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.
Penyelesaian:
- Heiter dan Frieren (Router)
iptables -t nat -F
# Akses ke Sein port 80
iptables -A PREROUTING -t nat -p tcp --dport 80 -d 192.181.8.2 -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination 192.181.8.2
iptables -A PREROUTING -t nat -p tcp --dport 80 -d 192.181.8.2 -j DNAT --to-destination 192.181.15.114
# Akses ke Stark port 443
iptables -A PREROUTING -t nat -p tcp --dport 443 -d 192.181.15.114 -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination 192.181.8.2
iptables -A PREROUTING -t nat -p tcp --dport 443 -d 192.181.15.114 -j DNAT --to-destination 192.181.15.114
Keterangan:
Akses ke Sein port 80:
- Baris pertama:
iptables -A PREROUTING -t nat -p tcp --dport 80 -d 192.181.8.2 -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination 192.181.8.2
: Jika paket yang menuju ke port 80 pada alamat tujuan 192.181.8.2 adalah paket yang ke-2 (berdasarkan mode nth), maka paket tersebut diarahkan (DNAT) ke alamat tujuan 192.181.8.2. - Baris kedua:
iptables -A PREROUTING -t nat -p tcp --dport 80 -d 192.181.8.2 -j DNAT --to-destination 192.181.15.114
Untuk paket selain paket ke-2, paket tersebut diarahkan ke alamat tujuan 192.181.15.114.
Akses ke Stark port 443:
- Baris ketiga:
iptables -A PREROUTING -t nat -p tcp --dport 443 -d 192.181.15.114 -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination 192.181.8.2
: Jika paket yang menuju ke port 443 pada alamat tujuan 192.181.15.114 adalah paket yang ke-2 (berdasarkan mode nth), maka paket tersebut diarahkan (DNAT) ke alamat tujuan 192.181.8.2. - Baris keempat:
iptables -A PREROUTING -t nat -p tcp --dport 443 -d 192.181.15.114 -j DNAT --to-destination 192.181.15.114
Untuk paket selain paket ke-2, paket tersebut diarahkan ke alamat tujuan 192.181.15.114.
Output:
[Skenario 1 : Mengakses Sein dengan port 80]
- Menjalankan command
while true; do nc -l -p 80 -c 'echo "Dari Sein"'; done
pada node Sein. - Menjalankan command
while true; do nc -l -p 80 -c 'echo "Dari Stark"'; done
pada node Stark. - Menjalankan command
nc [IP Sein] 80
pada node LaubHills:
[Skenario 2 : Mengakses Stark dengan port 443]
- Menjalankan command
while true; do nc -l -p 443 -c 'echo "Dari Sein"'; done
pada node Sein. - Menjalankan command
while true; do nc -l -p 443 -c 'echo "Dari Stark"'; done
pada node Stark. - Menjalankan command
nc [IP Stark] 443
pada node LaubHills:
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)
Penyelesaian:
- Sein dan Stark (Web Server)
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
Keterangan:
-N portscan
: membuat chain iptables baru dengan nama "portscan". Chain ini akan digunakan untuk menyimpan informasi terkait deteksi port scanning.-m recent --name portscan --update --seconds 600 --hitcount 20
: Menggunakan modulrecent
untuk mendeteksi port scanning. Aturan ini akan melakukan update padahitcount
(jumlah percobaan) setiap 600 detik (10 menit) dan jika jumlah percobaan melebihi 20, paket tersebut akan ditolak (DROP).
Output:
Melakukan ping ke ip web server, setelah ping ke-20, ping ke-21 dan seterusnya tidak berhasil.
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.
Penyelesaian:
iptables -A INPUT -j LOG --log-level debug --log-prefix 'Dropped Packet' -m limit --limit 1/second --limit-burst 10
Keterangan:
-
-j LOG
: Menentukan bahwa jika paket memenuhi kondisi aturan, maka log pesan akan dicatat. -
--log-level debug
: Menetapkan level log ke "debug". Ini menunjukkan bahwa pesan log yang dihasilkan akan memiliki tingkat detail debug. -
--log-prefix 'Dropped Packet'
: Menetapkan awalan (prefix) pesan log menjadi 'Dropped Packet'. Jadi, jika paket ditolak, pesan log akan dimulai dengan teks 'Dropped Packet'. -
-m limit --limit 1/second --limit-burst 10
: Menggunakan modul (module) "limit" untuk membatasi jumlah log pesan yang dibuat. Aturan ini membatasi pencatatan log menjadi satu pesan per detik, dengan batasan (burst) maksimal sebanyak 10 pesan.