1. Samba
Samba adalah server yang sangat powerful yang dapat membuat sistem
berbasis Unix (seperti Linux) untuk melakukan sharing resource dengan sistem
berbasis Windows. Hal ini tentu sangat berguna pada sebuah LAN yang terdiri
atas beberapa workstation dengan flatform sistem operasi Linux dan Windows
sehingga dapat lebih efisien dengan adanya pembagian resource, seperti file
dan printer, untuk dapat digunakan secara bersama-sama. Samba merupakan
sebuah software aplikasi buatan Andrew Tridgel dari ANU (Australian National
University) dengan mengimplementasikan protokol SMB (Server Message
Block) pada sistem operasi Unix. Protokol ini kadang-kadang dapat berlaku
sebagai protokol CIFS (Common Internet File Sistem), LanManager, NetBIOS.
Protokol SMB ini dapat membuat sebuah komputer dengan
sistem operasi Unix
menjadi file atau print server menjadi file atau print
server atau seperti klien
ftp untuk mengakses share SMB baik di Samba server atau di
sever lain yang
kompatibel seperti Windows NT, mendukung nameserving dan
browsing
NetBIOS, dan lain-lain.
2. Mekanisme SMB
2.1. Username dan Password
Untuk memahami hubungan antara Linux/Samba/Windows, kita
harus
mempelajari sistem file, printer, dan user pada kedua
operating sistem.
Beberapa manajemen pengaturan username dan password :
Linux Password Authentication Module (PAM) , akan membuat
autentikasi user dengan PDC sehingga kita tetap mempunyai
dua user, satu
di lokal dan satu lagi di PDC , tapi user hanya perlu
menyimpan password
hanya dalam sistem window.
Samba sebagai PDC, akan menyimpan login dan password pada
sistem
Linux.
Membuat solusi sendiri dengan Perl, kita dapat membuat
sendiri. Hal
ini dilakukan dengan menggunakan Winperl dan modul-modul
Perl yang
memungkinkan pengubahan paa Security Access Manager (SAM),
untuk
meng-update daftar password PDC. Script Perl pada sisi
Linux dapat
berkomunikasi dengan script WinPerl untuk menjaga
sinkrionisasi account.
2.2. Encrypted Password
Sejak Windows NT 4, Windows 98, dan Windows 95 OSR2,
Windows
menggunakan password terenkripsi saat berkomunikasi
menggunakan PDC
dan setiap server yang memerlukan autentikasi (termasuk
Linux dan Samba).
Alogoritma enkripsi Windows berbeda dengan UNIX, sehingga
tidak
kompatibel. Untuk menangani hal itu, kita dapat melakukan
pilihan-pilihan
sebagai berikut :
Mengedit Registry pada klien Windows untuk mendisable
penggunaan
password terenkripsi. Bagian registry yang harus diubah
terdapat pada
direktori docs paket Samba.
Mengkonfigurasi Samba agar menngunakan password
terenkripsi
Windows.
Pilihan pertama mempunyai kelebihan dengan tidak adanya
pola password
yang lebih kompleks. Pada sisi lain, kita harus membuat
registry yang tetap
pada semua klien. Untuk pilihan kedua sebaliknya, yakni
sedikit lebih
kompleks pada sisi server, tapi kita tidak usah mengubah
bagian klien.
2.3. Perbedaan smbd dengan nmbd
Sebenarnya Samba disusun atas dua damon, yatu smbd dan
nmbd. Smbd
adalah daemon yang secara nyata menangani servis sharing
file sistem dan
printer untuk klien. Pada saat sebuah klien melakukan autentikasi,
smbd
akan membuatkan duplikat dirinya, bagian asli akan kembali
ke port 139
untuk mendengarkan permintaan baru dan bagian duplikat
menangani
koneksi terhadap klien. Dulikat ini juga mengubah ID user
efektifnya dari
root ke user yang terautentikasi. Misalnya , kalau user
smkti melakukan
autentikasi dengan smbd, duplikat baru akan berjalan
dengan permisi
smkti , dan bukannya permisi root ). Duplikat ini akan
berada di memory
selama masih terkoneksi dengan klien.
Daemon nmbd bertanggung-jawab untuk menangani permintaan
server
name NetBIOS. Ia akan mendengarkan port 137, tidak seperti
smbd, nmbd
tidak membuat contoh dirinya untuk menangani setiap
pertanyaan. Kedua
daemon itu harus dijalankan agar Samba bekerja dengan
baik.
3. Instalasi Paket Samba Server
Paket Samba release terbaru bisa dilihat di homepage Samba
:
http://us1.samba.org/samba/samba.html atau melalui FTP
site: 63.238.153.11.
Bila tersedia, paket juga bisa diambil melalui ftp
site-ftp site terdekat. Pada
modul ini, kita akan coba untuk menginstall paket :
samba-2.0.7.tar.gz.
Pastikan file source ini sudah didownload dan diletakkan
di direktori
/usr/local/src (atau direktori lainnya).
3.1. Instalasi Dalam Bentuk Tarball
Instalasi dalam bentuk tarball adalah instalasi dengan
source dalam bentuk file
berekstensi tar.gz. Instalasi ini hanya bisa dilakukan
dengan account root. Berikut
adalah langkah-langkah instalasinya :
Masukkan ke direktori tempat diletakkannya source Samba :
# cd /usr/local/src
Kemudian ekstrak file tersebut dengan perintah :
# tar zxvf samba-2.0.7.tar.gz
Setelah diekstark akan terbentuk direktori samba-2.0.7,
masuklah ke direktori
tersebut, dan di sana akan terdapat direktori source, docs
, dan sebagainya : l
# cd samba-2.0.7
Lalu masuklah ke direktori source dan jalankan script
configure yang ada di sana.
Dalam konfigurasi ini, kita dapat menambahkan beberapa
option, misalnya kita
akan menambahkan option sebagai berikut :
Option Deskripsi
--with-pam Agar Samba dapat menggunakan Password
Authentication
Module (PAM).
--with-mmap Agar mendukung MMAP untuk meningkatkan
performansi Samba.
# ./configure -with-smbmount -with-pam --with-mmap
Kemudian install Samba dengan mengetikkan perintah make
lalu make install:
# make all
# make install
Samba akan terinstall di direktori /usr/ local/samba.
Setelah perintah instalasi di
atas dieksekusi, akan terbentuk direktori bin yang berisi
sejumlah file binary yang
berfungsi seperti untuk mengontrol Samba server seperti
smbd, nmbd, dan
smbclient, dan lain-lain.
Samba akan terinstall di direktori /usr/local/samba.
# install m 755 script /mksmbpasswd.sh /usr/bin/
Perintah ini akan menginstall script mksmbpasswd.sh pada
direktori /usr/bin/ .
Script ini diperlukan untuk mensetup user Samba diijinkan
terkoneksi ke server via
file smbpasswd .
Untuk mempelajari Samba secara lebih mendalam, kita dapat
membaca
manualnya yang disertakana dalam paket. Manual Samba
secara default terletak
di direktori /usr/ local/samba/man. Agar manual Samba bisa
dibaca (diakses)
dengan perintah man pada shell Linux, lakukan sebagai
berikut :
# cp /usr/local/samba/man/man1/* /usr/man/man1
# cp /usr/local/samba/man/man5/* /usr/man/man5
# cp /usr/local/samba/man/man7/* /usr/man/man7
# cp /usr/local/samba/man/man8/* /usr/man/man8
4. Konfigurasi Samba Server
Dalam membuat konfigurasi Samba server ini sangat
bergantung pada
kebutuhan dan arsitektur dari jaringan komputer kita.
Misalkan Samba server
ini bisa dikonfigurasikan hanya terkoneksi satu klien atau
bahkan terkoneksi
dengan 1000 klien. File dokumentasi konfigurasi lengkap
Samba server ini
dapat didownload di internet dengan alamat:
http://www.openna.com/books/floppy.tgz. Untuk menjalankan
Samba server,
dibutuhkan file-file berikut ini dan harus dibuat atau
dikopi pada direktoridirektori
yang cocok pada server kita.
4.1. Konfigurasi file smb.conf
File konfigurasi utama untuk Samba server ini adalah
/usr/ local/samba/ lib/smb.conf , dimana kita dapat
menentukan direktori yang
ingin kita akses dari komputer Windows, IP address mana
yang diijinkan, dsb.
Pada file ini juga terdapat banyak sekali option
(pilihan). Untuk informasi lebih
lanjut tentang berbagai setting dan parameter dapat
dilihat di dokumentasi
Samba.
Konfigurasi yang akan kita bahas di bawah adalah file
konfigurasi minimal Samba
yang mendukung password terenkripsi. Kita harus terlebih
dahulu mengkopikan
file konfigurasi default lalu mengeditnya sesuai dengan
yang kita inginkan :
# cd /usr/local/samba/examples
# cp smb.conf.default /usr/local/samba/lib
# cd /usr/local/samba/lib
# mv smb.conf.default smb.conf
# pico smb.conf
workgroup= SMKTI
Isilah dengan workgroup server kita, yang akan tampak saat
diminta oleh klien.
Klien dan server harus mempunyai workgroup yang sama.
server string= Samba Server
Option ini akan menampilkan string yang akan ditampilkan
pada user dalam
comment box print manager, atau pada koneksi IPC pada
bagian net view pada
komputer Windows.
encrypted password= True
Jika option ini diset True , Samba akan menggunakan
password terenkripsi
bukan menggunakan password berbentuk teks sederhana saat
berhubungan
dengan klien. Password terenkripsi ini tidak akan bisa
dideteksi dengan sniffer.
Untuk keamanan sebaiknya option ini diset True .
security= user
Bila option security ini diisi dengan user , klien harus
masuk (log-on) dengan
username dan password yang benar, jika tidak, koneksi akan
diputus (connection
refused). Hal ini berarti bahwa username dan password yang
benar harus terdapat
pada file /etc/password sistem Linux dan file
/etc/smbpasswd pada Samba
server, jika tidak koneksi dari klien akan gagal.
smb passwd file= /etc/smbpasswd
Option ini menentukan letak file smbpasswd terenkripsi.
File smbpasswd ini
merupakan kopi dari file /etc/passwd sistem Linux yang
berisi username dan
password yang valid agar bisa terkoneksi dengan Samba server.
Samba server
akan membaca file ini (smbpasswd) saat ada permintaan
koneksi.
log file= /var/log/samba/log.%m
Option ini menyatakan letak file log yang dicatat Samba.
Dengan ekstensi %m kita
dapat membuat file log yang terpisah untuk masing-masing
user atau mesin yang
log-on pada Samba server.
socket options= IPTOS_LOWDELAY TCP_NODELAY
Dengan option ini kita dapat menentukan
paramater-parameter konfigurasi Samba
untuk meningkatkan performansi Samba. Secara default,
koneksi untuk jaringan
lokal dibuat maksimal, dan meningkatkan performansi Samba
server dalam
transfer file.
domain master= Yes
Option ini untuk mengeset Samba server daemon nmbd sebagai
domain master
browser untuk group yang telah ditentukan. Option ini
biasanya harus diset Yes
hanya dalam satu Samba server untuk keseluruhan Samba
server yang lain pada
workgroup dan jaringan yang sama.
local master= Yes
Dengan option di atas, Samba server daemon, nmbd, akan
mencoba untuk
menjadi domain master browser pada workgroup yang telah
ditentukan.
preferred master= Yes
Option preferred master akan menentukan dan mengontrol
jika nmbd dibuat
sebagai master browser untuk workgroup yang bersangkutan.
os level= 65
Dengan mengatur nilai os level, nmbd dapat menjadi master
browser lokal untuk
workgroup pada daerah broadcast lokal. Jika terdapat NT
server pada jaringan
kita, dan kita ingin agar Samba server Linux menjadi
browser lokal untuk
workgroup pada broadcast lokal maka option di atas harus
diisi 65. Ingat option
ini hanya untuk satu Linux Samba server.
dns proxy= No
Bila diset yes , Samba server daemon nmbd ketika menjadi
sebuah WINS
server dan nama Net BIOS belum teregistrasi, maka ia harus
memperlakukan
nama Net BIOS kata demi kata sebagai nama DNS. Jika kita
belum pernah
mengkonfigurasikan Samba sebagai WINS Server, kita tidak
usah membuat option
ini Yes . Dengan memilih Yes juga akan dapat mengurangi
performansi Samba.
name resolve order= lmhosts host bcast
Option ini menyatakan nama servis yang dipakai untuk
mengubah hostname ke IP
address. Pilihan di atas akan menyebabkan file lmhosts
lokal Samba akan dituju
terlebih dahulu.
bind interfaces only= True
Jika option ini diset True , kita dapat membatasi
interface-interface yang
melayani permintaan smb . Sebaiknya option ini diset
demikian untuk keamanan.
interfaces= eth0 192.168.1.1
Option di atas berguna untuk menentukan jenis interface
yang digunakan Samba
server saat digunakan browsing dan registrasi nama, pada
contoh di atas yakni
eth0 dengan IP address 192.168.1.1. Defaultnya, Samba akan
mengecek semua
device pada kernel.
hosts deny= ALL
Kita dapat menentukan host-host yang tidak boleh mengakses
Samba. Secara
default kita melarang akses dari seluruh host, dan
mengijinkan akses untuk hosthost
tertentu yang didefinisikan pada hosts allow di bawah ini.
hosts allow= 192.168.1.4 127.0.0.1
Host-host yang diijinkan untuk mengakses Samba server
didefinisikan pada bagian
ini, pada contoh di atas kita mengijinkan host dengan IP
192.168.1.4 dan
localhost 127.0.0.1.
debug level= 1
Di sini kita dapat menentukan level log pada file smb.conf
. Sebaiknya debug
level ini tidak lebih dari 2, karena server akan log file
yang tidak perlu setelah
melakukan operasi sehingga akan menurunkan performansi.
create mask= 0644
Option create mask akan menset permisi-permisi yang penting
yakni bila terjadi
mapping dari DOS ke permisi UNIX. Jika dibuat 0644, semua
file yang dibuat atau
dikopi dari WINDOWS ke sistem UNIX akan mempunya permisi
0644 secara
default (untuk lebih jelasnya dibahas pada bagian sistem
opersai Linux).
directory mask= 0755
Mirip seperti di atas, hanya ini berlaku untuk semua
direktori yang dikopi atau
dibuat dari Windows ke sistem UNIX akan mempunyai permisi
default 0755.
level2 oplocks= True
Jika option ini dibuat True , akan meningkatkan keandalan
file-file akses yang
tidak umum ditulis seperti file-file aplikasi .EXE.
read raw= no
Ini berguna untuk menentukan apakah Samba server akan
mendukung
permintaan raw read SMB saat mentransfer data pada klien.
Agar mapping
memory lebih efektif, sebaiknya option ini dibuat no .
write cache size= 262144
Option ini akan membuat Samba meningkatkan keandalan
sistem jika terjadi
kemacetan disk subsystem. Nilai option ini dinyatakan
dalam byte (262144=256k)
comment= Temporary File Space
Option ini untuk menyatakan komentar yang akan terlihat
saat ada permintaan
klien ke server.
path= /tmp
Kita dapat menentukan direktori mana user service ini
diberikan akses.
read only= No
Maksud option di atas adalah kita dapat menentukan apakah
user hanya dapat
membaca file atau tidak. Jika diisi No user tidak hanya
dapat mebaca file saja.
valid user= admin
Option ini berisi daftar user yang diijinkan login. Pada
contoh di atas user admin
diijinkan untuk akses.
invalid users= root bin daemon nobody named sys tty disk
mem kmem users
Option invalid users berisi daftar yang tidak diijinkan
login yang biasanya user
paranoid . Sebenarnya hal ini hanya untuk memastikan
setting yang tidak benar
dan dapat membahayakan dari segi keamanan
4.2. Konfigurasi file /etc/Imhosts
File /etc/ lmhosts adalah file untuk memetakan nama Net
BIOS Samba ke IP
address. Format file ini mirip /etc/hosts , tapi komponen
dari hostname harus
sesuai dengan format penamaan Net BIOS. Pertama-tama kita
harus membuat file
/etc/ lmhosts ini.
# touch /etc/lmhosts
Pada file ini, tambahkan host-host klien sbb:
# pico /etc/lmhosts
127.0.0.1 Localhost
192.168.1.1 smkti1
192.168.1.2 smkti2
192.168.1.3 smkti3
Teruskan pengisian file di atas untuk semua hosts yang ada
dalam network kita.
4.3. Konfigurasi file /etc/pam.d/samba
File ini berguna untuk menjalankan autentikasi pam (untuk
lebih jelasnya dapat
dilihat pada bagian security). Lakukan perintah berikut
ini :
# touch /etc/pam.d/samba
# pico /etc/pam.d/samba
Tambahkan baris-baris berikut ini:
Auth required /lib/security/pam_pwdb.so nullok shadow
Account required /lib/security/pam_pwdb.so
4.4. Konfigurasi file /etc/logrotate.d/samba
File konfigurasi ini akan menampilkan file-file log tiap
minggu secara otomatis.
# touch /etc/logrotate.d/samba
Tambahkan baris-baris berikut ini :
/var/log/samba/log.nmb {
notifempty
missingok
prostrotate
/usr/bin/killall HUP nmbd
endrotate
}
/var/log/samba/log.smb {
notifempty
missingok
postrotate
/usr/bin/killall HUP smbd
endotrate
}
4.5. Membuat password Clien Samba terenkripsi
File /etc/smbpasswd adalah file password Samba yang
terenkripsi. File ini berisi
username, UID, password terenkripsi masing-masing user
yang dapat mengakses
Samba. Jika seorang user tidak terdaftar dalam file ini,
maka ia tidak dapat
melakukan koneksi ke server. Untuk membuat account Samba,
user-user samba
harus sudah ada dalam file /etc/passwd Linux. Jika kita
ingin menambahkan
user yang dapat mengakses Samba, kita harus menambahkan
nama user tersebut
pada file /etc/passwd sistem Linux kita sbb: (Misal kita
ingin menambahkan user
smbclient ).
# adduser smbclient
# passwd smbclient
Changing password for user smbclient
New UNIX password:
Retype new UNIX password:
passwd:all authentication tokens updated successfully
Setelah kita manambahkan semua client Samba pada file
/etc/passwd , Kita
dapat membuat file /etc/smbpasswd dari file /etc/passwd
dari Linux server
(Ingat agar semua user yang akan mengakses samba sudah ada
dalam file
/etc/passwd ) dengan perintah sbb:
# cat /etc/passwd | mksmbpasswd.sh > /etc/smbpasswd
Kemudian kita harus membuat account user Samba pada file
/etc/smbpasswd
sebelum kita dapat menggunakannya.
# smbpasswd a smbclient
New SMB password:
Retype new SMB password:
Added user smbclient
Password changed for user smbclient.
Kemudian ubahlah setting permisi file smbpasswd ini agar
hanya bisa dibaca dan
ditulisi oleh account root :
# chmod 600 /etc/smbpasswd
Untuk memeriksa kesalahan dalam penulisan file smb.conf ,
lakukan perintah ini :
# testparm
Untuk menjalankan dan menghentikan daemon Samba, nmbd dan
smbd secara
otomatis kita dapat menjalankan script file /etc/ rc.d/
init.d/smb . Pastikan bahwa
file ini mempunyai permisi yang hanya bisa dibaca,
ditulis, dan dieksekusi oleh
user root .
# chmod 700 /etc/rc.d/init.d/smb
Lalu buat simbolik link rc.d pada Samba dengan perintah :
# chkconfig -add smb
Agar sript Samba secara otomatis menjalankan daemon nmbd
dan smbd saat
sistem dihidupkan (atau direboot) lakukan perintah berikut
ini :
# chkconfig - level 345 smb on
5. Menjalankan Samba
Sebelum menjalankan Samba kita harus membuat direktori
seperti yang sudah
didefinisikan pada file Makefile. Hal ini karena direktori
ini tidk secara otomatis
dibuat saat mengeksekusi perintah make install.
# mkdir /usr/local/samba/var
Samba dapat dijalankan dengan dua macam cara. Pertama
dijalankan sebagai
daemon dan kedua menjalankannya dari inetd. Samba yang
dijalankan sebagai
daemon akan sedikit lebih cepat dalam melayani permintaan
client jika
dibandingkan dengan Samba yang dijalankan dari inetd.
Biasanya berbagai
distribusi Linux sudah mempunyai script untuk menstart dan
menstop servis
Samba. Untuk menjalankan Samba kita harus menjalankan
daemon smbd dan
nmbd. Lakukan perintah berikut ini :
# /usr/local/samba/bin/smbd D
# /usr/local/samba/bin/nmbd D
Agar Samba selalu dijalankan setiap kali Linux melakukan
booting, kita dapat
menambahkan baris-baris di atas pada file
/etc/rc.d/rc.local :
# pico /etc/rc.d/rc.local
/usr/local/samba/bin/smbd D
/usr/local/samba/bin/nmbd -D
Apabila dalam sistem kita tidak mempunyai script untuk
menjalankan Samba
secara otomatis, maka kita harus menuliskannya secara
manual. Misalkan dengan
cara membuat file /usr/ local/bin/startsmb/ untuk
menjalankan dan
menghentikan secara otomatis daemon Samba server.
# pico /usr/local/samba/bin/startsmb
Tambahkan baris-baris berikut ini :
#!/bin/sh
/usr/local/samba/bin/smbd D
/usr/local/samba/bin/nmbd -D
Untuk menjalankan Samba kita tinggal mengeksekusi file
startsmb tersebut.
# /usr/local/samba/bin/startsmb
Untuk mematikan Samba, kill proses smbd dengan cara sbb :
# ps ax|grep smbd
Dengan perintah di atas akan tampak proses smbd beserta
nomor PID-nya.
# kill -9 [nomor PID smbd]