Minggu, 18 Januari 2009

Bagaimana agar Internal(LAN) server dapat diakses dari Internet ?

Henry Saptono

Hampir sebagian besar perusahaan memiliki jaringan komputer didalamnya untuk menunjang pekerjaan dan usahanya. Didalam jaringan komputer tersebut umumnya tersedia berbagai service atau layanan seperti web, email, database, file server dan lain-lain. Bahkan sebagian besar perusahaan saat ini memiliki web site sebagai suatu media informasi dan bahkan juga sebagai media transasksi usaha mereka, yang sudah tentu dapat menunjang bisnis mereka. Beberapa perusahaan juga membangun berbagai aplikasi sistem informasi yang dibutuhkan dalam bentuk web (web based). Email juga menjadi layanan yang sangat dibutuhkan oleh perusahaan untuk berkomunikasi dengan pihak lain dengan cepat dan murah. Jadi bisa kita bayangkan bahwa kebutuhan akan layanan-layanan jaringan seperti web dan email server menjadi sangat penting saat ini disamping layanan lainnya. Dan layanan-layanan itu mungkin juga harus dapat diakses dari internet tidak hanya dari internal network (LAN).

Ketika suatu perusahaan berencana ingin membuat dan mengelola sendiri web server dan email server serta beberapa server lainnya yang dapat diakses dari internet tidak hanya dari internal network (LAN) maka dibutuhkan akses internet yang memadai. Maksud memadai disini adalah tersedia bandwidth yang cukup besar untuk memungkinkan proses transfer data yang lebih baik, dan tersedia beberapa IP public untuk beberapa komputer server (server web, email, dan lain-lain). Permasalahan timbul ketika kita hanya memperoleh sebuah IP public atau IP public yang tersedia tidak mencukupi untuk sejumlah komputer server yang akan kita buat. Untungnya dengan teknik NAT/DNAT kita dapat menyelesaikan permasalahan tersebut.

Dalam artikel kali ini penulis akan menjelaskan bagaimana agar internal (private) server dapat diakses dari internet dengan teknik NAT/DNAT menggunakan shorewall firewall. Dalam artikel ini penulis menggunakan sebuah komputer yang akan dijadikan sebagai gateway/firewall yang nantinya bertindak sebagai pendistribusi traffic dari internet ke beberapa server yang menyediakan layanan-layanan seperti web dan email server yang terdapat dalam internal network (LAN). Dan komputer yang akan dijadikan gateway/firewall tersebut menggunakan sistem operasi Linux CentOS 5.

Skenario
Sebelumnya penulis mengasumsikan pembaca telah mengerti bagaimana melakukan instalasi sistem linux CentOS 5 dan instalasi shorewall paket binary rpm ( http://www.invoca.ch/pub/packages/shorewall/4.0/) atau pembaca dapat membaca artikel atau tutorial lainnya yang berkaitan dengan instalasi linux CentOS 5 serta manajemen software di linux khususnya manajemen paket rpm. Untuk memudahkan penjelasan, penulis membuat sebuah skenario sebagaimana yang tampak pada gambar 1.



Gambar 1. Skema jaringan

Skenario berdasarkan gambar 1 adalah sebagai berikut:
-Jalur koneksi internet menggunakan modem ADSL yang memiliki IP address yang terhubung ke LAN yaitu 202.202.202.153/30
-Komputer gateway/firewall memiliki 2 buah interface network yaitu eth0 dan eth1 masing-masing sebagai berikut:
* eth0 adalah interface network yang terhubung langsung dengan modem ADSL. IP eth0 adalah 202.202.202.154 dengan netmask 255.255.255.252
* eth1 adalah interface network yang terhubung dengan Internal network dengan IP 192.168.1.1/24
-Pada internal network terdapat dua buah server yaitu sebagai berikut:
* Web server memiliki IP address 192.168.1.2
* Email server (SMTP dan POP3) memiliki IP address 192.168.1.3
-Semua traffic http (port 80) dari internet menuju interface eth0 (202.202.202.154) komputer gateway/firewall akan diarahkan ulang menuju komputer web server (192.168.1.2)
-Semua traffic smtp dan pop3 (port 25 dan 110) dari internet menuju interface eth0 (202.202.202.154) komputer gateway/firewall akan diarahkan ulang menuju komputer Email server (192.168.1.3)
-Default kebijakan firewall pada komputer gateway adalah menolak semua traffic dari internet menuju LAN, dan menolak semua traffic dari internet ke komputer gateway/firewall.

Langkah Konfigurasi
Enbale IP Forwarding
Langkah konfigurasi pertama adalah mengkonfigurasi komputer agar berfungsi sebagai gateway, yaitu dengan menjalankan perintah berikut:
# echo 1 > /proc/sys/net/ipv4/ip_forward

Atau Edit file /etc/sysctl.conf dan set parameter net.ipv4.ip_forward = 1

Konfigurasi Shorewall Firewall
Konfigurasi selanjutnya adalah mengkonfigurasi shorewall sebagai firewall agar sesuai skenario yang telah dipaparkan sebelumnya. Untuk itu ikuti langkah-langkahnya berikut:

- Pastikan agar shorewall dapat diaktifkan, dengan cara mendefinisikan parameter STARTUP_ENABLED=Yes pada file /etc/shorewall/shorewall.conf
Mendefinisikan zone network dengan cara mengedit file /etc/shorewall/zones, sehingga isi file tersebut seperti berikut ini:
###############################################################################
#ZONE TYPE OPTIONS IN OUT
# OPTIONS OPTIONS
fw firewall
lan ipv4
net ipv4
#LAST LINE - ADD YOUR ENTRIES ABOVE THIS ONE - DO NOT REMOVE


-Mendefinisikan interface untuk tiap zone yang telah didefinisikan dengan cara mengedit file /etc/shorewall/interfaces, sehingga isi file tersebut seperti berikut ini:
###############################################################################
#ZONE INTERFACE BROADCAST OPTIONS
net eth0
lan eth1
#LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE


-Mendefinisikan default policy, dengan cara mengedit file /etc/shorewall/policy, sehingga isi file tersebut seperti berikut ini:
###############################################################################
#SOURCE DEST POLICY LOG LIMIT:BURST
# LEVEL
fw lan ACCEPT
fw net ACCEPT
lan fw ACCEPT
lan net ACCEPT
net fw DROP info
net lan DROP info
all all DROP
#LAST LINE -- DO NOT REMOVE



-Mendefinisikan rule masquerade agar dapat meneruskan traffic dari LAN ke Internet, dengan cara mengedit file /etc/shorewall/masq sebagai berikut:
#INTERFACE SOURCE ADDRESS PROTO PORT(S) IPSEC MARK
eth0 eth1
#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE


-Langkah berikutnya mendefinisikan rule firewall sesuai dengan skenario, dengan mengedit file /etc/shorewall/rules sebagai berikut:

#SECTION ESTABLISHED
#SECTION RELATED
SECTION NEW
DNAT net lan:192.168.1.3 tcp 25 - 202.202.202.154
DNAT net lan:192.168.1.3 tcp 110 - 202.202.202.154
DNAT net lan:192.168.1.2 tcp 80 - 202.202.202.154
#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE


-Selanjutnya aktifkan shorewall, atau jika sebelumnya sudah aktif maka restart shorewall agar membaca konfigurasi yang telah dibuat, seperti berikut ini:
[root@gw ~]# shorewall start
atau
[root@gw ~]# shorewall restart

Selamat mencoba.

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.