catatan Freebsd Lagi

download catatan Freebsd Lagi

If you can't read please download the document

description

catatan Freebsd Lagi

Transcript of catatan Freebsd Lagi

I. INSTALASI FreeBSD 8 UNTUK SERVER Sisfo IM Telkom 01.06.11Buku manual ini ditujukan untuk memudahkan Team Sisfo IM Telkom, Teknisi, maupun user dalammelakukan instalasi Sistem Operasi FreeBSD dan aplikasi perangkat lunaknya agar sesuai denganstandar Sisfo IM Telkom. Hal ini ditujukan untuk penyeragaman setting semua server di IM Telkom.Sistem Operasi yg di-standarkan dalam buku manual ini adalah FreeBSD dari keluarga 8 termasuksemua setting yg diperlukan (rc.conf, DNS, dan firewall).FreeBSD merupakan turunan langsung (cucu) dari UNIX, dikembangkan langsung oleh The FreeBSD Project (http://www.freebsd.org) dibawah The FreeBSD Foundation (http://www.freebsdfoundation.org).Banyak alasan mengapa memilih FreeBSD sbg platform OS untuk server, mulai dari kestabilan yg sangat mapan, tingkat responsif yg sangat cepat, dan juga kemudahan instalasi aplikasi. Namun sbg platform OS untuk client/user, FreeBSD tidak direkomendasikan krn selain rendahnya support terhadap perangkat multimedia, minimnya aplikasi yg bisa berjalan di platform FreeBSD, dan juga krn utilitas resource untuk menjalankan GUI sangat memberatkan system.Ada beberapa pertimbangan mengapa menggunakan FreeBSD 8:1. Dibanding Microsoft Windows Server, FreeBSD free, lebih secure, lebih stabil, lebih mudah dikonfigurasi, dan respon lebih cepat karena hanya berbasis teks2. Dibanding Linux, FreeBSD saat ini cenderung lebih stabil dan responsif karena hanya ada 1 distribusi (hanya 1 organisasi yg berhak mengeluarkan update dari FreeBSD)3. Semua aplikasi menggunakan source code (tar.gz) sehingga untuk menggunakannya akan dilakukan melalui metode Compile (bukan Install) sehingga hasilnya akan lebih cepat dan ringan.4. Dibanding release FreeBSD sebelumnya, FreeeBSD 8 memiliki kelebihan :o IPFW2 untuk traffic shaper dan layer 1 filtering (berdasarkan MAC Address) o Lebih reliable, lebih stabil, lebih mudah dikonfigurasi, dan lebih banyak support pada sistem hardware yg terbaru o FreeBSD 8 telah mengadopsi ZFS (Z File System) yang telah lama dikenal dan digunakan oleh platform SolarisFile System di FreeBSDWindows FreeBSDKode IDE vs. SCSI Tidak dibedakan ad --> IDE/SATAda --> SCSI/USB-DiskPembagian pertama drive SlicePembagian kedua folder PartisiPembagian ketiga - mount pointInformasi C:\ di MS Windows hanya menjelaskan drive tanpa bisa diketahui jenis interface Hard Disknya (IDE/SATA/SCSI/USB-Disk)Informasi ad0s1a di FreeBSD dapat menjelaskan :- ad : jenis interface Hard Disk adalah IDE atau SATA- ad0 : terhubung pada Primary Master atau SATA-0- s1 : menjelaskan ini adalah slice (potongan) ke-1- s1a : menjelaskan ini adalah partisi ke-1 dari slice ke-1Untuk memudahkan upgrading ke versi FreeBSD yg lebih baru, sebaiknya mountpoint yang isinya akan tetap terpakai diletakkan di hard disk terpisah, contoh /var/mail untuk mail server dan /webcache untuk proxy server.Folder-folder (mount point) standar yang ada di FreeBSD :/ : root directory/etc : berisi file2 konfigurasi system/usr/bin : file2 executable bawaan FreeBSD/usr/sbin : file2 executable bawaan FreeBSD (dari 3rd party)/usr/etc/rc.d : aplikasi bawaan FreeBSD yg dijalankan setiap boot time/usr/home : home directory dari setiap user/usr/ports : aplikasi 3rd party yg bisa diinstall, dibagi per kategori/usr/ports/distfiles : file2 installer dari suatu port/usr/local : folder untuk hasil instalasi port/usr/local/bin : file2 executable yg berasal dari hasil instalasi port/usr/local/etc : berisi file2 konfigurasi port yg sudah di-install/usr/local/etc/rc.d : aplikasi 3rd party yg dijalankan setiap boot time/var/log : folder untuk menyimpan log file/var/mail : folder untuk menyimpan email userUntuk /usr/etc/rc.d dan /usr/local/etc/rc.d, aplikasi akan dijalankan jika pada /etc/rc.conf di-enable. Contoh isi /etc/rc.conf :# cat /etc/rc.confusbd_enable = "YES" --> mengaktifkan USB daemonsshd_enable = "YES" --> mengaktifkan SSH daemonmoused_enable = "YES" --> mengaktifkan mouse daemonfirewall_enable = "YES" --> mengaktifkan firewallapache2_enable = "YES" --> mengaktifkan web service Apache2apache2ssl_enable = "YES" --> mengaktifkan SSL untuk Apache2mysql_enable = "YES" --> mengaktifkan database MySQLsquid_enable = "YES" --> mengaktifkan proxy Squidsendmail_enable = "NONE" --> menonaktifkan MTA Sendmailsnmpd_enable = "YES" --> mengaktifkan SNMPII. Instalasi FreeBSD 8 sebagai ServerInstalasi FreeBSD juga sangat mudah dan cepat, hanya perlu sekitar 5 menit, server siap untuk menerima transaksi paket jaringan. Sangat mudah, namun tidak cantik, krn semua berbasis text, tanpa GUI sama sekali. Instalasi FreeBSD 8 cukup sederhana, dan akan dijelaskan dalam 17 tahap :1. Download file ISO FreeBSD8-disc1 yang sesuai dengan prosesor server anda (amd64, i386, ia64, pc98, powerpc, sparc64) di http://www.freebsd.org/where.html dan burn file ISO tersebut ke CD2. Masukkan bootable CD FreeBSD8-disc1 ke CDROM dan nyalakan komputer. Pastikan komputer boot up dari CDROM dengan men-set ROMBIOS. Bootstrap loader (aplikasi installer) akan mendeteksi peripheral yang ada. Selanjutnya, jika tidak ada kendala dengan mandatory peripheral, bootstrap loader akan menampilkan menu utama, disini kita memilih 1 (atau langsung Enter)3. Pada dialog yg muncul, pilih 102 (Indonesia) untuk Country Selection dan kemudian pilih USA ISO untuk System Console Keymap4. Setelah semua peripheral terdeteksi, bootstrap loader akan menyerahkan instalasi FreeBSD pada aplikasi sysInstall. Pada sysinstall Main Menu ini pilih Custom : Begin a custom installation5. Pada menu Choose Custom Installation Options, pilih Partition : Allocate disk space for FreeBSD untuk mempersiapkan bagian hard disk yang akan digunakan untuk instalasi FreeBSD Jika komputer memiliki lebih dari 1 HardDisk, sysInstall akan menanyakan pada HardDisk mana akan di-install FreeBSD Selanjutnya akan muncul window berwarna hitam dengan tulisan putih. Window ini adalah utility FDISK Partition Editor. Dengan menggunakan utility ini, disarankan untuk membuat 1 potongan (slice) saja dengan memilih A = Use Entire Disk karena hanya FreeBSD yg akan diinstall Jika sudah selesai, pilih Q (Finish) untuk keluar dari utility FDISK Partition Editor dan kembali ke window Choose Custom Installation Options6. Sebelum kembali ke window Choose Custom Installation Options, sysInstall akan menanyakan apakah akan meng-install Boot Manager. Disini pilih no boot manager karena hanya FreeBSD yg akan diinstall7. Selanjutnya pada window Choose Custom Installation Options pilih Partition untuk mempartisi HardDisk menggunakan utility FreeBSD Disklabel Editor, dan ketik C untuk membuat (create) partisi secara berurutan : / : dgn ukuran 8GB swap : dgn ukuran 8GB /usr : dgn ukuran 8GB selanjutnya folder yg dibuat harus disesuaikan dengan peruntukan server : proxy server : /webcache : dgn ukuran sebesar mungkin web server : /data/web : dgn ukuran sebesar mungkin database server : /data/mysql : dgn ukuran sebesar mungkin mail server : /var/mail : dgn ukuran sebesar mungkin dan terakhir jangan lupa membuat folder untuk backup dan menyimpan log /data/log : dengan ukuran 8GB /backup : gunakan sisa space Hard Disk yg ada (minimal 2GB) perlu diingat bahwa partisi yg pertama kali dibuat haruslah partisi yg paling sering diakses karena partisi yg dibuat pertama kali akan berada pada lokasi silinder terjauh dari pusat cakram disk yg memiliki kecepatan akses paling tinggi.8. Selanjutnya pada window Choose Custom Installation Options pilih Distribution dan pilih nomor 4: Developer untuk meng-install FreeBSD secara komplit tapi tanpa GUI (Graphical User Interface). Pilihan Developer dibutuhkan jika kita perlu melakukan rekonfigurasi kernel agar men-support beberapa modul tambahan seperti Bandwidth Management ALTQ. Jika tidak akan melakukan rekonfigurasi kernel, sebaiknya cukup memilih nomor 8: User, karena semakin kecil dan simple kernel yg digunakan, maka performansi system juga semakin baik (stabil dan responsif)9. Selanjutnya pada window Choose Custom Installation Options pilih Media dan pilih CD/DVD untuk menginstall dari CDROM10. Terakhir pada window Choose Custom Installation Options pilih Commit untuk memulai proses instalasi FreeBSD dan tunggu sampai proses selesai11. Setelah instalasi selesai dilakukan, sysInstall akan menanyakan Change any last options ?. Pilih No12. Selanjutnya pada sysInstall Main Menu pilih Configure untuk melakukan beberapa setting sederhana13. Pada window FreeBSD Configuration Menu pertama-tama pilih Root Password dan masukkan password root sebanyak 2x14. Kemudian pilih User Management untuk membuat user biasa (non superuser)15. Dilanjutkan dengan melakukan setting Time Zone, pilih Asia Indonesia Java & Sumatra WIT (Yes)16. Selanjutnya pilih Networking dan pilih Interfaces untuk melihat Ethernet card yg terdeteksi oleh bootstrap loader. Catat kode Ethernet Card (fxp0, rl0, bge0)17. Restart computer dengan mengetik reboot dan menekan tombol EnterSelanjutnya anda tinggal melakukan setting untuk server :) III. Setting FreeBSD 8 sebagai ServerSetting untuk mempersiapkan FreeBSD sebagai server pun juga sangat sederhana, aktivasi dikumpulkan pada 1 file konfigurasi, dan setting dilakukan di masing2 folder yang sesuai.Ada beberapa setting standar yang harus dilakukan pada system FreeBSD yang telah ter-install,terutama sebagai server yang akan melayani berbagai service dan protocol karena tersambung dengan jaringan. Seperti halnya suatu komputer yang terhubung dengan jaringan, beberapa informasi akan diperlukan server untuk bisa bergabung dengan suatu jaringan :o IP Address, sebagai identifikasi diri di jaringano netmask, sebagai pembatas (melokalisasi jaringan)o Gateway, sebagai pintu keluar ke jaringan laino DNS, sebagai tujuan bertanya untuk resolusi nama1. Setting DNS (Domain Name Service) server, ada pada file /etc/resolv.conf# cat /etc/resolv.confsearch imtelkom.ac.idnameserver 10.1.1.12dengan setting diatas, FreeBSD atau suatu aplikasi akan dapat menanyakan ke server dengan IP "10.1.1.12" setiap kali membutuhkan resolusi nama (mengubah nama menjadi IP address atau sebaliknya)Tips:o Apache dan Squid akan menanyakan validitas nama-nya ke DNS server, jika gagal melakukan query ke DNS server maka aplikasi akan di-shutdown. Jadi pastikan name server sudah aktif sebelum server lain di-rebooto Untuk mencoba koneksi DNS bisa dilakukan dengan : # host mail --> query ke DNS server sesuai isi /etc/resolv.conf mail.imtelkom.ac.id has address 10.1.1.2 # host mail.imtelkom.ac.id 10.1.1.12 --> query ke DNS server 10.1.1.12 mail.imtelkom.ac.id has address 10.1.1.2 o IM Telkom memiliki 2 DNS system, 1 untuk di-query dari intranet dan 1 lagi untuk di-query dari internet. Hal ini ditujukan untuk memisahkan server mana yang bisa diakses dari internet dan server mana yang hanya bisa diakses dari intranet, dg tujuan utama adalah security # host imtelkom.ac.id --> query domain imtelkom.ac.id dari intranet imtelkom.ac.id has address 10.1.1.2 imtelkom.ac.id mail is handled by 5 mail.imtelkom.ac.id. # host imtelkom.ac.id 10.1.1.12 --> query ke DNS server 10.1.1.12 Using domain server: Name: 10.1.1.12 Address: 10.1.1.12#53 --> DNS intranet Aliases: imtelkom.ac.id has address 10.1.1.2 imtelkom.ac.id mail is handled by 5 mail.imtelkom.ac.id. # host imtelkom.ac.id 10.1.1.2 --> query ke DNS server 10.1.1.2 Using domain server: Name: 10.1.1.2 Address: 10.1.1.2#53 --> DNS internet Aliases: imtelkom.ac.id has address 118.97.187.12 imtelkom.ac.id mail is handled by 5 mail.imtelkom.ac.id. 2. Setting hostname, IP address, gateway, dan aktivasi firewall, ada pada file /etc/rc.conf# cat /etc/rc.confhostname = www.imtelkom.ac.idifconfig_em0 = "inet 10.1.1.2 netmask 0xfffffff0" > 10.1.1.2/28defaultrouter = "10.1.1.1" > gatewayfirewall_enable = YESfirewall_type = CLIENTTips:o Kode "em0" disesuaikan dengan hasil deteksi sysInstall (instalasi step 16)o Untuk memberi IP Address lain (pada subnet yg sama) pada interface (Ethernet Card) yg sama, file /etc/rc.conf akan menjadi : ifconfig_em0_alias0 = "inet 10.1.1.12 netmask 0xffffffff" ifconfig_em0_alias1 = "inet 10.1.1.14 netmask 0xffffffff" untuk eksekusi langsung pada prompt (konfigurasi akan hilang jika reboot): ifconfig em0 alias 10.1.1.12 netmask 0xffffffff ifconfig em0 alias 10.1.1.12 netmask 0xffffffff (untuk menghapus) o Untuk memberi IP lain (pada subnet yg beda) pada interface yg sama : cloned_interfaces = "vlan0" ifconfig_vlan0 = "inet 10.1.2.2 netmask 0xffffff00 vlan 205 vlandev em0" 0 Default router adalah gateway untuk IP yg bukan alias dan bukan cloned, untuk mengeset gateway untuk subnet lain bisa dilakukan dengan cara: static_routes = "intranet" route_intranet = "10.1.2.0 10.1.2.1 255.255.255.0" (yang berarti: untuk mengakses subnet 10.1.2.0/24 arahkan ke 10.1.2.1) o Untuk menambah routing : route add 10.1.2.0 10.1.2.254 255.255.255.0 (yang berarti: untuk mengakses subnet 10.1.2.0/24 arahkan ke 10.1.2.254) o Untuk melihat table routing, gunakan : netstat -r Routing tables Internet: Destination Gateway Flags Refs UseNetif Expire default 10.1.1.1 UGS 21919 44178604 em0 10.1.1.0 link#1 U 9849635966 em0 10.1.1.2 link#1 UHS 0 8404431 lo0 10.1.1.12 link#1 UHS 0 8 lo0 10.1.10.32/29 10.16.10.81 UGS 0 0 em1 10.16.10.80/29 link#2 U 0 0 em1 10.16.10.84 link#2 UHS 0 0 lo0 localhost link#3 UH 0 1586570 lo03. Jika aktivasi firewall ada di /etc/rc.conf, isi setting firewall ada pada file /etc/rc.firewallFirewall dengan type CLIENT diset secara default untuk menutup semua protokol (TCP, UDP, GRE) dan port (deny all), untuk kemudian akan dibuka seperlunya. Protokol dan port yg perlu dibuka tergantung dari peruntukan server tersebut :o FTP server : TCP port 21o mail server : TCP port 25 untuk SMTP (kirim email) dan TCP port 110 untuk POP3 (download email)o DNS server : UDP port 53o web server : TCP port 80 untuk HTTP dan TCP port 443 untuk HTTPS (web dengan SSL, Secure Socket Layer)o news server : TCP port 119 untuk NNTP (forum diskusi)o VPN server : TCP port 1723 untuk autentikasi VPN dan GRE untuk enkripsio proxy server : TCP port 8080(TCP = Transmission Control Protocol, UDP = User Datagram Protocol, IP = Internet Protocol, GRE = Generic Routing Encapsulation, SMTP = Simple Mail Transfer Protocol)# cat /etc/rc.firewall[Cc][Ll][Ii][Ee][Nn][Tt])net="10.1.1.0"mask="255.255.255.240"ip="10.1.1.2"setup_loopback${fwcmd} add pass gre from 10.1.0.0/16 to ${ip} --> allow incoming GRE${fwcmd} add pass gre from ${ip} to 10.1.0.0/16 --> allow outgoing GRE${fwcmd} add pass all from ${ip} to any --> allow anything outgoing${fwcmd} add pass tcp from 10.1.0.0/16 to ${ip} 21 --> allow FTP${fwcmd} add pass tcp from 10.1.0.0/16 to ${ip} 25 --> allow SMTP${fwcmd} add pass udp from 10.1.0.0/16 to ${ip} 53 --> allow DNS${fwcmd} add pass tcp from 10.1.0.0/16 to ${ip} 80 --> allow HTTP${fwcmd} add pass tcp from 10.1.0.0/16 to ${ip} 110 --> allow POP3${fwcmd} add pass tcp from 10.1.0.0/16 to ${ip} 119 --> allow NNTP${fwcmd} add pass tcp from 10.1.0.0/16 to ${ip} 443 --> allow HTTPS${fwcmd} add pass tcp from 10.1.0.0/16 to ${ip} 1723 --> allow VPN${fwcmd} add pass tcp from 10.1.0.0/16 to ${ip} 8080 --> allow proxy${fwcmd} allow ip from ${ip} to ${net}:${netmask}--> rule untuk meng-allow semua paket ke subnet 10.1.1.0/24;; --> deny everything (last rule)Tips :o IPFW dipilih karena merupakan default firewall dari FreeBSDo Urutan rule sangat berpengaruh karena IPFW akan membandingkan setiap paket data dengan rule2 yg ada secara berurutan sesuai dengan nomor rule dari nomor terkecil sampai nomor terbesar (nomor terbesar adalah "deny all")o Semakin sedikit jumlah rule yang digunakan maka semakin cepat pemrosesan paket oleh IPFW, dan semakin generic/simple rule yang digunakan maka semakin cepat pula pemrosesan paket oleh IPFWo dynamic rules (semua rule setelah "check-state") akan mempercepat pengecekan suatu paket data terhadap rule2 yg ada, namun rentan terhadap flooding. Jadi hanya paket2 outgoing (keluar dari server) yg sebaiknya dimasukkan ke dynamic rule seperti contoh di bawah ini : ${fwcmd} add check state ${fwcmd} allow tcp from any to {ip} keep-state selain mempercepat pengecekan data, kelebihan dari dynamic rule adalah rule untuk paket data arah sebaliknya tidak perlu lagi dibuat. Pada contoh diatas rule untuk arah incoming tidak perlu dibuat.4. Setting host yang boleh masuk ke server, ada pada file /etc/hosts.allow# cat /etc/hosts.allowsshd : 10.1.1.0/255.255.255.0 : allowsshd : ALL : denymysqld : 10.1.1.0/255.255.255.0 : allowmysqld : ALL : denyentry pertama akan memperbolehkan semua komputer dari subnet 10.1.1.0/24 untuk menggunakan aplikasi SSH dan diluar itu akan ditolak (entry kedua).entry ketiga akan memperbolehkan semua komputer dari subnet 10.1.1.0/24 untuk menggunakan aplikasi MySQL dan diluar itu akan ditolak (entry keempat).5. Tuning variable system untuk meningkatkan performansi system ada pada file /boot/loader.conf dan file /etc/sysctl.conf# cat /boot/loader.confdummynet.ko_load=YES # load modul DUMMYNET untuk trafic shaperkern.maxfiles=4096? # maximum file yang bisa dibukakern.maxusers=64? # maximum static tables (per user)kern.ipc.maxsockets=4096? # maximum sockets yg tersediakern.ipc.nmbclusters=32768? # maximum Network Memory Buffer Clusterskern.maxproc=8192? # maximum processes# cat /etc/sysctl.confkern.ipc.somaxconn=4096 # maximum socket untuk koneksiIV. Maintenance FreeBSD BasicSedangkan untuk menjamin keamanan, kestabilan, dan performansi system FreeBSD memang membutuhkan pemahaman tentang konsep TCP/IP, namun settingnya sangat straightforward.Ada beberapa aplikasi bawaan FreeBSD yang akan sering digunakan untuk melakukan operation and maintenance system :1. mengecek status suatu aplikasi :ps : process statuskill : terminate process# ps axakan menampilkan semua aplikasi yang aktif dengan process ID-nya masing2# ps ax | grep http473 ?? Ss 0:06.44 /usr/local/sbin/httpd -DSSL33640 ?? I 0:00.04 /usr/local/sbin/httpd -DSSL33641 ?? I 0:00.04 /usr/local/sbin/httpd -DSSLakan menampilkan status aplikasi HTTP, apakah aktif atau tidak. Jika aktif akan ditampilkan "process ID"-nya (pada contoh diatas ada 1 process ID untuk daemon-nya, yaitu 473, dan 2 process ID untuk child process, yaitu 33640 dan 33641) yang kemudian bisa dimatikan dengan command "kill process_ID"# kill HUP 1234akan me-restart aplikasi dgn process ID = 1234 (agar aplikasi tersebut membaca kembali file2 setting)2. system resource maintenance :top : melihat utilitas cpu dan memorysysctl : melihat (dan mengubah) utilitas kernel# top bt48 processes: 48 sleepingMem: 323M Active, 33M Inact, 85M Wired, 19M Cache, 57M Buf, 996K FreeSwap: 8192M Total, 131M Used, 8061M Free, 1% InusePID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND6337 squid 96 0 335M 305M select 93:35 4.93% 4.93% squid37337 root 96 0 5132K 2752K select 1:42 0.20% 0.20% mpd307 root 96 0 1324K 252K select 0:05 0.10% 0.10% syslogd532 mysql 20 0 57356K 2796K kserel 75:17 0.00% 0.00% mysqldtop akan menampilkan setiap aplikasi yg aktif dan tingkat konsumsinya terhadap prosesor danmemory. Normalnya suatu aplikasi mengkonsumsi prosesor kurang dari 20% (pada contoh diatas squid hanya menggunakan 4.93%)# sysctl -a | grep filekern.maxfiles: 4096kern.openfiles: 2293kern.maxfilesperproc: 3686# sysctl -a | grep nmbclusterkern.ipc.nmbclusters: 32768sysctl akan menampilkan resource yg tersedia dan yg telah terpakai di system3. file maintenance :secure copy : membuat duplikat file antar servercopy : membuat duplikat file dalam 1 servermove : memindahkan file dalam 1 serverremove : menghapus file dalam 1 serverchange owner/mode : mengubah kepemilikan dan akses file/foldercp [-r] /source_path/source_file /target_path/target_file# cp /home/manager/myfile.dat /root/yourfile.datduplikasi file "myfile.dat" di /home/manager menjadi "yourfile.dat" di "/root"parameter "r" berarti recursive (copy dilakukan pada semua file dan folder)mv /source_path/source_file /target_path/target_file# mv /home/manager/myfile.dat /root/yourfile.datmemindahkan file "myfile.dat" di /home/manager ke "yourfile.dat" di "/root"parameter "r" berarti recursive (move dilakukan pada semua file dan folder)rm [-r] /path/file# rm /home/manager/myfile.datmenghapus file "myfile.dat" di /home/managerparameter "r" berarti recursive (remove dilakukan pada semua file dan folder)find /path name "filename" print > list.txtrm -r < `cat list.txt`# rm r < /home/manager/myfile.datmenghapus semua file "filename" di /path(sangat bermanfaat untuk menghapus WS_FTP.LOG dan Thumbs.db)scp [user@source_server]:/source_path/source_file [user@target_server]:/target_path/target_file# scp manager@www:/home/manager/myfile.dat /root/yourfile.datakan menduplikasi file "myfile.dat" di home directory manager di server www menjadi "yourfile.dat" di localhost pada folder "/root"catatan: scp (secure copy) menggunakan port 22 (SSH) sehingga semua transaksi akan di-enkripsi.chown [-R] user:group /path/file# chown manager:wheel /home/manager/myfile.datmengubah kepemilikan file "myfile.dat" di /home/manager menjadi milik manager dengan group wheelparameter "R" berarti recursive (chown dilakukan pada semua file dan folder)chmod [-R] xyz /path/filedimana x,y,z adalah mode Read-Write-eXecute (dengan bobot R=4, W=2, X=1) dan x adalah mode aksesuntuk pemilik, y adalah mode akses untuk bukan pemilik tapi masih dalam 1 group dengan pemilik, z adalah mode akses untuk diluar pemilik dan juga diluar group pemilik (biasa disebut dengan istilah world)misal : x=4 berarti R--, x=6 berarti RW-, x=7 berarti RWX# chmod 740 /home/manager/myfile.datmengubah mode akses file "myfile.dat" di /home/manager menjadi :7 --> RWX, berarti manager dapat membaca, menulis, dan mengeksekusi file tsb4 --> R, berarti user non manager tapi dalam group wheel hanya bisa membaca0 --> berarti user lain (dan juga group lain) tidak boleh mengakses file tsbparameter "R" berarti recursive (chown dilakukan pada semua file dan folder)4. disk maintenance :du : disk usage (melihat pemakaian/kapasitas dari suatu folder)df : disk free (melihat pemakaian/kapasitas dari suatu mountpoint)fsck : file system check# du /etc106 /etc/defaultsmenampilkan jumlah inode (usage) dari setiap file atau folder yg ada di /etc# df k/dev/ad8s1a 4058062 60984 3672434 2% //dev/ad8s1h 3008718 508994 2259028 18% /data/log/dev/ad8s1f 507630 21702 445318 5% /data/mysql/dev/ad8s1e 63214 4386 53772 8% /data/web/dev/ad8s1d 4058062 1462086 2271332 39% /usr/dev/ad8s1g 55854154 50582926 802896 98% /webcachemenampilkan penggunaan hard disk (dalam kilobyte) untuk setiap mount pointjika ada error di suatu mount point, seperti :o aplikasi df melaporkan usage suatu mount point lebih dari 100%o kernel panic, dimana kernel tidak dapat mounting suatu mount pointo server mati tanpa melalui proses shutdown (karena listrik mati)maka lakukan file system check (seperti aplikasi chkdsk (check disk) di windows) :# fsck ySetelah melakukan file system check sebaiknya server di-restart dengan perintah# reboot5. mencari file atau folder :locate : mencari suatu file/folder di dalam list locatefind : mencari suatu file/folder secara langsung# locate index.htmlmencari file atau folder yang memiliki frase "index.html"catatan: locate menggunakan daftar file yg diupdate setiap Senin, untuk mengupdate-nya sendiri bisa dilakukan dengan command /usr/libexec/locate.updatedb# find /usr -name "index.html" -printsama seperti locate yaitu mencari file atau folder yang memiliki frase "index.html", bedanya "find" benar2 mencarinya satu demi satu (tidak memiliki database tersendiri) dan dapat dispesifikkan untuk mencari hanya pada folder /usr6. traffic maintenance :netstat : melihat status dan statistik networktrafshow : melihat statistik trafiksockstat : melihat socket yang aktif# netstat n i | grep nguntuk melihat jumlah koneksi VPN yang aktif# netstat runtuk melihat table routing# netstat muntuk melihat statistic penggunaan memory buffer untuk keperluan network# netstat iuntuk melihat statistic paket di setiap interface (dan setiap protocol)# trafshowFrom Address To Address Prot Bytes==========================================================================h614287.serverkompete..https 222.124.158.130..52994 tcp 1500222.124.158.130..52994 h614287.serverkompete..https tcp 138222.124.158.130..56960 64.38.4.83..http tcp 64trafshow (show traffic) digunakan untuk melihat trafik di ethernet card dengan fungsi yang serupa dengan command netstat n namun dengan beberapa kelebihan. Trafshow merupakan aplikasi 3rd party yg harus diinstall melalui port (tidak ada konfigurasi yg perlu di-setting) :# cd /usr/ports/net/trafshow# make install clean# sockstatUSER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESSwww httpd 40840 3 tcp4 10.14.203.100:80 *:*www httpd 40840 4 tcp46 *:443*:*manager sshd 39500 3 stream -> ??manager sshd 39500 5 tcp4 10.14.203.100:22 10.14.203.105:1044root sshd 39497 4 stream -> ??root sshd 39497 5 tcp4 10.14.203.100:22 10.14.203.105:1044www httpd 38161 3 tcp4 10.14.203.100:80 *:*www httpd 38161 4 tcp46 *:443*:*sockstat (socket statistic) digunakan untuk melihat socket yg sedang aktif7. cron tabel : crontabcron adalah aplikasi scheduler yg akan menjalankan suatu aplikasi pada waktu tertentu ygtelah dispesifikasikan# crontab -lakan menampilkan daftar aplikasi yg akan dijalankancontoh isi crontab untuk menjalankan aplikasi /root/update.sh :30 23 * * * /root/update.sh --> dijalankan setiap jam 23:30*/5 * * * * /root/update.sh --> dijalankan setiap 5 menit sekali0 */2 * * * /root/update.sh --> dijalankan setiap 2 jam sekali0 0 1 * * /root/update.sh --> dijalankan setiap tanggal 1 jam 0:00 0 * * 1 /root/update.sh --> dijalankan setiap hari senin# crontab -eakan mengedit daftar aplikasi yg akan dijalankan8. automatic scp :kekurangan dari scp (secure copy) adalah user harus memasukkan password account dari remote server setiap kali melakukan scp. Agar password tidak perlu di-input setiap kali scp dijalankan (terutama jika scp akan dijalankan via crontab), ada 3 langkah yg harus dilakukan.Untuk automatic SCP dari server A ke server B :a. login ke server A sebagai user biasa (bukan root) dan jalankan : $ ssh-keygen -b 512 -t dsa aplikasi ssh-keygen akan membuat 2 file : private key (dengan nama id_dsa) dan public key (dengan nama id_dsa.pub) sepanjang 512 byte dengan enkripsi DSA di folder /home/user/.ssh Tips: jangan mengisi passphraseb. login ke server tujuan sebagai user biasa (bukan root) dan buat file /home/user/.ssh/authorized_keys dengan mode 600c. copy isi dari file id_dsa.pub (pastikan hanya ada tepat 1 baris) ke file authorized_keys9. manajemen user :adduser : menambah userrmuser : menghapus usermembuat user# adduserUsername: managerFull name: Manager SisfoUid (Leave empty for default):Login group [manager]: wheelLogin group is wheel. Invite manager into other groups? []:Login class [default]:Shell (sh csh tcsh nologin) [sh]:Home directory [/home/manager]:Use password-based authentication? [yes]:Use an empty password? (yes/no) [no]:Use a random password? (yes/no) [no]:Enter password: --> masukkan passwordEnter password again: --> masukkan kembali password untuk konfirmasiTips:o Full name akan digunakan saat user mengirim email via shello User pada mail server tidak perlu menggunakan Shell (pilih nologin), dan juga tidak perlu memiliki home directory (pilih /nonexistent)o Home directory dapat diubah-ubah sesuai peruntukan userUntuk kasus dimana user yg ditambahkan sangat banyak (bulk), seperti pada pembuatan mail server berbasis NIX account, admin dapat menggunakan file yg berisi daftar user (jumlah entry dalam file tsb harus tepat 10 field per row dimana setiap field dipisahkan dgn tanda :) :# cat staf.datuser1::::::nama_lengkap:::password1user2::::::nama_lengkap:::password2# adduser -D -f pegawai.txt -g staf -d /nonexistent -s nologinmenghapus user# rmuser [user]# rmuser -y -f pegawai.txt mengubah password untuk user# chfn [user] --> mengubah full name dari user10. manual aplikasisuatu aplikasi dapat dilihat manualnya dengan # man squid11. melihat dan mengedit file textuntuk melihat suatu file text dapat dilakukan dengan :# cat fileteks.txt > melihat semua isi file fileteks.txt# head fileteks.txt > melihat bagian awal dari file fileteks.txt# tail fileteks.txt > melihat bagian akhir dari file fileteks.txtjika file text tersebut selalu bertambah (misal: log-nya apache, log-nya sendmail, dan log-nya squid), kita bisa melihat perubahannya secara real time dengan :# tail f /var/log/maillog > melihat transaksi email secara real timeSementara untuk mengedit suatu file text, dapat menggunakan berbagai aplikasi bawaan dari FreeBSD seperti vi atau edit. Namun tersedia banyak pilihan text editor sesuai selera user yang bisa diinstall via port di /usr/ports/editors/.12. mounting file systemuntuk menambah suatu file system diluar dari file system yang telah ada:# mount t [type_file_system] /dev/[nama_device] /mntcontoh :# mount t msdos /dev/ad0 /mnt > mounting USB flash disk# mount t cd9660 /dev/acd0 /cdrom > mounting CDROM13. setting proxyjika server berada di belakang proxy dan diperlukan untuk melakukan download dari internet, bisa digunakan aplikasi wget (harus diinstall via port atau 3rd party application) atau cukup men-set proxy agar query HTTP dikirim ke proxy server :# setenv http_proxy http://10.14.203.4:8080Jika ingin menggunakan wget (dalam kasus download lewat scheduler cron):# cd /usr/ports/ftp/wget# make install clean < tunggu sampai selesai > # cat /root/.wgetrc --> jika root yg akan melakukan downloadhttp_proxy=http://10.1.1.2:8080/Penggunaan proxy ini sangat memudahkan admin saat meng-install port (3rd party software) karenasemua file yg dibutuhkan oleh suatu port akan di-download langsung dari internetV. Aplikasi perangkat lunak yg di-standarkan dalam buku manual ini, mencakup :a. Apache 2.x (popular web server) Web Server di FreeBSD Apache adalah aplikasi untuk web server yg paling popular digunakan, sederhana pemakaiannya, dan sangat responsive meskipun hanya membutuhkan resource system yang minimal. Untuk instalasi Apache 2.0 anda harus login ke server sebagai SuperUser (root) :# cd /usr/ports/www/apache20# make install clean # edit /usr/local/etc/apache2/httpd.conf (hanya entry yg perlu di-edit)Listen 10.1.1.2:80 > sesuaikan dgn alamat IP dari serverServerAdmin [email protected] www.imtelkom.ac.id:80 > sesuaikan dgn nama serverDocumentRoot /data/webAllow from allServerTokens ProdServerSignature Off# ipfw add allow tcp from any to 10.1.1.2 dst-port 80 setup# cat /etc/rc.conf | grep apacheapache2_enable=YESapache2ssl_enable=YES Apache 2.2 memberikan fitur yang lebih banyak dibandingkan Apache 2.0, meskipun fitur2 tersebut tidak terlalu berguna untuk pemakaian sebagai web server standar. Selain perbedaan pada fitur yang disediakan, Apache 2.2 juga memisahkan antara konfigurasi standar dengan konfigurasi modul tambahan, seperti misalnya :# cd /usr/local/etc/apache22/# ls l httpd.conf ? konfigurasi standar# ls l extra/httpd-vhosts.conf ? konfigurasi Virtual Host# ls l extra/httpd-ssl.conf ? konfigurasi SSL Untuk instalasi Apache 2.2 anda harus login ke server sebagai SuperUser (root).# cd /usr/ports/www/apache22# make install clean Untuk selanjutnya, dokumen akan menjelaskan setting dan konfigurasi dari Apache 2.0, sementara untuk Apache 2.2 bisa disesuaikan. Dengan alasan keamanan data, SSL (Secure Socket Layer) harus diaktifkan :# cd /usr/local/etc/apache2# openssl genrsa > server.key# openssl req -new -x509 -key server.key -out server.crt -days 365Country Name (2 letter code) []:IDState or Province Name (full name) []:West JavaLocality Name (eg, city) []:BandungOrganization Name (eg, company) []:IM TelkomOrganizational Unit Name (eg, section) []:SisfoCommon Name []:www.imtelkom.ac.id > gunakan nama serverEmail Address []:[email protected]# mkdir ssl.key# mv server.key ssl.key/# mkdir ssl.crt# mv server.crt ssl.crt/# edit ssl.confDocumentRoot /data/webServerName www.imtelkom.ac.id:443ServerAdmin [email protected]# ipfw add allow tcp from any to 10.1.1.2 dst-port 443 setup Tips: o Script untuk menjalankan apache2 ada di /usr/local/etc/rc.d/apache2.sh /usr/local/etc/rc.d/apache2.sh start --> menjalankan apache2 /usr/local/etc/rc.d/apache2.sh restart --> mematikan apache2 dan menjalankannya kembali dgn membaca file konfigurasi httpd.conf yg baru o Sebelum menjalankan file konfigurasi yg baru, sebaiknya mengecek terlebih dahulu validitas syntax di dalam file httpd.conf dengan : # apachectl configtest Syntax OK o Selain menggunakan /usr/local/etc/rc.d/apache2.sh restart kita juga bisa menggunakan command berikut untuk me-restart apache2 : # apachectl graceful o Untuk melihat siapa yg sedang mengakses apache : # tail -f /var/log/httpd-access.log o "Alias" digunakan untuk redirection request web ke suatu folder : Alias /nilai "/data/web/akademik/html/nilai" Allow from all maka request ke http://server/nilai akan direply oleh index.php atau index.html di folder /data/web/akademik/html/nilai o "Proxy" digunakan untuk redirection request web ke suatu folder di server lain: ProxyPass /mhs http://10.1.1.20/mhs ProxyPassReverse /mhs http://10.1.1.20/mhs ProxyVia On --> cukup ditulis 1x saja maka request ke http://server/mhs akan diforward ke server 10.1.1.20 (dari sisi client yg dianggap menjawab request tsb adalah tetap http://server) o Apache 2.2 menyediakan setting proxy pada VirtualHost: ProxyPreserveHost On ProxyPass / http://10.1.1.20/ ProxyPassReverse / http://10.1.1.20/ ServerName mhs.imtelkom.ac.id o Apache 2.0 memiliki beberapa modul yg bisa di-install maupun tidak : # cd /usr/ports/www/apache20 # make show-categories AUTH --> untuk membatasi user yg bisa mengakses suatu page (default ON) DAV --> untuk Web DAV (sharing hard disk server) (default ON) EXPERIMENTAL --> optional (default OFF) LDAP --> untuk LDAP (default OFF) MISC --> modul standar (default ON) PROXY --> untuk melewatkan query HTTP ke server lain (default OFF) SSL --> untuk SSL (default OFF) SUEXEC --> untuk SUEXEC (default OFF) THREADS --> untuk CGI (default OFF) # make install WITHOUT_DAV_MODULES=yes WITH_PROXY_MODULES=yes --> akan meng-install Apache20 tanpa modul DAV tapi dengan tambahan modul PROXY Jika Apache sudah terlanjur di-install, maka kita tidak bisa menambah atau mengurangi modul. Untuk dapat menambah atau mengurangi modul, Apache harus di-"make deinstall" terlebih dahulu, baru diulang kembali "make install WITH" o Modul pada Apache 2.2 secara default akan selalu diinstall, dan untuk menonaktifkannya kita bisa melakukannya pada file konfigurasi standar: # vi /usr/local/etc/apache22/httpd.conf LoadModule authn_file_module libexec/apache22/mod_authn_file.so LoadModule authn_dbm_module libexec/apache22/mod_authn_dbm.so LoadModule authn_anon_module libexec/apache22/mod_authn_anon.so LoadModule authn_default_module libexec/apache22/mod_authn_default.so LoadModule authn_alias_module libexec/apache22/mod_authn_alias.so LoadModule authz_host_module libexec/apache22/mod_authz_host.so LoadModule authz_user_module libexec/apache22/mod_authz_user.so LoadModule authz_dbm_module libexec/apache22/mod_authz_dbm.so LoadModule authz_owner_module libexec/apache22/mod_authz_owner.so LoadModule authz_default_module libexec/apache22/mod_authz_default.so LoadModule auth_basic_module libexec/apache22/mod_auth_basic.so LoadModule auth_digest_module libexec/apache22/mod_auth_digest.so LoadModule file_cache_module libexec/apache22/mod_file_cache.so LoadModule cache_module libexec/apache22/mod_cache.so LoadModule disk_cache_module libexec/apache22/mod_disk_cache.so LoadModule dumpio_module libexec/apache22/mod_dumpio.so LoadModule reqtimeout_module libexec/apache22/mod_reqtimeout.so LoadModule include_module libexec/apache22/mod_include.so LoadModule filter_module libexec/apache22/mod_filter.so LoadModule charset_lite_module libexec/apache22/mod_charset_lite.so LoadModule deflate_module libexec/apache22/mod_deflate.so LoadModule log_config_module libexec/apache22/mod_log_config.so LoadModule logio_module libexec/apache22/mod_logio.so LoadModule env_module libexec/apache22/mod_env.so LoadModule mime_magic_module libexec/apache22/mod_mime_magic.so LoadModule cern_meta_module libexec/apache22/mod_cern_meta.so LoadModule expires_module libexec/apache22/mod_expires.so LoadModule headers_module libexec/apache22/mod_headers.so LoadModule usertrack_module libexec/apache22/mod_usertrack.so LoadModule unique_id_module libexec/apache22/mod_unique_id.so LoadModule setenvif_module libexec/apache22/mod_setenvif.so LoadModule version_module libexec/apache22/mod_version.so (dan seterusnya)b. PHP 5.x (server script programming) PHP di FreeBSD PHP adalah server side script yang dijalankan dibawah kendali web server (contoh: Apache), dimana Apache akan menjalankan script tersebut melalui PHP parser jika menemukan file berekstensi .php. Yang pertama dilakukan untuk mengaktifkan PHP adalah menginstalasi PHP itu sendiri dengan modul2 standard.# cd /usr/ports/lang/php5# make install clean ***************************************************************Make sure index.php is part of your DirectoryIndex.You should add the following to your Apache configuration file:AddType application/x-httpd-php .phpAddType application/x-httpd-php-source .phps*************************************************************** Pastikan Apache telah bisa memanfaatkan PHP parser, dengan memastikan adanya line-line berikut di httpd.conf :LoadModule php5_module libexec/apache22/libphp5.soDirectoryIndex index.php index.html index.html.varAddType application/x-httpd-php .phpAddType application/x-httpd-php-source .phps Dalam beberapa kasus seperti perbankan, kita akan membutuhkan PHP parser dengan versi minimal 5.3 :# php -vPHP 5.2.17 with Suhosin-Patch 0.9.7 (cli) (built: Mar 9 2011 23:27:04) (DEBUG)Copyright (c) 1997-2009 The PHP GroupZend Engine v2.2.0, Copyright (c) 1998-2010 Zend Technologies Karena pada versi 5.3 telah terakomodasi hashing function dengan memanfaatkan SHA-256 dan SHA-512 yang menjadi syarat utama untuk transaksi integrasi dengan dunia perbankan. Untuk menambah modul2 extension agar beberapa fungsi PHP bisa dijalankan :# cd /usr/ports/lang/php5-extensions# make install clean Pada menu yg muncul, lakukan instalasi untuk modul-modul sesuai kebutuhan : o modul BCMATH jika akan menggunakan fungsi2 matematika o modul GD jika akan membuat gambar (grafik) o modul MySQL jika akan menggunakan database MySQL o modul Session jika akan menggunakan script dengan session o modul SNMP jika akan mengambil data dari SNMP Jika dikemudian hari ingin menambah modul, maka lakukan hal berikut : # rm /var/db/ports/php5-extensions/options# cd /usr/ports/lang/php5-extensions# make install clean Ada 2 cara untuk melihat modul extension apa saja yg di-support oleh PHP di suatu server :# cat /usr/local/etc/php/extensions.iniextension=bcmath.soextension=gd.soextension=mysql.soextension=session.soextension=snmp.so# ls -l /usr/local/lib/php/20060613/-r--r--r-- 1 root wheel 13621 Mar 28 20:45 ctype.so-r--r--r-- 1 root wheel 150693 Mar 28 20:46 dom.so-r--r--r-- 1 root wheel 33525 Mar 28 20:46 filter.so-r--r--r-- 1 root wheel 356868 Mar 28 20:47 gd.so-r--r--r-- 1 root wheel 170485 Mar 28 20:47 hash.so-r--r--r-- 1 root wheel 38878 Mar 28 20:48 iconv.so-r--r--r-- 1 root wheel 95670 Mar 28 21:19 imap.so-r--r--r-- 1 root wheel 26146 Mar 28 20:48 json.so-r--r--r-- 1 root wheel 53762 Mar 28 20:48 mysql.so-r--r--r-- 1 root wheel 163888 Mar 28 20:46 pcre.so-r--r--r-- 1 root wheel 98541 Mar 28 20:48 pdo.so-r--r--r-- 1 root wheel 402112 Mar 28 20:48 pdo_sqlite.so-r--r--r-- 1 root wheel 23916 Mar 28 20:49 posix.so-r--r--r-- 1 root wheel 57671 Mar 28 20:49 session.so-r--r--r-- 1 root wheel 38884 Mar 28 20:46 simplexml.so-r--r--r-- 1 root wheel 163441 Mar 28 20:46 spl.so-r--r--r-- 1 root wheel 332953 Mar 28 20:49 sqlite.so-r--r--r-- 1 root wheel 16873 Mar 28 20:49 tokenizer.so-r--r--r-- 1 root wheel 43561 Mar 28 20:50 xml.so-r--r--r-- 1 root wheel 32531 Mar 28 20:50 xmlreader.so-r--r--r-- 1 root wheel 30914 Mar 28 20:50 xmlwriter.so Untuk meningkatkan security, jangan lupa untuk mengedit file /usr/local/etc/php.ini (yg didapat dari /usr/local/etc/php.ini-recommended) :register_globals = Offerror_reporting = E_ERRORdisplay_errors = Offpost_max_size = 8Mupload_max_filesize = 2Mc. MySQL 4.x (database client-server) MySQL Server di FreeBSD MySQL merupakan database yg sangat populer karena sangat mudah diinstalasi, dipergunakan, dan dibackup. MySQL menggunakan format standar SQL (Structure Query Language) untuk mengakses informasinya. Untuk instalasi MySQL :# cd /usr/ports/databases/mysql51-server# make install clean Selanjutnya lakukan beberapa setting berikut :# cat /etc/rc.conf | grep mysqlmysql_enable = YESmysql_dbdir = /data/mysql Jangan lupa membuat root password dengan :# mysqladmin u root password inipasswordadmin Tips : a. Jangan lupa untuk secara rutin melakukan indexing pada tabel-tabel yang berukuran besar dan sering diaksesmysql> create index nama_index on nama_tabel(nama_field); b. Tipe data char dan varchar memiliki karakteristik yang berbeda, char adalah fixed length dan varchar adalah variable length (pada saat disimpan menjadi file). Sebisa mungkin gunakan char untuk mempercepat akses ke informasi c. Dengan versi MySQL yang sama, pemindahan data dpt dilakukan dgn mudah (cukup copy-paste file2-nya langsung, mencakup *.MYD, *.MYI, dan *.frm) dan menyesuaikan owner (chown) dan mode (chmod) d. Jika terjadi error "Too Many Connection", maka lakukan langkah2 berikut :o login ke MySQL sebagai rooto jalankan "show processlist" untuk melihat account dan proses yg membuat sibuk MySQLo jalankan juga "show global variables" untuk melihat variable MySQLo set variable max_connections dengan mengetikkan "set global max_connections = 500" e. Untuk membackup database bisa dilakukan dengan # mysqldump -u root -p [nama_database] [nama_tabel] > hasil_dump.sql dan untuk me-restore-nya kembali # cat hasil_dump.sql | mysql u root p -D[nama_database] f. Saat membuat account untuk mengakses MySQL, selalu membuat 2 level : mysql> grant all on my_db.* to user1@localhost identified by 'pwd'; mysql> grant select on my_db.* to user2@localhost identified by 'pwd'; user1 disediakan untuk programmer dan admin agar bisa mengubah2 isi database, sementara user2 untuk user biasa yg hanya bisa "select" saja. g. Agar MySQL dapat diakses dari server yg lain :o buat account khusus : mysql> grant select on my_db.* to [email protected] identified by 'pwd'; mysql> grant select on my_db.* to [email protected] identified by 'pwd';o edit file /etc/hosts.allow # cat /etc/hosts.allow | grep mysql mysqld : 10.1.1.3 : allow mysqld : ALL : denyo edit file /etc/rc.firewall # cat /etc/rc.firewall | grep 3306 ${fwcmd} add pass tcp from 10.1.1.5 to ${ip} 3306 setup keep-stateo script PHP untuk mengakses database di server lain tersebut : atau bisa menggunakan IP address (agar tidak membutuhkan DNS) : d. MPD 3.x (Multi Protocol Daemon untuk aplikasi PPTP/VPN) VPN Server di FreeBSD MPD (Multi Protocol Daemon) adalah aplikasi untuk VPN server yang bisa mengakomodasi Microsoft Dial Up (PPTP, Point to Point Tunelling Protocol) sehingga user yang menggunakan platform Microsoft Windows bisa membuat VPN Dial Up dan terkoneksi secara virtual dengan suatu LAN intranet. MPD hanya tersedia di FreeBSD dan bisa dikonfigurasi untuk :o Dial Up modem (PPP), yang mengakomodasi On Demand Connection (DoD, Dial On Demand) dan otomatis memutuskan koneksi dialup jika idleo Dial In, menerima koneksi panggilan dari usero Multi Dialup, yang mengakomodasi multiple ISPo PPTP (Point to Point Tunelling Protocol) Server, mengakomodasi banyak user dari Internet untuk bisa terkoneksi dengan LAN intraneto PPTP VPN, mengakomodasi koneksi tetap antar 2 LAN Instalasi MPD dilakukan dengan :# cd /usr/ports/net/mpd# make install clean MPD membutuhkan 3 file konfigurasi yg ada di /usr/local/etc/mpd : # ls -l /usr/local/etc/mpdtotal 198-rw------- 1 root wheel 27131 Jun 28 15:30 mpd.conf-rw------- 1 root wheel 29354 Jun 28 15:24 mpd.links-rw------- 1 root wheel 82641 Jun 28 15:24 mpd.secret# cat /usr/local/etc/mpd/mpd.confdefault:load pptp2load pptp3dialin:new -i ng1 dialin dlinkset iface addrs 172.16.3.1 172.16.3.2set iface idle 900set ipcp ranges 172.16.3.1/32 172.16.3.2/32set ipcp dns 202.134.2.5 ? sesuaikan dengan IP DNS Serveryg akan di-assign ke semua clientset ipcp yes vjcompset link enable chap papset link disable papset link deny chap papset link yes acfcomp protocompset modem idle-script AnswerCallset modem speed 57600pptp:set iface disable on-demandset bundle disable multilinkset link yes acfcomp protocompset link no pap chapset link enable chapset link keep-alive 10 60set ipcp yes vjcompset ipcp dns 202.134.2.5 ? sesuaikan dengan IP DNS Serveryg akan di-assign ke semua clientset bundle enable compressionset ccp yes mppcset ccp yes mpp-e40set ccp yes mpp-e56set ccp yes mpp-e128set ccp yes mpp-statelessset ecp yes despptp2:new -i ng2 pptp2 pptp2load pptpset ipcp ranges 172.16.1.1/32 172.16.2.2/16pptp3:new -i ng3 pptp3 pptp3load pptpset ipcp ranges 172.16.1.1/32 172.16.2.3/16vpn:new -i ng1 vpn vpnset iface disable on-demandset iface addrs 192.168.1.1 192.168.2.1set iface idle 0set iface route 192.168.2.0/24set bundle disable multilinkset bundle authname "VpnLogin"set bundle password "VpnPassword"set link yes acfcomp protocompset link no papset link yes chapset link keep-alive 10 75set ipcp yes vjcompset ipcp ranges 192.168.1.1/32 192.168.2.1/32openPPPoE:new -i ng0 PPPoE PPPoEset iface addrs 1.1.1.1 2.2.2.2set iface route defaultset iface disable on-demandset iface idle 0set bundle disable multilinkset bundle authname MyLoginset link no acfcomp protocompset link disable pap chapset link accept chapset ipcp yes vjcompset ipcp ranges 0.0.0.0/0 0.0.0.0/0open iface# cat /usr/local/etc/mpd/mpd.linksdlink:set link type modemset modem device /dev/cuaa1pptp:set link type pptpset pptp mode passiveset pptp self 10.1.1.2set pptp enable incomingset pptp disable originateset pptp disable windowingpptp2:set link type pptpset pptp self 10.1.1.2set pptp enable incomingset pptp disable windowingpptp3:set link type pptpset pptp self 10.1.1.2set pptp enable incomingset pptp disable originateset pptp disable windowing# cat /usr/local/etc/mpd/mpd.secretuser1 pass1 172.16.1.2user2 pass2 172.16.1.3user3 pass3 172.16.1.4user4 pass4 172.16.1.5 Untuk melihat siapa saja yg sedang login ke VPN server, bisa dilakukan dengan :# ifconfig | grep 172.16 | grep n 172.16 Setting yg digunakan jika MPD akan digunakan sbg dialer (client) :# cat /usr/local/etc/mpd/mpd.confsisfo: new -i ng0 sis sis set iface disable on-demand set iface idle 0 set auth authname "root" set auth password "sengajadisalahin" set link no pap set link mtu 1460 open vpn: new -i ng1 vpn vpn set iface disable on-demand set iface idle 0 set bundle disable multilink set auth authname "sisfo" set auth password "passwordsisfo" set link yes acfcomp protocomp set link no pap set link yes chap set link disable pap chap chap-msv1 chap-msv2 chap-md5 set link mtu 1460 set link keep-alive 10 75 set ipcp yes vjcomp set ccp yes mppc set ccp yes mpp-e40 set ccp yes mpp-e128 set bundle enable crypt-reqd set ccp yes mpp-stateless open# cat /usr/local/etc/mpd/mpd.linksvpn: set link type pptp set link mtu 1200 set link mru 1200 set pptp peer 10.1.1.2 set pptp enable originate sis: set link type pptp set link mtu 1400 set link mru 1400 set pptp peer 10.1.1.2 set pptp enable originate MPD5 menyediakan koneksi secara dinamis, dimana kita tidak perlu membuat konfigurasi untuk setiap koneksi (pada MPD3, jika kita ingin mengakomodasi 250 user yang bisa konek, maka kita harus membuat 250 konfigurasi pptp). Untuk menggunakan MPD5 :# cd /usr/ports/net/mpd5# make install clean $ cat /usr/local/etc/mpd5/mpd.confstartup:set user root password adminset console self 127.0.0.1 5005set console opendefault:load pptp_serverpptp_server:set ippool add pool1 10.1.1.51 10.1.1.60 ? menyediakan 10 PPTPcreate bundle template Bset iface enable proxy-arpset iface idle 1800set iface enable tcpmssfixset ipcp yes vjcompset ipcp ranges 10.1.1.1/32 ippool pool1set ipcp dns 10.1.1.12set bundle enable compressionset ccp yes mppcset mppc yes e40set mppc yes e128set mppc yes statelesscreate link template L pptpset link action bundle Bset link enable multilinkset link yes acfcomp protocompset link no pap chap eapset link enable chapset link keep-alive 10 60set link mtu 1460set pptp self 10.1.1.2set link enable incoming$ cat /usr/local/etc/mpd5/mpd.secretuser1 "pass1" 10.1.10.10 e. Squid 2.x (popular proxy server) Proxy Server di FreeBSD Squid adalah aplikasi web proxy server untuk keperluan 3A (authentication, authorization, accounting), traffic shaper, dan web caching, dimana dengan menggunakan proxy, semua user dapat mengakses Internet hanya melalui 1 public IP Address (IP Address dari user akan tersembunyi di belakang web proxy). Dengan menerapkan proxy, berbagai keuntungan bisa didapat : o security (user terlindungi dari dunia Internet karena bersembunyi di belakang proxy) o simplicity (cukup dengan 1 IP address bagi proxy, bisa digunakan untuk melayani banyak user yang ingin terkoneksi ke Internet) o speed (dengan adanya web caching, berbagai object image, script, video, dll yang sering diakses tidak perlu lagi diambil langsung dari server, namun cukup dari web cache) o fairness (dengan adanya delay pool, traffic shaper bisa diterapkan untuk mengatur pembagian bandwidth) o filtering (dengan menerapkan URL Regex, berbagai URL bisa di-block sehingga aksesnya dibatasi) Instalasi Squid dilakukan dengan cara :# cd /usr/ports/www/squid# make install clean # cat /etc/rc.conf | grep squidsquid_enable="YES" Edit file konfigurasi squid di /usr/local/etc/squid/squid.conf# cat /usr/local/etc/squid/squid.conf (hanya entry yg perlu di-edit)http_port 172.16.1.1 8080cache_peer 10.1.1.4 parent 8080 3130 no-querymaximum_object_size 16384 KBminimum_object_size 0 KBmaximum_object_size_in_memory 8 KBcache_dir ufs /webcache 73728 256 256acl local-servers dstdomain .imtelkom.ac.idacl porn url_regex "/usr/local/etc/squid/porn"acl notporn url_regex "/usr/local/etc/squid/notporn"acl user_vpn src 172.16.0.0/255.255.0.0acl dosen src 172.16.1.0/255.255.255.0acl karyawan src 172.16.2.0/255.255.255.0acl kaunit src 172.16.3.0/255.255.255.0acl sisfo src 172.16.4.0/255.255.255.0http_access allow notpornhttp_access deny pornhttp_access allow user_vpnhttp_access allow dosenhttp_access allow karyawanhttp_access allow kaunithttp_access allow sisfohttp_access deny allalways_direct deny dosenalways_direct deny karyawanalways_direct deny kaunitalways_direct deny sisfoalways_direct allow allalways_direct allow local-serversnever_direct allow dosennever_direct allow karyawannever_direct allow kaunitnever_direct allow sisfonever_direct deny allreply_body_max_size 100000000 allow dosenreply_body_max_size 100000000 allow karyawanreply_body_max_size 0 allow kaunitreply_body_max_size 10000000 allow all Karena webcache dari squid akan disimpan di folder /webcache sebaiknya folder tersebut adalah suatu hard disk dedicated, hal ini untuk memudahkan instalasi ulang proxy server (object yg di-cache tetap ada). Untuk membuat transparent proxy dimana user tidak perlu melakukan setting proxy di client (di level platform OS atau web browser), maka edit firewall :# Forwarding all traffic to Squid (transparent proxy).${fwcmd} add fwd 127.0.0.1,3128 tcp from 172.16.0.0/16 to any 80${fwcmd} add fwd 127.0.0.1,3128 tcp from 172.16.0.0/16 to any 443${fwcmd} add allow tcp from 172.16.0.0/16 to any setup keep-state Dan squid.conf :http_port 172.16.1.1 8080 transparent Langkah selanjutnya setelah membuat file konfigurasi adalah membuat web cache# /usr/local/sbin/squid f /usr/local/etc/squid/squid.conf z2006/06/28 13:55:43| Creating Swap DirectoriesFATAL: Failed to make swap directory /webcache/00: (13) Permission deniedSquid Cache (Version 2.5.STABLE12): Terminated abnormally.CPU Usage: 0.001 seconds = 0.000 user + 0.001 sysMaximum Resident Size: 0 KBPage faults with physical i/o: 0 Error disebabkan karena squid tidak boleh menulis di folder webcache# chown squid:squid /webcache# /usr/local/sbin/squid f /usr/local/etc/squid/squid.conf z2006/06/28 13:57:51| Creating Swap Directories Saat beroperasi, squid akan membuat 3 buah file :# ls -l /usr/local/squid/logstotal 360340-rw-r--r-- 1 squid squid 103106164 Jun 28 14:00 access.log-rw-r--r-- 1 squid squid 4771743 Jun 28 14:00 cache.log-rw-r--r-- 1 root squid 6 Jun 28 11:08 squid.pid-rw-r--r-- 1 squid squid 121467833 Jun 28 14:00 store.log Ketiga file tersebut akan bertambah besar dengan cepat sekitar 400Mbyte setiap harinya. Untuk keperluan maintenance log file tersebut, perlu dibuat shell script untuk memproses file access.log :# cat /root/process_squid_log.sh#!/bin/sh########################################################################## shell script ini melakukan 5 fungsi dgn urutan sbb : # # ## 1. membackup squid's access.log menjadi access.log.0 ## (dgn fasilitas rotate dari Squid) ## 2. memproses access.log.0 dgn webalizer untuk mendapatkan statistik ## 3. memproses access.log.0 dgn PHP script untuk akunting Internet ## (berdasarkan login VPN) ## 4. mengkompresi access.lo.0 dan memberi nama sesuai timestamp-nya ## 5. memblok login VPN yg sudah over quota dgn menggunakan firewall ## shell script ini membutuhkan : ## - /usr/bin/grep & /usr/bin/awk (bawaan dari FreeBSD) ## - update_usage_n_block.php (PHP script untuk perhitungan (akunting) ## penggunaan Internet ## - update_situs.php (PHP script untuk melakukan rekap situs yg diakses ## - update_hitmiss.php (PHP script untuk melakukan rekap jumlah HIT ## dan MISS dr webcache ## shell script ini harus dijalankan setidaknya setiap 1 jam ####################################################################################################### S E T T I N G #############################WEBALIZER="/usr/local/bin/webalizer"WEBALIZER_OPTION="-Q -F squid -c /usr/local/etc/webalizer-proxy.conf"TODAY=`date "+%Y%m%d%H%M"`SQUID="/usr/local/sbin/squid"SQUID_OPTION="-f /usr/local/etc/squid/squid.conf -k rotate"TEMP_FOLDER="/data/log"################# FUNGSI 1 : backup squid's access.log ################### memindahkan log aktif /usr/local/squid/logs/access.log ke /usr/local/squid/logs/access.log.0${SQUID} ${SQUID_OPTION}sleep 30############# FUNGSI 2 : proses access.log.0 dgn webalizer ############### menganalisa access.log.0 menggunakan aplikasi webalizer${WEBALIZER} ${WEBALIZER_OPTION} /usr/local/squid/logs/access.log.0######## FUNGSI 3 : proses access.log.0 untuk akunting Internet ########## access.log.0 akan diparsing menggunakan grep dan di-reformat menggunakan awk# untuk menghasilkan 5 file tambahan dgn format informasi yg lebih sederhana# untuk mempercepat pemrosesan dgn PHP script. Ke-lima file tsb :# 1. ${TEMP_FOLDER}/usage.txt (format : IP_ADDRESS OBJECT_SIZE)# 2. ${TEMP_FOLDER}/situs.txt (format : TIMESTAMP IP_ADDRESS ACCESSED_SITE)# 3. ${TEMP_FOLDER}/hit.txt (jumlah HIT pada webcache)# 4. ${TEMP_FOLDER}/miss.txt (jumlah MISS pada webcache)# 5. ${TEMP_FOLDER}/other.txt (jumlah non-HIT dan non-MISS pada webcache : ex. DENIED)# FUNGSI 3a : menghapus 4 file hasil dari proses sebelumnya/bin/rm ${TEMP_FOLDER}/usage.txt/bin/rm ${TEMP_FOLDER}/situs.txt/bin/rm ${TEMP_FOLDER}/hit.txt/bin/rm ${TEMP_FOLDER}/miss.txt/bin/rm ${TEMP_FOLDER}/other.txt# FUNGSI 3b : membuat 4 file yg baru# membuat usage.txt untuk keperluan akunting penggunaan Internet# dimana hanya akses yg tidak menggunakan webcache (TCP_MISS) yg dihitung penggunaannya# krn jk HIT berarti akses tsb tidak akan membebani link Internet (hanya mengakses webcache)/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep 'MISS' | /usr/bin/awk '{print $3 "\t" $5}' > ${TEMP_FOLDER}/usage.txt# membuat situs.txt untuk keperluan menganalisa situs apa saja yg dikunjungi oleh user# dimana semua akses kecuali yg DENIED yg akan direkam/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -v 'TCP_DENIED' | /usr/bin/awk '{print $1 "\t" $3 "\t" $7}' > ${TEMP_FOLDER}/situs.txt# membuat hit.txt dan miss.txt untuk keperluan menganalisa performansi webcache# yaitu apakah jumlah HIT > jumlah MISS#/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -c 'MISS' > ${TEMP_FOLDER}/miss.txtHIT=`/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -c 'HIT'`MISS=`/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -c 'MISS'`OTHER=`/bin/cat /usr/local/squid/logs/access.log.0 | /usr/bin/grep -v 'HIT' | /usr/bin/grep -v 'MISS' | /usr/bin/grep -c ''`/usr/local/bin/mysql -u manager -pmanager -Dstatus --execute="insert into hitmiss set time=${TODAY},hit=${HIT},miss=${MISS},other=${OTHER}"# FUNGSI 3c : memproses usage.txt untuk akunting dan membuat /root/block.sh untuk blocking user/usr/local/bin/php /root/update_usage_n_block.php# FUNGSI 3d : memproses situs.txt untuk analisa dan croscek via email ke user/usr/local/bin/php /root/update_situs.phpsleep 300########## FUNGSI 4 : simpan access.log.0 sesuai timestamp-nya ########### simpan access.log.0 ke folder /data/log/bin/mv /usr/local/squid/logs/access.log.0 /data/log/squid-access/access.log.${TODAY}/bin/rm /usr/local/squid/logs/cache.log.0/usr/bin/gzip /data/log/squid-access/access.log.${TODAY}# FUNGSI 5 : bloking akun VPN over quota (hasil kalkulasi di fungsi 3) ##/bin/chmod 700 /root/block.sh#/root/block.sh/bin/rm /root/block.sh Sementara untuk reverse proxy (proxy untuk akses dari luar/internet ke dalam/intranet) dapat menggunakan aplikasi squid yg sama hanya dengan file konfigurasi yang berbeda. Squid yg dipekerjakan sbg reverse proxy sering disebut dengan Squid-Accellerator. Disarankan untuk tidak menjalankan squid-accellerator pada server yg sama dimana squid juga berjalan (berdasarkan pengalaman, salah satu squid akan di-shutdown) f. SNMP (Simple Network Management Protocol) SNMP digunakan untuk mengambil beberapa data tentang system, seperti misalnya data IfInOctet (jumlah paket incoming ke Ethernet card) dan data IfOutOctet (jumlah paket outgoing ke Ethernet card) yg dipergunakan oleh MRTG untuk membuat traffic graph. Untuk menginstall SNMP :# cd /usr/ports/net-mgmt/net-snmp# make install clean Tambahkan entry snmpd_enable=YES di /etc/rc.conf# cat /etc/rc.conf | grep snmpsnmpd_enable=YES Ada 2 file konfigurasi yg harus dibuat :# cat /usr/local/share/snmp/snmpd.confrocommunity publicagentaddress udp:161syslocation Ruang Server Sisfosyscontact [email protected] 76# cat /usr/local/share/snmp/snmp.confdefaultport 161defversion 1defcommunity public Jika SNMP ini akan diakses oleh server lain, jangan lupa membuka firewall untuk protokol UDP port 161 (allow udp from 10.1.1.0/24 to me dst-port 161) dan juga menambahkan entry "snmpd : 10.1.1.0/255.255.255.0 : allow" di /etc/hosts.allow. Tapi jika SNMP ini hanya diakses oleh aplikasi localhost, firewall tidak perlu diubah tapi entry "snmpd : ALL : allow" di /etc/hosts.allow tetap diperlukan. Untuk testing SNMP, bisa dilakukan dgn snmpwalk : /usr/local/bin/snmpwalk # /usr/local/bin/snmpwalk 10.1.1.2 Untuk menjalankan SNMP, tinggal menjalankan command:# /usr/local/etc/rc.d/snmpd startStarting snmpd.# ps ax | grep snmp86856 ?? S 0:00.04 /usr/local/sbin/snmpd -p /var/run/snmpd.pid86970 p0 S+ 0:00.00 grep snmpg. MRTG (Multi Router Traffic Graph melihat kondisi trafik secara real time)MRTG digunakan untuk mengambil data IfInOctet dan IfOutOctet dari SNMP, menyimpannya secara internal, dan membuat grafik berdasarkan data tersebut yg menggambarkan real-time trafik.Untuk menginstall MRTG :# cd /usr/ports/net-mgmt/mrtg# make install clean Tambahkan entry mrtg_daemon_enable=YES di /etc/rc.conf# cat /etc/rc.conf | grep mrtgmrtg_daemon_enable=YESSelanjutnya edit file konfigurasi :# cat /usr/local/etc/mrtg/mrtg.cfgWorkDir: /data/web/mrtgOptions[_]: growright,bitsRefresh: 600Interval: 10Target[index]: 1:[email protected][index]: 1250000Title[index]: : ASTINet 10 MbpsPageTop[index]: Traffic Analysis for ASTINet 10 MbpsSystem:Public Internet LinkMaintainer:Sisfo IM TelkomInterface:Fast Ethernet rl0IP:118.97.187.12Max Speed:10 Mbit/sJangan lupa untuk membuat folder working directory dimana semua file gambar trafik akan dibuat. Folder tersebut harus dapat di baca&tulis oleh user mrtg dan grup www :# mkdir /data/web/mrtg# chown mrtg:www /data/web/mrtg# /usr/local/etc/rc.d/mrtg_daemon startStarting mrtg_daemon.Daemonizing MRTG h. Webalizer (untuk menganalisa trafik yg melewati Squid dan Apache)Log AnalyzerWebalizer adalah aplikasi untuk menganalisa log file dari Squid dan Apache dan menampilkan hasil analisanya di web dalam format tabel dan grafik. Analisa yang bisa diberikan oleh webalizer mencakup : Situs yang banyak diakses Situs yang banyak di-download User yang banyak mengakses User yang banyak men-downloadDimana analisa diberikan dalam time frame daily, monthly, yearly.Berikut adalah sample shell script yg digunakan untuk menjalankan webalizer melalui cron :WEBALIZER=/usr/local/bin/webalizerWEBALIZER_OPTION=-Q -F clf -c /usr/local/etc/webalizer.confTODAY=`date +%Y%m%d`/usr/local/sbin/apachectl stop/bin/mv /var/log/httpd-access.log /var/log/${TODAY}.httpd-access.log/bin/mv /var/log/httpd-error.log /var/log/${TODAY}.httpd-error.log/usr/bin/touch /var/log/httpd-access.log/usr/bin/touch /var/log/httpd-error.log/usr/local/sbin/apachectl start${WEBALIZER} ${WEBALIZER_OPTION} /var/log/${TODAY}.httpd-access.logi. Sendmail sebagai MTA (Mail Transfer Agent)Mail Server di FreeBSDSendmail merupakan salah satu aplikasi MTA (Mail Transfer Agent) yg berfungsi untuk menerima email dan mengirimkannya ke server (host) yg sesuai dan juga sebagai MSP (Mail Submission Program) yg berfungsi untuk mengirimkan email. Sendmail adalah aplikasi MTA bawaan (built in) dari FreeBSD, sehingga kita tinggal mengaktifkannya.MUA = Mail User Agent, contoh : NOCC, OpenWebMail, Outlook ExpressProtokol SMTP digunakan antara MUA MTA (sending email) dan antara MTA MTA (transaksi email antar domain), sementara protokol POP3 dan IMAP digunakan antara MUA < MTA (download email)Untuk berinteraksi dengan MTA kita bisa menggunakan interaksi SMTP, seolah-olah kita adalah MTA juga yg ingin menanyakan validitas domain dan user :# host yahoo.comyahoo.com has address 216.109.112.135yahoo.com mail is handled by 1 mx1.mail.yahoo.com.# telnet mx1.mail.yahoo.com 25Trying 67.28.113.19Connected to mx1.mail.yahoo.comEscape character is ^].220 mta208.mail.re2.yahoo.com ESMTP YSmtp service readyhelo imtelkom.ac.id250 mta208.mail.re2.yahoo.commail from:250 sender okrcpt to:550 relaying denied for rcpt to:250 recipient ok^]telnet> quitConnection closed.Untuk mengaktifkan Sendmail, cukup tambahkan baris berikut di /etc/rc.conf :# cat /etc/rc.conf | grep sendmailsendmail_enable=YESJika suatu server hanya berfungsi untuk mengirimkan email (dari diri sendiri) maka Sendmail tidak perlu diaktifkan. Sebagai gantinya dapat digunakan aplikasi SSMTP yg dapat diaktifkan dengan cara :# cd /usr/ports/mail/ssmtp# make install replace clean sSMTP has been installed successfully.# cd /usr/local/etc/ssmtp# mv revaliases.sample revaliases# mv ssmtp.conf.sample ssmtp.conf# cat /usr/local/etc/ssmtp/revaliasesmanager:[email protected]:mail.imtelkom.ac.id:25# cat /usr/local/etc/ssmtp/ssmtp.confroot=postmastermailhub=mail.imtelkom.ac.idrewriteDomain=hostname=imtelkom.ac.id# make replacej. Dovecot sebagai POP/IMAPPOP3 Server di FreeBSDPOPD atau POP3 Daemon (Post Office Protocol) adalah protokol agar user bisa terkoneksi (membaca email) dengan mail server. Selain POPD kita bisa juga menggunakan IMAP yang lebih kompleks dan komplit jika dilihat dari fitur yg disediakan.Pengetesan koneksi POP3 bisa dilakukan dengan cara berinteraksi dengan POP3 server dengan memanfaatkan command line telnet 127.0.0.1 110?, seperti digambarkan di bawah ini :# telnet 127.0.0.1 110Trying 127.0.0.1Connected to localhost.Escape character is ^].+OK popd-2.2.2 readyUSER sisfo+OK enter password for sisfoPASS passwordsisfo+OK 43 messages (7694810 octets) (Expire on RETR: 0 Remove on QUIT: 0)STAT+OK 43 7694810LIST+OK sending list ending with a . on a line by itself1 2339912 583610RETR 1+OK 150< isi dari email ditayangkan >DELE 1+OKQUIT+OK ByeDovecot adalah aplikasi daemon yang juga menyediakan protokol koneksi POP3 dan IMAP. Lebih stabil dibandingkan POPD, karena pada FreeBSD-amd64, POPD memiliki kendala saat akan membuka attachment email (tapi kendala tersebut tidak terjadi pada FreeBSD-i386).k. NOCC (web/PHP-based email client untuk akses email via web)Web-Based Mail User Agent di FreeBSDNOCC adalah aplikasi web-based MUA (Mail User Agent) berbasis PHP untuk koneksi ke mail server (membaca dan mengirim email). NOCC sangat sederhana, sangat cepat, namun dengan fitur yang terbatas (hanya untuk membaca dan mengirim email, tanpa ada penyimpanan Sent Items, Draft, maupun Deleted Items). Semua dilakukan dengan berinteraksi langsung dengan mail server.Sementara SquirrelMail menyediakan tambahan fitur yang tidak ada pada NOCC, yaitu disediakannya media penyimpanan Sent Items, Draft, maupun Deleted Items.l. Openwebmail (web/PERL-based email client untuk akses email via web)Openwebmail juga adalah suatu aplikasi Mail User Agent untuk koneksi ke mail server. Perbedaannya adalah Openwebmail berbasis Perl sementara NOCC dan SquirrelMail berbasis PHP. Selain itu Openwebmail men-download semua email di mail server ke suatu directory khusus, sehingga ada kemungkinan suatu saat nanti jika user tidak rajin menghapus email lama, user tidak bisa membuka Openwebmail karena INBOX-nya telah melebihi quota atau bahkan directory khusus tersebut menjadi penuh.Openwebmail memiliki banyak sekali fitur, yang lebih menyerupai organizer pribadi dengan disediakannya Calendar, Task, Note, dll bagi masing-masing user. Oleh karenanya, Openwebmail disarankan untuk digunakan bagi akun email unit (bukan personal) karena dapat mensinergikan beberapa user yang bertugas untuk membaca dan me-reply email yang ditujukan ke unit ybs.m. ClamAV, ArchiveMail, SpamilterPerlindungan Mail ServerUntuk melindungi dan mempertahankan kinerja mail server, ada beberapa point yang harus kita perhatikan : pengarsipan email agar mailbox tidak penuh filtering email SPAM filtering virus/worm/trojanArchivemail adalah aplikasi untuk menghapus (atau mem-backup) email-email yang sudah out of date dari suatu mailbox. Hal ini ditujukan agar tidak terjadi penumpukan email di suatu mailbox karena suatu hal, yang akan dapat memperlambat akses ke mailbox tersebut.Spamilter adalah plug-in Sendmail untuk mencegah email2 SPAM masuk ke mailbox. Spamilter bekerja mem-block spam dengan berbagai cara : Realtime DNS blacklists Verifikasi alamat pengirim (email sender) Blacklist dan Whitelist Verifikasi MTA hostname Attachment rejection untuk mencegah virus/worm (berdasarkan file extension, spt. .pif, .scr) SPFDan untuk memperkuat blocking spam dari sumber yg sama, Spamilter menggunakan metode : Realtime firewall (IPFW) blocking dari MTA hosts yg tidak memenuhi kriteria nomor 4 diatas Realtime rate limited connection blocking dgn memanfaatkan firewallClamAV adalah Free Anti Virus yg dapat digunakan sebagai milter (mail filter), plug-in Sendmail untuk mencegah virus dan worm yg menjadi attachment email sebelum masuk ke mailbox.n. Zimbra sebagai integrated Mail Servero. NTP (Network Time Protocol) untuk sinkronisasi waktu komputer clientp. GNOME untuk GUI (Graphical User Interface)q. OpenLDAP sebagai Directory Userr. DHCP sebagai penyedia informasi akses jaringan untuk setiap clients. Filelocker sebagai media file sharing