<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Kusprayitna Blogs</title>
	<atom:link href="http://kusprayitna.staff.uii.ac.id/feed/" rel="self" type="application/rss+xml" />
	<link>http://kusprayitna.staff.uii.ac.id</link>
	<description>Hidup untuk berbagi ilmu :: IT Linux Windows Database Oracle PHP OpenSource</description>
	<pubDate>Mon, 30 Aug 2010 05:29:00 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Nagios untuk monitoring status server maupun layanan</title>
		<link>http://kusprayitna.staff.uii.ac.id/2010/08/30/nagios-untuk-monitoring-status-server-maupun-layanan/</link>
		<comments>http://kusprayitna.staff.uii.ac.id/2010/08/30/nagios-untuk-monitoring-status-server-maupun-layanan/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 05:29:00 +0000</pubDate>
		<dc:creator>kusprayitna</dc:creator>
		
		<category><![CDATA[Application]]></category>

		<category><![CDATA[nagios]]></category>

		<category><![CDATA[monitoring layanan]]></category>

		<category><![CDATA[monitoring server]]></category>

		<category><![CDATA[nagios nrpe]]></category>

		<category><![CDATA[nrpe]]></category>

		<guid isPermaLink="false">http://kusprayitna.staff.uii.ac.id/?p=589</guid>
		<description><![CDATA[Sudah banyak komputer baik itu server maupun klien di kantor tempat kerja.
Ada suatu permasalahan ketika dihadapkan pada sasaran mutu yang salah satunya menyebutkan bahwa downtime maksimal 95% dalam setahun. Dengan banyak server maka cara menghitungpun perlu dipertimbangkan, antara lain  yaitu catatan server mati dan hidup kembali, catatan penjadwalan mati/perbaikan dan tentunya tindak lanjut jika ada [...]]]></description>
			<content:encoded><![CDATA[<p>Sudah banyak komputer baik itu server maupun klien di kantor tempat kerja.</p>
<p>Ada suatu permasalahan ketika dihadapkan pada sasaran mutu yang salah satunya menyebutkan bahwa downtime maksimal 95% dalam setahun. Dengan banyak server maka cara menghitungpun perlu dipertimbangkan, antara lain  yaitu catatan server mati dan hidup kembali, catatan penjadwalan mati/perbaikan dan tentunya tindak lanjut jika ada server mati adalah yang utama.</p>
<p>Setelah mencari di internet maka menurut saya software <a href="http://www.nagios.org">nagios</a> cukuplah tepat untuk keperluan diatas. Lihat saja tampilan previewnya yang saya peroleh dari internet</p>
<p><img src="http://wiki.contribs.org/images/8/80/Nagios-screenshot-8.png" alt="" /></p>
<p>Gambar petanya bisa sangat bagus, ketahuan sistem operasinya, statusnya, hirarkinya</p>
<p>Setelah dicoba instal nagios di server Centos 5.3 saya, maka inilah ceritanya:</p>
<p><span id="more-589"></span></p>
<h2>Tahapan instalasi nagios</h2>
<ol>
<li>Aktifkan repository RPMFORGE</li>
<li>install nagios<br />
#  yum install nagios nagios-plugins nagios-plugins-nrpe nagios-devel</li>
<li>Perhatikan lokasi hasil instalasi<br />
- konfigurasi di : /etc/nagios/<br />
- plugin di : /etc/usr/lib/nagios<br />
- web di : /usr/share/nagios</li>
</ol>
<h2></h2>
<h2>Konfigurasi Website nagios</h2>
<p>Untuk konfigurasi website nagios ini saya lakukan di awal setelah instalasi nagios, dengan tujuan agar hasil dapat dilihat secara langsung. Website akan diletakkan di root dari website http://nagios.uii.ac.id</p>
<p>Buat virtual host di server dengan nama nagios.uii.ac.id dengan ini file konfigurasi sebagai berikuit</p>
<pre>&lt;VirtualHost *:80&gt;
ServerAdmin webmaster@nagios.uii.ac.id
DocumentRoot '/usr/share/nagios'
ServerName nagios.uii.ac.id
ErrorLog /var/log/httpd/nagios-error.log
CustomLog /var/log/httpd/nagios-access.log combined

&lt;Directory '/usr/share/nagios'&gt;
#       SSLRequireSSL
        Options None
        AllowOverride None
        Order allow,deny
        Allow from all
#       Order deny,allow
#       Deny from all
#       Allow from 127.0.0.1
        AuthName "Nagios Access"
        AuthType Basic
        AuthUserFile /etc/nagios/htpasswd.users
        Require valid-user
&lt;/Directory&gt;
ScriptAlias /cgi-bin "/usr/lib/nagios/cgi"
&lt;Directory "/usr/lib/nagios/cgi"&gt;
#       SSLRequireSSL
        Options ExecCGI
        AllowOverride None
        Order allow,deny
        Allow from all
#       Order deny,allow
#       Deny from all
#       Allow from 127.0.0.1
#        AuthName "Nagios Access"
#        AuthType Basic
#        AuthUserFile /etc/nagios/htpasswd.users
#        Require valid-user
&lt;/Directory&gt;
</pre>
<p>Web nagios ini memerlukan otorisasi pengguna. sebagi admin, default nama usernay yaitu &#8220;nagiosadmin&#8221;, sehingga untuk mempermudah konfigurasi digunakan nama yang sama saja yaitu nagiosadmin.</p>
<p>Cara menambahkan usernay yaitu :</p>
<pre># htpasswd -c /etc/nagios/htpasswd.users nagiosadmin
New password: type_your_password
Re-type new password: re-type_your_password
Adding password for user nagiosadmin
</pre>
<p>Untuk menambahkan user yang lain dapat dilakukan dengan cara yang sama (opsi &#8220;-c&#8221; tidak dipakai)</p>
<pre>htpasswd  /etc/nagios/htpasswd.users prayitna
New password: type_your_password
Re-type new password: re-type_your_password
Adding password for user prayitna
</pre>
<p>Kemudian restart webserver dengan perintah &#8221; service httpd restart &#8221; dan hasil website bisa dilihat di http://nagios.uii.ac.id, dan tentunya kita diminta memasukkan nama dan password.</p>
<p>Nama user ini nantinya akan terkait dengan hak user atas data yang ada di nagios.</p>
<h2>Konfigurasi Nagios Server</h2>
<p>Ini adalah langkah yang terpenting, karena jalan atau tidaknya nagios ada dalam tahapan ini.</p>
<p>Folder kerja ada di /etc/nagios</p>
<p>File konfigurasi nagios yaitu /etc/nagios/nagios.cfg</p>
<p>Ada beberapa konfigurasi yang harus diperhatikan sebelumnya yang digunakan oleh nagios, yaitu :</p>
<ol>
<li>Konfigurasi commands (perintah)</li>
<li>Konfigurasi timeperiods (waktu kerja)</li>
<li>Konfigurasi contacs (nama user)</li>
<li>Konfigurasi contactgroup (pengelompokan user)</li>
<li>Konfigurasi hosts (server yang akan dimonitor)</li>
<li>Konfugurasi hostgroup (pengelompokan server)</li>
<li>Konfigurasi services (layanan / aplikasi )</li>
</ol>
<p>Dalam instalasi default, contoh sudah dibuatkan di folder /etc/nagios/objects</p>
<p>Untuk mempermudah langkan berikutnya maka dilakukan konfigurasi dengan langkah-langkah sebagai berikut</p>
<ol>
<li>Konfigurasi commands, menggunakan contoh yang ada di /etc/nagios/objects/commands.cfg</li>
<li>Konfigurasi timeperiods,  menggunakan contoh yang ada di /etc/nagios/objects/timeperiods.cfg</li>
<li>Konfigurasi contacs, dibuat file /etc/nagios/contacs.cfg yang isinya sebagai berikut:
<p># service_notification_options are w,u,c,r,f,n<br />
# w=warning u=unknown c=critical r=recovery f=flapping n=none<br />
# host_notification_options d,u,r,f,n<br />
# d=down u=unreachable r=recovery f=flapping n=none</p>
<p># System development</p>
<p>define contact{<br />
contact_name                    prayitna<br />
alias                           prayitna<br />
service_notification_period     24&#215;7<br />
host_notification_period        24&#215;7<br />
service_notification_options    c,r<br />
host_notification_options       d,r<br />
service_notification_commands   notify-service-by-email<br />
host_notification_commands      notify-host-by-email<br />
email                           kusprayitna@staff.uii.ac.id<br />
}</p>
<p>define contact{<br />
contact_name                    endro<br />
alias                           endro<br />
service_notification_period     workhours<br />
host_notification_period        workhours<br />
service_notification_options    c,r<br />
host_notification_options       d,r<br />
service_notification_commands    notify-service-by-email<br />
host_notification_commands       notify-host-by-email<br />
email                           endro.mustofa@staff.uii.ac.id<br />
}</li>
<li>Konfigurasi contactgroups, yaitu dibuat file /etc/nagios/contactgroup.cfg yang isinya
<p># &#8216;admin development&#8217; contact group definitions<br />
define contactgroup{<br />
contactgroup_name       admin<br />
alias                   admin<br />
members                 prayitna, trisna<br />
}</p>
<p># &#8217;staf development&#8217; contact group definitions<br />
define contactgroup{<br />
contactgroup_name       staf_sw<br />
alias                   staf_sw<br />
members                 endro, tri<br />
}</li>
<li>Konfigurasi hosts
<p>Dalam konfigurasi host ini, ada cukup banyak atribut yang dapat dipakai yang bisa dimiliki sebuah server, dan untuk mempermudah penulisan/pembacaan maka dibuatkan template terlebih dahulu.<br />
FIle yang digunakan yaitu /etc/nagios/hosts.cfg, dengan isi sebagai berikut:</p>
<p># Generic host definitions<br />
define host{<br />
name                            generic-host    ; Generic template name<br />
notifications_enabled           1               ; Host notifications are enabled<br />
event_handler_enabled           1               ; Host event handler is enabled<br />
flap_detection_enabled          1               ; Flap detection is enabled<br />
process_perf_data               1               ; Process performance data<br />
retain_status_information       1               ; Retain status information across program restarts<br />
retain_nonstatus_information    1               ; Retain non-status information across program restarts<br />
register                        0               ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!<br />
}</p>
<p># This creates a generic template that any host can use.<br />
# Notifies never, checks 15 times before showing critical on CGI interface,</p>
<p>define host{<br />
name                    basic-host<br />
use                     generic-host<br />
check_command           check-host-alive<br />
max_check_attempts      15<br />
notification_interval   0<br />
notification_period     none<br />
notification_options    n<br />
statusmap_image         centos.gd2<br />
register                0<br />
}</p>
<p># This creates a generic host that your routers can use<br />
# monitors host(s) 24&#215;7, notifies on down and recovery, checks 15 times before going critical,<br />
# notifies the contact_group every 30 minutes</p>
<p>define host{<br />
name                    basic-routers<br />
use                     generic-host<br />
check_command           check-host-alive<br />
max_check_attempts      15<br />
notification_interval   30<br />
notification_period     24&#215;7<br />
notification_options    d,r<br />
statusmap_image         mikrotik.gd2<br />
register                0<br />
}</p>
<p>define host{<br />
name                    basic-client<br />
use                     generic-host<br />
check_command           check-host-alive<br />
max_check_attempts      5<br />
notification_interval   30<br />
notification_period     workhours<br />
notification_options    d,r<br />
statusmap_image         windowsxp.gd2<br />
register                0<br />
}</p>
<p>#<br />
# Berikut adalah daftar setiap host<br />
#</p>
<p>define host{<br />
use                     basic-host<br />
host_name               nagios<br />
alias                   Nagios Server<br />
address                 127.0.0.1<br />
contact_groups          admin<br />
}</p>
<p>#<br />
# Server Klasiber, terkoneksi ke nagios server melalui switch.202 dan ke dadabase melalui switch.200<br />
#</p>
<p>define host{<br />
use                     basic-host<br />
host_name               klasiber3<br />
alias                   Website klasiber<br />
address                 192.168.200.y<br />
contact_groups          kadiv<br />
parents                 switch.200, switch.202<br />
}</p>
<p>define host{<br />
use                     basic-host<br />
host_name               klasiber2<br />
alias                   Backup klasiber<br />
address                 192.168.200.x<br />
contact_groups          kadiv<br />
parents                  switch.200, switch.202<br />
}</p>
<p>define host{<br />
use                     basic-host<br />
host_name               mysqlserver<br />
alias                   Database MySQL Klasiber<br />
address                 192.168.200.z<br />
contact_groups          kadiv<br />
parents                  switch.200<br />
}</li>
<li>Konfigurasi hostgroup, ini dibuatkan juga file /etc/nagios/hostgroup.cfg yang isinya
<p>define hostgroup{<br />
hostgroup_name  klasiber<br />
alias           server klasiber<br />
members         klasiber1, klasiber2, mysqlserver<br />
}</li>
<li>Konfigurasi services, ini dibuatkan file /etc/nagios/services.cfg yang isinya
<p># Generic service definition template<br />
define service{<br />
name                            generic-service ; Generic service name<br />
active_checks_enabled           1               ; Active service checks are enabled<br />
passive_checks_enabled          1               ; Passive service checks are enabled/accepted<br />
parallelize_check               1               ; Active service checks should be parallelized (Don&#8217;t disable)<br />
obsess_over_service             1               ; We should obsess over this service (if necessary)<br />
check_freshness                 0               ; Default is to NOT check service &#8216;freshness&#8217;<br />
notifications_enabled           1               ; Service notifications are enabled<br />
event_handler_enabled           1               ; Service event handler is enabled<br />
flap_detection_enabled          1               ; Flap detection is enabled<br />
process_perf_data               1               ; Process performance data<br />
retain_status_information       1               ; Retain status information across program restarts<br />
retain_nonstatus_information    1               ; Retain non-status information across program restarts<br />
register                        0               ; DONT REGISTER THIS DEFINITION - NOT A REAL SERVICE, JUST A TEMPLATE!<br />
}</p>
<p># Generic for all services<br />
define service{<br />
use                             generic-service<br />
name                            basic-service<br />
is_volatile                     0<br />
check_period                    24&#215;7<br />
max_check_attempts              15<br />
normal_check_interval           10<br />
retry_check_interval            2<br />
notification_interval           0<br />
notification_period             none<br />
register                        0<br />
}</p>
<p>#<br />
# PING<br />
#</p>
<p>define service{<br />
use                             basic-service<br />
name                            ping-service<br />
notification_options            n<br />
check_command                   check_ping!1000.0,20%!2000.0,60%<br />
register                        0<br />
}</p>
<p>define service{<br />
use                             ping-service<br />
service_description             PING<br />
contact_groups                  admin<br />
hostgroup_name                  klasiber<br />
#       host_name                       one_client<br />
}</li>
<li>Masukkan nama-nama file konfigurasi diatas dalam file /etc/nagios/nagios.cfg
<p>cfg_file=/etc/nagios/objects/commands.cfg<br />
cfg_file=/etc/nagios/objects/timeperiods.cfg<br />
cfg_file=/etc/nagios/contactgroups.cfg<br />
cfg_file=/etc/nagios/contacts.cfg<br />
cfg_file=/etc/nagios/hostgroups.cfg<br />
cfg_file=/etc/nagios/hosts.cfg<br />
cfg_file=/etc/nagios/services.cfg</li>
</ol>
<p>Dalam konfigurasi diatas dapat dijelaskan sebagai berikut:</p>
<ol>
<li>Jam kerja yang didefinisikan di timeperios ada 24&#215;7 untuk menandakan nyala/aktif terus dan jam kerja workhours untuk senin s.d jum&#8217;at</li>
<li>Kontak sebagai contoh ada 2 yaitu prayitna dan endro</li>
<li>Pengelompokan kontak yaitu ada admin dengan member prayitna dan trisna, dan staf_sw ada endro dan tri.</li>
<li>Untuk definisi template, baik itu di host maupun services diatas, ada baris &#8220;register  0&#8243; ini sebagai tanda tidak akan diproses (hanya template saja)</li>
<li>Host didefinisikan dari generic-host &#8211;&gt; basic-host &#8211;&gt; host</li>
<li>Untuk icon server dalam peta di nagios di set para baris &#8220;statusmap_image         windowsxp.gd2&#8243;</li>
<li>Untuk perintah cek apakah server nyala atau mati dtentukan oleh perintah pada baris &#8220;check_command           check-host-alive&#8221;</li>
<li>Untuk services yang di contohkan disini yaitu PING. kalau dilihat dalam commans yaitu :
<p>################################################################################<br />
#<br />
# SAMPLE HOST CHECK COMMANDS<br />
#<br />
################################################################################</p>
<p># This command checks to see if a host is &#8220;alive&#8221; by pinging it<br />
# The check must result in a 100% packet loss or 5 second (5000ms) round trip<br />
# average time to produce a critical error.<br />
# Note: Five ICMP echo packets are sent (determined by the &#8216;-p 5&#8242; argument)</p>
<p># &#8216;check-host-alive&#8217; command definition<br />
define command{<br />
command_name    check-host-alive<br />
command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5<br />
}</p>
<p>################################################################################<br />
# NOTE:  The following &#8216;check_&#8230;&#8217; commands are used to monitor services on<br />
#        both local and remote hosts.<br />
################################################################################</p>
<p># &#8216;check_ping&#8217; command definition<br />
define command{<br />
command_name    check_ping<br />
command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5<br />
}</li>
<li>Perintah diatas dapat dicoba secara langsung dengan cara<br />
/etc/lib/nagios/plugins/check_&#8230;..</li>
<li>Langkah terakhir sebelum menjalankan nagios yaitu cek apakah konfigurasi sudah sesuai.
<p>nagios -v /etc/nagios/nagios.cfg</p>
<p>dan hasilnya tidak boleh ada error, jika ada error maka harus disesuiakan.</li>
</ol>
<p>Dan hasilnya yaitu:</p>
<p><a href="http://kusprayitna.staff.uii.ac.id/files/2010/08/nagiosuii.png"><img class="alignnone size-full wp-image-590" src="http://kusprayitna.staff.uii.ac.id/files/2010/08/nagiosuii.png" alt="" width="500" height="318" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://kusprayitna.staff.uii.ac.id/2010/08/30/nagios-untuk-monitoring-status-server-maupun-layanan/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Mounting WebDAV di linux Centos</title>
		<link>http://kusprayitna.staff.uii.ac.id/2010/08/26/mounting-webdav-di-linux-centos/</link>
		<comments>http://kusprayitna.staff.uii.ac.id/2010/08/26/mounting-webdav-di-linux-centos/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 02:04:34 +0000</pubDate>
		<dc:creator>kusprayitna</dc:creator>
		
		<category><![CDATA[Others]]></category>

		<category><![CDATA[Centos]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[mount]]></category>

		<category><![CDATA[user space]]></category>

		<category><![CDATA[webdav]]></category>

		<guid isPermaLink="false">http://kusprayitna.staff.uii.ac.id/?p=588</guid>
		<description><![CDATA[WebDav merupakan salah satu protokol yang sering dipakai dalam layanan media penyimpanan selain FTP, File sharing dan lain sebagainya.
Adapun cara melakukan akses webdav hampir sama dengan protokol yang lain, dapat melalui web maupun sebagai user space, maksudnya seperti lokal file saja.
Untuk mengaktifkan user space webdav di centos dapat dilakukan dengan cara sebagi berikut :

Aktifkan repository [...]]]></description>
			<content:encoded><![CDATA[<p>WebDav merupakan salah satu protokol yang sering dipakai dalam layanan media penyimpanan selain FTP, File sharing dan lain sebagainya.</p>
<p>Adapun cara melakukan akses webdav hampir sama dengan protokol yang lain, dapat melalui web maupun sebagai user space, maksudnya seperti lokal file saja.</p>
<p>Untuk mengaktifkan user space webdav di centos dapat dilakukan dengan cara sebagi berikut :</p>
<ol>
<li>Aktifkan repository RMPFORGE</li>
<li>install davfs2<br />
<span id="more-588"></span><br />
# yum install davfs2<br />
Loaded plugins: fastestmirror, priorities<br />
Loading mirror speeds from cached hostfile<br />
* addons: ftp.oss.eznetsols.org<br />
* base: ftp.oss.eznetsols.org<br />
* extras: ftp.oss.eznetsols.org<br />
* rpmforge: apt.sw.be<br />
* updates: ftp.oss.eznetsols.org<br />
3394 packages excluded due to repository priority protections<br />
Setting up Install Process<br />
Resolving Dependencies<br />
&#8211;&gt; Running transaction check<br />
&#8212;&gt; Package davfs2.i386 0:1.4.6-1.el5.rf set to be updated<br />
&#8211;&gt; Finished Dependency Resolution</p>
<p>Dependencies Resolved</p>
<p>============================================================================================================================================================<br />
Package                            Arch                             Version                                     Repository                            Size<br />
============================================================================================================================================================<br />
Installing:<br />
davfs2                             i386                             1.4.6-1.el5.rf                              rpmforge                             221 k</p>
<p>Transaction Summary<br />
============================================================================================================================================================<br />
Install      1 Package(s)<br />
Update       0 Package(s)<br />
Remove       0 Package(s)</p>
<p>Total size: 221 k<br />
Is this ok [y/N]: y<br />
Downloading Packages:<br />
Running rpm_check_debug<br />
Running Transaction Test<br />
Finished Transaction Test<br />
Transaction Test Succeeded<br />
Running Transaction<br />
Installing     : davfs2                                                                                                                               1/1</p>
<p>Installed:<br />
davfs2.i386 0:1.4.6-1.el5.rf</p>
<p>Complete!</li>
<li>Mounting webdav
<p># mount -t davfs http://xxxx mount.point</p>
<p>maka dilakukan</p>
<p><strong># mount -t davfs http://192.168.7.7/repository/default/root /mnt</strong><br />
Please enter the username to authenticate with proxy<br />
192.168.7.11 or hit enter for none.<br />
Username:<br />
Please enter the password to authenticate user 011002103 with proxy<br />
192.168.7.11 or hit enter for none.<br />
Password:<br />
Please enter the username to authenticate with server<br />
http://192.168.6.6:8080/OpenKM/repository/default/okm:root or hit enter for none.<br />
Username: prayitna<br />
Please enter the password to authenticate user 011002103 with server<br />
http://192.168.6.6:8080/OpenKM/repository/default/okm:root or hit enter for none.<br />
Password:</p>
<p><strong># ls /mnt/</strong><br />
FE  FIAI  FK  FMIPA  FPSB  FTI  FTSP  lost+found  Rektorat</li>
</ol>
<p>Alhamdulillah berhasil &amp; semoga bermanfaat</p>
]]></content:encoded>
			<wfw:commentRss>http://kusprayitna.staff.uii.ac.id/2010/08/26/mounting-webdav-di-linux-centos/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Integrasi manajemen akses hotspot dengan radius</title>
		<link>http://kusprayitna.staff.uii.ac.id/2010/08/02/integrasi-manajemen-akses-hotspot-dengan-radius/</link>
		<comments>http://kusprayitna.staff.uii.ac.id/2010/08/02/integrasi-manajemen-akses-hotspot-dengan-radius/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 02:24:47 +0000</pubDate>
		<dc:creator>kusprayitna</dc:creator>
		
		<category><![CDATA[Centos]]></category>

		<category><![CDATA[Squid]]></category>

		<category><![CDATA[network]]></category>

		<category><![CDATA[bandwidth limit]]></category>

		<category><![CDATA[bandwidth quota]]></category>

		<category><![CDATA[hotspot]]></category>

		<category><![CDATA[integrasi]]></category>

		<category><![CDATA[ldap]]></category>

		<category><![CDATA[mikrotik]]></category>

		<category><![CDATA[mikrotik managemen]]></category>

		<category><![CDATA[raddb]]></category>

		<category><![CDATA[radius]]></category>

		<guid isPermaLink="false">http://kusprayitna.staff.uii.ac.id/?p=587</guid>
		<description><![CDATA[Sudah lama dokumen ini tercatat di notebook dan belum sempat ditulis ulang di blogs.
Alhamdulillah kemarin ada yang tanya dan saya jadi ingat untuk menulisnya.
Tahapan terakhir dalam instalasi hotspot dengan mikrotik yaitu integrasi manajeman hotspot dengan database radius, dimana database radius sudah dibahas di topik sebelumnya.
Tahapan yang dilakukan yaitu :

Pastikan user hotspot sudah bisa otentifikasi dengan [...]]]></description>
			<content:encoded><![CDATA[<p>Sudah lama dokumen ini tercatat di notebook dan belum sempat ditulis ulang di blogs.</p>
<p>Alhamdulillah kemarin ada yang tanya dan saya jadi ingat untuk menulisnya.</p>
<p>Tahapan terakhir dalam instalasi hotspot dengan mikrotik yaitu integrasi manajeman hotspot dengan database radius, dimana database radius sudah dibahas di topik sebelumnya.</p>
<p>Tahapan yang dilakukan yaitu :</p>
<ol>
<li>Pastikan user hotspot sudah bisa otentifikasi dengan LDAP server maupun MySQL Server bahkan jika diperlukan berdasarkan file. (lihat di <a href="http://kusprayitna.staff.uii.ac.id/2010/02/18/setup-freeradius-agar-bisa-otentifikasi-dengan-ldap/">setup-freeradius-agar-bisa-otentifikasi-dengan-ldap</a>)</li>
<li>Arahkan output radius berdasarkan setup yang sudah dibuat yaitu di MySQL Server, yaitu dengan cara edit file &#8216;/etc/raddb/users&#8217;<br />
<blockquote><p><strong>DEFAULT Auth-Type := LDAP<br />
<span style="color: #ffffff">&#8230;..</span>Exec-Program-Wait = &#8220;/etc/raddb/uiiauth %{User-Name} %{Calling-Station-Id}&#8221;</strong></p>
<p>dari sebelumnya</p>
<p>DEFAULT Auth-Type := LDAP<br />
<span style="color: #ffffff">&#8230;..</span>Fall-Through = 1</p></blockquote>
</li>
<li>Pastikan bahwa sebelum Exec-Program-Wait diatas adalah 1 buah karakter TAB bukan spasi</li>
<li>Buat script /etc/raddb/uiiauth (saya pilih perl) yang memiliki fitur sebagai berikut :<br />
- Input ada 2 parameter, yaitu user-name dan mac-address<br />
- output adalah parameter-parameter yang dikirim dan dimengerti radius</li>
</ol>
<p>Fungsi yang dibuat yaitu :<span id="more-587"></span></p>
<p>===========================================================================</p>
<p>Script sebagian di Edit untuk kerahasiaan data.</p>
<p>Keterangan script yaitu :</p>
<ol>
<li>Data user ada di LDAP (untuk civitas akademik UII dan di MySQL untuk tamu)</li>
<li>Data di LDAP di kelompokkan berdasar fakultas/prodi berdasarkan data di GidNumber</li>
<li>Periode dibuat per 6 bulan</li>
<li>Setiap user mempunyai profile berdasarkan fakultas/prodi</li>
<li>Profile setiap fakultas/prodi setiap periode dapat berbeda</li>
<li>Profile antara mahasiswa dan staff dibedakan</li>
</ol>
<p>===========================================================================</p>
<pre>#!/usr/bin/perl
# Otentifikasi tambahan untuk radius
#

$dbname = "dbi:mysql:radius_db:localhost:3306"; # radius database name
$dbuser = "radius";             # name of radius user
$dbpsw = "radius";              # password of radius user

$ldaphost = "127.0.0.1";
$ldapbind = "cn=Manager,dc=uii,dc=ac,dc=id";
$ldappsw  = "PasswordLDAP";
$ldapgroup = "gidNumber";
$ldapbase = "dc=uii,dc=ac,dc=id";
$LDAP = 0;

use DBI;
use Time::Local;
use Net::LDAP;

CekArgumen();
openDB();
GetCurrentPeriod();
GetTglPeriod();
GetUserGroup();
GetUserSuspend();
if ( $LDAP eq 1 )
   {
        GetUserProfileLDAP();
   }
if ( $LDAP eq 0 )
   {
        GetUserProfileMySQL();
   }
GetProfileData();
GetVoucherDataBW();
GetVoucherDataHours();
GetVoucherDataDate();
GetAccountingData();
closeDB();
SetReplay();

#----------------------------------
# Fungsi fungsi
#----------------------------------
sub openDB
{
   $dbh = DBI-&gt;connect($dbname, $dbuser, $dbpsw)
      or die("Couldn't connect");
}

sub closeDB
{
   $dbh-&gt;disconnect;
}
sub CekArgumen
{
    my $argc = $#ARGV + 1;

    if ($argc == 0)
    {
       print "uiiauth [mac]\n&#8221;;
       print &#8220;uiiauth [username] [mac]\n&#8221;;
       exit 1;
    }
    $uname = $ARGV[0];
    $debug = $ARGV[2];
}

sub Debug
{
         if ($debug) {print &#8220;$_[0]\n&#8221;;}
}

sub GetCurrentPeriod
{
    my $cursor = $dbh-&gt;prepare(&#8221; SELECT periodid from radcurrent limit 1&#8243;)
                or die(&#8221;Couldn&#8217;t prepare&#8221;);
    $cursor-&gt;execute;
        @row = $cursor-&gt;fetchrow;
        $periodid = @row[0];
    $cursor-&gt;finish;
    Debug(&#8221;Periode $periodid&#8221;);
}

sub GetTglPeriod
{
    my $cursor = $dbh-&gt;prepare(&#8221;SELECT periodstart, periodend from radperiod where periodid =&#8217;$periodid&#8217; limit 1&#8243;)
                or die(&#8221;Couldn&#8217;t prepare&#8221;);
    $cursor-&gt;execute;
        @row = $cursor-&gt;fetchrow;
        $periodstart = @row[0];
        $periodend   = @row[1];
    $cursor-&gt;finish;
    Debug(&#8221;Periode Start $periodstart \nPeriode End $periodend&#8221;);
}

sub GetUserGroup
{
   # tentukan user ini terdaftar di MySQL atau LDAP
   my $cursor = $dbh-&gt;prepare(&#8221;SELECT GroupName from usergroup where UserName=&#8217;$uname&#8217; limit 1&#8243;)
                or die(&#8221;Couldn&#8217;t prepare&#8221;);
   $cursor-&gt;execute;
        if ($cursor-&gt;rows == 1)
        {
                @row = $cursor-&gt;fetchrow;
                $ugroup = $row[0];
        }
   $cursor-&gt;finish;

   #jika tidak ada di MySQL, ambil dari LDAP
   if ($ugroup)
   {
        $LDAP = 0;
        Debug(&#8221;MySQL User&#8221;);
   }
   else
   {
        Debug(&#8221;LDAP User&#8221;);
       $LDAP = 1 ;
        # cari group user dari LDAP server
        # misal BSI = 1123  &#8211;&gt; 1 awalan staff (4:mahasiswa, 5:alumni) 1 rektorat 2 badan 3 bsi
        my $ldap = Net::LDAP-&gt;new($ldaphost);
        $ldap-&gt;bind($ldapbind, password=&gt;$ldappsw);
        my $mesg = $ldap-&gt;search(filter=&gt;&#8221;(uid=$uname)&#8221;, base=&gt;$ldapbase);
        @entries = $mesg-&gt;entries;

        foreach $entry (@entries) {
                $ugroup = $entry-&gt;get_value($ldapgroup);
                }
   }
    Debug(&#8221;User group $ugroup&#8221;);
}

sub GetUserSuspend
{
   # mencatat database user yang disuspend
   my $cursor = $dbh-&gt;prepare(&#8221;SELECT username, alasan, selesai from radsuspend where username=&#8217;$uname&#8217; and CURDATE()+CURTIME()&#8221;)
                or die(&#8221;Coludn&#8217;y prepare&#8221;);
   $cursor-&gt;execute;
        if ( $cursor-&gt;rows &gt;= 1 )
        {
                @row = $cursor-&gt;fetchrow;
                print &#8220;Reply-Message=\&#8221;Account suspended, sebab $row[1]\&#8221;";
                exit 1;
        }
   $cursor-&gt;finish;
}

#&#8212;&#8212;-
# fungsi untuk cari profile berdasarkan periode
#&#8212;&#8212;-

sub GetProfileByPeriodeGroup
{

    my $cursor = $dbh-&gt;prepare(&#8221;SELECT profid from radgroupperiode where periodid=&#8217;$periodid&#8217; and groupid=&#8217;$_[0]&#8216; &#8220;)
                or die(&#8221;Couldn&#8217;t prepare&#8221;);
    $cursor-&gt;execute;
        @row = $cursor-&gt;fetchrow;
        my $g = @row[0];
    return $g;
    $cursor-&gt;finish;
}

#&#8212;&#8212;-
# fungsi untuk cari profile berdasarkan group
#&#8212;&#8212;-

sub GetProfileByGroup
{
    #print &#8220;Get data profile group $_[0]&#8220;;
    my $cursor = $dbh-&gt;prepare(&#8221;SELECT profid from radgroup where groupid=&#8217;$_[0]&#8216; &#8220;)
                or die(&#8221;Couldn&#8217;t prepare&#8221;);
    $cursor-&gt;execute;
        @row = $cursor-&gt;fetchrow;
        my $g = @row[0];
    return $g;
    $cursor-&gt;finish;
}
#&#8212;&#8212;-
# fungsi untuk mencari profilenya
#&#8212;&#8212;-

sub GetUserProfileLDAP
{
    # cari user profile berdasar groupnya
    my $group1 = substr ($ugroup,1,1) . &#8220;00&#8243;;
    my $group2 = substr ($ugroup,1,2) . &#8220;0&#8243;;
    my $group3 = substr ($ugroup,1,3);

    # cari profile berdasar group dan periode
    $uprofile = GetProfileByPeriodeGroup($group3);
    if ($uprofile eq &#8220;&#8221;)
    {
      $uprofile = GetProfileByPeriodeGroup($group2);
      if ($uprofile eq &#8220;&#8221;)
      {
        $uprofile = GetProfileByPeriodeGroup($group1);
        if ($uprofile eq &#8220;&#8221;)
        {
        #cek default profile saja
            $uprofile = GetProfileByGroup($group3);
            if ($uprofile eq &#8220;&#8221;)
            {
              $uprofile = GetProfileByGroup($group2);
              if ($uprofile eq &#8220;&#8221;)
              {
                $uprofile = GetProfileByGroup($group1);
                if ($uprofile eq &#8220;&#8221;)
                {
                  if (length($uname) == <img src='http://kusprayitna.staff.uii.ac.id/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> { $uprofile = &#8216;default siswa&#8217;;}
                  elsif (length($uname) == 9) { $uprofile = &#8216;default&#8217;;}
                  else
                  {
                      print &#8220;Reply-Message=\&#8221;Group anda tidak diketahui\&#8221;";
                      exit 1;
                 }
               i}
              }
            }
        }
      }
    }

    # jika mahasiswa, maka mendapatkan bandwidth mahasiswa
    if ( substr($ugroup,0,1 ) == 4 ) {
        $uprofile = $uprofile . &#8221; siswa&#8221;;
    }
    if (  substr($ugroup,0,1 ) == 5  ) {
        print &#8220;Reply-Message=\&#8221;Your account has expired\&#8221;";
        exit 1;
    }
    Debug(&#8221;Profile $uprofile&#8221;);

}

sub GetUserProfileMySQL
{
   # profile mysql sama dengan nama group
   $uprofile = $ugroup;
}

#&#8212;&#8212;-
# fungsi untuk mengambil data profile
#&#8212;&#8212;-

sub GetProfileData
{
    my $cursor = $dbh-&gt;prepare(&#8221;SELECT downrate, uprate, limittraffic, uplimit,downlimit, limitexpiration, expiration,
                         limituptime, uptime , poolname
                         FROM radprofile
                         WHERE profid=&#8217;$uprofile&#8217;&#8221;)
                 or die(&#8221;Couldn&#8217;t prepare&#8221;);
    $cursor-&gt;execute;
    if ($cursor-&gt;rows == 1)
    {
        @row = $cursor-&gt;fetchrow;
        $profdownrate        = $row[0];
        $profuprate          = $row[1];
        $proflimittraffic    = $row[2];
        $uplimit             = $row[3];
        $downlimit           = $row[4];
        $proflimitexpiration = $row[5];
        $expiration          = $row[6];
        $proflimituptime     = $row[7];
        $uptimelimit         = $row[8];
        $poolname            = $row[9];
    }
    else
    {
        print &#8220;Reply-Message=\&#8221;Profile data not found\&#8221;";
        exit 1;
    }
    $cursor-&gt;finish;

   Debug(&#8221;Data rate $profdownrate / $profuprate quota $downlimit / $uplimit expiration $proflimitexpiration $expiration&#8221;);
}

#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
# Voucher untuk menambah bandwidth rate dan quota bandwidth saja
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;

sub GetVoucherDataBW
{
   # voucher bersifat menambah paket yang semestinya di dapat
   my $cursor = $dbh-&gt;prepare(&#8221;SELECT bytesdown, bytesup,downlimit, uplimit
                         FROM radpayment
                         WHERE periodid = &#8216;$periodid&#8217; and username=&#8217;$uname&#8217; and hours=0 and expiration =&#8217;0000-00-00 00:00:00&#8242;
                         and validated=&#8217;Y'&#8221;)
                or die(&#8221;Couldn&#8217;t prepare&#8221;);
   $cursor-&gt;execute;
   my   $jml = $cursor-&gt;rows;
        if ( $jml &gt;= 1 )
        {
            while (@row = $cursor-&gt;fetchrow)
            {
                $profdownrate   = $profdownrate + $row[0];
                $profuprate     = $profuprate   + $row[1];
                $uplimit        = $uplimit      + $row[3];
                $downlimit      = $downlimit    + $row[2];
                Debug(&#8221;Voucher BW: Periode $periodid Uplimit $row[3] -&gt; $uplimit  Downlimit $row[2] -&gt; $downlimit&#8221;);
           }
        }
        else {Debug(&#8221;No Voucher bandwidth&#8221;);}
   $cursor-&gt;finish;
}

#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
# Voucher untuk menambah jam akses, jika profilenya dibatasi jam aksesnya
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;

sub GetVoucherDataHours
{
   # voucher bersifat menambah paket yang semestinya di dapat
   my $cursor = $dbh-&gt;prepare(&#8221;SELECT bytesdown, bytesup,downlimit, uplimit, hours
                         FROM radpayment
                         WHERE periodid = &#8216;$periodid&#8217; and username=&#8217;$uname&#8217; and hours &gt; 0 and expiration = &#8216;0000-00-00 00:00:00&#8242;
                         and validated=&#8217;Y'&#8221;)
                or die(&#8221;Couldn&#8217;t prepare&#8221;);
   $cursor-&gt;execute;
   my   $jml = $cursor-&gt;rows;
        if ( $jml &gt;= 1 )
        {
            while (@row = $cursor-&gt;fetchrow)
            {
                $profdownrate   = $profdownrate + $row[0];
                $profuprate     = $profuprate   + $row[1];
                $uplimit        = $uplimit      + $row[3];
                $downlimit      = $downlimit    + $row[2];
                $uptimelimit    = $uptimelimit  + ($row[4]*60*60); # jam diubah dalam detik
                $proflimituptime = 1;
                Debug(&#8221;Voucher jam: Periode $periodid Uplimit $row[3] -&gt; $uplimit  Downlimit $row[2] -&gt; $downlimit jam $row[4] -&gt; $uptimelimit &#8220;);
           }
        }
        else {Debug(&#8221;No Voucher jam&#8221;);}
   $cursor-&gt;finish;
}
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
# Voucher untuk menambah tanggal ijin akses, jika profilenya dibatasi tanggal akses
#&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;

sub GetVoucherDataDate
{
   # voucher bersifat menambah paket yang semestinya di dapat
   my $cursor = $dbh-&gt;prepare(&#8221;SELECT bytesdown, bytesup,downlimit, uplimit, expiration
                         FROM radpayment
                         WHERE periodid = &#8216;$periodid&#8217; and username=&#8217;$uname&#8217; and hours = 0 and expiration &lt;&gt; &#8216;0000-00-00 00:00:00&#8242;
                         and validated =&#8217;Y&#8217;
                         order by expiration&#8221;)
                or die(&#8221;Couldn&#8217;t prepare&#8221;);
   $cursor-&gt;execute;
   my   $jml = $cursor-&gt;rows;
        if ( $jml &gt;= 1 )
        {
            while (@row = $cursor-&gt;fetchrow)
            {
                $profdownrate   = $profdownrate + $row[0];
                $profuprate     = $profuprate   + $row[1];
                $uplimit        = $uplimit      + $row[3];
                $downlimit      = $downlimit    + $row[2];
                $expiration     = $row[4];
                $proflimitexpiration = 1;
                Debug(&#8221;Voucher tanggal: Periode $periodid Uplimit $row[3] -&gt; $uplimit  Downlimit $row[2] -&gt; $downlimit&#8221;);
           }
        }
        else {Debug(&#8221;No Voucher tanggal&#8221;);}
   $cursor-&gt;finish;
}

sub GetAccountingData()
{
   my $cursor = $dbh-&gt;prepare(&#8221;SELECT SUM(AcctInputOctets), SUM(AcctOutputOctets), SUM(AcctSessionTime)
                         FROM radacct
                         WHERE
                                (AcctStartTime &gt;= &#8216;$periodstart&#8217; and AcctStopTime &lt;= &#8216;$periodend&#8217;)
                                and username=&#8217;$uname&#8217;&#8221;)
                or die(&#8221;Couldn&#8217;t prepare&#8221;);
   $cursor-&gt;execute;
        @row = $cursor-&gt;fetchrow;
        $mt_recv_limit = $uplimit - $row[0];
        $mt_xmit_limit = $downlimit - $row[1];
        $acctsesstime  = $uptimelimit - $row[2];
        Debug(&#8221;Accounting data down $downlimit - $row[1] -&gt; $mt_xmit_limit   up $uplimit - $row[0] -&gt; $mt_recv_limit time $uptimelimit - $row[2] -&gt; $acctsesstime  &#8220;);
   $cursor-&gt;finish;
}

sub SetReplay
{

   $mt_timeout = 0;

   # check expiration limit

   if ($proflimitexpiration == 1)
   {
        $year = substr $expiration, 0, 4;
        $month = substr $expiration, 5, 2;
        $day = substr $expiration, 8, 2;
        $expiresecs = timelocal(0, 0, 0, $day, $month-1, $year);
        $mt_timeout = $expiresecs - time;

        # check for session timeout limit

        if ($mt_timeout &lt;= 0)
        {
                print &#8220;Reply-Message=\&#8221;Your account has expired\&#8221;";
                exit 1;
        }
        else
        {
                print &#8220;Session-Timeout=&#8221; . $mt_timeout . &#8220;, &#8220;;
        }
   }

   # check uptime limit

   if ($proflimituptime == 1)
   {
        $mt_timeout = $acctsesstime;
        if ($mt_timeout &lt;= 0)
        {
                print &#8220;Reply-Message=\&#8221;You have no more online time left\&#8221;";
                exit 1;
        }
        else
        {
                print &#8220;Session-Timeout=&#8221; . $mt_timeout . &#8220;, &#8220;;
        }
   }

   # check traffic limits

   if ($proflimittraffic == 1)
   {
        # check download limit
        if ($mt_xmit_limit &lt;= 0)
        {
                print &#8220;Reply-Message=\&#8221;Download limit reached\&#8221;";
                exit 1;
        }
        else
        {
                print &#8220;Mikrotik-Xmit-Limit=&#8221; . $mt_xmit_limit . &#8220;, &#8220;;
        }
        # check upload limit
        if ($mt_recv_limit &lt;= 0)
        {
                print &#8220;Reply-Message=\&#8221;Upload limit reached\&#8221;";
                exit 1;
        }
        else
        {
                print &#8220;Mikrotik-Recv-Limit=&#8221; . $mt_recv_limit . &#8220;, &#8220;;
        }
   }

   # set datarate

   print &#8220;Ascend-Data-Rate=&#8221; . $profuprate . &#8220;, &#8220;;
   print &#8220;Ascend-Xmit-Rate=&#8221; . $profdownrate . &#8220;, &#8220;;

   # select dhcp pool

   if ($poolname)
   {
        print &#8220;Framed-Pool=&#8221; . $poolname . &#8220;, &#8220;;
   }

   exit 0;
}</pre>
<p>Contoh jika scrip dijalankan yaitu :</p>
<p># ./uiiauth 011002xxx   ==&gt; 1 argumen</p>
<p>Mikrotik-Xmit-Limit=3472594842, Mikrotik-Recv-Limit=1733399421, Ascend-Data-Rate=40960, Ascend-Xmit-Rate=90112,</p>
<p># ./uiiauth 011002xxx 1   ==&gt; 2 argumen (dengan mac)</p>
<p>Mikrotik-Xmit-Limit=3472594842, Mikrotik-Recv-Limit=1733399421, Ascend-Data-Rate=40960, Ascend-Xmit-Rate=90112,</p>
<p># ./uiiauth 011002xxx 1 1  ==&gt; 3 argumen (debug)</p>
<p>Periode 20092<br />
Periode Start 2009-08-01 00:00:00<br />
Periode End 2010-07-31 23:59:59<br />
LDAP User<br />
User group<br />
Profile default<br />
Data rate 90112 / 40960 quota 5368709120 / 1073741824 expiration 0 0000-00-00 00:00:00<br />
Voucher BW: Periode 20092 Uplimit 1073741824 -&gt; 2147483648  Downlimit 1073741824 -&gt; 6442450944<br />
No Voucher jam<br />
No Voucher tanggal<br />
Accounting data down 6442450944 - 2969856102 -&gt; 3472594842   up 2147483648 - 414084227 -&gt; 1733399421 time 0 - 1697285 -&gt; -1697285<br />
Mikrotik-Xmit-Limit=3472594842, Mikrotik-Recv-Limit=1733399421, Ascend-Data-Rate=40960, Ascend-Xmit-Rate=90112,</p>
<p>Demikian , semoga bermanfaat</p>
]]></content:encoded>
			<wfw:commentRss>http://kusprayitna.staff.uii.ac.id/2010/08/02/integrasi-manajemen-akses-hotspot-dengan-radius/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Menghilangkan batasan panjang hasil LDAPSEARCH</title>
		<link>http://kusprayitna.staff.uii.ac.id/2010/07/12/menghilangkan-batasan-panjang-hasil-ldapsearch/</link>
		<comments>http://kusprayitna.staff.uii.ac.id/2010/07/12/menghilangkan-batasan-panjang-hasil-ldapsearch/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 08:25:01 +0000</pubDate>
		<dc:creator>kusprayitna</dc:creator>
		
		<category><![CDATA[LDAP]]></category>

		<category><![CDATA[ldapsearch]]></category>

		<category><![CDATA[max width]]></category>

		<category><![CDATA[sed replace linefeed]]></category>

		<guid isPermaLink="false">http://kusprayitna.staff.uii.ac.id/?p=586</guid>
		<description><![CDATA[Membaca data di LDAP server menggunakan perintah ldapsearch secara default ada pembatasan panjang hasil, yaitu 80 karakter.
Apabila data lebih dari 80 karakter maka akan otomatis dipotong dan di buat baris dibawahnya dengan penambahan satu spasi.
Aplikasi LDAP  seperti ldapmodify secara otomatis sudah mengenali fitur ini, akan tetapi bagi user yang ingin membaca data hasil ldapsearch akan [...]]]></description>
			<content:encoded><![CDATA[<p>Membaca data di LDAP server menggunakan perintah ldapsearch secara default ada pembatasan panjang hasil, yaitu 80 karakter.</p>
<p>Apabila data lebih dari 80 karakter maka akan otomatis dipotong dan di buat baris dibawahnya dengan penambahan satu spasi.</p>
<p>Aplikasi LDAP  seperti ldapmodify secara otomatis sudah mengenali fitur ini, akan tetapi bagi user yang ingin membaca data hasil ldapsearch akan cukup mendapat kerepotan.</p>
<p>Seperti kasus saya dalam mebaca data, contoh :</p>
<blockquote><p>objectClass: top<br />
objectClass: person<br />
objectClass: organizationalPerson<br />
objectClass: inetOrgPerson<br />
objectClass: posixAccount<br />
objectClass: shadowAccount<br />
objectClass: mailUser<br />
businessCategory: AD<br />
storageBaseDirectory: /var/vmail/vmail01<br />
homeDirectory: /var/vmail/vmail01/uii.ac.id/0/01/011/011002103-2010.07.12.21.0<br />
4.53<br />
accountStatus: active<br />
mailMessageStore: uii.ac.id/0/01/011/011002103-2010.07.12.21.04.53</p></blockquote>
<p>Ketika saya membaca atribut homeDirectory data yang terbaca akan salah.</p>
<p>Solusi :<span id="more-586"></span><br />
Apabila dalam hasil ldapsearch diawali dengan spasi 1x, maka ini merupakan kelanjutan dari data sebelumnya, sehingga diperlukan proses penggantian jika ditemukan linefeed dan diikuti spase 1x maka dihapus atau diganti dengan karakter kosong</p>
<p><strong>cat data.tmp | sed &#8216;N;N;N;s/\n\s//g&#8217;</strong></p>
<ul>
<li>file hasil ldapsearch disimpan dalam file data.tmp</li>
<li>diedit menggunakan sed dengan parameter sebagai berikut :<br />
N = jumlah baris yang akan ikut dibaca (3x)<br />
\n=linefeed<br />
\s=spasi</li>
<li></li>
</ul>
<p>Semoga dapat membantu</p>
]]></content:encoded>
			<wfw:commentRss>http://kusprayitna.staff.uii.ac.id/2010/07/12/menghilangkan-batasan-panjang-hasil-ldapsearch/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Memonitor log server dengan OSSEC</title>
		<link>http://kusprayitna.staff.uii.ac.id/2010/07/06/memonitor-log-server-dengan-ossec/</link>
		<comments>http://kusprayitna.staff.uii.ac.id/2010/07/06/memonitor-log-server-dengan-ossec/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 03:51:06 +0000</pubDate>
		<dc:creator>kusprayitna</dc:creator>
		
		<category><![CDATA[ossec]]></category>

		<category><![CDATA[security]]></category>

		<category><![CDATA[alert]]></category>

		<category><![CDATA[localfile]]></category>

		<category><![CDATA[osec.conf]]></category>

		<category><![CDATA[ossec hids]]></category>

		<category><![CDATA[rootkit]]></category>

		<category><![CDATA[syscheck]]></category>

		<guid isPermaLink="false">http://kusprayitna.staff.uii.ac.id/?p=585</guid>
		<description><![CDATA[Setelah berhasil melaukan instalasi OSSEC, baik itu server ataupun agent, maka tahapan yang tidak kalah penting adalah melakukan monitoring lognya.
Pada saat selesai hanya beberapa atau default log yang dilakukan analisa.
1.  syschek
Melakukan cek semua kemungkinan yang ada di suatu folder.

frequency yaitu seberapa sering dilakukan pengecekan (dalam detik)
directories yaitu direktori yang dilakukan pengecekan
Opsi tambahan yaitu :
- check_all  [...]]]></description>
			<content:encoded><![CDATA[<p>Setelah berhasil melaukan instalasi OSSEC, baik itu server ataupun agent, maka tahapan yang tidak kalah penting adalah melakukan monitoring lognya.</p>
<p>Pada saat selesai hanya beberapa atau default log yang dilakukan analisa.</p>
<p>1.  <strong>syschek</strong></p>
<p>Melakukan cek semua kemungkinan yang ada di suatu folder.</p>
<ul>
<li>frequency yaitu seberapa sering dilakukan pengecekan (dalam detik)</li>
<li>directories yaitu direktori yang dilakukan pengecekan<br />
Opsi tambahan yaitu :<br />
- check_all  : di cek semua kemungkinan<br />
- real-time  : dilaporkan secara real time</li>
<li>ignore yaitu file atau direktori yang diabakan dalam pengecekan</li>
</ul>
<p><span id="more-585"></span>&lt;syscheck&gt;<br />
&lt;!&#8211; Frequency that syscheck is executed - default to every <strong>22 hours</strong> &#8211;&gt;<br />
&lt;<strong>frequency</strong>&gt;<strong>21600</strong>&lt;/frequency&gt;</p>
<p>&lt;!&#8211; Directories to check  (perform all possible verifications) &#8211;&gt;<br />
&lt;<strong>directories </strong>check_all=&#8221;yes&#8221;&gt;/etc,/usr/bin,/usr/sbin&lt;/directories&gt;<br />
&lt;<strong>directories </strong>check_all=&#8221;yes&#8221;&gt;/bin,/sbin&lt;/directories&gt;</p>
<p>&lt;<strong>ignore</strong>&gt;/etc/mtab&lt;/ignore&gt;<br />
&lt;ignore&gt;/etc/mnttab&lt;/ignore&gt;<br />
&lt;ignore&gt;/etc/hosts.deny&lt;/ignore&gt;<br />
&lt;/syscheck&gt;</p>
<p>2. <strong>white list</strong></p>
<p>Adalah berisi daftar IP yang diabaikan saat ada aktif respon. Aktf repon ini terpace oleh aktifitas level tinggi</p>
<p>&lt;global&gt;<br />
&lt;<strong>white_list</strong>&gt;127.0.0.1&lt;/white_list&gt;<br />
&lt;white_list&gt;^localhost.localdomain$&lt;/white_list&gt;<br />
&lt;/global&gt;</p>
<p>3. <strong>Alert</strong></p>
<p>Seting ini menentukan level alert minimal yang diinformasikan ke user, misalnya melalui OSSED Web User Interface. Misalnya 5, maka alert level 4 dan lebih rendah akan tidak diinfomasikan ke user. Default yaitu 1</p>
<p>&lt;alerts&gt;<br />
&lt;log_alert_level&gt;<strong>1</strong>&lt;/log_alert_level&gt;<br />
&lt;/alerts&gt;</p>
<p>4. <strong>localfile</strong></p>
<p>Adalah daftar file log yang akan dilakukan monitoring.  Sebagai default adalah 3 file log, yaitu message, secure dan maillog.</p>
<p>Penambahan file yang dimonitor harus dilakukan satu persatu (tidak bisa menggunakan tanda * ), misalnya dalam hosting website, maka penambahan log yang dimonitor setiap domain harus dilakukan satu persatu.</p>
<p>&lt;!&#8211; Files to monitor (localfiles) &#8211;&gt;</p>
<p>&lt;localfile&gt;<br />
&lt;log_format&gt;syslog&lt;/log_format&gt;<br />
&lt;location&gt;/var/log/messages&lt;/location&gt;<br />
&lt;/localfile&gt;</p>
<p>&lt;localfile&gt;<br />
&lt;log_format&gt;syslog&lt;/log_format&gt;<br />
&lt;location&gt;/var/log/secure&lt;/location&gt;<br />
&lt;/localfile&gt;</p>
<p>&lt;localfile&gt;<br />
&lt;log_format&gt;syslog&lt;/log_format&gt;<br />
&lt;location&gt;/var/log/maillog&lt;/location&gt;<br />
&lt;/localfile&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://kusprayitna.staff.uii.ac.id/2010/07/06/memonitor-log-server-dengan-ossec/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
