Halaman

Kamis, 09 Juni 2011

Menggabungkan Samba dengan NT

Jika dalam jaringan Anda sudah ada Windows NT, Anda dapat menyisipkan Samba ke dalam jaringan dengan cara sebagai berikut :

  1. Tambahkan nama mesin Samba ke dalam database SAM di Windows NT. Penambahan dilakukan lewat Server Manager (atau lengkapnya Windows NT Server Manager for Domains). Saat ditanyakan tipe komputer, pilih 'Windows NT Workstation or Server' dan berikan NetBIOS Name dari Samba Server. NetBIOS name ini dapat Anda tentukan secara bebas pada smb.conf. Proses ini membuat Samba terdaftar dalam server NT.
  2. Langkah kedua, membuat password dalam format Microsoft. Sebagai contoh nama mesin PDC Windows NT adalah spawn, dengan domain surga, ketikkan baris berikut : # smbpasswd -j SURGA -r spawn

  3. Sebagai langkah terakhir, masukkan pilihan berikut dalam file smb.conf [global]

    security = domain

    domain logins = yes

    workgroup = SURGA

    password server = spawn

Samba sudah dikonfigurasikan dalam bentuk domain-level security. Penggabungan Samba ke dalam domain NT dengan cara demikian membawa beberapa konsekuensi terutama dalam otentikasi user. Jika sebelumnya NT langsung melakukan otentikasi, maka mulai Anda jalankan Samba, otentikasi dilakukan oleh Samba dengan mencocokkan password yang ada dalam database NT. Bila digambarkan dalam dialog kurang lebih sebagai berikut :
  1. Pemakai memasukkan username dan password. Komputer akan menanyakannya kepada PDC.
  2. Sebelum sampai PDC, Samba mengambil alih pertanyaan komputer. Kemudian Samba akan menanyakan kepada NT, apakah username dan password yang diberikan cocok.
  3. Jika cocok, Samba akan mengembalikan response pada user otentikasi untuk login ke dalam jaringan.
Catatan :

Pastikan semua user yang telah terdaftar di PDC, tercatat semua sebagai user Linux. Buat sebagai dumb account jika Anda memang tidak menginginkannya sebagai user mesin Linux Anda. Jika tidak, maka semua user tidak akan bisa login (meskipun telah terdaftar di Windows NT lewat 'User Manager for Domain'), kecuali user yang telah terdaftar di Linux.

Samba sebagai Domain Logon

Skenario ini dapat diterapkan jika jaringan Anda berada dalam kondisi seperti berikut :

  • Ada beberapa klien Windows, tapi tidak ada Mesin Windows NT sebagai server.
  • Ada beberapa klien Windows, dan ada mesin Windows NT yang sebelumnya sebagai server, tapi Anda sebagai network administrator ingin menggantinya.
Perlu diingat bahwa fungsi utama keberadaan server sebagai domain logon bagi klien Windows, hanyalah memberikan batasan atas sumber daya yang dibagi (share resources) dengan menentukan siapa-siapa saja yang boleh mengakses (user level access control). Untuk mengkonfigurasikan Samba sebagai domain logon (domain controller) Anda harus pastikan terlebih dahulu bahwa :

  • Samba merupakan satu-satunya primary domain controller pada workgroup yang bersangkutan
  • Ada WINS Server dalam jaringan, baik mesin samba sendiri atau mesin Windows NT
  • Samba diset menggunakan user level security (tidak memberikan otentikasi password kepada komputer lain).
Pilihan yang perlu ditambahkan dalam file smb.conf adalah : [global]

workgroup = SURGA

domain logons = yes

# Pastikan untuk menggunakan user level security

security = user

# Pastikan sebagai domain controller

os level = 34

local master = yes

preferred master = yes

domain master = yes

Setelah itu buat satu direktori yang akan dibagi dengan nama [ netlogon ]. Direktori ini harus diset non-writable, non-public, dan non-browseable. Pada bagian share (yang akan dibahas lebih detail pada bagian berikut), tambahkan :
[netlogon]

  comment = Service untuk domain logons

  # Buat terlebih dahulu direktori sebagai path dari pilihan berikut

  path = /usr/local/share/logon

  public = no

  writable = no

  browsable = no

Setelah itu klien diseting sebagaimana klien dari Windows NT. Pada Network Neighborhood, klik kanan, pilih properties dan pada Client for Microsoft Network Properties, aktifkan Log on to Windows Domain, dan sebagai Nama Domainnya isikan Workgroup name yang ditentukan dalam file smb.conf.

Untuk Windows NT, diset lewat properties Network configuration pada Control Panel. Pada Tab pertama yang berisi identifikasi nama komputer, tekan tombol change. Pilih member of domain dan ketikkan nama domainnya. Misal SURGA.

Berbagi printer dan file

File konfigurasi Samba, yakni smb.conf, secara garis besar dibagi dua bagian.

  1. Global Menyangkut konfigurasi umum, pilihan-pilihan yang dijalankan atau dimatikan terhadap smbd (Samba Daemon) dan nmbd (Name Server Daemon).
  2. Share Menentukan sumber daya yang akan dibagi. Pembagian folder untuk bisa diakses oleh user lain dalam Samba kaya akan pilihan.
Untuk seting file yang akan dibagi, dilakukan di bagian share. Secara umum, bentuk pilihan file yang akan dibagi adalah : [ nama share ]

path = tujuan dari direktori yang akan dibagi

browseable = bisa dibrowse oleh user atau tidak (boolean)

guest ok = dapat diakses oleh user yang tidak dikenal atau tidak (boolean)

writable = dapat ditulisi atau hanya bisa dibaca saja (boolean)

Contoh konfigurasi sebuah direktori yang dibagi :
[test]

comment = testing doang neh...

path = /win

read only = No

guest ok = Yes

Selain direktori, Samba juga memberikan sumber dayanya untuk dibagi. Misalnya printer.
[printers]

comment = All Printers

path = /var/spool/samba

print ok = Yes

browseable = No

Selain pilihan default diatas, Samba meberikan banyak sekali pilihan-pilihan dalam membagi file dan sumber daya. Jika Anda mengkonfigurasikan lewat SWAT, pada bagian share, and bisa pilih advance share untuk mencoba pilihan-pilihan yang ada.

Administrasi Samba

Konfigurasi Samba

Samba memiliki banyak sekali parameter yang yang harus disetup untuk dapat menjalankannya secara maksimal. File konfigurasi tersebut adalahsmb.conf. Biasanya terletak di :

/etc    atau /usr/local/samba/lib
Jika Anda belum melakukan sesuatu pada file smb.conf, maka file tersebut biasanya bernama smb.conf-default. Anda harus tetap menyimpan file ini, sehingga jika nantinya ada kekeliruan dalam konfigurasi, Anda masih punya backup yang menyimpan semua parameter standar.
# cd /etc # pico smb.conf-default
Tekan Ctrl-O dan ketik smb.conf untuk menyimpan file default kedalam file konfigurasi. Tekan Ctrl-X untuk keluar dari pico. Untuk mensetup Samba, Anda dapat mengedit file smb.conf lewat dua cara :
  1. Dengan akses root, edit langsung dengan teks editor, atau;
  2. Lewat SWAT. Anda cukup memanggilnya dengan browser ke http://localhost:901
Catatan :

Administrasi samba secara remote lewat SWAT dilakukan dengan memanggil nomor IP mesin Samba yang bersangkutan di port 901. Misal http://192.168.11.1:901
Perlu diingat bahwa mengedit file smb.conf lewat SWAT akan menghilangkan komentar komentar yang ada di dalamnya. Berikut contoh perbandingannya. File smb.conf secara default :

# This is the main Samba configuration file. You should read the # smb.conf(5) manual page in order to understand the options listed # here. Samba has a huge number of configurable options (perhaps too # many!) most of which are not shown in this example # # Any line which starts with a ; (semi-colon) or a # (hash) # is a comment and is ignored. In this example we will use a # # for commentry and a ; for parts of the config file that you # may wish to enable # # NOTE: Whenever you modify this file you should run the command "testparm" # to check that you have not many any basic syntactic errors. # #================== Global Settings ======================== [global] # workgroup = NT-Domain-Name or Workgroup-Name, eg: LINUX2    workgroup = MYGROUP # server string is the equivalent of the NT Description field    server string = Samba Server # This option is important for security. It allows you to restrict # connections to machines which are on your local network. The # following example restricts access to two C class networks and # the "loopback" interface. For more examples of the syntax see # the smb.conf man page ;   hosts allow = 192.168.1. 192.168.2. 127. # If you want to automatically load your printer list rather # than setting them up individually then you'll need this    load printers = yes # you may wish to override the location of the printcap file ;   printcap name = /etc/printcap # on SystemV system setting printcap name to lpstat should allow # you to automatically obtain a printer list from the SystemV spool # system ;   printcap name = lpstat # It should not be necessary to specify the print system type unless # it is non-standard. Currently supported print systems include: # bsd, sysv, plp, lprng, aix, hpux, qnx ;   printing = bsd # Uncomment this if you want a guest account, you must add this to /etc/passwd # otherwise the user "nobody" is used ;  guest account = pcguest # this tells Samba to use a separate log file for each machine # that connects    log file = /var/log/samba.%m # Put a capping on the size of the log files (in Kb).    max log size = 50 # Security mode. Most people will want user level security. See # security_level.txt for details.  NOTE:  To get the behaviour of # Samba-1.9.18, you'll need to use "security = share".    security = user # Use password server option only with security = server ;   password server = <NT-Server-Name> # You may wish to use password encryption. Please read # ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation. # Do not enable this option unless you have read those documents ;  encrypt passwords = yes # Using the following line enables you to customise your configuration # on a per machine basis. The %m gets replaced with the netbios name # of the machine that is connecting ;   include = /usr/local/samba/lib/smb.conf.%m # Most people will find that this option gives better performance. # See speed.txt and the manual pages for details    socket options = TCP_NODELAY # Configure Samba to use multiple interfaces # If you have multiple network interfaces then you must list them # here. See the man page for details. ;   interfaces = 192.168.12.2/24 192.168.13.2/24 # Browser Control Options: # set local master to no if you don't want Samba to become a master # browser on your network. Otherwise the normal election rules apply ;   local master = no # OS Level determines the precedence of this server in master browser # elections. The default value should be reasonable ;   os level = 33 # Domain Master specifies Samba to be the Domain Master Browser. This # allows Samba to collate browse lists between subnets. Don't use this # if you already have a Windows NT domain controller doing this job ;   domain master = yes # Preferred Master causes Samba to force a local browser election on startup # and gives it a slightly higher chance of winning the election ;   preferred master = yes # Use only if you have an NT server on your network that has been # configured at install time to be a primary domain controller. ;   domain controller = <NT-Domain-Controller-SMBName> # Enable this if you want Samba to be a domain logon server for # Windows95 workstations. ;   domain logons = yes # if you enable domain logons then you may want a per-machine or # per user logon script # run a specific logon batch file per workstation (machine) ;   logon script = %m.bat # run a specific logon batch file per username ;   logon script = %U.bat # Where to store roving profiles (only for Win95 and WinNT) #        %L substitutes for this servers netbios name, %U is username #        You must uncomment the [Profiles] share below ;   logon path =\\%L\Profiles\%U # Windows Internet Name Serving Support Section: # WINS Support - Tells the NMBD component of Samba to enable it's WINS Server ;   wins support = yes # WINS Server - Tells the NMBD components of Samba to be a WINS Client #       Note: Samba can be either a WINS Server, or a WINS Client, but NOT both ;   wins server = w.x.y.z # WINS Proxy - Tells Samba to answer name resolution queries on # behalf of a non WINS capable client, for this to work there must be # at least one  WINS Server on the network. The default is NO. ;   wins proxy = yes # DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names # via DNS nslookups. The built-in default for versions 1.9.17 is yes, # this has been changed in version 1.9.18 to no.    dns proxy = no #====================== Share Definitions ================ [homes]    comment = Home Directories    browseable = no    writable = yes # Un-comment the following and create the netlogon directory for Domain Logons ; [netlogon] ;   comment = Network Logon Service ;   path = /usr/local/samba/lib/netlogon ;   guest ok = yes ;   writable = no ;   share modes = no # Un-comment the following to provide a specific roving profile share # the default is to use the user's home directory ;[Profiles] ;    path = /usr/local/samba/profiles ;    browseable = no ;    guest ok = yes # NOTE: If you have a BSD-style print system there is no need to # specifically define each individual printer [printers]    comment = All Printers    path = /var/spool/samba    browseable = no # Set public = yes to allow user 'guest account' to print    guest ok = no    writable = no    printable = yes # This one is useful for people to share files ;[tmp] ;   comment = Temporary file space ;   path = /tmp ;   read only = no ;   public = yes # A publicly accessible directory, but read only, except for people in # the "staff" group ;[public] ;   comment = Public Stuff ;   path = /home/samba ;   public = yes ;   writable = yes ;   printable = no ;   write list = @staff # Other examples. # # A private printer, usable only by fred. Spool data will be placed in fred's # home directory. Note that fred must have write access to the spool directory, # wherever it is. ;[fredsprn] ;   comment = Fred's Printer ;   valid users = fred ;   path = /homes/fred ;   printer = freds_printer ;   public = no ;   writable = no ;   printable = yes # A private directory, usable only by fred. Note that fred requires write # access to the directory. ;[fredsdir] ;   comment = Fred's Service ;   path = /usr/somewhere/private ;   valid users = fred ;   public = no ;   writable = yes ;   printable = no # a service which has a different directory for each machine that connects # this allows you to tailor configurations to incoming machines. You could # also use the %U option to tailor it by user name. # The %m gets replaced with the machine name that is connecting. ;[pchome] ;  comment = PC Directories ;  path = /usr/pc/%m ;  public = no ;  writable = yes # A publicly accessible directory, read/write to all users. Note that all files # created in the directory by users will be owned by the default user, so # any user with access can delete any other user's files. Obviously this # directory must be writable by the default user. Another user could of course # be specified, in which case all files would be owned by that user instead. ;[public] ;   path = /usr/somewhere/else/public ;   public = yes ;   only guest = yes ;   writable = yes ;   printable = no # The following two entries demonstrate how to share a directory so that two # users can place files there that will be owned by the specific users. In this # setup, the directory should be writable by both users and should have the # sticky bit set on it to prevent abuse. Obviously this could be extended to # as many users as required. ;[myshare] ;   comment = Mary's and Fred's stuff ;   path = /usr/somewhere/shared ;   valid users = mary fred ;   public = no ;   writable = yes ;   printable = no ;   create mask = 0765
Setelah diedit dengan SWAT, akan menjadi seperti ini:
# Samba config file created using SWAT # from localhost (127.0.0.1) # Date: 2000/02/28 11:50:17 # Global parameters         workgroup = SURGA         netbios name = SPAWN         server string = Mail Server Gateway         encrypt passwords = Yes         map to guest = Bad User         log file = /var/log/samba.%m         max log size = 50         socket options = TCP_NODELAY         local master = Yes         dns proxy = No [printers]         comment = All Printers         path = /var/spool/samba         print ok = Yes         browseable = No [test]         comment = testing doang neh...         path = /win         read only = No         guest ok = Yes

Konfigurasi Samba lewat LinuxConf (RedHat)

LinuxConf pada RedHat memasukkan Samba sebagai bagian server yang dapat diadministrasi olehnya. Konfigurasi Samba lewat LinuxConf dapat dilakukan dengan cara sebagai berikut :
  1. Masuk ke bagian Config - Networking - Server Tasks - Samba File Server.
  2. Pilihan konfigurasi Samba adalah :
    • Default; Konfigurasi utama (dalam file smb.conf masuk dalam kategori [global]). Pilihan disini termasuk Base Config, Passwords, Access, Networking, Auto Accounts dan Features.
    • Default Setup for user's home; Direktori home bagi tiap user yang dibagi secara default.
    • Default setup for printers; Seting untuk membagi printer.
    • Netlogon setup; Direktori untuk net logon yang dibagi. File batch bagi tiap user yang login ke Samba dapat ditempatkan di sini.
    • Disk share; Mendefinisikan direktori-direktori lain yang akan dibagi ke dalam jaringan.
  3. Selesai mengisi pilihan-pilihan tersebut sesuai dengan kebutuhan Anda, tutup LinuxConf. Klik Accept untuk menyimpan semua perubahan.
  4. Jalankan testparm dari prompt (console) . # testparm

  5. Jika semua sintaks dan parameter diset dengan benar, dan testparm tidak menyampaikan pesan kesalahan, Anda dapat restart ulang smbd lewat skrip samba. # /sbin/samba restart
     
 

Instalasi Samba

Instalasi Samba dari kode sumber

Untuk Slackware, Binary Samba Versi 2.6 secara default sudah diinstal pada saat instalasi awal. Untuk mengecek apakah Slackware Anda sudah ada Samba atau belum, bisa dilakukan dengan cara :
$ whereis smbd

$ whereis nmbd

Atau cek file rc yang menginisialisasi Samba (rc.samba) pada saat booting :
$ cd /etc/rc.d

etc/rc.d $ ls -l

Jika tidak ditemukan, Anda dapat menginstall lewat CD dengan pkgtool. Beberapa catatan tentang Binary Samba yang disertakan dalam distribusi Slackware, akan dibahas pada akhir bagian intstalasi. Untuk instalasi secara umum, dapat dilakukan dengan cara sebagai berikut :

  1. Download Distribusi Samba Daftar server yang menyediakan distribusi Samba dapat dilihat di ftp.samba.org atau
    http://www.samba.org. Mirror server tersedia hampir  seluruh dunia dan Anda dapat memilih yang terdekat. File yang harus didownload adalah :
    samba-versi-terakhir.tar.gz

    Saat buku ini ditulis versi terakhir dari Samba adalah 2.0.7 (samba-2.7.0.tar.gz).
  2. Ekstraksi file File yang Anda download masih berupa tar ball yang dikompress. Untuk mengekstraknya, Anda dapat jalankan langkah :
    $ mkdir /usr/local/src

    $ cp samba*.tar.gz /usr/local/src

    $ gzip samba*.tar.gz | tar xvf -


    Catatan :

    Pengguna Linux pada umumnya menggunakan direktori /usr/local untuk menyimpan semua pogram baru. Direktori ini biasanya mempunyai struktur direktori root seperti /usr/local/bin, /usr/local/etc, /usr/local/docs. Dalam lingkungan jaringan, direktori ini biasanya diset untuk dapat ditulis oleh beberapa user dan dieksekusi oleh semua user.
  3. Baca Dokumentasi Sebelum memulai instalasi, biasakan untuk membaca dokumentasi terlebih dahulu. Setelah Anda ekstrak Samba, dokumentasi dapat dilihat di direktori utama Samba. Beberapa file yang perlu dibaca :
    README

    WHATSNEW.txt

    Docs/textdocs/UNIX_INSTALL.txt

  4. Konfigurasi Samba Sebagaimana proses standar dalam instalasi aplikasi berbentuk source di Linux, mulai dengan configure. Jalankan semua proses instalasi sebagai root, atau Anda akan terima pesan :
    Configure: warning: running as non-root will disable some test

    Menjalankan proses instalasi dengan user root akan lebih memastikan aplikasi Samba terinstal dengan baik.
    /usr/local/src$ su -

    password :

    /usr/local/src # cd samba-2.0.7 (direktori utama hasil ekstraksi)

    /usr/local/src/samba-2.0.7# ./configure

    /usr/local/src/samba-2.0.7# make

    /usr/local/src/samba-2.0.7# make install

    Selesai proses instalasi, Samba akan menyimpan filenya dalam beberapa direktori di dalam direktori utama /usr/local/samba


Table: Direktori Samba
Direktori Keterangan
/usr/local/samba Direktori utama
/usr/local/samba/bin File Binari yang dapat dieksekusi
/usr/local/samba/lib File konfigurasi Samba
/usr/local/samba/man Dokumentasi
/usr/local/samba/private Password Samba yang terenkripsi
/usr/local/samba/SWAT File SWAT
/usr/local/samba/var File sementara yang selalu berubah saat Samba berjalan. Misal file log, file shared memory dsb.
   

Instal SWAT

Selesai kompilasi dan instal program, Aktifkan SWAT untuk membantu dalam administrasi Samba. Fitur SWAT yang dapat dimanfaatkan dalam administrasi mencakup :

  • Mengedit konfigurasi Samba
  • Dokumentasi lengkap dengan hyperlink
  • Melihat status file yang dishare
  • Mematikan, start dan restart Samba Daemon, smbd dan nmbd
  • Mengatur resource yang akan dishare
juga memungkinkan Anda melakukan administrasi secara remote.
Catatan :

ing untuk diingat jika Anda mengakses SWAT secara remote, password untuk mengadministrasi Samba dikirim dengan format teks biasa. Jika host yang dilewati memasang sniffer, maka hal ini akan membahayakan jaringan Anda. Gunakan administrasi SWAT secara remote seminimal mungkin.
SWAT dijalankan secara daemon lewat /etc/inetd dan/etc/servies. Untuk mengkonfigurasikan dalam kedua file tersebut :
  1. Tambahkan baris ini ke dalam file /etc/services SWAT 901/tcp

  2. Tambahkan baris berikut kedalam file /etc/inetd.conf. Terlebih dahulu cek manual untuk inetd.conf ini guna melihat format yang benar untuk memastikan baris berikut dapat berjalan SWAT stream tcp nowait.400 /usr/local/samba/SWAT SWAT

    Binary Samba pada Distribusi Linux

    Precompiled binary Samba yang ada pada distribusi Slackware mempunyai direktori yang berbeda dari sumber yang didownload atau Samba yang masih berbentuk kode sumber. Perbedaan ini terletak pada direktori di mana Samba disimpan. Berikut perbandingannya :

    Tabel l 7

    Perbandingan letak Binary Samba hasil kompilasi sendiri dengan paket default yang disertakan pada masing-masing distribusi.
    Dengan demikian, jika Anda menginstal Samba langsung pada saat instalasi awal atau instal di kemudian hari dengan menggunakan binary dari masing-masing distribusi, Anda harus menyesuaikan diri dengan direktori tersebut.  

Samba

Fasilitas Samba

Samba dapat dimanfaatkan untuk menjalankan semua fasilitas dari Microsoft sebagaimana yang telah disampaikan di atas. Samba dapat berfungsi sebagai Master Browser, baik Local Master Browser maupun Domain Master Browser. Samba juga dapat berfungsi sebagai Primary Domain Controller. WINS Server juga sudah didukung oleh Samba. Sedangkan untuk otentikasi, Samba mendukung teks biasa (plain text) password maupun password terenkripsi (encrypted passwod)


Table: Kemampuan Samba
Tugas Dukungan (ya/tidak)
File Server Ya
Printer Server Ya
Primary Domain Controller Ya (Versi 2.1 keatas)
Otentikasi Windows 95/98 Ya
Local Master Browser Ya
Backup Local Master Tidak
Domain Master Browser Ya
Primary WINS Server Ya
Secondary WINS Server Tidak
   

Distribusi Samba

Samba yang disertakan dalam tiap distribusi Linux, biasanya berbentuk binary, merupakan kumpulan aplikasi yang bergantung satu sama lain. Suite Samba tersebut adalah :

  1. smbd Daemon yang memberikan layanan berbagi file dan printer dalam sebuah jaringan yang menggunakan protokol SMB. Smbd bertanggung jawab terhadap seluruh aktifitas antara Samba Server dan klien dalam jaringan. Hal ini termasuk memberikan otentikasi dan otorisasi bagi kliennya.
  2. nmbd Daemon yang memanfaatkan Windows Internet Name Service (WINS), dan membantu klien untuk browsing di network neighborhood. Daemon ini melayani permintaan name server dan memberikan respon yang sesuai.
  3. smbclient Klien dengan tampilan mirip ftp untuk mengakses SMB resource share (mengakses share files)
  4. smbtar Program yang memback up data yang dishare. Mirip tar di Linux.
  5. nmblookup Program yang membantu mencari nama (names lookup) dengan memanfaatkan NetBIOS over TCP/IP. Nmblookup dapat digunakan untuk meresolve dari nama komputer ke nomor IP dan sebaliknya.
  6. smbpasswd Program yang memungkinkan administrator mengatur password yang terenkripsi yang dipergunakan oleh Samba Server.
  7. smbstatus Program yang memonitor status terakhir dari share resources yang diberikan oleh Server Samba.
  8. testparm Program kecil untuk melakukan proses debug (memeriksa parameter) terhadap file konfigurasi Samba (smb.conf)
  9. swat Samba Web Administration Tool, program bantu yang memberikan interface model web untuk mengadministrasi Samba. SWAT mempermudah edit smb.conf (file konfigurasi Samba) mengatur resource share, melihat status Samba terakhir, dengan dukungan file help yang sangat bermanfaat.

Konektivitas dengan Windows

Jika dalam satu jaringan ada berbagai macam sistem dengan berbagai macam platform, maka dibutuhkan sebuah program yang menjembatani sehingga semua mesin dapat saling berhubungan satu sama lain. Salah satu program yang menjembatani Linux (dan UNIX pada umumnya) dengan mesin Windows yang cukup terkenal adalah Samba.
Samba merupakan aplikasi Unix yang memanfaatkan protokol SMB (Server Message Block). Sebagian sistem operasi memanfaatkan SMB dalam komunikasi client-server-nya, termasuk Windows dan OS/2. Samba memungkinkan mesin Linux berkomunikasi dengan mesin Windows/Dos atau OS/2. Dengan Samba Anda dapat menggunakannya untuk :

  • Menghubungkan setiap mesin Unix (termasuk Linux) dengan mesin Dos/Windows
  • Menempatkan mesin Unix (Linux) sebagai Primary Domain Controller sebagaimana yang dilakukan NT.
Oleh sebab itu lewat Samba, Anda dapat membuat server dengan klien produk Microsoft Windows, dengan layanan :
  1. Berbagi (share) file dan printer.
  2. Membantu pengguna browsing di network neighborhood
  3. Memberikan otentikasi kepada tiap klien yang login ke dalam domain
  4. Memberikan atau membantu dengan WINS name server resolution.
Samba dibuat dan disusun pertama kali olehANDREW TRIDGELL. Pada bulan Desember 1991 Ia menerima program eXcursion dari Digital. Sayangnya program tersebut hanya bekerja dengan 'pathworks' ke mesin VMS atau ultrix, yang memaksanya untuk mempelajari bagaimana file dikomunikasikan. Setelah sekian lama mencoba, akhirnya Ia berhasil memasukkan salah satu direktori dari mesin Digital ke dalam 'pathworks' DOS di rumahnya. Setahun kemudian Andrew telah memasuki komunitas Linux (atas ajakan DAN SHEARER), dan pada Desember 1993 Ia mengeluarkan "NetBIOS for Unix". Dengan menggunakan mailing list, program ini dikembangkan bersama-sama hingga menjadi Samba Team sebagaimana sekarang. Saat ini Samba dikembangkan sebagai bagian dari Open Source Software (Software yang memberikan kode sumbernya) dan didistribusikan dibawah lisensi GNU. Proyek pengembangannya masih tetap berjalan hingga sekarang dikoordinasikan oleh ANDREW TRIDGELL dari rumahnya di Canberra dengan tim tersebar di seluruh dunia.

Catatan :

Protokol adalah bahasa standar yang dipergunakan komputer untuk dapat berkomunikasi satu sama lain.
Aplikasi Samba biasanya dijalankan sebagai daemon. Dua aplikasi utamanya adalah :
  1. smbd Daemon yang memberikan layanan berbagi file dan printer dalam sebuah jaringan yang menggunakan protokol SMB. Smbd juga memberikan otentikasi dan otorisasi bagi kliennya.
  2. nmbd Daemon yang memanfaatkan Windows Internet Name Service (WINS), dan membantu klien untuk browsing di network neighborhood.

    Implementasi Microsoft dalam Jaringan

    Sebelum mulai instalasi Samba, atau sebelum melakukan konfigurasi jika Samba Anda sudah terinstall, berikut akan dipelajari secara ringkas, bagaimana Microsoft menerapkan komunikasi dalam jaringannya.

    Domain Controller

    Seperti yang telah disinggung di awal bab ini, Microsoft menerapkan protokol SMB. Mereka memberinya nama CIFS (Common Internet File System). Dalam membatasi lingkungannya, dipergunakan konsep Windows domain, yakni kumpulan workstation yang menjalankan protokol SMB. Dalam satu domain ada sebuah Domain Controller. Tiap Domain Controller menggunakan Security Account Manager (SAM) untuk menyimpan daftar kombinasi username dan password.
    Dalam sebuah domain, domain controller bisa lebih dari satu. Primary Domain Controller (PDC) adalah domain controller yang memberikan layanan sehari hari. Sebagai cadangannya, dipasang sebuah Back up Domain Controller (BDC). Secara periodik, PDC dan BDC akan melakukan sinkronisasi Security Account Manager (SAM). Tiap saat PDC mengalami crash, BDC sudah siap mengambil alih. Jaringan akan tetap berjalan seperti biasa.

    WINS (Windows Internet Name Service)

    Saat sebuah komputer dalam domain dinyalakan, maka mesin tersebut mengirimkan pesan secara broadcast (kepada seluruh komputer yang ada dalam jaringan) dan mendeklarasikan dirinya dengan nama dari NetBIOS. Proses ini dinamakan name registration. Jika tidak ada bentrok dengan mesin yang lain, maka nama tersebut dipergunakan. Nama inilah yang muncul pada saat user browsing di network neighborhood.
    Pada saat mendeklarasikan namanya dalam sebuah jaringan, mesin juga melayani name resolution. Name resolution adalah sebuah proses yang menerjemahkan nama NetBIOS ke dalam nomor IP tertentu. Baik name resolution maupun name registration bekerja berdasarkan standarisasi yang dibuat oleh IETF (Internet Engineering Task Force) tahun 1987. Semuanya dituangkan dalam RFC (Request For Comments) 1001 dan 1002. Standarisasi ini dikenal dengan NetBIOS over TCP/IP, atau NBT. Pada prinsipnya, NBT memberikan tiga layanan :
  3. Name Service ; untuk name registration dan name resolution
  4. Datagram
  5. Session
Datagram dan session merupakan protokol komunikasi kedua yang dipergunakan untuk transmisi data antar mesin dalam sebuah jaringan. Name Resolution, dan Name Registration, selain dijalankan secara broadcast, juga dapat dideklarasikan secara terpusat. Dalam hal ini dibuat sebuah NetBIOS Name Server (NBNS). Saat mesin dinyalakan, langsung mendaftarkan dirinya ke NBNS nama dan nomor IP. Ketika komputer lain mencari nama mesin dari sebuah IP, maka permintaan tidak dilakukan secara broadcast melainkan langsung ke NBNS. NBNS akan mencocokkan dengan nama mesin yang telah terdaftar, kemudian memberikan jawaban. Proses ini tentu lebih mengurangi lalu lintas data dalam jaringan, dibandingkan dengan proses broadcast.
Gambar 5 Pendaftaran nama dengan Broadcast
Gambar 6 Pendaftaran nama dengan NetBIOS Name Server (NBNS)
WINS adalah penerapan NBNS oleh Microsoft. Jika dalam domain ada server WINS, maka komputer tersebut tidak mengirimkan atau menerima sinyal secara broadcast, melainkan mendaftarkan nama NetBIOS-nya ke server WINS. Server ini akan menyimpan nama semua mesin yang telah mendaftarkan mesinnya, dan membantu user saat browsing di network neighborhood.

Master Browser

Jika Anda memakai Windows 95/98, dan membuka network neighborhood, maka di situ terlihat daftar nama komputer, dan beberapa direktori yang dishare. Daftar ini dibuat dan dipelihara oleh master browser. Sebagaimana yang telah dipelajari sebelumnya, saat komputer dinyalakan, maka akan mengirimkan pesan secara broadcast ke dalam jaringan. Saat itulah, akan terjadi pemilihan komputer mana yang akan menjadi master bowser. Pemilihan ini disebut browsing election. Kemudian, master browser akan memberikan daftar nama mesin dan resource share-nya kepada setiap komputer yang meminta.
Master browser dalam satu subnet disebut local master browser. Pendukungnya disebut backup local master. Mengingat browsing election dapat terjadi setiap saat, maka backup local master dapat beralih fungsi sebagai local master browser kapan saja. Ini bisa terjadi jika misalnya mesin local master browser sebelumnya diboot atau mati.
Selain memberikan daftar nama komputer yang bisa diakses (browse list) dalam satu subnet, master browser juga melayani browse list pada lingkup domain, bahkan antar domain. Ini disebut Domain Master Browser. Pada saat-saat tertentu, Domain Master Browser dan Local Master Browser melakukan sinkronisasi daftarnya. Hal ini memungkinkan user memperoleh daftar nama komputer dan share resources terbaru.

Otentikasi

Model otentikasi di sistem Windows berbeda dengan sistem Unix. Di Windows (sejak Windows 95 SMB Update dan Windows NT 4.0 setelah Service Pack 3), password dikirimkan dalam bentuk enkripsi, sedangkan Unix mengirimkannya dalam bentuk teks biasa. Selain itu, Windows menyimpan passwordnya ke dalam sebuah file, sedangkan Unix tidak.
Untuk lebih jelasnya, bagaimana otentikasi di Windows berjalan, digambarkan dalam langkah berikut :

  1. Komputer mencoba menegosiasikan sebuah session lewat satu protokol kepada server
  2. Server memberikan respon sebagai tanda bahwa server tersebut mendukung sistem password terenkripsi.
  3. Server mengirimkan 8 byte string yang dibuat secara acak.
  4. Komputer menggunakan string tersebut sebagai kunci untuk mengenkripsikan password yang sudah terenkripsi dengan algoritma yang telah didefinisikan sebelumnya pada saat negosiasi protokol. Hasilnya dikirim ke server.
  5. Server juga menggunakan string tersebut untuk menenkripsi password yang disimpan dalam database. Jika hasilnya sama dengan yang dikirimkan user, maka user tersebut memperoleh otentikasi, dan sebaliknya.

 

GNU General Public License LISENSI PUBLIK UMUM GNU

Version 2, Juni 1991. Hak cipta (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA

Semua orang diperbolehkan untuk menyalin dan mendistribusikan salinan sama persis dari dokumen lisensi ini, tetapi mengubahnya tidak diperbolehkan.

Hampir semua lisensi dari perangkat lunak dirancang untuk merebut kebebasan anda dan mengubahnya. Sebaliknya, Lisensi Publik Umum GNU (GNU General Public License) bertujuan untuk menjamin kebebasan anda untuk berbagi dan mengubah perangkat lunak bebas - untuk menjamin bahwa perangkat lunak tersebut tetap bebas bagi penggunanya. General Public License ini dapat diberlakukan terhadap hampir semua perangkat lunak Free Software Foundation dan program lain apa pun yang penciptanya mau menggunakan Lisensi ini. (Beberapa perangkat lunak Free Software Foundation lainnya menggunakan GNU Library Public License.) Anda dapat memberlakukannya terhadap program Anda juga.
Ketika kita berbicara tentang perangkat lunak bebas, kita mengacu kepada kebebasan, bukan harga. Lisensi Publik Umum kami dirancang untuk menjamin bahwa Anda memiliki kebebasan untuk mendistribusikan salinan dari perangkat lunak bebas (dan memberi harga untuk jasa tersebut jika Anda mau), mendapatkan source code atau bisa mendapatkannya jika Anda mau, mengubah suatu perangkat lunak atau menggunakan bagian dari perangkat lunak tersebut dalam suatu program baru yang juga bebas; dan mengetahui bahwa Anda dapat melakukan semua hal ini.
Untuk melindungi hak-hak Anda, kami perlu membuat batasan-batasan yang melarang orang lain untuk dapat menolak hak-hak Anda atau membuat Anda menyerahkan hak-hak Anda tersebut. Batasan-batasan ini diterjemahkan menjadi beberapa tanggung jawab bagi Anda jika Anda mendistribusikan salinan dari suatu perangkat lunak, atau memodifikasinya.
Sebagai contoh, jika Anda mendistribusikan salinan dari suatu program, baik secara gratis atau dengan biaya, Anda harus memberi semua hak-hak Anda kepada si penerima. Anda juga harus menjamin bahwa si penerima tersebut mendapatkan atau bisa mendapatkan source code-nya.
Kami melindungi hak-hak Anda dengan dua langkah: (1) hak cipta terhadap perangkat lunak tersebut, dan (2) menawarkan Lisensi ini kepada Anda yang memberi Anda izin legal untuk menyalin, mendistribusikan dan/atau memodifikasi perangkat lunak tersebut.
Demi perlindungan bagi si pencipta dan kami juga, kami ingin memastikan bahwa semua orang mengerti bahwa tidak ada garansi bagi perangkat lunak bebas. Jika perangkat lunak tersebut dimodifikasi oleh orang lain dan didistribusikan, kami ingin sang penerimanya mengetahui bahwa apa yang mereka punyai bukanlah perangkat lunak yang aslinya, sehingga masalah apa pun yang ditimbulkan oleh orang lain tidak mencerminkan reputasi pencipta perangkat lunak yang asli.
Terakhir, program bebas apa pun terancam terus menerus oleh hak paten perangkat lunak. Kami ingin menghindari bahaya yang memungkinkan redistributor program yang bebas bisa mendapatkan hak paten untuk dirinya sendiri, yang mengakibatkan program tersebut menjadi tak bebas. Untuk mencegah hal ini, kami telah menyatakan dengan jelas bahwa hak paten apa pun harus dilisensikan bagi semua orang, atau tidak sama sekali.
Berikut adalah ketentuan dan persyaratan yang tepat untuk menyalin, mendistribusikan dan memodifikasi.
KETENTUAN DAN PERSYARATAN UNTUK MENYALIN,
MENDISTRIBUSIKAN DAN MEMODIFIKASI

0. Lisensi ini berlaku untuk program apa pun atau karya lain yang memuat pemberitahuan yang ditempatkan oleh pemegang hak cipta memberitahukan bahwa program atau karya tersebut boleh didistribusikan di bawah persyaratan dari General Public License ini. Sang "Program", di bawah, mengacu pada program atau karya apa pun seperti yang telah disebutkan, dan "karya berdasarkan si Program" berarti si Program itu sendiri atau karya turunan apa pun di bawah hukum hak cipta: yang artinya, suatu karya yang memuat si Program atau bagian darinya, baik itu sama persis atau dengan modifikasi dan/atau diterjemahkan ke dalam bahasa lain. (Mulai dari sekarang, penerjemahan dimasukkan tanpa batas dalam ketentuan "modifikasi".) Setiap pemegang lisensi disebut sebagai "Anda".
Kegiatan selain menyalin, mendistribusikan dan memodifikasi tidak dilingkupi oleh Lisensi ini; kegiatan tersebut berada di luar ruang lingkup Lisensi ini. Kegiatan menjalankan si Program tidak dibatasi, dan keluaran dari si Program dilingkupi hanya jika isinya mempunyai dasar karya yang berbasis si Program tersebut (terlepas dari keluarannya dibuat dengan cara menjalankan si Program atau tidak). Benar atau tidaknya tergantung pada apa yang dilakukan si Program.
1. Anda boleh menyalin dan mendistribusikan sama persis dari source code si Program sebagaimana Anda menerimanya, dalam media apa pun, dengan syarat Anda menaruh pemberitahuan yang pantas tentang hak cipta dan penyangkalan terhadap garansi dengan jelas dan sepatutnya pada setiap salinan; menyimpan secara utuh semua pemberitahuan yang mengacu kepada Lisensi ini dan kepada ketiadaan garansi apa pun; dan memberi kepada penerima lainnya sebuah salinan dari Lisensi ini bersama si Program.
Anda boleh memberi harga untuk kegiatan memindahkan salinan secara fisik, dan Anda boleh, sesuai pilihan Anda, menawarkan perlindungan garansi untuk harga tertentu.
2. Anda boleh memodifikasi satu atau lebih salinan si Program atau bagian dari si Program yang Anda miliki, sehingga membentuk suatu karya yang berdasarkan si Program, dan menyalin serta mendistribusikan modifikasi atau karya seperti yang telah disebutkan dalam ketentuan pada Bagian 1 di atas, dengan syarat Anda juga memenuhi semua persyaratan ini:
a) Anda harus membuat agar berkas-berkas yang termodifikasi membawa pemberitahuan menyolok yang memberitahukan bahwa Anda telah mengubah berkas-berkas tersebut dan tanggal perubahan tersebut.
b) Anda harus menghasilkan karya yang Anda sebarkan atau edarkan, baik seluruhnya atau sebagian atau di hasilkan dari suatu program atau dari berbagai bagian, untuk dilisensikan secara keseluruhan tanpa biaya kepada seluruh partai ketiga di bawah lisensi tersebut.
c) Jika program yang dimodifikasi saat dijalankan dapat membaca perintah-perintah secara interaktif, Anda harus dapat mewujudkannya, saat memulai menjalankan sesuatu interaktif dengan cara yang paling wajar, mencetak atau menampilkan suatu pengumuman termasuk pemberitahuan hak cipta dan tidak adanya garansi (atau lainnya, yang mengatakan kalau Anda menyediakan garansi, dan pemakai boleh mengedarkan program tersebut berdasarkan suatu kondisi/persyaratan, dan beritahukan kepada mereka bagaimana caranya melihat salinan dari lisensi tersebut. (Pengecualian : Jika program itu sendiri adalah interaktif tapi tidak mencetak pemberitahuan seperti di atas, karya Anda yang berdasarkan program tersebut juga tidak diharuskan mencetak pemberitahuan tersebut.)
Persyaratan-persyaratan ini diperuntukkan untuk karya yang dimodifikasi secara keseluruhan. Jika bagian yang dapat diidentifikasi dari karya tersebut tidak berasal dari suatu program, dan dapat dinyatakan berdiri sendiri dan suatu karya yang terpisah, maka Lisensi ini, dan bagian-bagiannya, tidak berlaku untuk bagian tersebut saat Anda mengedarkannya sebagai suatu karya yang terpisah. Namun, saat Anda mengedarkan bagian yang sama sebagai bagian dimana karya tersebut merupakan bagian dari program, pengedaran dari yang keseluruhan harus berdasarakan lisensi tersebut, yang perizinannya untuk lisensi yang lain diperluas ke seluruhnya, dan pada setiap bagian tidak peduli siapa yang menulisnya.
Maka, bukanlah tujuan dari bagian ini untuk mengklaim hak-hak atau memamerkan hak-hak Anda untuk bekerja menulis seluruhnya oleh Anda; daripada, tujuannya adalah untuk melatih hak untuk mengendalikan pendistribusian dari karya turunan atau kolektif berdasarkan si Program tersebut.
Sebagai tambahan, agregasi belaka dari karya yang lain tidak berdasarkan dari si Program dengan si Program (atau dengan suatu karya berdasarkan si Program) pada kapasitas penyimpanan atau media pendistribusian tidak membawa karya lainnya di bawah lingkup dari Lisensi tersebut.
3. Anda boleh menyalin dan menyalurkan si Program (atau karya yang berdasarkan si Program tersebut, tercantum pada Bagian 1 dan 2) dalam object code atau bentuk yang dapat dijalankan seperti pada ketentuan yang tercantum pada Bagian 1 dan 2 di atas, dengan syarat Anda juga melakukan salah satu dari hal berikut:
a) Menyertakannya dengan source code bersangkutan yang lengkap dan dapat dibaca, yang harus didistribusikan di bawah ketentuan yang tercantum pada Bagian 1 dan 2 di atas pada suatu media yang dipergunakan secara khusus untuk pertukaran perangkat lunak; atau,
b) Menyertakannya dengan penawaran tertulis, yang berlaku untuk setidaknya tiga tahun, untuk memberi pihak ketiga mana pun, dengan suatu harga yang tidak melebihi biaya untuk melakukan pendistribusian sumber, source code bersangkutan yang lengkap dan dapat dibaca, untuk didistribusikan di bawah ketentuan dari Bagian 1 dan Bagian 2 di atas pada suatu media yang dipergunakan secara khusus untuk pertukaran perangkat lunak; atau,
c) Menyertakannya dengan informasi yang Anda terima berhubungan dengan penawaran untuk mendistribusikan source code yang bersangkutan. (Alternatif ini diperbolehkan hanya untuk distribusi non-komersil dan hanya jika Anda memperoleh program dalam bentuk object code atau bentuk yang dapat dijalankan dengan penawaran seperti yang telah disebutkan, menurut Subbagian b di atas.)
Source code dari sebuah karya berarti bentuk yang diinginkan dari pekerjaan untuk memodifikasinya. Untuk sebuah karya yang dapat dijalankan, source code lengkap artinya semua source code untuk semua modul yang dikandungnya, ditambah berkas-berkas definisi yang berhubungan, ditambah script yang digunakan untuk mengendalikan kompilasi dan instalasi dan bentuk yang dapat dijalankannya. Bagaimanapun, sebagai pengecualian, pendistribusian source code tidak diperlukan untuk memasukkan semua komponen yang biasanya didistribusikan (dalam bentuk source atau biner) bersama dengan komponen utama (kompilator, kernel, dan sebagainya) dari sistem operasi dimana program tersebut berjalan, kecuali komponen tersebut mendampingi bentuk yang dapat dijalankannya. Jika pendistribusian dari bentuk yang dapat dijalankannya dan object code dibuat dengan penawaran akses untuk menyalin dari tempat yang telah ditentukan, maka penawaran akses untuk menyalin source code dari tempat yang sama dihitung sebagai pendistribusian dari source code, walaupun pihak ketiga tidak diharuskan untuk menyalin source code bersama-sama dengan object code.
4. Anda tidak boleh menyalin, mengubah, mensublisensikan, atau mendistribusikan si Program tersebut kecuali sebagaimana telah diterangkan pada Lisensi ini. Segala usaha untuk menyalin, mengubah, mensublisensikan, atau mendistribusikan si Program tersebut adalah tidak sah, dan secara otomatis akan membatalkan hak-hak Anda di bawah Lisensi ini. Akan tetapi, mereka yang sudah mendapatkan salinan, atau hak-hak dari Anda di bawah Lisensi ini tidak akan dibatalkan lisensinya selama mereka tetap mematuhi Lisensi ini.
5. Anda tidak diharuskan menerima Lisensi ini, karena anda belum menyetujuinya. Tetapi, tidak ada lisensi lain yang memberi anda izin untuk memodifikasi atau mendistribusikan Program tersebut atau turunannya. Kegiatan tersebut dilarang oleh hukum jika anda tidak menerima Lisensi ini. Oleh karena itu, dengan memodifikasi atau mendistribusikan program tersebut (atau hasil kerja berdasarkan program tersebut), berarti Anda menerima Lisensi ini, dan semua ketentuan serta kondisi untuk menyalin, mendistribusikan atau memodifikasi program tersebut atau hasil kerja berdasarkan program tersebut.
6. Setiap kali anda mendistribusikan si Program tersebut (atau hasil kerja lain berdasarkan Program tersebut), penerima secara otomatis menerima lisensi dari pemberi lisensi untuk menyalin, mendistribusikan atau memodifikasi si Program tersebut berdasarkan persyaratan dan kondisi yang ada. Anda tidak boleh memberikan pembatasan lain terhadap perilaku penerima terhadap hak-hak yang telah diberikan . Anda tidak bertanggung jawab untuk memaksakan penyesuaian pihak ketiga terhadap Lisensi ini.
7. Jika sebagai konsekuensi dari keputusan pengadilan atau pelanggaran paten atau hal yang lainnya (tidak terbatas kepada permasalahan paten), kondisinya tergantung pada anda (jika ada suruhan dari pengadilan, kesepakatan atau yang lainnya) yang berbeda dari Lisensi ini, mereka tidak menerima kesepakatan Lisensi ini. Jika kita tidak bisa menyebarkan agar dapat secara simultan terpuaskan kesepakatan di bawah Lisensi ini dan kesepakatan yang lainnya, kemudian sebagai konsekuensi nya kita tidak dapat mengedarkan seluruh program sama sekali. Sebagai contoh, jika lisensi paten tidak membolehkan pembayaran royalti (hak pakai) dari program dimana pengguna menerima salinannya secara langsung atau tidak langsung dari Anda, maka satu-satunya jalan untuk Anda memuaskan antara yang menerima salinan dan Lisensi ini adalah untuk menjelaskan keseluruhan distribusi program.
Jika ada bagian dari sini termasuk tidak sah atau tidak dapat diterapkan di bawah keadaan tertentu apa pun juga, keseimbangan dari bagian ini bertujuan untuk menerapkan dan bagian ini sebagai keseluruhan adalah diperuntukkan untuk menerapkan hal yang lainnya.
Ini bukan bermaksud untuk mempengaruhi Anda untuk melanggar paten tertentu atau klaim hak kepemilikan yang lain atau untuk mengadu keabsahan klaim hak kepemilikan apa pun; bagian ini mempunyai maksud dan tujuan untuk melindungi integritas dari sistem pendistribusian perangkat lunak bebas, dimana perangkat lunak itu diimplementasikan oleh praktek lisensi umum. Banyak orang sekarang telah dapat membuat kontribusi umum untuk mendistribusikan penggunaan perangkat lunak dalam sebuah sistem yang terbuka; hal ini tergantung dari si pencipta/penderma jika ia punya keinginan untuk menyebarkan/tidak menyebarkan aplikasi yang ia buat ke masyarakat luas tanpa mengikuti sistem yang berlaku dan pemegang lisensi tidak dapat menentukan pilihan tersebut.
Bagian ini bertujuan untuk membuat sebuah pemahaman yang jelas tentang apa yang dipercayai sebagai akibat dari sisa Lisensi ini.
8. Jika distribusi dan/atau penggunaan si Program dibatasi di negara-negara tertentu saja melalui paten atau hak cipta antar muka, pemegang hak cipta orisinil yang menempatkan si Program di bawah Lisensi ini boleh menambahkan batasan pendistribusian geografis secara ekplisit terkecuali negara-negara yang disebut di atas, sehingga distribusi hanya terdapat di dalam atau di antara negara-negara yang diperbolehkan. Dalam kasus semacam itu, Lisensi ini menyertakan limitasi di atas sebagaimana tertulis di dalam tubuh Lisensi ini.
9. Free Software Foundation diperbolehkan menerbitkan versi revisi atau versi baru dari General Public License dari waktu ke waktu. Versi baru semacam itu akan tetap memiliki semangat yang sama dengan versi sebelumnya, tapi dapat berbeda detil untuk menangani problem baru atau perhatian baru.
Setiap versi diberikan nomor versi yang berbeda-beda. Jika si Program menyatakan nomor versi dari Lisensi ini yang diberlakukan dalam Program tersebut dan versi-versi berikutnya dari Program tersebut, Anda memiliki pilihan untuk mengikuti syarat dan kondisi dari versi ini atau salah satu versi berikutnya yang diterbitkan oleh Free Software Foundation. Jika Program tidak menyatakan nomor versi dari Lisensi ini, Anda boleh memilih sembarang versi yang diterbitkan oleh Free Software Foundation.
10. Jika Anda menginginkan untuk menyertakan bagian dari Program ke dalam program bebas yang lain yang kondisi distribusinya berbeda, Anda harus menanyakan kepada penulis program. Untuk software yang dihakciptakan oleh Free Software Foundation, anda harus menanyakan ke Free Software Foundation; kami kadang kala membuat pengecualian dalam hal ini. Keputusan kami akan ditentukan oleh dua hal yaitu untuk menjaga status bebas dari semua turunan perangkat lunak bebas kami dan untuk mempromosikan pengunaan bersama dan penggunaan kembali dari perangkat lunak secara umum.
TIDAK ADA GARANSI
11. KARENA IZIN PROGRAM BEBAS BIAYA, TAK ADA JAMINAN TAMBAHAN UNTUK PROGRAM SAMPAI BATASAN YANG DITENTUKAN OLEH HUKUM YANG ADA. KECUALI JIKA ADA TULISAN YANG DISEBUTKAN OLEH PEMEGANG HAK CIPTA DAN ATAU KELOMPOK LAIN YANG MENYEDIAKAN PROGRAM SEBAGAI TANPA JAMINAN JENIS APAPUN, BAIK SECARA LANGSUNG MAUPUN TIDAK LANGSUNG, TERMASUK, TAPI TAK TERBATAS, JAMINAN DAYA JUAL DAN TUJUAN-TUJUAN TERTENTU. SEMUA RESIKO DARI KUALITAS DAN KEHANDALAN PROGRAM DITANGGUNG ANDA SENDIRI, JIKA TERJADI PROGRAM TERNYATA CACAT ATAU KURANG SEMPURNA, ANDA MEMBUAT ASUMSI DARI BIAYA PERBAIKAN, PEMBETULAN DAN KOREKSI SEPERLUNYA.
12. TIDAK DALAM KEADAAN APA PUN KECUALI DIBUTUHKAN OLEH HUKUM YANG ADA ATAU DISETUJUI DALAM TULISAN PEMEGANG HAK CIPTA, ATAU PIHAK LAIN YANG MEMODIFIKASI DAN MENDISTRIBUSIKAN PROGRAM SEPERTI YANG DIIZINKAN DI ATAS, ANDA BERTANGGUNG JAWAB ATAS KERUSAKAN , TERMASUK SECARA UMUM, KERUSAKAN KHUSUS, SENGAJA MAUPUN TIDAK DISENGAJA, YANG MENYEBABKAN PROGRAM TAK BISA DIGUNAKAN (TERMASUK, TAPI TAK TERBATAS HANYA PADA HAL TERSEBUT KEHILANGAN DATA ATAU DATA MENJADI TIDAK AKURAT, DISEBABKAN OLEH ANDA ATAU PIHAK KETIGA, ATAU KEGAGALAN PROGRAM UNTUK BEKERJASAMA DENGAN PROGRAM LAIN ), WALAU BAHKAN JIKA PEMEGANG HAK CIPTA ATAU PIHAK LAIN TELAH DIPERINGATKAN TENTANG KEMUNGKINAN KERUSAKAN TERSEBUT.
AKHIR KETENTUAN SERTA PERSYARATANNYA
 
Cara Menerapkan Ketentuan Ini dalam Program Baru Anda
Jika Anda mengembangkan suatu program baru, dan Anda menginginkan program tersebut menjadi hal yang paling mungkin berguna untuk digunakan oleh masyarakat, jalan paling baik untuk mencapai hal ini adalah dengan membuat program Anda menjadi perangkat lunak bebas dimana semua orang dapat mendistribusikannya kembali dan mengubahnya di bawah ketentuan-ketentuan ini.
Untuk melakukan hal itu, tambahkan pemberitahuan berikut ke program tersebut. Tindakan yang paling aman adalah untuk menambahkan pemberitahuan tersebut ke awal setiap berkas sumber agar dapat dengan efektif menyampaikan tidak termasuknya garansi; dan setiap berkas harus mempunyai setidaknya baris "hak cipta" dan petunjuk dimana pemberitahuan seluruhnya dapat ditemukan.

satu baris untuk nama program serta ide singkat tentang fungsinya. Hak cipta (C) tahun nama pencipta


Program ini adalah perangkat lunak bebas; Anda dapat menyebarluaskannya dan/atau memodifikasinya di bawah ketentuan-ketentuan dari GNU General Public License seperti yang diterbitkan oleh Free Software Foundation; baik versi 2 dari Lisensi tersebut, atau (dengan pilihan Anda) versi lain yang lebih tinggi.


Program ini didistribusikan dengan harapan bahwa program ini akan berguna, tetapi TANPA GARANSI; tanpa garansi yang termasuk dari DAGANGAN atau KECOCOKAN UNTUK TUJUAN TERTENTU sekalipun. Lihat GNU General Public License untuk rincian lebih lanjut.


Anda seharusnya menerima sebuah salinan GNU General Public License beserta program ini; jika tidak, tulis ke Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

Tambahkan juga informasi untuk menghubungi Anda melalui surat elektronik atau surat biasa. Jika programnya interaktif, buatlah agar program tersebut mengeluarkan pemberitahuan singkat seperti berikut ketika mode interaktif dimulai:

Gnomovision versi 69, Hak cipta (C) tahun nama pencipta Gnomovision TIDAK MEMILIKI GARANSI APA PUN; untuk rincian ketik 'lihat g'. Program ini adalah perangkat lunak bebas, dan Anda diperbolehkan untuk menyebarluaskannya dengan syarat-syarat tertentu; ketik 'lihat s' untuk rincian.

Perintah-perintah hipotetis `lihat g' dan `lihat s' seharusnya menunjukkan bagian-bagian yang tepat dari General Public License. Tentu saja, perintah-perintah yang Anda gunakan dapat dipanggil melalui hal yang lain selain `lihat g' dan `lihat s'; perintah-perintah tersebut dapat berupa klik pada tombol mouse atau menu - apa pun yang menurut Anda sesuai. Anda juga seharusnya mendapatkan tanda tangan atasan Anda (jika Anda bekerja sebagai pemrogram) atau izin sekolah Anda, jika ada, tentang "penyangkalan hak cipta" untuk program tersebut, jika perlu. Berikut adalah contoh; ubah namanya:

Yoyodyne, Inc., dengan ini menyanggah kepentingan semua hak cipta di dalam program 'Gnomovision' (yang melakukan pass-pass pada kompilator) yang diprogram oleh James Hacker.


tanda tangan Ty Coon, 1 April 1989  
Ty Coon, Wakil Presiden Direktur

General Public License ini tidak mengizinkan memasukkan program Anda ke dalam program tak bebas. Jika program Anda adalah library subrutin, Anda boleh saja berpikir bahwa akan lebih berguna jika program tak bebas diperbolehkan untuk di-link ke library tersebut. Jika ini adalah apa yang Anda kehendaki, maka gunakanlah GNU Library General Public License daripada Lisensi ini.

Enkripsi

Enkripsi adalah proses mengacak data sehingga tidak dapat dibaca oleh pihak lain. Pada kebanyakan proses enkripsi, Anda harus menyertakan kunci sehingga data yang dienkripsi dapat didekripsikan kembali. Ilmu yang mempelajari teknik enkripsi disebut kriptografi. Gambaran sederhana tentang enkripsi, misalnya mengganti huruf a dengan n, b dengan m dan seterusnya. Model penggantian huruf sebagai bentuk enkripsi sederhana ini sekarang tidak dipergunakan secara serius dalam penyembunyian data. ROT-13 adalah program yang masih suka dipergunakan. Intinya adalah mengubah huruf menjadi 23 huruf didepannya. Misalnya b menjadi o dan seterusnya. Pembahasan enkripsi akan terfokus pada enkripsi password dan enkripsi komunikasi data

Enkripsi Password

Password di Linux dibuat dengan menggunakan metode tingkat lanjut dalam enkripsi, yakni DES (Data Encryption Standard). Menurut Federal Processing Standards Publication 46-2, DES didefinisikan sebagai ;

Sebuah algoritma matematika untuk menjalankan enkripsi (enchypering) dan dekripsi (dechypering) informasi koding binary. Enkripsi mengkonversikan data menjadi bentuk yang sulit ditebak, disebut chyper. Proses dekripsi cypher mengkonversikan data kedalam bentuk aslinya, disebut plain-text. (terjemahan bebas)
Enkripsi dan dekripsi dilakukan tergantung pada kunci (key). Kunci ini dibuat berdasarkan masukan dari user pada saat mengetikkan password terdiri dari binary 64 digit. Jika password yang diketikkan kurang dari binary 64 digit, maka DES akan menambahkannya secara otomatis. Dari binary 64 digit, 56 dipergunakan untuk enkripsi, dan 8 dipergunakan untuk cek kesalahan (error checking). Saat seorang penyusup (atau siapa saja) akan melakukan crack terhadap password di Linux, mereka biasanya mempergunakan kamus (dictionary attack). Saat melakukan crack, penyusup akan mengambil kata-kata dari kamus, kemudian mengenkripsinya dengan DES. Dalam proses ini, kata demi kata diberikan secara terus menerus, kemudian diproses sebagaimana Linux memproses passwordnya. Hasilnya akan dicocokkan dengan daftar yang ada di /etc/passwd. Jika cocok, program cracker akan memberitahukan kepada penyusup, bahwa password sudah berhasil ditemukan.
Untuk meningkatkan keamanan password dalam jaringan Anda, baca kembali sub bab tentang Discretionary Access Control.

Enkripsi komunikasi data

Di dalam Internet (atau intranet) data yang dikirimkan dari satu komputer ke komputer lainnya, pasti melewati komputer-komputer lain. Ambil contoh, pada saat Anda memasukkan password untuk mengecek account email di hotmail, data akan dikirim dalam bentuk teks biasa melewati beberapa host sebelum akhirnya diterima oleh hotmail. Pernahkah Anda berfikir bahwa salah satu dari komputer yang dilewati oleh data Anda dipasangi program sniffer?
Sniffer adalah program yang membaca dan menganalisa setiap protokol yang melewati mesin di mana program tersebut diinstal. Secara default, sebuah komputer dalam jaringan (workstation) hanya mendengarkan dan merespon paket-paket yang dikirimkan kepada mereka. Namun demikian, kartu jaringan (network card) dapat diset oleh beberapa program tertentu, sehingga dapat memonitor dan menangkap semua lalu lintas jaringan yang lewat tanpa peduli kepada siapa paket tersebut dikirimkan.
Kembali ke contoh tadi, jalankan traceroute untuk mengetahui berapa banyak host/komputer yang dilewati data Anda. Lakukan test berikut pada saat komputer sedang online.
# traceroute www.hotmail.com

1  * * nas1-3.cbn.net.id (202.158.2.228)  1610.03 ms

 2  nas1-rtif.cbn.net.id (202.158.2.225)  129.58 ms  119.94 ms  119.881 ms

 3  * 203.127.108.137 (203.127.108.137)  620.031 ms  679.721 ms

 4  202.160.250.29 (202.160.250.29)  639.809 ms  629.684 ms  710.019 ms

 5  202.160.250.6 (202.160.250.6)  619.77 ms  939.703 ms  819.83 ms

 6  S-0-0-0-explorer.ix.singtel.com (202.160.255.214)  849.86 ms  829.723 ms  829.886 ms

 7  s4-1-0.paloalto-cr13.bbnplanet.net (4.0.17.249)  810.22 ms  901.074 ms  818.614 ms

 8  p2-2.paloalto-nbr2.bbnplanet.net (4.0.2.221)  819.889 ms  799.684 ms  809.797 ms

 9  p2-0.paloalto-cr1.bbnplanet.net (4.0.6.78)  809.877 ms  819.611 ms  839.936 ms

10  p0-0.mshotmail.bbnplanet.net (4.0.24.14)  809.757 ms  889.695 ms  849.887 ms

11  * * *

12  law5-rsp-c.hotmail.com (216.32.183.14)  870.029 ms  879.73 ms  869.859 ms

13  lc2.law5.hotmail.com (209.185.243.135)  929.954 ms *  870.017 ms


Catatan :

Pada mesin Windows Anda juga dapat melakukan tes serupa dengan menjalankan perintah tracert pada prompt. Misal c:\>tracert www.hotmail.com

Untuk menjaga data yang dikomunikasikan, Anda dapat menerapkan beberapa  program enkrisi komunikasi data. Di antaranya yang terkenal adalah secure shell (ssh), dan secure socket layer (SSL).

Secure Shell (SSH)

Menurut RFC (Request For Comment) dari Secure Shell (SSH):

Secure Shell adalah program yang melakukan loging terhadap komputer lain dalam jaringan, mengeksekusi perintah lewat mesin secara remote, dan memindahkan file dari satu mesin ke mesin lainnya.
Algoritma enkripsi yang didukung oleh SSH di antaranya BlowFish (BRUCE SCHNEIER), Triple DES (Pengembangan dari DES oleh IBM), IDEA (The International Data Encryption Algorithm), dan RSA (The Rivest-Shamir-Adelman). Dengan berbagai metode enkripsi yang didukung oleh SSH, Anda dapat menggantinya secara cepat jika salah satu algoritma yang Anda terapkan mengalami gangguan.

Instalasi SSH

Saat ini SSH dalam bentuk kode sumber dapat diperoleh dihttp://www.ssh.fi, sedangkan binarynya untuk klien dan server dapat Anda peroleh dihttp://www.replay.com. Beberapa paket program utama yang dijadikan satu paket dalam SSH suite adalah :

  1. make-ssh-known-host Skrip Perl yang membuat database dari host-host yang otomatis dibuat berdasarkan domain.
  2. scp The Secure Shell Copy Program, mengamankan penggAndaan data dari satu komputer ke komputer lainnya. Data ditransfer dalam bentuk enkripsi oleh SSH.
  3. ssh The Secure shell client, program yang bekerja seperti telnet. Perintah dapat Anda jalankan secara remote sebagaimana telnet bekerja.
  4. ssh-add Menambahkan kunci (key) baru terhadap autentikasi ssh-agent
  5. ssh-agent Digunakan untuk autentikasi lewat jaringan dengan model RSA.
  6. sshd Secure shell server, secara default bekerja pada port 22.
  7. ssh-keygen Program pembuat kunci (key generator) untuk ssh.
Untuk instalasinya mempergunakan langkah-langkah standar dalam kompilasi dan instalasi program yang berbentuk kode sumber. $ gunzip ssh-1.2.27 | tar xvf -
$ cd ssh-1.2.27
$ ./configure
$ make
$ su
password :
# make install
 
Selesai proses instalasi, Anda dapat mulai mengedit file konfigurasi untuk SSH :

  • /etc/sshd_config (File konfigurasi server)
  • /etc/ssh_config (File konfigurasi klien)

    Konfigurasi Server

    Secara default, /etc/sshd_config Anda akan tampak sebagai berikut :
    Port 22

    ListenAddress 0.0.0.0

    HostKey /etc/ssh_host_key

    RandomSeed /etc/ssh_random_seed

    ServerKeyBits 768

    LoginGraceTime 600

    KeyRegenerationInterval 3600

    PermitRootLogin yes

    IgnoreRhost no

    StrictModes yes

    QuietMode no

    X11Forwarding yes

    X11DisplayOffset 10

    FascistLogging no

    PrintMod yes

    KeepAlive yes

    SyslogFacility DAEMON

    RhostsAuthentication no

    RhostsRSAAuthentication yes

    PasswordAuthentication yes

    PermitEmptyPasswords yes

    UserLogin no

    # Checkmail no

    #PidFile /u/zappa/.ssh/pid

    # AllowHosts *.our.com friend.other.com

    # DenyHosts lowsecurity.theirs.com *.evil.org evil.org

    # Umask 022

    #SilentDeny yes

    Sebagai referensi dalam mengedit konfigurasi tersebut, berikut penjelasan tentang fungsi-fungsi dari beberapa parameter yang perlu :

    Table: Parameter /etc/sshd_config
    Parameter/etc/sshd_config Parameter Penjelasan
    AllowGroups [groups] Digunakan untuk mengontrol grup yang dapat memanfaatkan fasilitas SSH. Antar grup dipisahkan dengan spasi. Misal AllowGroups root user
    AllowHosts [hosts] Dipergunakan untuk mengontrol host-host yang dapat mengakses layanan SSH. Host dapat diberikan dalam bentuk nama atau nomor IP. Misalnya AllowHosts *.pasarrumput.com 192.168.11.1
    AllowTCPForwarding Dipergunakan untuk menentukan apakah TCP forwarding diperbolehkan. Secara default di set yes.
    CheckMail Digunakan untuk menentukan apakah user yang sedang login dengan ssh diberitahu jika ada email masuk atau tidak. Secara default diset yes.
    DenyGroups Digunakan untuk mengontrol grup yang tidak diperbolehkan untuk memanfaatkan fasilitas SSH. Sebagaimana AllowGroup, parameter ini menggunakan spasi untuk memisahkan grup satu dengan lainnya.
    DenyHosts Untuk mengontrol host-host yang tidak diperbolehkan untuk mengakses layanan SSH.
    FascistLogging Untuk menentukan apakah sshd menjalankan aktivitas logging
    HostKey Untuk menentukan letak file kunci dari host. Secara default file kunci ada di /etc/ssh_host_key
    IdleTimeout Untuk menentukan waktu pemutusan layanan jika ada session yang tidak melakukan aktivitas.
    IgnoreRhosts Untuk menentukan apakah sshd membaca file .rhosts atau tidak.
    KeepAlive Untuk menentukan apakah sshd mengirimkan pesan bahwa layanan masih berjalan atau tidak
    LoginGraceTime Untuk menentukan waktu jeda saat user bisa login kembali akibat kegagalan login pada sesi sebelumnya
    PermitEmptyPassword Untuk menentukan apakah diperbolehkan atau tidak user mengirimkan password kosong
    PermitRootLogin Untuk menentukan apakah root dapat log in dengan ssh, dan jika diperbolehkan apakah masih perlu autentikasi password
    PrintMod Untuk menentukan apakah sshd perlu menyampaikan motd (message of the day) saat user login
    RSAAuthentication Untuk menentukan apakah sshd menggunakan autentikasi model RSA
    ServerkeyBits Untuk menentukan berapa bit yang dipakai sebagai kunci untuk server
    SilentDeny Untuk menentukan sshd menolak terhadap suatu session tanpa pemberitahuan sama sekali
    StrictModes Untuk menentukan sshd mengecek hak akses file terhadap home direktori sebagai pertimbangan untuk menerima atau menolak suatu login
    X11Forwarding Untuk
       

    Untuk menjalankan sshd, cukup ketikkan sshd sebagai root.
    # sshd
    Ada beberapa pilihan dalam menjalankan sshd. Pilihan ini diketikkan sebagai prefiks saat menjalankan sshd. Misal :
    # sshd -g 60 (menjalankan sshd dengan timeout untuk klien 60 detik)

    Table: Pilihan saat menjalankan sshd
    Pilihan (prefiks) Fungsi
    -b [bits] Dipergunakan untuk menentukan berapa bit yang dipergunakan sebagai kunci. Secara default dipakai 768 bits.
    -d Dipergunakan untuk menjalankan dalam modus DEBUG. Ini berguna untuk mengamati proses server yang sedang berjalan.
    -f [config-file] Dipergunakan untuk menentukan file config yang lain selain yang ditunjuk secara default (/etc/sshd_config)
    -g [timeout] Dipergunakan untuk menentukan timeout jika ada pengguna yang meminta sebuah sesi tetapi tidak melakukan autentikasi. Defaultya 600 detik. Disarankan untuk mengeset ke 60 detik.
    -h [host-key] Dipergunakan untuk menentukan alternatif lain dari file host key. Defaulntya adalah /etc/ssh_host_key.
    -i Dipergunakan untuk menjalankan sshd dari inetd. Namun oleh pembuatnya disarankan untuk tidak dijalankan lewat inetd. Hal ini disebabkan karena sshd harus membuat key untuk tiap sesi, sehingga mempengaruhi kinerja daemon lain yang dijalankan lewat inetd.
    -k Dipergunakan untuk mengeset waktu, berapa lama sshd harus membuat (generating) kunci (session key) yang baru. Defaultnya adalah sekali dalam sejam. Jika diset 0 maka sshd tidak akan pernah membuat session key yang baru.
    -p [port] Dipergunakan untuk menentukan port alternatif bagi sshd. Defaultnya adalah port 22.
    -q Dipergunakan untuk mematikan logging (tidak melakukan pencatatan terhadap aktifitas sshd.
       

    Untuk klien, ssh mempergunakan file /etc/ssh_config. Secara default file tersebut berisi :
    # This is ssh client systemwide configuration file. This file provides 
    # default for users, and the values can be changed in per-user #configuration 
    # files or on yhe command line.

     

    # configuration data is parsed as follows: 
    # 1. Command line options 
    # 2. User- specificc file 
    # 3. Systemwide file 
    # Any configuration value is only change the first time it is set. 
    # Thus, host-specific definitistion should be at the beginning of the 
    # configuration file, and defaults at the the end.

     

    # Sitewide defaults for various options

     

    # Host * 
    #   ForwardAgent yes 
    #   ForwardX11 yes 
    #   RhostsAuthentication yes 
    #   RhostRSAAuthentication yes 
    #   RSAAuthentication yes 
    #   TISAuthentication no 
    #   PasswordAuthentication yes 
    #   FallBackToRsh yes 
    #   UserRSH no 
    #   BatchMode no 
    #   StrictHostKeyChecking no 
    #   IdentifyFile -/.ssh/identity 
    #   Port 22 
    #   Chiper idea 
    #   EscapeChar -

    Tabel berikut menjelaskan parameter yang dipergunakan dalam file ssh_config

    Table: Parameter ssh_config (untuk klien ssh)
    Pilihan Fungsi
    BatchMode [yes/no] Dipergunakan untuk meminta username dan kata kunci pada saat koneksi dimulai.
    Cipher [cipher] Dipergunakan untuk menentukan metode enkripsi. Pilihannya adalah idea, des, 3des (triple DES), blow-fish, arcfour, dan none.
    ClearA11Forwadings Dipergunakan untuk meminta agar ssh meneruskan untuk membaca beberapa file konfigurasi dalam satu sesi.
    Compression [yes/no] Dipergunakan untuk meminta ssh menggunakan kompresi selama sesi berjalan.
    Compressionlevel [0-9] Dipergunakan untuk menentukan level kompresi. Semakin kecil nomornya, kompresi semakin cepat, tapi kualitas lebih jelek. Paling besar adalah 9, memberikan kompresi dengan kualitas bagus, tapi memperlambat kinerja.
    ConnectAttempts [#] Dipergunakan untuk menentukan berapa kali ssh akan mencoba berkoneksi kembali saat sebuah sesi tidak berhasil di inisialisasikan.
    EscapeChar [charracter] Dpergunakan untuk menentukan karakater Escape.
    FallBackToRsh [yes/no] Dipergunakan untuk menentukan apakah ssh harus berpindah ke rsh jika koneksi ke ssh server tidak berhasil.
    ForwardAgent [yes/no] Dipergunakan untuk menentukan apakah koneksi dengan program autentikasi lain akan diteruskan atau tidak.
    ForwardX11 [yes/no] Dipergunakan untuk meneruskan sesi X11 secara otomatis.
    GetewayPorts [yes/no] Dipergunakan untuk menentukan apakah host remote dapat tersambung secara lokal lewat port yang meneruskannya.
    Hostname [hostname] Dipergunakan untuk menentukan nama host yang login secara default.
    Identityfile [file] Dipergunakan untuk menetukan file alternatif identitas RSA. Defaultnya adalah .ssh/identity.
    KeepAlive [yes/no] Dipergunakan untuk menentukan apakah klien ssh mengirimkan pesan secara terus menerus kepada server remote.
    KerberosAuthentication Dipergunakan untuk menentukan ssh memakai autentikasi Kerberos 5.
    KerberosTgtPassing Dipergunakan untuk menentukan ssh memakai Kerberos ticket passing.
    LocalForwading Port host:port Dipergunakan untuk menentukan ssh meneruskan port lokal kepada host remote.
    PasswordAuthentication [yes/no] Dipergunakan untuk menentukan ssh memakai autentikasi basis password.
    PasswordPromptHost [yes/no] Dipergunakan untuk menentukan apakah host remote diperlihatkan dalam prompt login.
    PasswordLogin [yes/no] Dipergunakan untuk menentukan ssh memperlihatkan host remote pada saat autentikasi.
    Port [port] Dipergukan untuk menentukan port alternatif.
    RhostsAuthentication Dipergunakan untuk menentukan apakah autentikasi rhost dapat dipergunakan. Jangan dipergunakan tanpa alasan yang kuat, sebab rhost kurang aman.
    RhostsRSAAuthentication Dipergunakan untuk menentukan ssh memakai autentikasi rhost dan RSA pada saat koneksi dimulai.
    SrictHostKeyChecking Dipergunakan untuk menentukan apakah ssh menambahkan secara otomatis host key baru ke host file. Pilihannya adalah yes, no, dan ask.
       

    Klien windows dapat memmanfaatkan SSH dengan mempergunakan program telnet Tera Term Pro + TTSSH for Windows. Secara default Tera Term Pro tidak mendukung ssh, untuk itu perlu ditambahkan program TTSSH for Windows. Terra Term Pro dapat diperoleh di 
    http://hp.vector.co.jp/authors/VA002416/teraterm.html. Sedangkan TTSSH dapat diperoleh di
    http://www.zip.com.au/roca/ttssh.html.

    SSL (Secure Socket Layer)

    SSL merupakan salah satu metode enkripsi dalam komunikasi data yang dibuat oleh Netscape Communication Corporation. Sebagaimana yang dijelaskan dalam SSL Protocol Internet Draft (The SSL Protocol, Version 3.0 oleh ALAN O. FREIER dan PAUL C. KOCHER, dapat Anda buka di http://home.netscape.com/eng/ssl3/ssl-toc.html.

    SSL adalah Protokol berlapis. Dalam tiap lapisannya, sebuah data terdiri dari panjang, deskripsi dan isi. SSL mengambil data untuk dikirimkan, dipecahkan kedalam blok-blok yang teratur, kemudian dikompres jika perlu, menerapkan MAC, dienkripsi, dan hasilnya dikirimkan. Di tempat tujuan, data didekripsi, verifikasi, dekompres, dan disusun kembali. Hasilnya dikirimkan ke klien di atasnya. (terjemahan bebas).
    SSL hanya mengenkripsikan data yang dikirim lewat http. Bagaimana SSL berjalan dapat digambarkan sebagai berikut :
  • Pada saat koneksi mulai berjalan, klien dan server membuat dan mempertukarkan kunci rahasia, yang dipergunakan untuk mengenkripsi data yang akan dikomunikasikan. Meskipun sesi antara klien dan server diintip pihak lain, namun data yang terlihat sulit untuk dibaca karena sudah dienkripsi.
  • SSL mendukung kriptografi public key, sehingga server dapat melakukan autentikasi dengan metode yang sudah dikenal umum seperti RSA dan Digital Signature Standard (DSS).
  • SSL dapat melakukan verifikasi integritas sesi yang sedang berjalan dengan menggunakan algoritma digest seperti MD5 dan SHA. Hal ini menghindarkan pembajakan suatu sesi.
Lebih lanjut artikel yang saya sarankan untuk dibaca untuk mengetahui lebih dalam tentang SSL (semuanya berbahasa Inggris) :
  1. Analysis of the SSL 3.0Protocol,DAVID WAGNER dan BRUCE SCHENEIDER
    http://www.counterpane.com/ssl.html
  2. Introducing SSL and Certificates, menjelaskan keuntungan sertifikasi SSL; 
    http://www.ultranet.com/fhirsch/Papers/cook/ssl_intro.html
  3. Securing Communications on the Intranet and Over the Internet, TAHEL ELGAMAL, JEFF TREUHAFT, danFRANK CHEN, Netscape Communications Corporation; 
    http://www.go-digital.net/whitepapers/securecomm.html
  4. The Secure Socket Layer Protocol and Applications, ALLAN SCHIFFMAN, Terisa Systems,Inc; 
    http://www.terisa.com:80/presentations/ams/ssl/index.htm
     

    SSL dengan Apache

    Menambahkan SSL kedalam apache membutuhkan prosedur yang cukup rumit. Sebelum Anda memulainya, pastikan bahwa Anda benar-benar membutuhkan. SSL biasa dipakai untuk aplikasi e-commerce untuk verifikasi keabsahan kartu kredit atau untuk formulir yang berisi data penting. Jika memang Anda belum berencana untuk menggunakannya, lewati saja bagian ini, dan coba nanti jika Anda menginginkanya.
    Program yang dibutuhkan :
  5. Apache 1.2.6 atau lebih
  6. SSLeay ; ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL/SSLeay-0.8.1b.tar.gz
  7. Patch SSL untuk Apache; ftp://ftp.ox/ac/uk/pub/crypto/SSL/Apache-SSL/, sebagai contoh
    apache_1_2_6+ssl_1_17.tar.gz
Catatan:

Jika Apache sudah terinstall dalam komputer Anda, maka perlu dijalankan instalasi ulang, agar patch SSL bisa dimasukkan.
Proses pertama, ekstrak dan instal program SSLeay $ cp SSLeay-0.8.1b.tar.gz /usr/src

$ cd /usr/src

$ tar -zxvf SSLeay-0.8.1b.tar.gz

$ cd /SSLeay-0.8.1b

$ perl ./Configure linux-elf


Catatan:

Configure Linux-elf hanya berjalan hanya untuk mesin Linux. Untuk mengetahui pilihan-pilihan configure-nya jalankan perintah # perl ./Configure
$ make
$ make rehash

$ make install

Proses selanjutnya adalah ekstrak dan instal Patch SSL untuk Apache ke dalam direktori sumber Apache.
# cp apache_1_2_6+SSL_1_17.tar.gz /usr/src/apache-1.2.6

# cd /usr/src/apache-1.2.6

# tar -zxvf apache_1_2_6+SSL.tar.gz

Yang akan diekstrak adalah :

  • ben.pgp.key.asc- Kunci PGP dari penyusun program
  • EXTRAS.SSL - dokumentasi tambahan fitur
  • LICENSE.SSL - Lisensi Apache SSL
  • Md5sums - MD5 checksums untuk file-file yang diekstrak
  • Md5sums.asc - tandatangan md5sums dari penyusun program
  • README.SSL - dokumentasi pengenalan singkat
  • SECURITY- Artikel tentang keamanan dari sistem SSL
  • Src/apache_ssl.c - Modul tambahan untuk Apache
  • SSLconf/conf/access.conf - file konfigurasi akses untuk apache yang masih kosong
  • SSLconf/conf/httpd.conf - Contoh file httpd.conf (file konfigurasi untuk Apache)
  • SSLconf/conf/mime.types - contoh file konfigurasi mime.types
  • SSLpatch- File patch yang akan dipergunakan.
Setelah file diekstrak, jalankan patch SSL # patch -p1 < SSLpatch
Lalu pindah ke/usr/src/apache-1.2.6/src, kopikan fileConfiguration.tmpl menjadiconfiguration. Edit file configuration, dan ganti variabel SSL_BASE untuk menunjuk ke direktori SSLeay yang sebelumnya telah diinstall.
# cp Configuration.tmpl /usr/src/apache-1.2.6/src

# cd /usr/src/apache-1.2.6/src

# pico Configuration.tmpl

Ganti baris # SSL_BASE= /u/ben/cork/scuzzy-ssleay6 menjadi
SSL_BASE=/usr/src/SSLeay-0.8.1b

TekanCtrl-Xuntuk menyimpan, dan jalankan program make untuk apache.
# make
Pastikan bahwa prosedur yang dijalankan telah berjalan dengan benar. Cek apakah make telah membuat file httpsd. Jika ada, maka semuanya berjalan dengan baik.
Setelah itu, edit file sertifikasi SSL yang terletak di /usr/local/ssl/lib. Nama filenya ssleay.cnf. Sesuaikan isiannya dengan kebutuhan Anda, dan jalankan make certificate.
# make certificate
Proses ini akan menghasilkan file httpsd.pem yang terletak di /usr/src/apache_1.2.6/SSLconf/conf.
Selanjutnya, sebelum Apache dijalankan, Anda perlu cek terlebih dahulu file konfigurasi httpsd (sebagaimana file konfigurasi Apache yang telah dibahas sebelumnya, yakni httpd.conf, access.conf dan srm.conf). Cek parameter-paremeter yang berkaitan dengan SSL, seperti contoh berikut :
SSLCACertificatePath /var/httpd/conf

SSLCACertificateFile /var/httpd/conf/httpsd.pem

SSLCertificateFile /var/httpd/conf/httpsd.pem

SSLLogFile /var/httpd/logs/ssl.log

SSLCacheServerPort 8080

SSLCacheServerPath /usr/src/SSLeay-0.8.1b

SSLSessionCacheTimeout 10000

Untuk menjalankan Servernya dengan menunjuk file konfigurasi yang telah dibuat, cukup jalankan perintah :
# httpsd -f  /var/httpd/conf/httpd.conf

Logging

Linux memiliki fasilitas logging yang sangat komprehensif. Untuk yang baru saja bermigrasi ke Linux, mungkin belum terbiasa memanfaatkan logging. Pada sistem operasi non UNIX, kebanyakan meminimalkan logging, bahkan tidak ada sama sekali.
Logging adalah prosedur di mana sebuah sistem operasi atau aplikasi merekam setiap kejadian dan menyimpan rekaman tersebut untuk dapat dianalisa di kemudian hari. Kejadian yang direkam ini bisa saja menyangkut sistem operasi, atau khusus program-program tertentu saja.
Semua file log di Linux disimpan dalam direktori /var/log. Beberapa program/file log yang penting adalah :

lastlog

Berisi rekaman kapan user login terakhir kali. Yang ditampilkan adalah nama login, port dan waktu login terakhir kali. Untuk memanggilnya cukup ketikkan lastlog, dan berikut contoh outputnya.
# lastlog

Username         Port     From             Latest

root             tty1                      Tue Jul  3 18:55:24 +0700 2000

bin                                        **Never logged in**

daemon                                     **Never logged in**

adm                                        **Never logged in**

lp                                         **Never logged in**

sync                                       **Never logged in**

shutdown                                   **Never logged in**

halt                                       **Never logged in**

mail                                       **Never logged in**

alias                                      **Never logged in**

qmaild                                     **Never logged in**

qmaill                                     **Never logged in**

qmailp                                     **Never logged in**

qmailq                                     **Never logged in**

qmailr                                     **Never logged in**

qmails                                     **Never logged in**

xfs                                        **Never logged in**

postfix                                    **Never logged in**

sofyan                                     **Never logged in**

mysql                                      **Never logged in**

spawn            tty1                      Tue Jul  3 18:56:10 +0700 2000

last

Berisi rekaman user yang pernah login dengan mencarinya pada file /var/log/wtmp, sejak file tersebut dibuat.
# last

spawn    pts/0                         Tue Jul  3 18:57   still logged in  

spawn    tty1                          Tue Jul  3 18:56   still logged in  

root     tty1                          Tue Jul  3 18:55 - 18:56  (00:00)   

spawn    pts/0                         Tue Jul  3 18:08 - 18:57  (00:48)   

spawn    :0                            Tue Jul  3 18:07 - 18:55  (00:47)   

reboot   system boot  2.2.12           Tue Jul  3 18:07          (01:55)   

spawn    pts/0                         Tue Jul  3 09:31 - down   (04:18)   

spawn    :0                            Tue Jul  3 09:30 - 13:49  (04:18)   

spawn    pts/0                         Tue Jul  3 08:37 - 09:31  (00:54)   

spawn    :0                            Tue Jul  3 08:36 - 09:30  (00:54)   

spawn    pts/0                         Mon Jul  2 21:42 - 08:37  (10:54)   

spawn    :0                            Mon Jul  2 21:42 - 03:19  (05:37)   

reboot   system boot  2.2.12           Mon Jul  2 21:41          (16:08)   

spawn    pts/0                         Mon Jul  2 21:38 - down   (00:01)   

spawn    :0                            Mon Jul  2 21:38 - down   (00:01)   

root     tty1                          Mon Jul  2 21:30 - down   (00:09)   

reboot   system boot  2.2.12           Mon Jul  2 21:30          (00:09)   

root     tty1                          Mon Jul  2 21:26 - down   (00:02)   

reboot   system boot  2.2.12           Mon Jul  2 21:24          (00:04)   

root     tty1                          Mon Jul  2 21:03 - down   (00:06)   

reboot   system boot  2.2.12           Sun Jul  1 22:14          (10:38)   

spawn    pts/0                         Sun Jul  1 14:31 - down   (02:52)   

spawn    :0                            Sun Jul  1 14:31 - 17:24  (02:52)   

reboot   system boot  2.2.12           Sun Jul  1 14:30          (02:54)   

spawn    pts/0                         Sun Jul  1 12:04 - down   (00:02)   

spawn    :0                            Sun Jul  1 12:03 - 12:06  (00:02)   

reboot   system boot  2.2.12           Sun Jul  1 12:02          (00:03)   

 

wtmp begins Sun Jul  1 11:59:03 2000

xferlog

Mencatat semua informasi yang pernah login di ftp daemon. Data yang ditampilkan berupa waktu saat ini, durasi transfer file, host yang mengakses (baik nomor IP maupun nama host), jumlah file yang ditransfer, nama file, tipe transfer (Binary atau ASCII), perintah khusus yang diberikan (jika file dikompres atau tar), arah transfer (incoming, outgoing), modus akses (anonymous, guest, atau user resmi), nama user, layanan, metode otentikasi, dan user ID.
# less /var/log/xferlog

access_log

Berisi rekaman untuk layanan http (HyperText Transfer Protocol) atau layanan web server. Access_log biasanya terdiri dari Nomor IP dari pengakses, jam dan tanggal akses, printah atau permintaan, dan kode status.
# less /var/log/ access_log

error_log

Berisi rekaman pesan kesalahan atas service http atau web server. Error_log terdiri dari jam dan waktu, tipe kesalahan, alasan kesalahan, layanan, dan perintah yang dijalankan berikutnya (kadang-kadang).
# less /var/log/error_log

messages

Rekaman kejadian sistem dan kernel, ditangani oleh dua daemon;

  • syslogd merekam semua program yang dijalankan. Untuk mengkonfigurasikannya dapat mempergunakan syslog.conf.
  • klogd, menerima dan merekam pesan kernel
File messages dapat dilihat di /var/log/messages. Berikut contohnya : # less /var/log/messages

Deteksi Penyusupan (Intrusion Detection)

Deteksi penyusupan adalah aktivitas untuk mendeteksi penyusupan secara cepat dengan menggunakan program khusus yang otomatis. Program yang dipergunakan biasanya disebut sebagai Intrusion Detection System (IDS).
Tipe dasar dari IDS adalah:

  • Rule-based systems - berdasarkan atas database dari tanda penyusupan atau serangan yang telah dikenal. Jika IDS mencatat lalulintas yang sesuai dengan database yang ada, maka langsung dikategorikan sebagai penyusupan.
  • Adaptive systems - mempergunakan metode yang lebih canggih. Tidak hanya berdasarkan database yang ada, tapi juga membuka kemungkinan untuk mendeteksi terhadap bentuk bentuk penyusupan yang baru.
Bentuk yang sering dipergunakan untuk komputer secara umum adalah rule-based systems. Pendekatan yang dipergunakan dalam rule-based systems ada dua, yakni pendekatan pencegahan (preemptory) dan pendekatan reaksi (reactionary). Perbedaannya hanya masalah waktu saja. Pendekatan pencegahan, program pendeteksi penyusupan akan memperhatikan semua lalu lintas jaringan. Jika ditemukan paket yang mencurigakan, maka program akan melakukan tindakan yang perlu. Pendekatan reaksi, program pendeteksi penyusupan hanya mengamati file log. Jika ditemukan paket yang mencurigakan, program juga akan melakukan tindakan yang perlu.
Beberapa contoh program IDS di antaranya:

  1. chkwtmp Program yang melakukan pengecekan terhadap entri kosong. Dalam arti, wtmp mencatat sesuatu tapi isinya kosong. Program ini dapat diperoleh di 
    http://sunsite.ics.forth/gr/pub/systools/chkwtmp/chkwtmp-1.0.tar.gz.
  2. tcplogd Program yang mendeteksi stealth scan. Stealth scan adalah scaning yang dilakukan tanpa harus membuat sebuah sesi tcp. Sebuah koneksi tcp dapat terbentuk jika klien mengirimkan paket, dan server mengirimkan kembali paketnya dengan urutan tertentu, secara terus menerus sehingga sesi tcp dapat berjalan. Stealth scan memutuskan koneksi tcp sebelum klien menerima kembali jawaban dari server. Scaning model ini biasanya tidak terdeteksi oleh log umum di Linux. Tcplogd dapat diperoleh di http://www.kalug.net/tcplogd.
  3. hostsentry Program yang mendeteksi login anomali. Anomali disini termasuk perilaku aneh (bizzare behaviour), anomali waktu (time anomalies), dan anomali lokal (locale anomalies). Versi beta dari program ini dapat diperoleh di http://www.psionic.com/abacus/hostsentry.