Gambar Kerja :
Langkah-Langkah Membangun Router, DNS Server, FTP Server, WebMail Server, Router Mikrotik
A. Membangun Router (Os Redhat)
1. Masuk sebagai root
2. Check ip dengan perintah
#vi /etc/sysconfig/network-scripts/ifcfg-eth0
Kurang lebih tampil seperti dibawah ini :
Lakukan setting eth1 yang hampir sama dengan eth0, dengan ip sesuai ketentuan.
#vi /etc/sysconfig/network-scripts/ifcfg-eth1
3. Edit file resolv.conf
#vi /etc/resolv.conf
4. Restart network
#service network restart
5. Aktifkan IP forward
#echo 1 > /proc/sys/net/ipv4/ip_forward
#vi /etc/sysctl.conf
Edit nilai net.ipv4.ip_forward yang awalnya 0 menjadi 1.
6. Setting firewall iptables
#route add default gw 10.10.10.1
#/sbin/iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j MASQUERADE
#/sbin/iptables -t nat -A PREROUTING -s 10.0.0.0/8 -p tcp --dport 80 -j REDIRECT --to-port 3128
#service iptables save
#chkconfig iptables on
7. Cek IP
#ping 202.110.101.2
#ping 10.10.10.1
B. Instalasi DNS dan Proxy Server (Os Debian 4)
Instalasi dan Konfigurasi DNS
1. Setting IP
Dalam suatu jaringan yang menggunakan protokol tcp/ip, seting NIC merupakan hal yang penting karena dalam jaringan tersebut menggunakan 1 kelas ip sesuai dengan aturan yang ada.
Lakukan konfigurasi di file interfaces
# vim /etc/network/interfaces
2. Lakukan pengecekan IP
Restart dulu network kita # /etc/init.d/network restart
Ping ip kita sendiri # ping 10.10.10.2
3. Mounting cdrom
Sebelum kita menggunakan cd kita untuk menginstal paket-paket yang dibutuhkan lakukan Mountuing cdrom # apt-cdrom add
4. Instalasi dan Konfigurasi DNS Server
DNS Server adalah server yang digunakan untuk membuat sebuah dana domain ( domain name ), baik untuk untuk webserver, FTP server, dll. Nama domain dibuat agar pengaksesan ke suatu server dapat dengan mudah dilakukan dengan menggunakan sebuah nama yang mudah diingat, bukan dengan menggunakan nama IP address yang berupa digit angka ataupun bisa sebaliknya.
Agar server yang dibangun bisa diakses dengan menggunakan nama domain dan ip address, maka dibangun sebuah dns server. Berikut langkah langkahnya
Paket bind digunakan untuk konfigurasi DNS, untuk menambahkan domain dan subdomain kita, Instalasi bind # apt-get install bind9
5. Konfigurasi file named.conf
Di file ini, tempat kita menambahkan domain, dengan cara penambahan zone
# vim /etc/bind/named.conf
6. Membuat file Zone forward dan Zone Reverse
Terlebih dahulu copy file induk menjadi nama yang sesuai waktu konfigurasi named
# cp db.local db.fw
# cp db.127 db.rv
7. Konfigurasi File zone forward
Lakukan konfigurasi sesuai dengan gambar dibawah ini
# vim db.fw
8. Konfigurasi File zone reverse
Lakukan konfigurasi sesuai dengan gambar dibawah ini
# vim db.rv
9. Pengecekan Domain dan subdomain
Selesai konfigurasi zone forward dan zone reverse, restart bind # /etc/init.d/bind9 restart
Lalu lakukan pengecekan Domain dan subdomain # nslookup
Konfigurasi Proxy Debian 4
1. Instalasi Paket Squid
Paket yang dibutuhkan untuk membuat proxy adalah squid. Didalam DVD debian 4 sudah tersedia dengan squid 2.6. Untuk konfigurasi squid, ketik # vim /etc/squid/squid.conf
Cari tulisan http_port 3128 tepatnya pada baris ke-73, kemudian tambahkan transparent seperti pada gambar. Hal ini digunakan agar squid berjalan secara transparan melalui port 3128.
Cari tulisan cache_mem 8 MB yaitu pada baris 771, hapus tanda pagar # dan ganti dengan setengah memory pc. Misal 512.
Pada cache_dir ufs /var/cache/squid 100 16 256, hapus tanda pagar # dan angka 100 ganti dengan setengah hardisk. Misal 20000. Konfigurasi ini digunakan untuk menyimpan cache. Agar ketika client membuka situs yang sama maka cache yang tersimpan itulah yang akan diberikan ke client
Hapus tanda pagar # pada cache_log /var/log/squid/cache.log dan cache_store_log /var/log/squid/store.log yaitu pada baris ke 1119 dan 1129. konfigurasi ini untuk mengaktifkan cache log, artinya untuk melihat situs-situs apa yang dikunjungi client
Pada bagian acl (access control list), buat nama jaringan dan network yang akan menggunakan proxy. Misal menggunakan nama citrix1 maka, acl citrix1 src 10.0.0.0/8. acl artinya access control list. Src artinya sourch, 10.0.0.0/8 adalah network ip kita
Pada bagian INSERT YOUR OWN daftarkan nama jaringan yang telah dibuat. Masukkan pada bagian http_access. Misal http_access allow citrix1. Maka proxy akan berjalankan pada jaringan citrix2 dengan network 10.0.0.0/8
2. Setelah itu maka konfigurasi proxy telah selesai, simpan konfigurasi tersebut dan buat swap directory squid dengan konsole squid –z. dan start proxy dengan konsole /etc/init.d/squid start
3. Untuk melakukan konfigurasi untuk penge-blokan, web, situs, kata. Tambahkan perintah dibawah ini, tapi dengan urut, karena linux membaca konsole secara beraturan dari atas ke bawah.
acl kecuali dstdomain “/etc/squid/kecuali.txt”
acl bloksitus dstdomain “/etc/squid/bloksitus.txt”
acl blokkata url_regex –i “/etc/squid/blokkata.txt”
4. Lalu tambahkan konsole pada tag http_access, untuk acl blok yang akan dideny atau diallow, untuk kecuali, harus diallow, karena berisi web khusus yang tidak keblok. http_access allow kecuali
http_access deny bloksitus
http_access deny blokkata
5. Buat daftar web dan kata yang akan diblok pada directory /etc/squid. Seperti pada konfigurasi squid, bahwa kecuali ditaruh pada /etc/squid/kecuali.txt maka vi /etc/squid/kecuali.txt isikan situs-situs khusus yang anti diblok.
Buatlah file sesuai dengan printah yang kita gunakan pada Squid
Untuk blokkata #vi /etc/squid/blokkata.txt
Untuk bloksitus #vi /etc/squid/bloksitus.txt
Yang penting tempat dan nama file harus sama seperti pada konfigursi squid. Setelah itu masukkan perintah squid –k reconfigure. Perintah ini dilakukan setiap melakukan konfigurasi baru pada squid. Kemudian restart squid menggunakan perintah /etc/init.d/squid restart.
Lakukan pengetesan pada internet explorer bahwa proxy kita sudah jalan ketik pada search web (situs yang telah diblok kata)
6. Lakukan pengetesan pada internet explorer bahwa proxy kita sudah jalan ketik pada url www.facebook.com (situs yang telah diblok situs)
C. Membangun FTP (Os Ubuntu 8.04 Server)
Konfigurasi Kartu Jaringan
Pertama mengkonfigurasi kartu jaringan. Langkah-langkahnya ialah sebagai berikut.
1) Seting NIC pada file /etc/network/interfaces. Tambahkan skrip dan simpan dengan menekan tombol “Esc” ketik “ :wq “ sehingga tampak seperti berikut.
# vim /etc/network/interfaces
auto eth0
iface eth0 inet static
address 10.10.10.3
netmask 255.0.0.0
network 10.0.0.0
broadcast 10.0.0.255
gateway 10.10.10.1
dns-nameservers 10.10.10.2
dns-search citrix1.com
2) Edit file /etc/hosts untuk mensetting hostname komputer.
# vim /etc/hosts
127.0.0.1 localhost.localdomain localhost
10.10.10.2 ftp1.citrix1.com ftp1
3) Selanjutnya edit resolver pada yang terletak pada /etc/resolv.conf. File ini berfungsi layaknya DNS pada Windows.
# vim /etc/resolv.conf
search citrix1.com
nameservers 10.10.10.2
4) Restart konfigurasi jaringan yang telah dilakukan.
# /etc/init.d/networking restart
* Reconfiguring network interfaces... [ OK ]
5) Lakukan pengecekan terhadap kartu jaringan.
# ifconfig eth0
6) Lakukan ping terhadap eth0
# ping 10.10.10.3
PING 10.10.10.3 (10.10.10.3) 56(84) bytes of data.
64 bytes from 10.10.10.3: icmp_seq=1 ttl=64 time=0.161 ms
64 bytes from 10.10.10.3: icmp_seq=2 ttl=64 time=0.120 ms
--- 10.10.10.3 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.120/0.140/0.161/0.023 ms
Membangun FTP Server
1) Install aplikasi FTP Server yakni vsftpd.
# apt-get install vsftpd
2) Edit file konfigurasi utama aplikasi FTP Server pada folder /etc. Cari skrip yang sesuai seperti contoh, ubah sepeti contoh kemudian simpan. Sebelumnya salin file vsftpd.conf yang asli, agar saat sistem FTP mengalami gangguan dapat direstore ulang.
#cp /etc/vsftpd.conf /etc/vsftpd.conf.asli
# vim /etc/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
Berikut adalah fungsi konfigurasi FTP server pada vsftpd.conf
· listen_ipv6, apakah berjalan sebagai standalone dengan IPv6. Unlike the listen parameter, vsftpd will listen on an IPv6 socket instead of an IPv4 one. Berbeda dengan mendengarkan parameter, vsftpd akan mendengarkan pada soket IPv6 bukan salah satu yang IPv4. This parameter and the listen parameter are mutually exclusive. Parameter ini dan parameter mendengarkan saling eksklusif.
- Allowed values: Boolean ( YES/NO ) Allowed nilai: Boolean (YES / NO)
- Default value: NO Nilai Default: NO
· 2 2
anonymous_enable , whether to allow anonymous FTP . Beware - this option is turned on by default which might cause some security trouble. anonymous_enable, apakah memungkinkan anonymous FTP -. Hati-hati opsi ini diaktifkan secara default yang dapat menyebabkan beberapa masalah keamanan.
- Allowed values: Boolean Allowed nilai: Boolean
- Default value: YES Nilai Default: YES
· 3 3
local_enable , whether local logins are permitted . local_enable, apakah login lokal diizinkan. If enabled, normal user accounts in /etc/passwd may be used to log in. Jika diaktifkan, account pengguna normal dalam / etc / passwd dapat digunakan untuk login
- Allowed values: Boolean Allowed nilai: Boolean
- Default value: NO Nilai Default: NO
· 4 4
write_enable , whether to allow any FTP commands which change the file system such as stor, dele, rnfr, rnto, mkd, rmd, appe and site write_enable, apakah untuk mengizinkan semua perintah FTP yang mengubah sistem file seperti Stor, DELE, rnfr, rnto, MKD, RMD, appe dan situs
- Allowed values: Boolean Allowed nilai: Boolean
- Default value: NO Nilai Default: NO
· 5 5
anon_upload_enable , whether to allow the anonymous FTP user to upload files . anon_upload_enable, apakah memungkinkan pengguna FTP untuk upload file. For this to work, the option write_enable must be enabled, and the anonymous ftp user must be given write permission on any desired upload location. Untuk bekerja, pilihan write_enable harus diaktifkan, dan pengguna anonymous ftp harus diberikan izin menulis pada setiap lokasi yang diinginkan upload.
- Allowed values: Boolean Allowed nilai: Boolean
- Default value: NO Nilai Default: NO
· 6 6
anon_mkdir_write_enable , whether you want the anonymous FTP user to be able to create new directories . anon_mkdir_write_enable, apakah Anda ingin pengguna FTP untuk dapat membuat direktori baru. Like above, write_enable must be enabled. Seperti di atas, write_enable harus diaktifkan.
- Allowed values: Boolean Allowed nilai: Boolean
- Default value: NO Nilai Default: NO
· 7 7
dirmessage_enable , whether to activate directory messages - messages given to remote users when they go into a certain directory . dirmessage_enable, apakah untuk mengaktifkan direktori pesan - pesan yang diberikan kepada pengguna remote ketika mereka pergi ke direktori tertentu.
- Allowed values: Boolean Allowed nilai: Boolean
- Default value: NO (in the sample configuration file, it is enabled) Nilai Default: NO (pada file contoh konfigurasi, dimungkinkan)
· 8 8
xferlog_enable , whether to activate logging of uploads/downloads . xferlog_enable, apakah akan mengaktifkan logging di upload / download. By default, the log file will be placed at /var/log/vsftpd.log , but this location may be overridden using the configuration setting vsftpd_log_file Secara default, file log akan ditempatkan di / var / log / vsftpd.log, tetapi lokasi ini bisa ditimpa dengan menggunakan setting konfigurasi vsftpd_log_file
- Allowed values: Boolean Allowed nilai: Boolean
- Default value: NO (in the sample configuration file, it is enabled) Nilai Default: NO (pada file contoh konfigurasi, dimungkinkan)
· 9 9
xferlog_std_format , whether to have your log file in standard ftpd xferlog format . xferlog_std_format, apakah agar file log anda dalam format xferlog ftpd standar.
- Allowed values: Boolean Allowed nilai: Boolean
- Default value: NO Nilai Default: NO
· 10 10
connect_from_port_20 , whether to make sure PORT transfer connections originate from port 20 (ftp-data) . connect_from_port_20, apakah untuk memastikan koneksi transfer PORT berasal dari port 20 (ftp-data).
- Allowed values: Boolean Allowed nilai: Boolean
- Default value: NO (in the sample configuration file, it is enabled) Nilai Default: NO (pada file contoh konfigurasi, dimungkinkan)
· 11 11
async_abor_enable , whether the server will recognize asynchronous ABOR requests . async_abor_enable, apakah server akan mengenali permintaan Abor asynchronous. Not recommended for security (the code is non-trivial). Tidak dianjurkan untuk keamanan (kode non-trivial). Not enabling it, however, may confuse older FTP clients. Tidak memungkinkan itu, bagaimanapun, dapat membingungkan tua klien FTP.
- Allowed values: Boolean Allowed nilai: Boolean
- Default value: NO Nilai Default: NO
· 12 12
ascii_upload_enable and ascii_download_enable . ascii_upload_enable dan ascii_download_enable. By default the server will pretend to allow ASCII mode but in fact ignore the request. Secara default server akan berpura-pura untuk memungkinkan modus ASCII tetapi sebenarnya mengabaikan permintaan. Turn on the below options to have the server actually do ASCII mangling on files when in ASCII mode. Hidupkan di bawah pilihan untuk memiliki server benar-benar melakukan ASCII mangling pada file saat dalam mode ASCII. Beware that on some FTP servers, ASCII support allows a denial of service attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd predicted this attack and has always been safe, reporting the size of the raw file. Hati-hati bahwa pada beberapa server FTP, dukungan ASCII memungkinkan denial of service attack (DoS) melalui "perintah / SIZE besar /" file dalam modus ASCII serangan. Vsftpd ini diprediksi dan selalu aman, pelaporan ukuran file mentah. ASCII mangling is a horrible feature of the protocol. mangling ASCII adalah fitur mengerikan protokol.
- Allowed values: Boolean Allowed nilai: Boolean
- Default value: NO Nilai Default: NO
· 13 13
chown_uploads and chown_username . chown_uploads dan chown_username. If you want, you can arrange for uploaded anonymous files to be owned by a different user. Jika Anda ingin, Anda dapat mengatur file anonim upload ke dimiliki oleh seorang pengguna yang berbeda. Note! Catatan! Using "root" for uploaded files is not recommended! Menggunakan "root" untuk file yang diupload tidak direkomendasikan!
- Allowed values: chown_uploads is Boolean, chown_username is a username string Allowed nilai: chown_uploads adalah Boolean, chown_username adalah string nama pengguna
- Default value: chown_uploads defaults to NO and chown_username defaults to "root" Nilai Default: chown_uploads default ke default NO dan chown_username untuk "root"
· 14 14
xferlog_file . xferlog_file. You may override where the log file goes if you like. Anda dapat menimpa di mana file log berjalan jika Anda suka. The default is shown below. default akan ditampilkan di bawah ini.
- Allowed values: path string Allowed nilai: string path
- Default value: {{green}/var/log/vsftpd.log}} Nilai default: {{hijau} / var / log / vsftpd.log}}
· 15 15
idle_session_timeout , which will enable you to change the default value for timing out an idle session . idle_session_timeout, yang akan memungkinkan Anda untuk mengubah nilai default untuk kehabisan waktu sesi menganggur.
- Allowed values: Numeric Allowed nilai: Numeric
- Default value: 300 Nilai default: 300
· 16 16
data_connection_timeout , which enable you to change the default value for timing out a data connection . data_connection_timeout, yang memungkinkan Anda untuk mengubah nilai default untuk waktu keluar sambungan data.
- Allowed values: Numeric Allowed nilai: Numeric
- Default value: 300 Nilai default: 300
· 17 17
nopriv_user . nopriv_user. It is recommended that you define on your system a unique user which the ftp server can use as a totally isolated and unprivileged user. Disarankan agar Anda mendefinisikan pada sistem anda pengguna unik yang server ftp dapat digunakan sebagai pengguna benar-benar terisolasi dan unprivileged.
- Allowed values: Username string Allowed nilai: Username string
- Default value: nobody Nilai Default: tidak ada
· 18 18
ftpd_banner , which allows you to fully customize the login banner string . ftpd_banner, yang memungkinkan Anda untuk menyesuaikan sepenuhnya string banner login.
- Allowed values: String Allowed nilai: String
- Default value: none - default vsftpd banner is displayed Nilai Default: none - default banner vsftpd ditampilkan
· 19 19
deny_email_enable and banned_email_file enable you to specify a file of disallowed anonymous e-mail addresses . deny_email_enable dan banned_email_file memungkinkan Anda untuk menentukan file dilarang alamat e-mail anonim. Apparently useful for combating certain DOS attacks. Rupanya berguna untuk memerangi serangan tertentu DOS.
- Allowed values: File path string for banned_email_file and Boolean for deny_email_enable Allowed nilai: File string path untuk banned_email_file dan Boolean untuk deny_email_enable
- Default value: NO for deny_email_enable and /etc/vsftpd.banned_emails for banned_email_file Nilai Default: NO untuk deny_email_enable dan / etc / vsftpd.banned_emails untuk banned_email_file
· 20 20
chroot_local_user , which allows you to restrict local users to their home directories . chroot_local_user, yang memungkinkan Anda untuk membatasi user lokal untuk direktori home mereka.
- Allowed values: Boolean Allowed nilai: Boolean
- Default value: NO Nilai Default: NO
· 21 21
chroot_list_enable and chroot_list_file . chroot_list_enable dan chroot_list_file. You may specify an explicit list of local users to chroot() to their home directory. Anda dapat menetapkan daftar eksplisit pengguna lokal untuk chroot () untuk direktori rumah mereka. If chroot_local_user is YES, then this list becomes a list of users to NOT chroot() . Jika chroot_local_user adalah YA, maka daftar ini menjadi daftar pengguna untuk TIDAK chroot ().
- Allowed values: File path string for chroot_list_file and Boolean for chroot_list_enable Allowed nilai: File string path untuk chroot_list_file dan Boolean untuk chroot_list_enable
- Default value: NO for chroot_list_enable and /etc/vsftpd.chroot_list for chroot_list_file Nilai Default: NO untuk chroot_list_enable dan / etc / vsftpd.chroot_list untuk chroot_list_file
· 22 22
ls_recurse_enable , which enable you to activate the "-R" option to the builtin ls . ls_recurse_enable, yang memungkinkan Anda untuk mengaktifkan "-R" pilihan ke builtin ls. This is disabled by default to avoid remote users being able to cause excessive I/O on large sites. Ini dinonaktifkan secara default untuk menghindari pengguna remote yang berlebihan dapat menyebabkan I / O di situs besar. However, some broken FTP clients such as "ncftp" and "mirror" assume the presence of the "-R" option, so there is a strong case for enabling it. Namun, beberapa FTP patah klien seperti "ncftp" dan "cermin" menganggap kehadiran opsi "-R", sehingga ada kasus yang kuat untuk memungkinkan hal itu.
- Allowed values: Boolean Allowed nilai: Boolean
- Default value: NO Nilai Default: NO
· 23 23
secure_chroot_dir . secure_chroot_dir. Some of vsftpd's settings don't fit the Debian filesystem layout by default. Beberapa pengaturan vsftpd kita lakukan tidak sesuai dengan tata letak sistem berkas Debian secara default. These settings are more Debian-friendly. Pengaturan ini lebih Debian-friendly. This option should be the name of a directory which is empty. Opsi ini harus merupakan nama dari sebuah direktori yang kosong. Also, the directory should not be writable by the ftp user. Juga, direktori tidak boleh ditulis oleh user ftp. This directory is used as a secure chroot() jail at times vsftpd does not require file system access. Direktori ini digunakan sebagai chroot yang aman () penjara pada waktu vsftpd tidak membutuhkan akses file system.
- Allowed values: File path string Allowed nilai: File string path
- Default value: /usr/share/empty Nilai default: / usr / share / kosong
· 24 24
pam_service_name , is the name of the PAM service vsftpd will use . pam_service_name, adalah nama dari layanan PAM vsftpd akan digunakan.
- Allowed values: string Allowed nilai: string
- Default value: ftp Nilai default: ftp
· 25 25
rsa_cert_file , specifies the location of the RSA certificate to use for SSL encrypted connections rsa_cert_file, menentukan lokasi sertifikat RSA digunakan untuk sambungan terenkripsi SSL
- Allowed values: File path string Allowed nilai: File string path
- Default value: /usr/share/ssl/certs/vsftpd.pem Nilai default: / usr / share / ssl / certs / vsftpd.pem
· 26 26
local_umask . local_umask. Default umask for local users is 077. Default umask untuk pengguna lokal 077. You may wish to change this to 022, If your users expect that (022 is used by most other ftpd's) Anda mungkin ingin mengubah ini untuk 022, Jika Anda pengguna mengharapkan bahwa (022 digunakan oleh sebagian besar ftpd lain)
- Allowed values: Numeral Allowed nilai: angka
- Default value: 077 Nilai default: 077
3) Restart aplikasi FTP Server
# /etc/init.d/vsftpd restart
* Stopping FTP server: vsftpd [ OK ]
* Starting FTP server: vsftpd [ OK ]
4) Buatlah user baru pada sistem dengan mengetik perintah adduser<spasi> . Selanjutnya lakukan pengecekan FTP Server dengan masuk pada layanan FTP, setelah sukses dapat langsung keluar.
# adduser ftp2
Setelah menambhakan user, jika kita akan member hak akses penuh pada user tersebut maka kita hari merubah mode user tersebut dengan cara
# chmod –R 777 /home/ftp2 (nama user)
Lalu setelah itu kita cek ftp
# ftp ftp.citrix1.com
Connected to ns.citrix1.com.
220 (vsFTPd 2.0.6)
Name (ftp.citrix1.com:ftp1): ftp1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ftp> exit
221 Goodbye.
5) Lakukan pengecekan layanan FTP dari klien. Buka Web Browser, ketikan alamat ftp://ftp.citrix1.com pada Address bar. Maka akan muncul jendela login pada FTP. Masukan User name milik User yang terdapat pada sistem. Pada contoh dimisalkan ftp1, sekaligus juga Password untuk user ftp1. Tekan Log on.
6)
Maka tampilan akan dibawa pada jendela baru. Pada jendela ini terdapat file-file pribadi milik user yang telah terdaftar dalam sistem. Lakukan percobaan dengan membuat folder, kemudian menghapusnya. Cara ini untuk mengecek mode
write_enable=YES yang diatur pada file
vsftpd.conf pada sistem. Apabila berhasil membuat dan mengahapus folder berarti FTP Server telah berjalan sesuai konfigurasi yang telah dilakukan.
7) Apabila aplikasi yang telah dikonfigurasi seperti contoh diatas, tetapi tidak dapat berjalan sesuai konfigurasi, maka dibutuhkan pengecekan ulang atau restart ulang aplikasi FTP. Layanan FTP pada Ubuntu-Server kadang kala kurang stabil, maka dari itu dibutuhkan kecermatan dalam pembangunannya.