Posts filed under ‘Linux’

I/O Programming: Mengatur Lampu LED di Keyboard

Belakangan ini saya kerap bertemu dengan seorang dosen yang mengajar mata kuliah sistem operasi, dan kami sering terlibat dalam diskusi menarik.  Mengajarkan materi sistem operasi yang berorientasi praktek membutuhkan tantangan lebih besar.  Hal ini tidaklah berlebihan, karena kebanyakan teori sistem operasi tidak cukup berguna untuk dipakai dalam membuat sistem operasi.  Misalnya, dalam mata kuliah sistem operasi, hampir tidak pernah membahas tentang keyboard controller.  Tetapi, pada kenyataannya, pemahaman akan cara kerja keyboard controller wajib dibutuhkan dalam pembuatan sebuah sistem operasi.

Untuk membaca dan menulis informasi ke keyboard controller, seseorang perlu membaca dan menulis port 0×60 dan 0×64.  Dengan membaca port 0×64, programmer dapat mengetahui status keyboard controller.  Dengan menulis pada port 0×60, seseorang dapat mengirimkan perintah pada keyboard controller.  Misalnya, dengan mengirim nilai 0xED pada port 0×60, programmer dapat mengatur indikator LED apa saja yang nyala yang diwakili dengan nilai berikutnya yang dikirim pada port 0×60.

Pertanyaan pertama yang harus dijawab adalah platform apa yang harus dipergunakan oleh mahasiswa?  Bahasa pemograman yang dipergunakan dapat berupa assembly dan C, dimana bahasa C adalah pilihan yang lebih masuk akal.    Bila menggunakan platform Windows, maka mahasiswa akan memakai Visual C++, sebuah tools standar untuk pemograman low-level di Windows.  Sayangnya, penggunaan fungsi _inp() dan _outp() di Visual C++ dibatasi hanya pada pemograman driver saja.   Hal ini dilakukan dengan alasan keamanan, sehingga tidak sembarangan aplikasi boleh melakukan akses I/O yang notabene dapat berbahaya sekali.  Pilihan lain adalah menggunakan platform lain, misalnya menggunakan sistem operasi Linux.  Pada Linux, tersedia fungsi ioperm() yang memungkinkan program biasa melakukan operasi I/O.  Syaratnya adalah program tersebut dijalankan dengan hak akses super user.

Berikut adalah sebuah contoh program C di Linux yang membuat LED keyboard (LED indikator num lock, caps lock, dan scroll lock) menyala berurutan:

#include <stdio.h>
#include <unistd.h>
#include <sys/io.h>

void kirimCommand(char command) {
  char c = 0;
  while (1) {
    c = inb(0x64);
    if ((c&2)==0) break;
  }
  outb(command, 0x60);
}

int main() {
  if (ioperm(0x60,5,1)) {
    printf("Program tidak memiliki hak akses\n");
    return -1;
  }
  printf("Perhatikan indikator LED di keyboard!\n");
  int i=0;
  char statusLED = 1;
  while (i<100) {
    kirimCommand(0xED);
    kirimCommand(statusLED);
    if (statusLED==4) statusLED=1; else statusLED<<=1;
    i++;
    sleep(1);
  }
}

Pada fungsi kirimCommand(char command) di atas, setiap kali sebelum mengirim command ke port 0×60, program akan memeriksa apakah buffer input sudah kosong.  Hal ini dilakukan dengan membaca status keyboard controller di port 0×64, dan memeriksa isi dari bit 2.

Variabel statusLED berisi pola LED yang akan dinyalakan nantinya.  Hanya tiga bit yang dipakai, yaitu bit 0 untuk LED Scroll Lock, bit 1 untuk LED Caps Lock, dan bit 2 untuk LED Num Lock.

Setelah itu, program dapat di-compile dengan gcc dan dijalankan, dengan memberikan perintah seperti:

$ gcc -o keyboard keyboard.c
$ sudo ./keyboard
[sudo] password for user:
Perhatikan indikator LED di keyboard!

29 Oktober 2011 at 3:12 PM Tinggalkan Komentar

Memakai Snort Sebagai IPS Di Notebook

Kedengarannya memang aneh, kenapa harus menjalankan Snort di notebook?  Bukankah biasanya Snort IPS dijalankan pada komputer server yang memiliki dua network card (NIC) terpisah?  Tapi, bukanlah hal mustahil untuk menjalankan Snort tanpa melalui bridging (dua network card).  Artikel ini mengasumsikan penggunaan DAQ module NFQ seperti yang dituliskan di artikel sebelumnya.  Artikel ini juga mengasumsikan penggunaan Linux UBuntu 10 LTS.  Setelah Snort berhasil dikonfigurasi dan dijalankan dengan baik, yang perlu dilakukan sekarang adalah melakukan pengaturan iptables.

Jika memakai Snort sebagai IPS pada notebook atau komputer yang dipakai untuk berselancar di Internet, pengguna harus memilih untuk mengorbankan rules di iptables atau tidak:

  • Seluruh packet yang masuk pertama kali akan diterima oleh modul Netfilter di Ubuntu.  Untuk pendeteksian secara maksimal, packet yang masuk dapat dengan segera dialihkan ke Netfilter Queue guna diolah oleh Snort.  Akan tetapi, packet tersebut tidak dicocokkan satu per satu dengan rules iptables lainnya lagi.
  • Atau, packet yang masuk dapat di-saring dulu dengan rules di iptables, baru kemudian packet yang lolos dialihkan ke Netfilter Queue untuk diolah oleh Snort.  Kekurangannya adalah Snort tidak memperoleh packet yang mengidentifikasikan serangan secara lengkap, karena beberapa packet mungkin sudah disaring terlebih dahulu oleh Netfilter.

Apapun metode yang dipakai, semuanya melibatkan penambahan rules di iptables untuk mengalihkan packet ke Netfilter Queue.  Yang membedakan adalah urutan/posisi rule tersebut.  Rules tersebut terlihat seperti:

iptables -A INPUT -j QUEUE
iptables -A OUTPUT -j QUEUE

Tentunya pengguna dapat menambahkan parameter lainnya sesuai kebutuhan dan selera, tetapi yang harus ada adalah -j QUEUE yang menunjukkan bahwa packet akan ditampung oleh Netfilter Queue.  Bila tidak aplikasi yang membaca queue, misalnya Snort sedang tidak berjalan, maka packet akan di-drop.

Bagi yang menggunakan ufw (uncomplicated firewall),  dapat langsung mengedit file yang ada di /etc/ufw/after.rules atau /etc/ufw/before.rules.  Jangan lupa mematikan dan menyalakan kembali firewall setelah melakukan perubahan pada file.  Sebagai contoh, seseorang dapat menambahkan baris berikut pada /etc/ufw/after.rules:

-A ufw-after-input -j QUEUE
-A ufw-after-output -j QUEUE

Langkah selanjutnya, karena Snort dipakai pada “perangkat desktop” yang menjalankan banyak program sehari-hari dan belum tentu stabil, pengguna sebaiknya menambahkan program Snort pada daftar daemo yang diproses oleh Upstart di Ubuntu.  Upstart adalah sebuah program bawaan di Ubuntu yang memiliki fungsi seperti /etc/inittab di UNIX.  Upstart dapat memantau proses Snort, dan bila oleh suatu hal, Snort harus berhenti dijalankan, Upstart akan secara otomatis “menghidupkan” Snort kembali.

Buat sebuah file baru di direktori /etc/init, misalnya /etc/init/snort.conf yang memiliki isi seperti berikut ini:

start on started ufw
stop on stopping ufw
respawn
exec /usr/bin/snort --daq nfq -D -c /etc/snort.conf -Q

Pada konfigurasi di atas, Snort akan dijalankan setelah ufw, dan akan dimatikan sebelum ufw dimatikan.  Hal ini dilakukan karena Snort memakai modul NFQ yang berkaitan erat dengan iptables.  Jangan lupa untuk menyertakan respawn yang berarti proses akan secara otomatis dihidupkan kembali bila tidak dimatikan melalui Upstart.

Setelah ini, restart komputer, dan berikan perintah seperti:

#initctl list
...
snort start/running, process 2084
...

Hal ini memperlihatkan bahwa Upstart telah menjalankan Snort secara otomatis begitu notebook/komputer rumah dijalankan, dan akan terus menjaga agar proses Snort senantiasa aktif.

17 Agustus 2011 at 5:02 PM Tinggalkan Komentar

Snort IPS Di Ubuntu 10 LTS

Instalasi Snort di Ubuntu 10 LTS memang tidak sulit, cukup mengikuti langkah step-by-step yang disediakan oleh pembuatnya yang dapat di-download dalam bentuk PDF di http://www.snort.org/assets/158/011-snortinstallguide2905.pdf.  Akan tetapi, setelah mengikuti langkah-langkah tersebut, Snort berjalan sebagai IDS (Intrusion Detection System).  Sebagai IDS, Snort hanya menganalisa packet yang ada dan memberikan peringatan bila terjadi serangan dari hacker.  Jika seperti ini kasusnya, IDS dikatakan bekerja dalam modus passive.   Bila ingin Snort memblokir upaya serangan dan memberikan respon atas serangan hacker, maka Snort harus bekerja sebagai IPS (Intrusion Prevention System).  Snort akan berfungsi sebagai IPS bila berjalan dalam modus inline.

Bila dijalankan secara standard, Snort akan memakai DAQ module bernama pcap.   DAQ Module pcap ini tidak mendukung modus inline, sehingga administrator yang ingin menjalankan Snort sebagai IPS harus memakai DAQ module lain.  Untuk melihat apa saja DAQ module yang ada, berikan perintah seperti:

# snort --daq-list
Available DAQ modules:
pcap(v3): readback live multi unpriv
ipfw(v2): live inline multi unpriv
dump(v1): readback live inline multi unpriv
afpacket(v4): live inline multi unpriv

Hasil output tersebut menunjukkan bahwa pcap tidak mendukung modus inline.  Salah DAQ Module bawaan, yaitu NFQ yang memakai Netfilter, sama sekali tidak terlihat.  Padahal Netfilter dan iptables merupakan dasar yang membentuk fungsi packet filtering di kernel Linux.

Langkah pertama yang harus dilakukan agar DAQ Module nfq dibuat adalah dengan meng-install paket libnetfilter-queue-dev (beserta paket yang dibutuhkanya seperti libnetfilter-queue1 dan lainnya).   Di Ubuntu 10 LTS,  paket tersebut masih belum ter-install sehingga administrator perlu meng-install dengan menggunakan apt-get (berbasis console) ataupun Ubuntu Software Center (berbasis GUI).

Langkah berikutnya, upgrade libpcap menjadi versi terbaru, yang dapat didownload di www.tcpdump.org.  Ubuntu 10 LTS datang dengan repository yang berisi libpcap0.8.  Versi libpcap ini memiliki bug yang menyebabkan Snort akan berhenti berjalan dan memberikan pesan kesalahan yang berkaitan dengan log_tcpdump dimana pesan-nya adalah Snort tidak dapat menulis pada file /var/log/snort (atau lokasi direktori log yang telah ditentukan sebelumnya).  Pesan kesalahan ini cukup menipu, karena sama sekali tidak berhubungan dengan permission di direktori tersebut, dan akan hilang setelah meng-upgrade ke versi libpcap yang lebih baru, misalnya libpcap-1.1.1.  Karena repository Ubuntu 10 LTS tidak menunjukkan adanya upgrade versi terbaru dari libpcap, download source secara manual, kemudian jalankan script GNU Autoconf yang disediakan, seperti:

# ./configure --prefix=/usr
...
config.status: creating pcap_open_dead.3pcap
config.status: creating pcap_open_offline.3pcap
config.status: creating config.h
# make
...
mv pcap-config.tmp pcap-config
chmod a+x pcap-config
# make install
...

Langkah berikutnya adalah menjalankan script GNU Autoconf untuk DAQ.   Source-nya dapat di-download di http://www.snort.org/downloads/860.  Seperti biasa, jalankan dahulu script configure:

# ./configure
...
Build AFPacket DAQ module.. : yes
Build Dump DAQ module...... : yes
Build IPFW DAQ module...... : yes
Build IPQ DAQ module....... : no
Build NFQ DAQ module....... : yes
Build PCAP DAQ module...... : yes

Pastikan bahwa pada NFQ DAQ module terdapat tulisan yes sehingga nantinya module NFQ akan dibuat.  Setelah itu, seperti biasa, berikan perintah make dan make install.

Berikutnya, lakukan hal yang sama dengan source Snort yang dapat di-download di http://www.snort.org/downloads/867.  Berikan perintah seperti:

# ./configure --enable-ipv6 --enable-gre --enable-mpls --enable-targetbased \ --enable-decoder-preprocessor-rules --enable-ppm --enable-perfprofiling \ --enable-zlib --enable-active-response --enable-normalizer --enable-reload \ --enable-react --enable-flexresp3
...
# make
...
# make install
...

Langkah terakhir adalah menjalankan Snort dengan argumen khusus sehingga ia bekerja dalam modus inline sebagai IPS.  Sebagai contoh, Snort dapat dijalankan dengan parameter seperti berikut ini:

# snort --daq nfq -c /etc/snort/snort.conf -Q
...
nfq DAQ configured to inline.
Reload thread starting...
...

Option –daq menentukan module DAQ yang akan dipakai Snort, yaitu NFQ.  Option -c menentukan lokasi file konfigurasi Snort yang tentunya bisa berbeda-beda sesuai kebiasan setiap administrator.  Option -Q menunjukkan bahwa Snort harus bekerja dalam modus inline.  Bila Snort bekerja sebagai IPS, akan terdapat baris yang isinya seperti “nfq DAQ configured to inline.

16 Agustus 2011 at 10:06 PM Tinggalkan Komentar

Pengenalan Snort

Salah satu aplikasi Linux yang dapat dipakai untuk meningkatkan keamanan komputer adalah Snort.  Secara garis besar, Snort adalah sebuah program yang memiliki tiga fungsi atau tiga modus operasi.  Snort dapat dipakai dalam packet sniffer mode sehingga bekerja sebagai sniffer sama seperti Wireshark.  Sama seperti Wireshark, Snort juga dapat menyimpan setiap packet yang di-capture ke dalam media penyimpan di modus packet logger mode.  Akan tetapi berbeda dengan Wireshark, Snort dapat dipakai sebagai komponen NIDS dengan menjalankannya pada Network Intrusion Detection System (NIDS) mode.  Pada modus yang terakhir ini, Snort akan menganalisa packet  berdasarkan rule yang ada untuk mengenali adanya upaya serangan hacker.

Untuk memulai menggunakan Snort, download requirement serta source Snort, kemudian build & install.  Bagi yang memakai distro Ubuntu, libdnet di distro tersebut adalah library yang berbeda dengan yang dibutuhkan Snort. Di Ubuntu, libdnet adalah DECNet libraries, sementara yang dibutuhkan oleh Snort diganti namanya menjadi libdumpnet.  Sebaiknya download source dari Google Code, kemudian install ke lokasi /usr, bukan /usr/local.  Caranya adalah dengan menambahkan argumen - -prefix=/usr pada saat memanggil script configure.

Berikut adalah contoh menjalankan Snort sebagai packet sniffer:

$ sudo snort -v
Running in packet dump mode

        --== Initializing Snort ==--
Initializing Output Plugins!
pcap DAQ configured to passive.
Acquiring network traffic from "eth0".
Decoding Ethernet

        --== Initialization Complete ==--

   ,,_     -*> Snort! <*-
  o"  )~   Version 2.9.0.5 (Build 135)
   ''''    By Martin Roesch & The Snort Team: http://www.snort.org/snort/snort-team
           Copyright (C) 1998-2011 Sourcefire, Inc., et al.
           Using libpcap version 1.1.1
           Using PCRE version: 8.12 2011-01-15

Commencing packet processing (pid=31839)
06/05-12:07:03.524481 192.168.1.200:45263 -> 192.168.1.5:53
UDP TTL:64 TOS:0x0 ID:63753 IpLen:20 DgmLen:73 DF
Len: 45
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

06/05-12:07:03.582863 192.168.1.5:53 -> 192.168.1.200:45263
UDP TTL:255 TOS:0x0 ID:4887 IpLen:20 DgmLen:186 DF
Len: 158
...
===============================================================================
Run time for packet processing was 27.619079 seconds
Snort processed 19 packets.
Snort ran for 0 days 0 hours 0 minutes 27 seconds
   Pkts/sec:            0
===============================================================================
Packet I/O Totals:
   Received:           19
   Analyzed:           19 (100.000%)
    Dropped:            0 (  0.000%)
   Filtered:            0 (  0.000%)
Outstanding:            0 (  0.000%)
   Injected:            0
===============================================================================
... 

Untuk mencatat rekaman packet ke dalam file teks, Snort bisa dijalankan dengan memberikan perintah seperti:

snort -dev -l ./log

Perintah di atas akan menulis rekaman packet ke dalam direktori log (direktori ini harus sudah dibuat sebelumnya).

Dan untuk modus NIDS, tambahan argumen -c yang merujuk ke file konfigurasi Snort, seperti berikut ini:

snort -d -l ./log -c snort.conf

Pada perintah di atas, file konfigurasinya bernama snort.conf.

Untuk menjalankan Snort sebagai daemon (background process yang terus berjalan), tambahkan argumen -D seperti pada contoh ini:

snort -d -l /var/log/snort.log -c /etc/snort.conf -D

Bicara soal file konfigurasi, berikut adalah contoh isi file konfigurasi:

var LOG_IP 100.10.12.13
alert tcp $LOG_IP any -> any any (msg: "Akses Dari Dia"; sid:1;)

File konfigurasi di atas menyebabkan Snort menghasilkan alert dalam file bernama alert setiap kali IP 100.10.12.13 melakukan akses TCP, dengan pesan berupa “Akses Dari Dia”.  Tentu saja ini adalah contoh konfigurasi sederhana yang tidak banyak berguna, akan tetapi cukup untuk menunjukkan syntax file konfigurasi Snort yang lumayan rumit.  Contoh di atas mengandung sebuah variabel IP bernama LOG_IP.  Variabel tersebut dapat digunakan dengan menulis $LOG_IP yang akan disubstitusi dengan nilai yang sesungguhnya.

Argumen yang biasanya diberikan saat memanggil Snort juga dapat dituliskan ke file konfigurasi sehingga tidak perlu diberikan secara manual pada saat menjalankan Snort, seperti pada contoh berikut:

#sama dengan argumen -D
config daemon

#sama dengan argumen -d
config dump_payload

#sama dengan argumen -l
config logdir: /var/log/snort

var LOG_IP 192.168.1.2
alert tcp $LOG_IP any -> any any (msg: "Akses Dari Dia"; sid:1;)

Gunakan preprocessor untuk memakai processor yang sudah disediakan oleh Snort.  Sebagai contoh, untuk mendeteksi terjadinya port scanning, tambahkan konfigurasi berikut:

preprocessor stream5_global:\
        track_tcp yes, track_udp yes, track_icmp yes

preprocessor stream5_tcp:\
        policy first

preprocessor stream5_udp

preprocessor stream5_icmp

preprocessor sfportscan:\
        proto { all } \
        scan_type { all } \
        sense_level { high }

Konfigurasi di atas akan memakai preprocessor sfPortScan dari Source Fire.  Syarat untuk memakai sfPortScan adalah menggunakan preprocessor Stream5.  Sekarang, bila seseorang melakukan port scanning (yang merupakan tahap awal dalam serangan), misalnya dengan menggunakan tool Nmap:

$ nmap -A -v 192.168.1.22

Maka, Snort akan menghasilkan alert seperti berikut ini:

[**] [122:1:0] (portscan) TCP Portscan [**]
[Priority: 3] 
06/06-03:34:13.052153 192.168.1.49 -> 192.168.1.22
PROTO:255 TTL:64 TOS:0x0 ID:0 IpLen:20 DgmLen:158 DF

Alert tersebut menunjukkan bahwa seseorang dari IP 192.168.1.49 melakukan port scanning untuk komputer dengan IP 192.168.1.22.

05 Juni 2011 at 4:14 PM Tinggalkan Komentar

Mengatur Firewall Di Ubuntu

Berhubung sedang memiliki waktu luang, saya men-download Ubuntu terbaru, yaitu Ubuntu 11. Btw, memeriksa versi Ubuntu yang ter-install bisa dilakukan dengan memberikan perintah:

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 11.04
Release:	11.04
Codename:	natty

Kesan pertama sama sekali tidak seperti yang saya harapkan, karena tiba-tiba di layar monitor muncul tulisan “Display Out Of Frequency”.  Masalah resolusi?  Kalau di monitor CRT zaman dahulu, bisa jadi monitor sudah rusak (tidak ada pengaman kalau frekuensi yang dipakai melewati batas frekuensi yang didukung monitor)..  Untung saja lampu harddisk masih menunjukkan aktifitas, setelah proses GRUB berakhir, gambar di monitor tampil seperti biasanya.  Semua mulai lancar setelah mengedit file /etc/default/grub, dengan menghilangkan tanda komentar (#) di file tersebut:

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
GRUB_GFXMODE=640x480

Jangan lupa update GRUB yang sesungguhnya dengan memanggil update-grub, setelah restart komputer, tampilan GRUB muncul kembali seperti biasanya.

Langkah pertama yang ingin saya lakukan adalah melakukan pengamanan pada sistem operasi yang baru terinstall ini.  Hal ini dapat dilakukan dengan melakukan konfigurasi netfilter dengan perintah iptables.  Akan tetapi bila perintah iptables dirasa terlalu rumit, Ubuntu menyediakan cara gampangnya yaitu dengan perintah ufw yang merupakan kepanjangan dari uncomplicated firewall.  Perlu diperhatikan bahwa ufw bukanlah firewall-nya, melainkan hanya sebuah tool untuk mempermudah pengaturan firewall.

Fakta pertama yang harus diketahui adalah pada awalnya, firewall ‘dimatikan’.  Ini berarti tidak ada filter yang terjadi. Untuk ‘menyalakan’ firewall melalui ufw, dapat menggunakan perintah seperti berikut:

# ufw enable
Firewall is active and enabled on system startup

Seorang yang paranoid pasti akan memastikan seluruh aktifitas masuk dan keluar di-blokir, dengan memberikan perintah seperti:

# ufw default deny incoming
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)
# ufw default deny outgoing
Default outgoing policy changed to 'deny'
(be sure to update your rules accordingly)

Setelah ini, perintah untuk mengatur firewall dapat diberikan.  Sebagai contoh, untuk membolehkan hanya akses HTTP dan HTTPS keluar (termasuk akses DNS), berikan perintah seperti:

# ufw allow out http
Rule added
# ufw allow out https
Rule added
# ufw allow out 53/udp
Rule added

Untuk melihat daftar rule yang sudah ada, berikan perintah seperti:

# ufw status
Status: active

To                         Action      From
--                         ------      ----
80/tcp                     ALLOW OUT   Anywhere
443                        ALLOW OUT   Anywhere
53/udp                     ALLOW OUT   Anywhere

04 Juni 2011 at 8:12 PM Tinggalkan Komentar

Linux Startup: Mengawali Tahun Baru 2010

Selamat tahun baru 2010!! Untuk merayakan tahun baru ini, aku pun menyempatkan diri untuk menulis blog setelah sekian lama tidak online. Maklum saja, aku masih harus berpisah dengan notebook. Tapi aku mendapat pelajaran baru: belajar untuk lepas dari kesibukan dan rutinitas-ku, sehingga aku bisa melihat begitu banyak karunia yang begitu berharga di sekelilingku. Sesuatu yang mungkin aku anggap sepele sebelumnya, seperti keluarga yang baik dan adik kecil yang lucu :)

Dan kembali ke laptop, aku akan melanjutkan tulisan sebelumnya dengan proses startup di Linux. Pada tulisan tersebut, aku mematikan services dengan menghapus symbolic link-nya secara manual. Kali ini, aku akan memakai tools bawaan Linux, yang tentunya lebih disarankan ketimbang memakai cara manual.

Untuk melihat daftar services yang dijalankan saat proses startup, aku dapat mengetik:


chkconfig

Untuk melihat apakah services tersebut dijalankan pada setiap run-level, aku dapat menambahkan argument “-l”. Misalnya, untuk melihat run-level apa saja yang menjalankan “cron”, aku dapat mengetik seperti ini:


chkconfig -l cron

Yang hasilnya akan seperti:

cron 0:off 1:off 2:on 3:on 4:off 5:on 6:off

Jika aku hanya ingin “cron” dijalankan pada run-level 5, aku dapat memberikan perintah seperti ini:


chkconfig -s cron 5

Untuk membuat “cron” kembali dijalankan pada run-level 2, 3, dan 5, aku memberikan perintah seperti ini:


chkconfig -s cron 235

Untuk melihat services yang sudah berjalan di sistem pada saat ini, aku dapat memberikan perintah:


service -s

Untuk memeriksa status service tertentu saja, misalnya service “cron”, aku dapat memberikan perintah:


service cron status

Aku juga dapat menjalankan, mematikan dan me-restart service, masing-masing dengan argumen start, stop, dan restart.

02 Januari 2010 at 1:21 AM 2 komentar

Startup Di Linux

Untuk sementara selama beberapa bulan ini, aku harus berpisah dengan notebook kesayanganku.  Hari-hari akan terasa sangat berat untuk dilalui tanpa sebuah komputer.  Untung saja masih ada game PSP yang belum aku tamat-kan.  Dan juga ada notebook kantor yang sesekali dapat aku bawa pulang.  Aku tidak terlalu bangga dengan Intel Pentium M dan memori 768 MB di tahun 2009 ini.  Tapi ini lebih baik daripada tidak ada notebook sama sekali.

Notebook tersebut berisi sistem operasi OpenSUSE 11.  Sebagai pengguna Windows, aku harus membiasakan diri dengan Linux/Unix.  Ini adalah tuntutan pekerjaan.  Aku menggunakan gcc dan Eclipse sebagai GUI editor.  Aku memakai libtool untuk membuat shared library dan dynamic library secara otomatis.  Aku melakukan IPC dengan shared memory.  Aku membuat program berbasis GUI dengan XLib…  Semua ini berbeda dengan Windows dan Visual C++ nya…

Mmmh..di hari minggu ini seharusnya aku tidak memikirkan kerjaan.  Lebih baik aku meng-otak-atik sistem operasi Linux di notebook yang aku bawa pulang kemarin.  Aku melihat ada beberapa daemon yang berjalan secara otomatis saat sistem operasi berjalan, seperti mail server dan ssh daemon. Aku tidak membutuhkan mereka, jadi aku bisa mematikannya untuk menghemat memori.  Di Windows, aku dapat menggunakan tool msconfig atau meng-edit registry.  Tapi bagaimana dengan Linux?

Di distro openSUSE, program-program yang dijalankan otomatis memiliki symbolic link yang terletak di direktori /etc/init.d/rcX.d, dimana X bisa berupa angka yang menunjukkan run level, seperti rc0.d, rc1.d, rc2.d, dan seterusnya.  Contoh file symbolic link-nya seperti S11postfix.  Huruf awal “S” menunjukkan program ini akan dikerjakan saat startup sistem operasi.  Jika huruf awal-nya “K”, program tersebut akan dikerjakan saat sistem operasi di-shutdown.  Angka 00-99 setelah huruf “S” atau “K” menunjukkan nilai prioritas.  File yang nilai angka prioritas-nya lebih kecil akan dikerjakan lebih dulu sebelum file yang nilai angka prioritas-nya  lebih besar.

Aku segera menghapus symbol link seperti postfix, sshd dan avahi-daemon.  Aku tidak membutuhkan program-program itu, karena mereka hanya membuka port yang memungkinkan seseorang melakukan koneksi ke sistem operasi.

17 Oktober 2009 at 10:26 PM Tinggalkan Komentar

New Job: First Day

Hari Selasa, 14 Juli yang lalu, aku memulai hari pertamaku di pekerjaan baru.   Aku bekerja sebagai programmer C di sebuah perusahaan yang bergerak di bidang telekomunikasi.  Peralihan dari programmer Java menjadi programmer C membuatku butuh waktu untuk beradaptasi.  Tapi aku sangat senang karena aku menemukan banyak hal-hal baru disini.

Salah satu contohnya adalah melakukan development dengan ssh ke server untuk development.  Karena saat ini aku tidak mendapatkan remote GUI, aku hanya mendapatkan shell UNIX saja.  Itu artinya, aku tidak dapat melakukan coding C memakai Eclipse atau IDE berbasis GUI lainnya.  Aku terpaksa harus coding dengan memakai Vim (Vi Improved).  Dulunya, aku selalu menganggap remeh editor Vim dan menolak segala alasan untuk memakai editor ini.  Tapi sekarang, saat terpaksa harus memakainya, aku baru merasakan kecanggihannya.  Vim bukan hanya sekedar editor sederhana, ia mendukung split window, copy (istilahnya yanking) dan paste, syntax highlighting, keyword completion, membuka source dari sebuah function (harus men-build tag dulu sebelumnya), dan fitur lainnya.  O ya, Vim juga bisa memanggil make secara langsung, kemudian memproses compilation error (seperti memindahkan langsung kursor ke baris yang error). Vim ternyata memiliki fitur-fitur yang seharusnya dimiliki oleh sebuah IDE.

Bicara soal Make, aku juga mempelajari syntax makefile.  Fungsi Make mirip seperti Apache Ant, untuk mempermudah compiling & deployment kode program.  Hanya saja, perintah di sebuah makefile tergantung pada shell yang dipakai.   Jika aku membuat sebuah makefile yang hanya berisi perintah untuk shell di Unix, maka makefile tersebut tidak berguna di Windows.

Soal programming, aku aku harus mempelajari banyak hal yang berkaitan dengan system programming.  Selama dua hari pertama, aku mengerjakan latihan dengan membuat program C yang multi-thread (dengan bantuan pthread.h).  Program tersebut akan memiliki thread yang berfungsi sebagai listener (membaca pesan dari socket) dan sebuah thread lagi sebagai consumer.  Untuk melakukan operasi TCP/IP, aku memanfaatkan fitur socket bawaan Unix (sys/socket.h).  Operasi socket di Unix tidak berbeda jauh dari Java, karena bisa dibilang Java memang meniru operasi “socket” di Unix.

Tiga hari pertamaku cukup menyenangkan disini; aku menghabiskan banyak waktu untuk belajar… semoga akan terus begitu :)

17 Juli 2009 at 10:02 PM Tinggalkan Komentar


Arsip


Ikuti

Get every new post delivered to your Inbox.