Senin, 22 Desember 2008

Menampilkan pesan syslog secara real time tanpa tail

By Henry Saptono

Kebanyakan distro linux dikonfigurasi secara default untuk mendukung 6 virtual console(VC). VC dapat diakses dengan menggunakan kombinasi tombol CTRL-ALT F1 - F12. Dimana F1 sampai F12 merepresentasikan jumlah VC.

Pada prakteknya sejumlah VC tidak pernah digunakan untuk mengakses sistem linux, melainkan mungkin melalui sebuah VC saja. VC direpresentasikan pada sistem linux sebagai file device /dev/tty (/dev/tty0 ... /dev/tttN, dimana N adalah bilangan integer).

Virtual Console (VC) dapat kita manfaatkan bukan sekedar sebagai channel user untuk mengakses sistem linux. Namun dapat juga kita manfaatkan untuk menampilkan pesan-pesan log dari berbagai service yang ditangani oleh syslog. Sehingga harapannya kita menampilkan pesan-pesan log tersebut secara real time dan tidak perlu menggunakan tool tail untuk menampilkannya secara real time. Berikut ini bebarapa langkah agar pesan-pesan log ditampilkan ke suatu virtual console(VC):


1. Tambahkan suatu entri berikut ini kedalam file /etc/syslog.conf, untuk mengarahkan syslogd mengirimkan pesan-pesan log dari berbagai service ke suatu virtual console dari pada ke file log.
# vi /etc/syslog.conf
###*.* /var/log/messages
*.* /dev/tty6


2. Kemudian syslogd di restart. sbb:
# service syslog restart

Dan terakhir cobalah Anda akses beberapa aplikasi server (yang mensupport syslog), kemudian coba Anda akses Virtual Consoole (CTRL-ALT-F6), Anda akan melihat pesan-pesan log yang tampil real time.

Rabu, 10 Desember 2008

Penerapan Otorisasi user pada squid via ldap group

By Henry Saptono

Jika Anda ingin menggunakan squid sebagai proxy server pada jaringan Anda, maka tidaklah sulit untuk menerapkan otorisasi user yakni pembatasan akses internet berdasarkan group. Squid banyak mendukung beberapa schema otentikasi dan otorisasi dengan backend database yang beragam diantaranya menggunakan ncsa, pam, ldap, samba dan lain-lain. Umumnya squid yang disertakan oleh berbagai distro sudah dilengkapi dengan berbagai modul otentikasi (authentication helper program) seperti ncsa_auth, pam_auth, smb_auth, squid_ldap_auth dan modul-modul otorisasi (authorization helper program) seperti squid_unix_group, dan squid_ldap_group.

Pada tulisan kali ini penulis akan menjelaskan bagaimana menerapkan otorisasi user pada squid melalui ldap group. Helper program yang digunakan adalah squid_ldap_auth dan squid_ldap_group. Pada tulisan ini penulis tidak akan menjelaskan secara detil tentang ldap. Penulis menggunakan openldap dan squid bawaan distro linux CentOS 5 yang diasumsikan sudah terinstal.

I. Skenario
Untuk mempermudah penjelasan maka penulis membuat skenario sebagai berikut:
- Komputer yang berperan sebagai proxy server dan ldap server adalah komputer gateway
- Komputer proxy/gateway memiliki dua interface network yaitu eth0 dan eth1, eth0 terhubung langsung dengan modem ADSL, dan eth1 terhubung ke jaringan lokal dengan ip 192.168.1.1 (gambar 1)
- Agar tidak ada user yang dapat mengakses internet(http) secara langsung maka pada gateway diterapkan kebijkan firewall yang memblok semua akses http (port 80) secara langsung dari LAN ke internet. Hal ini dimaksudkan agar user harus mengatur “connection setting” pada web client dengan setingan “manually use proxy”. Pada web client proxy diset ke IP 192.168.1.1 dan port 3128 (gambar 2).
- Skenario otentikasi, proxy hanya mengijinkan akses internet, dengan ketentuan harus login terlebih dahulu menggunakan user account yang terdaftar di ldap (openldap)
- Skenario group, group pada ldap terdiri dari group vip dan internet
- Skenario otorisasi, proxy memblok koneksi atau akses ke website dengan nama domain “youtube.com” dan “keepvid.com” jika yang mengakses adalah user yang tergabung dalam group internet tetapi untuk user yang tergabung dalam group vip bebas mengakses.




Gambar 1. Skema jaringan



Gambar 2. Connection setting pada web client

II. Konfigurasi Gateway
Langkah pertama adalah setup komputer sebagai gateway, sebagai berikut:
Enbale IP Forwarding
# echo 1 > /proc/sys/net/ipv4/ip_forward
Enable IP Masquerade
Diasumsikan default policy firewall pada komputer gateway adalah ACCEPT, dan tidak ada rule spesifik apapun sebelumnya.
# service iptables stop
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

Rule iptables untuk memblok akses http dari LAN
# iptables -A INPUT -p tcp -s 192.168.1.0/24 –dport 80 -j REJECT
# iptables -A FORWARD -p tcp -s 192.168.1.0/24 –dport 80 -j REJECT

Simpan rule firewall dan pastikan agar firewall diaktifkan saat boot dengan perintah berikut ini:
# service iptables save
# chkconfig iptables on


III. Konfigurasi ldap server
Langkah selanjutnya mengkonfigurasi ldap service.
Langkah pertama mengedit file konfigurasi ldap server yaitu file /etc/openldap/slapd.conf. Ada beberapa parameter yang perlu ditentukan nilainya agar sesuai dengan skenario kita diantaranya sebagai berikut:
database bdb
suffix "dc=myldap,dc=com"
rootdn "cn=admin,dc=myldap,dc=com"
rootpw rahasia

Langkah berikutnya mengaktifkan service ldap dan memastikan agar ldap diaktifkan saat boot.
# service ldap start
# chkconfig ldap on

Berikutnya menambahkan entri data ke ldap. Untuk itu Anda buat dahulu file ldif (nama file: data.ldif) yang berisi entri seperti berikut:
dn: dc=myldap,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
dc: myldap
o: PT Myldap Perkasa Utama

dn: ou=groups,dc=myldap,dc=com
ou: groups
objectClass: organizationalUnit
objectClass: top

dn: cn=vip,ou=groups,dc=myldap,dc=com
cn: vip
gidNumber: 1000
memberUid: henry
objectClass: posixGroup
objectClass: top

dn: cn=internet,ou=groups,dc=myldap,dc=com
cn: internet
gidNumber: 1001
memberUid: akhtar
objectClass: posixGroup
objectClass: top

dn: ou=users,dc=myldap,dc=com
ou: users
objectClass: organizationalUnit
objectClass: top

dn: cn=henry,ou=users,dc=myldap,dc=com
objectClass: inetOrgPerson
cn: henry
sn: Henry Saptono
homePhone: 62-21-68253395
mail: henry@myldap.com
uid: henry
userPassword:: e01ENX1BbjVCZ0w3dHNwZEVRVHArcHJoS1FnPT0=

dn: cn=akhtar,ou=users,dc=myldap,dc=com
objectClass: inetOrgPerson
cn: akhtar
sn: Akhtar Naufal Shagufta
homePhone: 62-21-8953124
mail: akhtar@myldap.com
uid: akhtar
userPassword:: e01ENX1XVStBT3pnS1FUbHUxajNLT1ZBMVFnPT0=


Selanjutnya file data.ldif yang sudah dibuat Anda tambahkan(entri) kedalam database direktori ldap dengan cara berikut:
#ldapadd -x -D "cn=admin,dc=myldap,dc=com" -f data.ldif -W

IV. Konfigurasi squid
Langkah selanjutnya adalah konfigurasi squid, secara default konfigurasi squid akan memblok semua koneksi dari jaringan LAN ke internet. Untuk itu kita harus melakukan konfigurasi ulang dengan mengedit file /etc/squid/squid.conf. Beberapa direktif yang perlu Anda setup diantaranya adalah:
visible_hostname : direktif ini mendefinisikan nama komputer proxy server Anda , nilai default parameter ini tidak diset. Parameter ini dapat diisi dengan nama komputer yang dilengkapi dengan nama domain. Misalnya:
visible_hostname proxy.mydomain.com
http_port: direktif ini menunjukkan nomor port service squid. Nilai defaultnya adalah 3128.
http_port 3128
auth_param: direktif ini digunakan untuk mendefinisikan parameter-parameter untuk berbagai schema otentikasi yang didukung oleh squid, beberapa schema otentikasi yang secara default didukung oleh squid diantaranya dapat Anda ketahui dengan melihat isi direktori /usr/lib/squid. Dalam skenario ini penulis menggunakan schema otentikasi menggunakan ldap, untuk itu modul yang digunakan adalah squid_ldap_auth , dan konfigurasi parameter-parameter squid_ldap_auth yang harus Anda tulis adalah sebagai berikut:
auth_param basic program /usr/lib/squid/squid_ldap_auth -b dc=myldap,dc=com -f "cn=%s" -s sub -h localhost
# auth_param diatas harus ditulis dalam single line
auth_param basic credentialsttl 2 hours
auth_param digest children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic casesensitive off

external_acl_type: direktif ini menentukan helper program apa yang digunakan oleh external acl. Sesuai skenario, kita menggunakan helper program squid_ldap_group, sehingga konfigurasinya seperti berikut ini (ditulis dalam single line):
external_acl_type ldap_group %LOGIN /usr/lib/squid/squid_ldap_group -b dc=myldap,dc=com -f "(&(cn=%a)(memberUid=%v)(objectClass=posixGroup))" -s sub -h localhost
acl: direktif ini digunakan untuk mendefinisikan access control list format penulisannya sebagai berikut:
acl nama-acl tipe-acl string-pattern ....
acl nama-acl tipe-acl "file" ....

Agar sesuai dengan skenario maka, Anda harus mendefinisikan beberapa acl , sebaiknya pendefinisian acl ini Anda tulis pada file konfigurasi squid yaitu dibawah baris yang bertuliskan “#INSERT YOUR OWN RULE ...”, seperti berikut ini:
acl haruslogin proxy_auth REQUIRED
acl groupVip external ldap_group vip
acl groupInternet external ldap_group internet
acl vipweb dstdomain .youtube.com .keepvid.com

http_access: direktif ini menunjukkan rule yang akan diterapkan pada suatu access control list. Sesuai skenario, kita harus mendefinisikan rule, tulislah rule tersebut dibagian bawah atau setelah seluruh pendefinisian acl seperti berikut ini:
http_access allow groupVip haruslogin
http_access deny vipweb
http_access allow groupInternet haruslogin

Setelah konfigurasi squid Anda lakukan cobalah Anda aktifkan service squid dan pastikan service squid diaktifkan saat boot dengan cara berikut ini:
# service squid start
# chkconfig squid on

Selamat mencoba.

Kamis, 04 Desember 2008

MEMBUAT SENDIRI LOCAL REPOSITORY untuk BASE paket Fedora

By Henry Saptono


Apakah itu YUM ?
------------------
Tools untuk manajemen software (Add, Remove dan Update software) di linux tergantung dari jenis paket
yang akan diinstall, umumnya pengguna linux menggunakan jenis paket binary RPM , maklumlah kebanyakan
distribusi linux menganut paket manajemen RPM (Redhat Package Manager) apalagi memang pengguna linux
lebih banyak mengenal distribusi RedHat dan Turunannya. Tool rpm digunakan untuk melakukan aktifitas
Add, Remove dan Update software RPM. Contoh jika Anda akan menginstal software maka perintah yang Anda
gunakan adalah sbb:
# rpm -ivh nama-software-versi.arch.rpm

Untuk menguninstal :
# rpm -e nama-software

Untuk mengupgrade:
# rpm -Uvh nama-software-versi.arch.rpm

catatan:
arch artinya arsitektur processor misal i386, i586, x86_64 dan lain-lain

Ada satu yang merepotkan dalam melakukan instalasi software binary rpm ketika menggunakan tool rpm,
yaitu ketika suatu software yang akan kita install ternyata membutuhkan beberapa atau banyak software
lainnya yang terlebih dulu harus diinstall , dalam bahasa kerennya ini adalah masalah "Dependency program".
nah jika Anda memaksakan tetap menggunakan tool rpm saja maka akan memakan waktu dan repot.
Untuk masalah dan kondisi seperti ini maka disediakanlah tool manajemen paket yang lebih advance yang
disebut dengan "yum".

# man yum
yum(8) yum(8)

NAME
yum - Yellowdog Updater Modified

SYNOPSIS
yum [options] [command] [package ...]

DESCRIPTION
yum is an interactive, automated update program which can be used
for maintaining systems
using rpm

command is one of:
* install package1 [package2] [...]
* update [package1] [package2] [...]
* check-update
* upgrade [package1] [package2] [...]
* remove | erase package1 [package2] [...]
* list [...]
* info [...]
* provides | whatprovides feature1 [feature2] [...]
* clean [ packages | headers | metadata | cache | dbcache | all ]
* makecache
* groupinstall group1 [group2] [...]
* groupupdate group1 [group2] [...]
* grouplist [hidden]
* groupremove group1 [group2] [...]
* groupinfo group1 [...]
* search string1 [string2] [...]
* shell [filename]
* resolvedep dep1 [dep2] [...]
* localinstall rpmfile1 [rpmfile2] [...]
* localupdate rpmfile1 [rpmfile2] [...]
* deplist package1 [package2] [...]

...........................................................................................

Bagaimana cara menginstall program/software menggunakan YUM ?
-------------------------------------------------------------------------

Sebagaimana terlihat dalam "man yum" , jika Anda akan menginstall suatu
software/program maka Anda dapat menjalankan perintah sbb:

# yum install heartbeat

Perintah tersebut akan menginstall paket software dengan nama software
heartbeat. Dan proses yang terjadi adalah yum akan melookup kedalam file
konfigurasi daftar server-server repositori paket-paket binary RPM. yang
umumnya file tersebut berlokasi di direktori /etc/yum.repos.d/, bisa jadi
didalam direktori tersebut terdapat banyak file yang mencerminkan daftar
repositori. Dan selanjutnya tool yum akan mengecek satu-perstau daftar paket
yang tersedia pada masing-masing repository yang aktif (enable=1). Tool yum
akan mengupdate database rpm pd local mesin dengan membaca database daftar paket pada
repository (dalam direktori "repodata"). Selanjutnya jika paket yang akan
diinstall terdapat pada repository maka software akan didownloade kemudian
diinstall.


Bagaimana cara menghapus/menguninstal program/software menggunakan YUM ?
-----------------------------------------------------------------------------------
Sebagaimana terlihat dalam "man yum" , jika Anda akan menguninstall suatu
software/program maka Anda dapat menjalankan perintah sbb:

# yum remove heartbeat


Lalu bagiamanakah membuat Yum Repositori sendiri ?
-------------------------------------------------------------------

Tentunya tool yum ini memang didesain untuk manajemen software
yang fleksibel karena lokasi (repository) sumber software bisa
disebuah komputer dalam jaringan (bahakan di Internet). Dan tentunya
akan lebih cepat proses instal software jika repositorynya adalah
komputer kita sendiri atau komputer dalam jaringan lokal kita sendiri.
Berikut ini langkah-langkah membuat repository paket BASE rpm linux Fedora
Core 4.

Skenario 1: Local repository pada PC sendiri
------------------------------------------------------------
- Buatlah direktori khusus untuk meletakkan paket-paket rpm base fedora
core 4 Anda, sbb:

# mkdir /opt/repo

- Masukkan CD ke-1 Fedora core 4 kedalam CDROM Drive pada PC Anda kemudian Copy seluruh
isi CD ke-1 Fedora Core 4 Anda kedalam direktori /opt/repo/

# cp -rf /media/cdrom/* /opt/repo/

- Lanjutkan seterusnya untuk CD ke-2, ke-3, dan ke-4.

- Jika pada sistem linux Anda belum terinstal tool "createrepo" maka
sebaiknya segera Anda install.

- Selanjutnya membuat "repodata" yang berisi file database paket rpm berupa
file xml,untuk itu lakukan perintah berikut ini:

# createrpo /opt/repo/

-Hasil dari perintah "createrepo akan membuatkan direktori "repodata"
didalam direktori /opt/repo/ , coba Anda buktikan dengan melihat kedalam
direktori /opt/repo/

-Nah sampai disini berarti kita sudah berhasil membuat repository paket RPM
fedora core 4 sendiri.


Lalu agar setiap kali ketika menginstal atau mengupgrade BASE paket/software
Fedora core 4 dengan menggunakan tool yum selalu mengakses/lookup ke repositori lokal
yang telah kita buat sendiri maka, Anda harus mengedit atau membuat file konfigurasi repository
sendiri ke dalam direktori /etc/yum.repos.d, Sebaiknya Anda cukup mengedit
file /etc/yum.repos.d/fedora.repo ,lalu rubahlah menjadi sbb:

-----------------------------------------------------------------------------------------------
[base]
name=Fedora Core $releasever - $basearch - Base
baseurl=file:///opt/repo/
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever/$basearch/os/
#mirrorlist=http://fedora.redhat.com/download/mirrors/fedora-core-$releasever
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
------------------------------------------------------------------------------------------------

Trik:
-----
Secara default konfigurasi repository yum menyertakan banyak daftar server repository
untuk berbagai section/kategori paket software seperti paket base, extra,
extra-development, update dan-lain-lain.
nah meskipun untuk paket Base nya Anda sudah menggunakan local repository
namun untuk paket-paket kategori extra, dan lain-lain masih mengakses/lookup
ke server-server repository fedora di internet. Nah jika Anda tidak terhubung
dengan jaringan internet maka ketika Anda menginstall software yang ada dalam
BASE paket di lokal repository maka yum tetap mencoba berulang-ulang untuk
melookup juga ke server-server repository di internet , ini akan menggangu
proses instalasi karena menjadi lama, untuk itu Anda dapat mengedit seluruh
file (kecuali file "fedora.repo") yang terdapat dalam direktori /etc/yum.repos.d/
dan mengedit parameter "enable=1" menjadi "enable=0" , yang tujuan agar yum
tidak menggunakan atau melookup repository lain kecuali ke local repository.


Skenario 2: Local repository pada PC Anda dapat diakses dari jaringan
----------------------------------------------------------------------------------

Jika Anda juga ingin menjadikan local repository Anda dapat diakses/lookup
oleh komputer Linux Fedora 4 lainnya dalam jaringan maka Komputer Anda perlu
diinstall/diaktifkan service http, ataupu FTP. Jika menggunakan HTTP service
maka Anda harus install Apache web server lalu arahkan default DocumentRoot
ke Lokasi direktori repository fedora Anda yaitu ke /opt/repo. Kemudian pada
setiap komputer linux fedora lainnya dalam jaringan harus diedit file
konfigurasi repository nya, sebaiknya edit saja file /etc/yum.repos.d/fedora.repo ,
lalu rubahlah menjadi sbb:

-----------------------------------------------------------------------------------------------
[base]
name=Fedora Core $releasever - $basearch - Base
baseurl=http://192.168.1.1/
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever/$basearch/os/
#mirrorlist=http://fedora.redhat.com/download/mirrors/fedora-core-$releasever
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
------------------------------------------------------------------------------------------------

catatan:
IP server repository local diasumsikan 192.168.1.1
Jika Anda mau Anda dapat mendisable repository lainnya, (enable=0) seperti pd
bagaian "Trik" diatas.


selamat mencoba.

Otentikasi squid dengan openldap backend

By Henry Saptono

Anda dapat menerapkan pembatasan akses internet (akses http) pada jaringan Anda dengan berdasarkan user account. Jika Anda menggunakan squid sebagai proxy server pada jaringan Anda, maka tidaklah sulit untuk menerapkan otentikasi tersebut. Squid banyak mendukung beberapa schema otentikasi (authentication) dengan backend database yang beragam diantaranya menggunakan ncsa, pam, ldap, mysql, postgresql, samba dan lain-lain. Umumnya squid yang disertakan oleh berbagai distro dalam distribusinya sudah dilengkapi dengan berbagai modul otentikasi (authentication helper program)
seperti ncsa_auth, pam_auth, smb_auth, squid_ldap_auth, ntlm_auth dan lain-lain.

Kali ini penulis akan mencoba menjelaskan bagaimana menerapkan proses otentikasi pada squid dengan menggunakan salah satu modul otentikasi yang ada yaitu menggunakan modul squid_ldap_auth menggunakan backend database ldap. Pada tulisan ini penulis tidak akan menjelaskan secara detail tentang ldap. Penulis menggunakan openldap dan squid bawaan distro linux Fedora Core 6 yang diasumsikan sudah terinstal saat instalasi linux.

I. Skenario
Untuk mempermudah penjelasan maka penulis membuat skenario sebagai berikut:
Jaringan komputer Anda memiliki alamat 192.168.1.0/24 lihat gambar 1.
Komputer yang berperan sebagai proxy server dan ldap server adalah komputer gateway
Komputer proxy/gateway memiliki dua interface network yaitu eth0 dan eth1, eth0 terhubung langsung dengan modem ADSL, dan eth1 terhubung ke jaringan lokal dengan ip 192.168.1.1
Proxy server tidak menerapkan transparent proxy (otentikasi tidak dapat diterapkan dalam mode ini)
Agar tidak ada user yang dapat mengakses internet(http) secara langsung melalui proxy atau gateway maka pada komputer gateway diterapkan kebijkan firewall yang memblok semua akses http (port 80) secara langsung dari LAN ke internet. Hal ini dimaksudkan agar user mau tidak mau harus menyetel “connection setting” pada web client dengan setingan “manually use proxy”. Pada web client proxy harus disetel ke IP 192.168.1.1 dengan nomor port 3128, seperti tampak pada gambar 2.
Skenario filtering proxy hanya mengijinkan koneksi dari LAN (192.168.1.0/24) ke Internet, dengan ketentuan harus login terlebih dahulu menggunakan user account yang terdaftar di ldap .




Gambar 1. Skema jaringan




Gambar 2. Connection setting pada web client

II. Konfigurasi Gateway
Langkah konfigurasi pertama adalah setup komputer sebagai gateway, sebagai berikut:
Enbale IP Forwarding
# echo 1 > /proc/sys/net/ipv4/ip_forward

Enable IP Masquerade
Diasumsikan default policy firewall pada komputer gateway adalah ACCEPT, dan tidak ada rule spesifik apapun sebelumnya.
# service iptables stop
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE


Rule iptables untuk memblok akses http dari LAN
# iptables -A INPUT -p tcp -s 192.168.1.0/24 –dport 80 -j REJECT
# iptables -A FORWARD -p tcp -s 192.168.1.0/24 –dport 80 -j REJECT


Simpan rule firewall dan pastikan agar firewall diaktifkan saat boot dengan perintah berikut ini:
# service iptables save
# chkconfig iptables on


III. Konfigurasi ldap service
Langkah selanjutnya adalah mengkonfigurasi ldap service sebagai backend database user account.
Langkah pertama adalah mengedit file konfigurasi ldap server yaitu file /etc/openldap/slapd.conf. Ada beberapa parameter yang perlu ditentukan nilai-nilainya agar sesuai dengan keinginan kita diantaranya berikut ini:

# database menyatakan backend database yang digunakan
database bdb
# suffix menyatakan base distinguished name direktori ldap
suffix "dc=myldap,dc=com"
#rootdn menyatakan distinguished name user admin ldap server
rootdn "cn=admin,dc=myldap,dc=com"
#rootpw menyatakan password rootdn
rootpw rahasia

Langkah berikutnya mengaktifkan service ldap dan memastikan agar ldap diaktifkan saat boot.
# service ldap start
# chkconfig ldap on

Berikutnya menambahkan entri data ke ldap. Untuk itu Anda buat dahulu file ldif (nama file: data.ldif) yang berisi entri data seperti berikut ini:

#Entri Base dn
dn: dc=myldap, dc=com
objectclass: top
objectclass: dcObject
objectclass: organization
dc: myldap
o: PT Myldap Perkasa Utama
street: Jl LDAP, Depok-jawa Barat

#Entri sub/unit
dn: ou=People,dc=myldap,dc=com
objectclass: organizationalUnit
ou: People
description: Semua user ada di grup ini


#Entri user 1
dn: cn=akhtar,ou=People,dc=myldap,dc=com
objectclass: inetorgPerson
cn: akhtar
sn: Akhtar Naufal Shagufta
homePhone: 62-21-8953124
mobile: 08158984709
mail: akhtar@myldap.com
userPassword: {SSHA}I8YlQv2gvNJhWZXTLwQIfo/imQ8i+r+h

#Entri user 2
dn: cn=utari,ou=People,dc=myldap,dc=com
objectclass: inetorgPerson
cn: utari
sn: Pipiet Utari
homePhone: 62-21-68253395
mobile: 08161453263
mail: utari@myldap.com
userPassword: {SSHA}XYOxaUa/J7Jg01Tyrl66qACtFPk7P05B


Untuk nilai atribut userPassword, dapat Anda hasilkan/buat dengan bantuan tool slappasswd, seperti
contoh berikut ini:
# slappasswd
New password: ...isi dgn password yang ingin Anda buat...
Re-enter new password: ...isi dgn password yang ingin Anda buat...
{SSHA}XYOxaUa/J7Jg01Tyrl66qACtFPk7P05B


Selanjutnya file data.ldif yang sudah dibuat Anda tambahkan(entri) kedalam database direktori ldap dengan cara berikut:
#ldapadd -x -D "cn=admin,dc=myldap,dc=com" -f data.ldif -W

Sampai disini Anda telah berhasil menpopulasikan data kedalam database direktori ldap, dan untuk membuktikan bahwa saat ini ldap service telah berisi entri data sebagaimana yang terdapat dalam file data.ldif, coba Anda list seluruh entri tersebut dengan perintah berikut ini:
#ldapsearch -x -b "dc=myldap,dc=com"

IV. Konfigurasi squid HTTP Proxy
Langkah selanjutnya adalah konfigurasi squid, secara default konfigurasi squid akan memblok semua koneksi dari jaringan LAN ke internet. Untuk itu kita harus melakukan konfigurasi ulang dengan mengedit file /etc/squid/squid.conf. Beberapa parameter konfigurasi squid yang perlu Anda setup diantaranya sebagai berikut:
visible_hostname : direktif ini mendefinisikan nama komputer proxy server Anda , nilai default parameter ini tidak diset. Parameter ini dapat diisi dengan nama komputer yang dilengkapi dengan nama domain. Misalnya sebagai berikut:
visible_hostname proxy.mydomain.com
http_port: direktif ini menunjukkan nomor port service squid. Nilai defaultnya dalah 3128.
http_port 3128
auth_param: direktif ini digunakan untuk mendefinisikan parameter-parameter untuk berbagai schema otentikasi yang didukung oleh squid, beberapa schema otentikasi yang secara default didukung oleh squid diantaranya dapat Anda ketahui dengan melihat daftar modul otentikasi yang ada dalam direktori /usr/lib/squid. Dalam artikel ini penulis akan menggunakan schema otentikasi menggunakan ldap, untuk itu modul yang digunakan adalah squid_ldap_auth , dan konfigurasi parameter-parameter squid_ldap_auth yang harus Anda tulis kedalam file konfigurasi squid adalah sebagai berikut:

auth_param basic program /usr/lib/squid/squid_ldap_auth \
-b "ou=People,dc=myldap,dc=com" -s sub -u "cn" -h localhost
# tanda \ diatas menyatakan dua baris diatas seharusnya ditulis satu baris
# untuk mengetahui parameter-parameter dari squid_ldap_auth lihat man

auth_param basic credentialsttl 2 hours
auth_param digest children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic casesensitive off

acl: direktif ini digunakan untuk mendefinisikan access control list atau untuk filtering format penulisannya sebagai berikut:
acl nama-acl tipe-acl string-pattern ...
acl nama-acl tipe-acl "file" ...


Agar sesuai dengan skenario maka, Anda harus mendefinisikan beberapa acl , sebaiknya pendefinisian acl ini Anda tulis pada file konfigurasi squid yaitu dibawah baris yang bertuliskan “#INSERT YOUR OWN RULE HERE(S) ...”, seperti berikut ini:
acl lan src 192.168.1.0/24
acl haruslogin proxy_auth REQUIRED

http_access: direktif ini menunjukkan rule yang akan diterapkan pada suatu access control list. Agar sesuai dengan skenario kita maka Anda harus mendefinisikan rule, tulislah rule tersebut dibagian bawah atau setelah seluruh pendefinisian acl sehingga konfigurasi rule tampak sebagai berikut:
# baris berikut ini adalah daftar rule akses http yang menyatakan
# semua akses dari lan diijinkan jika user telah berhasil login
http_access allow lan haruslogin



Setelah konfigurasi squid Anda lakukan cobalah Anda aktifkan service squid dan pastikan service squid diaktifkan saat boot dengan cara berikut ini:
# service squid start
# chkconfig squid on

Silahkan Anda uji pengaksesan web.

Mengatur bandwidth download dengan squid (delay pool)

Mau memberikan jaminan download file dari internet yang “fair” ? coba gunakan fitur delay pool yang disediakan oleh squid (proxy server). Delay pool dapat Anda jadikan sebagai cara termudah bagi Anda dalam mengelola bandwidth internet pada kantor atau warnet Anda, meskipun hanya sebatas mengatur bandwidth download file via http atau ftp, ternyata delay pool dapat memberikan layanan jaringan yang lebih berkualitas bagi jaringan dikantor atau warnet Anda.

Layanan akses internet yang cukup populer adalah layanan akses web (http), bisa dikatakan saat ini hampir sebagian aplikasi berjalan dalam environment web, sehingga perlu perlakukan yang khusus untuk layanan web(http) ini. Penggunan internet di warnet umumnya mereka mengakses berbagai aplikasi dan layanan di internet melalui layanan http ini, mereka mendownload file melalui layanan http , sehingga bagi sebuah warnet pengaturan traffic download file lewat http ini sangat penting agar seluruh penggunan memperoleh kualitas jaringan yang baik dan terjamin. Tidak boleh ada seorang atau beberapa pengguna internet didalam jaringan Anda yang memakan bandwidth dengan 'rakus' dikarenakan dia mendownload suatu file atau menonton video di youtube dan lain-lain. Tentunya hal tersebut dapat Anda atur, salah satunya menerapkan web caching dengan proxy server seperti squid (http://www.squid-cache.org), dan jaminan kualitas download file yang adil dapat didukung dengan memanfaatkan fitur delay pool yang ada di squid.

Dalam tulisan kali ini penulis akan menjelaskan bagaimana membangun sebuah proxy server dengan squid untuk memberikan atau menyediakan web caching dan pengaturan bandwidth download file via http. Harapannya adalah terciptanya jaringan akses internet yang berkualitas dan terjamin bagi kantor atau warnet Anda. Dalam tulisan ini penulis menggunakan sistem operasi Linux distro CentOS 5, dan software squid yang digunakan adalah bawaan distro CentOS yaitu squid-2.6.STABLE6-3.el5. Diasumsikan sistem operasi linux CentOS sudah Anda install dan software squid sudah Anda install juga saat instalasi linux, namun jika squid belum terinstall maka Anda dapat lakukan instalasi dengan yum atau manual seperti berikut ini:

# ym install squid
atau
# rpm -ivh /media/cdrom/CentOS/squid-2.6.STABLE6-3.el5.i386.rpm


I. Skenario
Agar memudahkan penjelasan maka penulis membuat skenario jaringan LAN sebagai berikut:
Koneksi internet jaringan menggunakan ADSL dengan downlink 512kbps (512 kilo bit per second)
Komputer yang bertindak sebagai proxy server adalah komputer yang juga berperan sebagai gateway (internet sharing) pada jaringan LAN. Komputer ini memiliki dua buah network interface, yaitu eth0 dan eth1. Network interface eth0 terhubung dengan modem ADSL, sedangkan eth1 terhubung dengan hub atau switch LAN. Network Address LAN adalah 192.168.1.0/24.
Konfigurasi proxy yang akan diterapkan adalah transparent proxy, dengan skenario pengaturan bandwidth download file adalah setiap komputer dalam jaringan diatur agar bandwidth download via http sebesar sekitar 16KBps(16 kilo byte per second), dengan maximum bucket 64KBps.


II. Konfigurasi Internet sharing (gateway)
Langkah konfigurasi pertama adalah mengkonfigurasi komputer bakal proxy server sebagai internet sharing (gateway), yaitu sebagai berikut:
Enbale IP Forwarding
# echo 1 > /proc/sys/net/ipv4/ip_forward
atau edit file /etc/sysctl.conf, dan set parameter “net.ipv4.ip_forward=1”
Enable IP Masquerade
Diasumsikan default policy firewall Anda adalah ACCEPT, dan tidak ada rule spesifik apapun pada konfigurasi firewall di komputer proxy server sebelumnya.
# service iptables stop
# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE


Rule iptables untuk mendukung Transparent proxy
# iptables -t nat -A PREROUTING -p tcp -s 192.168.1.0/24 –dport 80 -j REDIRECT –to-ports 3128
# service iptables save
# chkconfig iptables on

Rule firewall tersebut akan menyebabkan setiap koneksi dari LAN dengan port tujuan 80 kemanapun akan di arahkan ulang sehingga menuju local process pada komputer gateway(proxy server) yaitu proses yang berjalan pada port 3128 (squid).


III. Konfigurasi squid standar

Langkah selanjutnya adalah konfigurasi squid, secara default konfigurasi squid akan memblok semua koneksi dari jaringan LAN ke internet. Untuk itu kita harus melakukan konfigurasi ulang dengan mengedit file /etc/squid/squid.conf. Beberapa parameter konfigurasi squid yang sebelumnya perlu Anda setup diantaranya adalah parameter berikut ini:
visible_hostname : parameter ini mendefinisikan nama komputer proxy server Anda , nilai default parameter ini tidak diset. Terkadang pengguna awam sering menjumpai squid errror dikarenakan parameter ini tidak diset dan squid mencoba menggunkan nama hostname komputer Anda yang ternyata hostname nya tidak ditulis lengkap dengan nama domain. parameter ini dapat diisi dengan nama komputer yang dilengkapi dengan nama domain. Misalnya sebagai berikut:
visible_hostname proxy.coba.co.id
http_port: parameter ini menunjukkan nomor port service squid. Nilai defaultnya dalah 3128. Jika Anda ingin menerapkan transparent proxy maka nilai parameter ini harus diset sebagai berikut:
http_port 3128 transparent
acl: parameter ini digunakan untuk mendefinisikan access control list format penulisannya sebagai berikut:
acl nama-acl tipe-acl string-pattern ...
acl nama-acl tipe-acl "file" ...


Dalam konfigurasi squid yang kita skenariokan , Anda harus membuat sebuah acl yang menunjukkan jaringan local Anda, Sebaiknya definisi acl ini Anda tulis pada file konfigurasi squid yaitu dibawah baris yang bertuliskan #INSERT YOUR OWN RULE HERE(S) ......., seperti berikut ini:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
acl lan src 192.168.1.0/24

http_access: parameter ini menunjukkan rule yang akan diterapkan pada suatu access control list. Untuk skenario kita maka Anda harus mendefinisikan rule yang akan mengijinkan LAN Anda untuk dapat mengakses internet (tulis rule tersebut dibagian bawah dari pendefinisian acl ), seperti berikut ini:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
acl lan src 192.168.1.0/24
http_access allow lan





IV. Konfigurasi squid delay pool
Untuk mengatur bandwidth download sesuai skenario yaitu menyediakan bandwidth download untuk setiap host dalam LAN sebesar 16KBps dan maksimal bucket 64KBps, maka beberapa parameter konfigurasi squid yang berkaitan dengan delay pool yang harus Anda set adalah sebagai berikut (edit file /etc/squid/squid.conf):

delay_pool: parameter ini menentukan ada berapakah pool yang akan Anda terapkan. Misalnya dalam skenario kita ini hanya akan dibuat sebuah pool, maka konfigurasinya sebagai berikut:
delay_pool 1

delay_class: parameter ini mendefinisikan class untuk setiap pool yang ada. Setiap pool harus memiliki sebuah class (delay_class) tidak lebih dan tidak kurang. Jadi kalau Ada 2 delay pool maka harus ada 2 delay_class. Class delay pool terdiri dari 3 class, yaitu :
class 1 : untuk delay pool dengan class ini maka semuanya dibatasi dengan single bucket agregate. Setiap class harus berasosiasi dengan single bucket agregate. Single bucket agregtae ini adalah bandwidth yang diasosiasikan dengan setiap class.
Class 2: untuk delay pool dengan class ini maka semuanya dibatasi dengan single bucket agregate, dan suatu “individual” bucket untuk stiap host atau komputer dalm jaringan class C.
Class 3: untuk delay pool dengan class ini maka semuanya dibatasi dengan single bucket agregate, dan “networke” bucket untuk setiap network class C, serta suatu individual bucket untuk stiap host atau komputer dalm jaringan class C. Untuk class 3 ini biasanya digunakan jika LAN Anda terdiri dari beberapa segment jaringan class C.

Untuk konfigurasi delay_class yang sesuai dengan skenario kita adalah seperti berikut ini:
delay_class 1 2

delay_access: parameter ini menentukan suatu request ke proxy server harus diletakkan pada delay pool yang mana. Konfigurasi delay_access yang sesuai dengan skenario kita adalah seperti berikut ini:
delay_access 1 allow lan
delay_access 1 deny all


delay_parameters: parameter ini mendefinisikan parameter -parameter untuk suatu delay pool. Format penulisan parameter delay_parameters adalah sebagai berikut:

delay_parameter pool aggregate bucket network individual

Untuk skenario kita maka nilai delay_parameters nya sebagai berikut:

delay_parameters 1 -1/-1 16000/64000

catatan: -1/-1 berarti bandwidth untuk aggregate nya diset unlimited (sesuai dengan bandwidth internet yang tersedia dari ISP). 16000(16KBps) adalah total bandwidth rata-rata yang bakal diperloleh setiap host dalam LAN, dan 64000(64KBps) adalah nilai bandwidth maksimum yang dapat tersedia dalam bucket disetiap saat.

Setelah konfigurasi squid Anda lakukan cobalah Anda restart atau start service squid seperti berikut ini:

# service squid start
# chkconfig squid on


Kemudian coba Anda gunakan web browser di beberapa client dan cobalah Anda download suatu file diinternet kemudian perhatikan kecepatan download pada window download. Berikut ini gambar -1, yang menunjukkan proses download pada suatu komputer ketika mendownload sebuah file (perhatikan kecepatan perdetiknya sekitar 16KBps), dan juga perhatikan gambar-2 yang menggambarkan kecepatan saat mendownload 2 buah file bersamaan (perhatikan jika di total kecepatan perdetiknya sekitar 16KBps ) pada suatu host.



Gambar-1. Mendownload sebuah file





Gambar-2. Mendownload dua buah file

Filtering Web Traffic dengan Squid

Ringkasan ini tidak tersedia. Harap klik di sini untuk melihat postingan.

Rabu, 03 Desember 2008

Konfigurasi Ethernet Bridge di Linux

Dukungan kemampuan sistem linux terhadap berbagai fitur begitu luasnya tidak terkecuali hal - hal yang berkaitan dengan networking atau jaringan komputer. Dengan sistem linux kita dapat membangun sebuah komputer yang berfungsi sebagai gateway atau router, firewall, traffic control, bridge, virtual server dan lain - lain. Pada suatu saat mungkin saja Anda membutuhkan sebuah network bridge (ethernet bridge), dan bisa jadi Anda tidak membutuhkan perangkat bridge khusus (dedicated) karena Anda ingin memanfaatkan komputer yang ada sebagai bridge. Kemudian pertanyaannya bagaimanakah langkah - langkah menjadikan komputer linux Anda sebagai network bridge(ethernet bridge). Untuk itu Dalam tulisan ini penulis akan mengetengahkan pembahasan tentang implementasi komputer dengan sistem linux sebagai network bridge.

Network Bridge

Network bridge atau Ethernet bridge adalah suatu cara menghubungkan dua atau lebih (multiple)
ethernet/network segment pada layer data link (layer 2) dari model OSI. Bridge memiliki kemiripan dengan perangkat repeater atau hub yang menghubungkan network segment pada layer physical, namun demikian sebuah bridge bekerja dengan menggunakan teknik forwarding packet yang biasa digu

nakan dalam packet-switching dalam jaringan komputer , yakni traffic dari satu network diatur atau dikelola ketimbang semata - mata membroadcast ulang ke segment network atau jaringan yang berdekatan.


Bagaimana menjadikan sistem linux sebagai bridge
Untuk memudahkan pemahaman, kita akan mengambil kasus sederhana sebagai berikut:

  • Sebuah komputer A yang bersistem operasi linux Fedora Core 6 akan kita jadikan sebagai bridge, yang harapannya dapat menghubungkan dua buah ethernet se

    gment. Komputer A ini memiliki 2 buah ethernet yaitu eth0 dan eth1.

  • Komputer A berfungsi sebagai bridge untuk segment jaringan 192.168.1.0/24.

  • Interface eth0 dari komputer A terhubung langsung ke hub atau switch utama dari segement jaringan 192.168.1.0/24 (lihat gambar 1.)

  • terdapat sebuah komputer client (PC) dengan nomor ip address 192.168.1.251/24 yang dihubungkan dengan cross cable ke ethernet eth1 komputer A (lihat ga

    mbar 1.)

  • Interface bridge (br0) komputer A bernomor IP 192.168.1.31/24


Gambar-1. Jaringan dengan linux network bridge

Langkah-langkah setup linux ethernet bridge (komputer A):

Umumnya kernel 2.6 bawaan distro Fedora Core 6 sudah dikonfigurasi dengan dukungan network bridge. Untuk memastikan dukungan network bridge dalam kernel yang digunakan saat ini lakukan langkah berikut:

[root@PC-Boy ~]# grep -i bridge /boot/config-2.6.18-1.2798.fc6
# PC-card bridges
CONFIG_BRIDGE_NETFILTER=y
# Bridge: Netfilter Configuration
....<>
CONFIG_BRIDGE_EBT_ULOG=m
CONFIG_BRIDGE=m

Perhatikan output dari perintah diatas yang bercetak tebal (CONFIG_BRIDGE=m), menandakan dukungan
network bridge pada kernel sebagai modul sudah ada.

Langkah berikutnya memuat modul 'bridge' kedalam kernel yang sedang berjalan saat ini dengan perintah modprobe, seperti berikut ini:

[root@PC-Boy ~]# modprobe -v bridge


Selanjutnya Anda dapat memeriksa untuk memastikan apakah modul bridge tadi telah dimuat dengan cara seperti berikut ini:

[root@PC-Boy ~]# lsmod |grep bridge
bridge 60253 0




Selanjutnya jika pada sistem linux belum terinstal paket software “bridge-utils” maka segera instal paket software 'bridge-utils' dengan cara seperti berikut ini:

[root@PC-Boy ~]# yum install bridge-utils

Paket bridge-utils menyediakan tool atau utiliti untuk mengelola atau mengatur ethernet bridge. Pada network bridge atau ethernet bridge beberapa interface network yang terpasang akan diasosiasikan dengan sebuah interface bridge secara logika yang umumnya dikenal sebagai interface br.


Langkah selanjutnya membuat atau mengaktifkan bridge (br0) dengan cara berikut:

[root@PC-Boy ~]# brctl addbr br0


Berikutnya menambahkan device ethernet sebagai port dari bridge, hal ini akan menyebabkan setiap frame atau paket yang diterima oleh inteface akan diproses seolah - olah sebagai frame atau paket yang ditujukan ke interface bridge. Berikut ini langkah - langkah nya :

[root@PC-Boy ~]# brctl addif br0 eth0

[root@PC-Boy ~]# brctl addif br0 eth1



Langkah selanjutnya mendefinisikan IP address untuk semua interface (eth0 dan eth1) port bridge, IP yang diset adalah 0.0.0.0 dengan mode promiscious:

[root@PC-Boy ~]# ifconfig eth0 0.0.0.0 promisc

[root@PC-Boy ~]# ifconfig eth1 0.0.0.0 promisc


Langkah terkahir mengaktifkan interface bridge (br0) dengan memberikan IP address yang disesuaikan dengan skenario diatas, dengan cara berikut ini:

[root@PC-Boy ~]# ifconfig br0 192.168.1.31
[root@PC-Boy ~]# route add default gw 192.168.1.1
[root@PC-Boy ~]# ifconfig
br0 Link encap:Ethernet HWaddr 00:19:66:05:75:69
inet addr:192.168.1.31 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::219:66ff:fe05:7569/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8634 errors:0 dropped:0 overruns:0 frame:0
TX packets:3138 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2169315 (2.0 MiB) TX bytes:404236 (394.7 KiB)
eth0 Link encap:Ethernet HWaddr 00:50:FC:6C:33:82
inet6 addr: fe80::250:fcff:fe6c:3382/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:139414 errors:0 dropped:4294967284 overruns:0 frame:0
TX packets:173526 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:56041534 (53.4 MiB) TX bytes:203492653 (194.0 MiB)
Interrupt:201 Base address:0xac00
eth1 Link encap:Ethernet HWaddr 00:19:66:05:75:69
inet6 addr: fe80::219:66ff:fe05:7569/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:53504 errors:0 dropped:0 overruns:0 frame:0
TX packets:34230 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5675230 (5.4 MiB) TX bytes:39722183 (37.8 MiB)
Interrupt:201 Base address:0xe800


Perintah “route add default gw 192.168.1.1” sifatnya opsional, dalam contoh diatas diasumsikan pada
segment jaringan 192.168.1.0/24 yang bertindak sebagai gateway ke internet adalah 192.168.1.1, dengan harapan
komputer A (bridge) dapat digunakan juga untuk mengakses internet.


Untuk konfigurasi di komputer PC client 192.168.1.251 tidak terlalu istimewa, hanya konfigurasi jaringan biasa yaitu mendefinisikan IP address , netmask, dan gateway serta DNS, sbb:

[root@PC-Client ~]# ifconfig eth0 192.168.1.251
[root@PC-Client ~]# route add default gw 192.168.1.1
[root@PC-Client ~]# echo “nameserver 192.168.1.254” > /etc/resolv.conf


Untuk menguji coba, maka cobalah sekarang dari PC client 192.168.1.251 mengirimkan paket ping ke salah satu
PC dalam segment jaringan 192.168.1.0/24. Jika berhasil maka komputer A sudah dapat berperan sebagai
sebuah network bridge.


Untuk menghapus atau menonaktifkan interface bridge adalah sebagai berikut:

[root@PC-Boy ~]# ifconfig br0 down
[root@PC-Boy ~]# brctl delbr br0

Langkah-langkah penerapan user quota disk

1. Konfigurasi /etc/fstab, tambahkann opsi usrquota dan grpquota pada baris (entri)
file system yang akan Anda terapkan quota disk, sbb:

/dev/hda6 /home ext3 defaults,usrquota,grpquota 1 2

atau untuk yang / dan /home berada dalam satu partisi yang sama sbb:

/dev/hda1 / ext3 defaults,usrquota,grpquota 1 1

2. Buat file database aquota.user dan aquota.group sbb:

#touch /home/aquota.user
#touch /home/aquota.group

atau untuk yang / dan /home berada dalam satu partisi yang sama sbb:
#touch /aquota.user
#touch /aquota.group

3. Restart komputer
# reboot

4. Update database aquota.user dan aquota.group, sbb:
# quotacheck -avug

atau untuk yang / dan /home berada dalam satu partisi yang sama sbb:

# quotacheck -avugm

5. Check report quota sbb:
#repquota -a

6. Edit grace periode time menjadi 0days (0seconds) sbb:
# edquota -t
Filesystem Block grace period Inode grace period
/dev/hda3 0days 0days

7. Restart komputer
# reboot

atau jika Anda tidak ingin merestart jalankan perintah:
# quotaoff -a
# quotacheck -avug
# quotaon -a


8. Cobalah Anda set quota utk user tertentu, misalnya sbb:

# setquota -u akhtar 10000 10000 0 0 -a
# setquota -u hana 5000 5000 0 0 -a

contoh perintah diatas artinya user 'akhtar' diberi quota 10000Kb
(soft limit dan hard limit block nya) serta (0 untuk soft dan hard limit inode nya).
Sedangkan user 'hana" diberi quota 5000Kb (soft limit dan hard limit block nya)
serta (0 untuk soft dan hard limit inode nya).

9. Coba check report quota sbb:
# repquota -a

10. Kemudian coba login sbg user 'akhtar' atau 'hana' lalu lakukan aktifitas menyalin
file atau direktori yang ukurannya melampaui batas quota disk yg telah ditetapkan
ke home direktori masing-masing user lalu perhatikan apakah ada pesan "Disk quota exceeded"

By Henry Saptono

Konfigurasi Apache HTTP server dengan certificate SSL/TLS

Tulisan ini mencoba menjelaskan sesederhana mungkin praktis bagaimana melakukan
konfigurasi SSL (enable secure socket layer) di Apache 2.0., namun bisa jadi sebagian Anda
merasa tulisan ini masih juga tetap komplek : ).


Asumsi:
-------------------------------------------------------------------------------
Server web Anda (Apache 2.0) berada pada mesin dengan nama (hostname/FQDN)
sotnec.contohaja.com, perlu diperhatikan bahwa hostname mesin Anda harus
dapat dilookup (valid terdaftar di DNS). Sebelumnya web server Anda hanya
menjalankan service http(port 80), sekarang Anda berkeinginan mengaktifkan
service https(port 443) pada web server Anda. Pada web server Anda terdapat
2 virtualhost yang jalan dalam mode HTTPS yang masing masing virtual host
memiliki hostname (FQDN) yaitu "mars.contohaja.com" dan "bumi.contohaja.com".

Langkah-langkah step by step konfigurasi SSL (enable secure socket layer) di
Apache 2.0:
------------------------------------------------------------------------------

Tahap 1: Setup your own CA (Certificate Authority)
---------------------------------------------------

Agar apache web server Anda dapat menjalankan secure (SSL/TLS encrypted) web server,
Anda harus memmiliki sebuah "private key" dan sebuah "certificate" untuk web server Anda.
Untuk website commercial, Mungkin Anda dapat membeli certificate yang telah ditanda tangani
oleh root CA yang terkenal.
Untuk Intranet atau special-purpose , Anda dapat membuat CA sendiri. Ini dapat
dilakukan dengan menggunakan tools OpenSSL .

Disini, kita akan membuat sebuah private CA key dan sebuah certificate private CA X.509.
Kita juga akan membuat direktori untuk menyimpan certs dan keys:

# mkdir /root/CA
# chmod 0770 /root/CA
# cd /root/CA

# openssl genrsa -des3 -out my-ca.key 2048
# openssl req -new -x509 -days 3650 -key my-ca.key -out my-ca.crt
# openssl x509 -in my-ca.crt -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 0 (0x0)
Signature Algorithm: md5WithRSAEncryption
Issuer: C=ID, ST=Jawa Barat, L=Depok, O=PT NCI, OU=IT,
CN=sotnec.contohaja.com/emailAddress=henry@contohaja.com
Validity
Not Before: Apr 3 02:10:25 2007 GMT
Not After : Mar 31 02:10:25 2017 GMT
Subject: C=ID, ST=Jawa Barat, L=Depok, O=PT NCI, OU=IT,
CN=sotnec.contohaja.com/emailAddress=henry@contohaja.com
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
RSA Public Key: (2048 bit)
Modulus (2048 bit):
00:d2:55:bb:2c:54:17:11:8e:15:9d:5f:58:c5:a2:
ae:f2:a6:c2:a7:c3:9d:bd:7c:f7:2a:b0:ac:1a:25:
3e:4c:4c:ee:c7:27:ed:68:79:85:22:77:7f:46:9a:
e3:48:2a:b4:c7:87:f9:03:6f:47:54:c7:31:4f:35:
b7:57:b0:02:d0:0e:9c:5a:87:52:58:09:3c:c6:cd:
1b:a5:53:b7:4f:97:9f:52:e7:c8:22:3b:fa:0d:3a:
6c:98:1b:ae:87:9e:7b:78:b3:c1:d1:87:97:b8:8f:
88:29:a7:2d:18:60:30:4a:fb:84:3f:c8:e8:8c:bd:
86:1f:9c:b9:45:a0:1f:be:04:66:37:60:e8:c4:0a:
e1:fd:04:84:f8:cd:4a:4a:95:5f:c4:6e:20:d7:e0:
c8:c4:a0:1f:3b:e7:01:7c:16:06:11:b8:b3:1a:65:
ed:f1:da:7d:76:80:5a:3e:7c:05:4a:4c:da:cf:8a:
6f:8f:e4:6c:65:ed:ec:4c:61:4f:8e:0b:3c:28:9b:
fd:47:7c:40:68:c0:7b:74:cc:03:87:7d:ed:29:e0:
18:b9:01:64:e7:4b:f6:cb:a0:bc:3c:85:e7:4a:4d:
14:80:16:ea:54:80:a7:00:40:f9:fc:21:4a:c9:45:
e5:32:c3:f1:3f:d9:bd:ce:e6:86:f5:c9:c4:4a:ea:
9a:bb
Exponent: 65537 (0x10001)
X509v3 extensions:
X509v3 Subject Key Identifier:
43:F7:93:F4:F5:7A:D1:24:F5:A8:F1:4E:CF:F9:9C:3C:83:73:25:34
X509v3 Authority Key Identifier:
keyid:43:F7:93:F4:F5:7A:D1:24:F5:A8:F1:4E:CF:F9:9C:3C:83:73:25:34
DirName:/C=ID/ST=Jawa Barat/L=Depok/O=PT
NCI/OU=IT/CN=sotnec.contohaja.com/emailAddress=henry@contohaja.com
serial:00

X509v3 Basic Constraints:
CA:TRUE
Signature Algorithm: md5WithRSAEncryption
8f:75:79:48:6b:d0:7e:02:9f:1c:f8:9d:39:e5:5b:6e:c7:1e:
e9:6e:a3:e4:d1:d3:9b:db:33:62:f6:67:aa:54:90:38:78:61:
4a:fb:b8:fd:0c:74:d5:ac:08:ff:00:a2:fb:98:b3:56:44:6e:
7f:8d:77:d9:5d:0f:ee:40:06:62:46:aa:bc:8b:ff:c7:a3:e6:
83:b9:63:f8:c7:ef:1a:ed:6e:eb:57:e9:d1:2c:f0:12:50:4b:
7d:5b:c5:22:b0:a0:12:65:93:81:e3:54:f8:85:10:8d:5b:d3:
9b:56:59:b8:3d:01:07:6e:33:d6:52:c5:8e:b3:c9:48:95:7b:
26:c2:74:ab:d3:b0:3a:ad:52:bb:69:86:dc:83:40:b6:9a:f0:
b3:f7:46:5d:ca:99:61:c6:7e:ac:92:c5:a9:3b:80:c1:05:e7:
5f:7b:24:8d:1e:eb:dc:85:fe:77:c5:99:4b:10:d3:d5:3c:fa:
24:f2:f5:a4:e6:7d:dd:c7:e2:25:8a:c1:18:59:92:f7:42:77:
27:1e:3d:36:c3:6a:65:ab:1d:c5:34:a8:ab:66:9e:1f:d6:9c:
50:46:76:94:bc:67:27:29:60:55:b3:88:65:58:63:85:c5:f2:
d9:dc:f9:06:d4:27:a2:18:22:65:36:72:80:44:cf:b6:d2:d5:
28:e4:25:35

Catatan:
Perintah openssl yang pertama akan membuat CA key . Perintah yang kedua
akan membuat X.509 certificate dengan waktu hidup 10 tahun (10-year lifetime).
Perintah ketiga akan menampilkan certificate kita secara lengkap.

Tahap 2: Membuat key dan certificate untuk web server:
--------------------------------------------------------------------------
Sekarang, kita membuat X.509 certificate dan private key nya untuk web server.
Karena kita membuat certificate secara langsung, kita akan membuat key dan
certificate, kemudian certificate yang diminta akan di"tandatangani" dengan CA key
yang telah kita buat pada tahap 1. Kita juga dapat membuat multiple keys untuk
multiple web servers (virtual host) dengan cara yang sama.
Satu hal yang perlu dicatat bahwa SSL/TLS private keys untuk web server memerlukan
512 atau 1024 bits. Ukuran key yang lain bisa jadi tidak kompatibel dengan
browser-browser tertentu.

Dalam contoh kasus disini kita akan membuat key dan certificate untuk
virtualhost mars.contohaja.com dan bumi.contohaja.com.

# openssl genrsa -des3 -out mars-server.key 1024
# openssl req -new -key mars-server.key -out mars-server.csr
# openssl x509 -req -in mars-server.csr -out mars-server.crt -sha1 -CA my-ca.crt -CAkey my-ca.key -CAcreateserial -days 3650
# openssl x509 -in mars-server.crt -text -noout
# openssl genrsa -des3 -out bumi-server.key 1024
# openssl req -new -key bumi-server.key -out bumi-server.csr
# openssl x509 -req -in bumi-server.csr -out bumi-server.crt -sha1 -CA my-ca.crt -CAkey my-ca.key -CAcreateserial -days 3650
# openssl x509 -in bumi-server.crt -text -noout

Sebaiknya semua file key yang ada di /root/CA dirubah ijin aksesnya menjadi
0400 sbb:
# chmod 0400 *.key
# ls /root/CA/

Tahap 3: Mengexport/Menyalin keys dan certificate, ke dalam direktori konfigurasi apache
-----------------------------------------------------------------------------------------------------------------
# mkdir /etc/httpd/conf/ssl.crt
# mkdir /etc/httpd/conf/ssl.key

# cp my-ca.crt /etc/httpd/conf/ssl.crt
# cp mars-server.crt /etc/httpd/conf/ssl.crt
# cp mars-server.key /etc/httpd/conf/ssl.key
# cp bumi-server.key /etc/httpd/conf/ssl.key
# cp bumi-server.crt /etc/httpd/conf/ssl.crt


Tahap 4: Membuat directory documentroot & index.html utk masing-masing virtualhost
--------------------------------------------------------------------------------------------------------------
# mkdir /var/www/mars
# chmod 0775 /var/www/mars
# cd /var/www/mars
# echo "Hello mars" > index.html
# mkdir /var/www/bumi
# cd /var/www/bumi
# chmod 0775 /var/www/bumi
# echo "Hello bumi" > index.html


Tahap 5: Mengkonfigurasi Apache, agar mensuport SSL/TLS
--------------------------------------------------------------------------------

# vi /etc/httpd/conf.d/ssl.conf

------------------------------------------------------------------------------------
# This is the Apache server configuration file providing SSL support.
# It contains the configuration directives to instruct the server how to
# serve pages over an https connection. For detailing information about these
# directives see
#
# Do NOT simply read the instructions in here without understanding
# what they do. They're here only as hints or reminders. If you are unsure
# consult the online docs. You have been warned.
#

LoadModule ssl_module modules/mod_ssl.so

#
# When we also provide SSL we have to listen to the
# standard HTTP port (see above) and to the HTTPS port
Listen 443
AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl

SSLPassPhraseDialog builtin

SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout 300

# Semaphore:
# Configure the path to the mutual exclusion semaphore the
# SSL engine uses internally for inter-process synchronization.
SSLMutex default

SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin

SSLCryptoDevice builtin

##
## SSL Virtual Host Context
##

NameVirtualHost 192.168.1.33:443


# General setup for the virtual host, inherited from global configuration
DocumentRoot "/var/www/mars"
ServerName mars.contohaja.com:443
ErrorLog logs/mars-ssl_error_log
TransferLog logs/mars-ssl_access_log
LogLevel warn
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
SSLCertificateFile /etc/httpd/conf/ssl.crt/mars-server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/mars-server.key

SSLOptions +StdEnvVars


SSLOptions +StdEnvVars

SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"




# General setup for the virtual host, inherited from global configuration
DocumentRoot "/var/www/bumi"
ServerName bumi.contohaja.com:443
ErrorLog logs/bumi-ssl_error_log
TransferLog logs/bumi-ssl_access_log
LogLevel warn
SSLEngine on
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
SSLCertificateFile /etc/httpd/conf/ssl.crt/bumi-server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/bumi-server.key

SSLOptions +StdEnvVars


SSLOptions +StdEnvVars

SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"


----------------------------------------------------------------------------------------------------

Setelah menkonfigurasi apache . kemudian restart service apache:
[root@sotnec ~]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: Apache/2.0.52 mod_ssl/2.0.52 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.

Server bumi.contohaja.com:443 (RSA)
Enter pass phrase:

OK: Pass Phrase Dialog successful.
[ OK ]


Catatan:
pada saat Anda restart service apache maka anda akan ditanyakan pass phrase
untuk keys yang telah anda buat sbb, maka berikanlah pass phrase tersebut
sesuai dengan pass phrase yang telah anda buat.

Lalu coba Anda akses web server dengan URL sbb:
https://mars.contohaja.com

dan

https://bumi.contohaja.com

-----------------------------------
WEB server key password:
----------------------------------
Setelah Anda melakukan tahap-tahap diatas maka web server Anda sudah
mensupport SSL, namun perlu diingat setiap kali Anda restart atau start
service apache Anda maka Anda harus memasukkan pass pharse(password) dari key
masing-masing virtual host, nah ini terkadang kurang simple atau fleksibel
menurut sebagian orang tetapi sebenarnya itu lebih safe/secure. Jika Anda
tidak ingin setiap kali me-restart apache harus memasukkan pass
phrase(password) dari key masing-masing virtualhost maka Anda harus melakukan
beberapa tahap sbb:


[root@sotnec ~]# cd /etc/httpd/conf/ssl.key
[root@sotnec ssl.key]# cp bumi-server.key bumi-server.key.org
[root@sotnec ssl.key]# openssl rsa -in bumi-server.key.org -out
bumi-server.key
Enter pass phrase for bumi-server.key.org:
writing RSA key
[root@sotnec ssl.key]# less bumi-server.key
[root@sotnec ssl.key]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: Apache/2.0.52 mod_ssl/2.0.52 (Pass Phrase Dialog)
Some of your private key files are encrypted for security reasons.
In order to read them you have to provide the pass phrases.

Server mars.contohaja.com:443 (RSA)
Enter pass phrase:

OK: Pass Phrase Dialog successful.
[ OK ]
[root@sotnec ssl.key]# cp mars-server.key mars-server.key.org
[root@sotnec ssl.key]# openssl rsa -in mars-server.key.org -out
mars-server.key
Enter pass phrase for mars-server.key.org:
writing RSA key
[root@sotnec ssl.key]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[root@sotnec ssl.key]#



Selamat mencoba.!

By Henry Saptono
-------------
Referensi
--------------
http://www.vanemery.com/Linux/Apache/apache-SSL.html
http://localhost/manual/mod/mod_ssl.html