Saturday, January 16, 2010

Mengamati Keamanan Jaringan Komputer

Mengetahui aman tidaknya suatu jaringan komputer, bisa dilihat dari pintu-pintu yang terbuka pada komputer gerbang atau Gateway. Dalam dunia IP, pintu diistilahkan sebagai port. Gangguan bisa masuk lewat pintu lupa ditutup, pintu yang terbuka atau pintu yang lupa ditutup. Kalau mau aman, tutup semua pintu. Namun konsekuensi adalah tidak bisa akses ke luar atau ke Internet. Jadi jalan tengahnya adalah membuka pintu-pintu tertentu saja. Biasanya port yang dibuka adalah
  1. Port 22, untuk SSH (semacam telnet yang secure)
  2. Port 80, untuk HTTP akses ke website
Selain port di atas, pembukaan port dilakukan sesuai permintaan. Untuk port dan fungsinya, silahkan tengok di http://www.iana.org/.

Dengan hanya membuka beberapa port dan menutup puluhan ribu port-port, diharapkan akan mengamankan komputer client dalam suatu LAN dari serangan luar. Cerita akan menjadi lain jika serangan berasal dari komputer client dalam satu LAN. Administrator LAN hanya mengamankan perimeter terluar dari LAN. Perimeter satker dan personil menjadi tanggung jawab masing-masing user, karena keterbatasan perangkat keras yang dimiliki oleh Administrator LAN.

Pengamanan akan berbeda untuk komputer server yang menggunakan IP Publik. Konvensinya, pengamanan dilakukan oleh si empunya server. Meskipun port pada komputer server sudah pada ditutup, namun bisa saja aplikasinya yang bolong. Sehingga serangan semacam SQL Injection bisa dilakukan. Atau jika aplikasi memiliki titik lemah yang tidak diketahui oleh si pemilik server. Ibaratnya, ada orang yang masuk ke kawasan perkantoran, berpakaian perlente, memakai badge dan segala atribut yang resmi, masuk lewat pintu penjagaan resmi, maka tak ada yang akan menaruh curiga. Sehingga orang tersebut bisa dengan mudah melewati petugas. Padahal sebenarnya ybs adalah intruder. Lain halnya kalau ada orang yang berpakaian aneh, lewat pagar yang bolong atau lewat pagar yang tak terjaga, pasti akan lebih mudah untuk dicurigai.

Untuk melihat port yang dibuka pada suatu server, cukup menggunakan perintah baris NMAP yang diikuti dengan IP Address server tersebut. Misal, kita akan dilihat port mana saja yang terbuka pada server Digilib. Hasilnya adalah sbb :

$ nmap 202.46.3.69
Starting Nmap 4.53 ( http://insecure.org ) at 2010-01-16 17:19 WIT

Interesting ports on 202.46.3.69:
Not shown: 1700 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
199/tcp open smux
445/tcp filtered microsoft-ds
593/tcp filtered http-rpc-epmap
623/tcp filtered unknown
664/tcp filtered unknown
1720/tcp filtered H.323/Q.931
3306/tcp open mysql
4444/tcp filtered krb524
4662/tcp filtered edonkey

Tampaknya port yang terbuka pada server Digilib adalah port 21, 22, 80, 199, dan 3306. Biasanya port 199 dan 3306 jarang dibuka. Mungkin saja si empunya server punya pertimbangan lain sehingga kedua port ini dibuka.

Open Port di Server NHC :
Starting Nmap 4.53 ( http://insecure.org ) at 2010-01-16 17:47 WIT
Interesting ports on 202.46.3.75:
Not shown: 1702 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
80/tcp open http
111/tcp open rpcbind
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
445/tcp filtered microsoft-ds
593/tcp filtered http-rpc-epmap
1720/tcp filtered H.323/Q.931
3306/tcp open mysql
4444/tcp filtered krb524
4662/tcp filtered edonkey

Open Port di Proxy Serpong :
Starting Nmap 4.53 ( http://insecure.org ) at 2010-01-16 17:25 WIT
Interesting ports on 202.46.3.66:
Not shown: 1705 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp closed http
137/tcp closed netbios-ns
138/tcp closed netbios-dgm
161/tcp closed snmp
3128/tcp open squid-http
8080/tcp open http-proxy
8888/tcp closed sun-answerbook
9090/tcp open zeus-admin

Open Port di Proxy Kuningan :
Starting Nmap 4.53 ( http://insecure.org ) at 2010-01-16 18:11 WIT
Interesting ports on 202.46.3.98:
Not shown: 1711 filtered ports
PORT STATE SERVICE
22/tcp open ssh
53/tcp closed domain
80/tcp open http

Open Port di Proxy PsJumat :
Starting Nmap 4.53 ( http://insecure.org ) at 2010-01-16 18:13 WIT
Interesting ports on 202.46.3.114:
Not shown: 1711 filtered ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
9090/tcp closed zeus-admin

Open Port di Server SIPL :
Starting Nmap 4.53 ( http://insecure.org ) at 2010-01-16 18:26 WIT
Interesting ports on 202.46.3.78:
Not shown: 1678 closed ports, 29 filtered ports
PORT STATE SERVICE
21/tcp open ftp
80/tcp open http
443/tcp open https
1025/tcp open NFS-or-IIS
1026/tcp open LSA-or-nterm
3306/tcp open mysql
3389/tcp open ms-term-serv

Router Serpong :
Starting Nmap 4.53 ( http://insecure.org ) at 2010-01-16 18:37 WIT
Interesting ports on 202.46.3.65:
Not shown: 1705 closed ports
PORT STATE SERVICE
23/tcp open telnet
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
445/tcp filtered microsoft-ds
593/tcp filtered http-rpc-epmap
1720/tcp open H.323/Q.931
4444/tcp filtered krb524
4662/tcp filtered edonkey
5060/tcp open sip

Router Kuningan :
Starting Nmap 4.53 ( http://insecure.org ) at 2010-01-16 20:00 WIT
Interesting ports on 202.46.3.97:
Not shown: 1705 closed ports
PORT STATE SERVICE
23/tcp open telnet
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
445/tcp filtered microsoft-ds
593/tcp filtered http-rpc-epmap
1720/tcp open H.323/Q.931
4444/tcp filtered krb524
4662/tcp filtered edonkey
5060/tcp open sip

Router Pasar Jum'at :
Starting Nmap 4.53 ( http://insecure.org ) at 2010-01-16 18:38 WIT
Interesting ports on 202.46.3.113:
Not shown: 1705 closed ports
PORT STATE SERVICE
23/tcp open telnet
135/tcp filtered msrpc
139/tcp filtered netbios-ssn
445/tcp filtered microsoft-ds
593/tcp filtered http-rpc-epmap
1720/tcp filtered H.323/Q.931
4444/tcp filtered krb524
4662/tcp filtered edonkey
9040/tcp filtered tor-transport

Tip dan Trik pada Mikrotik

Suatu kali saya bingung, kenapa tampilan Inteface List jadi berbeda. Biasanya per Interface ditampilkan cukup dalam sebaris informasi. Nah sekarang menjadi 4 baris informasi. Ternyata ini hanyalah masalah pilihan detail. Untuk itu : klik kanan interface lalu pilih Detail Mode. Selesai. Informasi per interface kembali dalam sebaris.

Cara setting Mikrotik RB450G dengan ISP Speedy yang masih menjadi pertanyaan :
  1. Kabel antara Modem DSL abbatec dengan Eth1 pada Miktorik RB450G : Straight atau Cross. Default dari Telkom : Straight. Ternyata Straight OK, tidak perlu Cross Cable
  2. Connection Type dari WAN modem DSL abbatec : PPPoA, PPPoE, MER, IPoA, atau Bridging. Default dari Telkom : PPPoE. Tipe yang diharapkan : Bridging.
  3. Encapsulation Mode dari WAN modem DSL abbatec : LLC/SNAP - BRIDGING atau VC/MUX. Default dari Telkom : LLC/SNAP - BRIDGING. Ternyata LLC tetap bisa digunakan.
  4. Mikrotik RB450 di-setting bagaimana. Ternyata perlu ditambah PPPoE Client dengan parameter Name : speedy, Interface : ether1-gateway, user/pass = gunakan user speedy.
Jika pertanyaan-pertanyaan di atas sudah terjawab, selanjutnya bisa dilakukan setting Modem DSL dan Mikrotik.

Untuk melakukan setting, Modem DSL, Mikrotik RB450 dan PC dihubungkan ke sebuah Switch. Modem DSL menggunakn IP 192.168.1.1 (default). Miktorik RB450 menggunakan IP 192.168.1.2 (ether1-gateway) dan IP 192.168.2.1 (ether1-local). PC menggunakan IP 192.168.1.5.

Setup Modem DSL sebagai Bridge.
  • Setting modem dilakukan melalui web browser dengan mengakses alamat http://192.168.1.1
  • Masukkan username dan password : admin/admin atau sesuai dengan kondisi
  • Masuk ke menu “Advanced Setup” kemudian pilih “WAN” dan klik tombol “Edit” pada protokol PPPoE. Masukkan nilai ATM PVC Configuration : (masukkan nilainya sesuai wilayah PT. TELKOM masing-masing daerah).
  • VPI = 0 (atau tanyakan ke PT. TELKOM setempat)
  • VCI = 35 (atau tanyakan ke PT. TELKOM setempat)
  • Connection type = Bridging
  • Encapsulation = LLC/SNAP-BRIDGING, kemudian klik tombol Next
  • Tandai atau kasih v untuk pilihan “Enable Bridge Service”, Service Name = br_0_35, kemudian klik Next dan klik tombol Save
  • Selanjutnya klik tombol Save/Reboot
Catatan :
  1. Modem akan reboot -/+1 menit dan tunggu sampai modem normal kembali.
  2. Untuk modem model lainnya silahkan baca manualnya
Setup Mikrotik RB450G menjadi PPPoE Client
  • Login WinBox. Winbox bisa dijalankan di Windows dan Wine-nya Fedora.
  • Kemudian pilih menu PPP yang mana nanti akan muncul box untuk setup PPPoE
  • Klik toolbar add (bergambar tanda +) di box PPP, kemudian pilih menu PPPoE Client
  • Maka akan muncul box New Interface, kemudian pada tab General di field Name kita beri nama koneksi PPPoE tersebut (dalam artikel ini menggunakan nama speedy)
  • Tetap di dalam box New Interface, pilih tab Dial Out. Di situ kita akan menemukan field untuk Username dan Password. Kita isikan username dan password account speedy kita, dan biarkan setting lainnya dalam keadaan default
  • Kemudian kita klik OK dan tunggu Mikrotik untuk Dial speedy. Jika benar maka di box PPP akan muncul hasil setup kita sebelumnya dengan di kolom uptime akan mulai menghitung Uptime koneksi ADSL.
  • Untuk mengoreksi apakah setup kita benar bisa kita lakukan dengan cara PING ke Internet.
Setelah setting berhasil dilakukan, LAN perlu direkonfigurasi ulang. Modem DSL yang tadinya dihubungkan ke Switch, sekarang dihubungkan ke Mikrotik RB450 ether1-gateway. Sementara Mikrotik RB450 ether2-local dihubungkan ke Switch. Sekarang Switch hanya menghubungkan antara Mikrotik dan PC. IP Address PC-pun perlu diubah dari 192.168.1.5 menjadi 192.168.2.5. Dan supaya Laptop bisa memanfaatkan akses Internet maka ditambahkan sebuah WAP Senao 2811CB3 dengan IP 192.168.2.2.

Namun sayangnya keberhasilan konfigurasi ini hanya bertahan beberapa jam. Kalau diperhatikan, ternyata parameter Default Gateway pada Modem DSL selalu kosong. Meskipun modem DSL sudah di-reboot dan power-nya dimatikan. Sebuah fenomena yang aneh. Untuk sementara, konfigurasi dikembalikan kepada posisi semula, tanpa Mikrotik.

Mengubah Nama Packet Mark Downstream dari IIX

Misal akan mengubah nama Packet Mark untuk downstream dari IIX. Akan diganti Packet Mark "local-net-32" menjadi "32-iix-down". Untuk itu, jalankan aplikasi winbox.exe, lalu masuk ke menu IP -> Firewall -> Mangle -> pilih mark packet yang forward ke Dst Address yang diinginkan, dalam hal ini Dst Address ke 192.168.32.0/24 (Ada 2 mark packet, yaitu untu upstreamn dan downstream. Pilih salah satu Packet Mark untuk downstream yaitu "local-net-32") -> ganti "local-net-32" menjadi "32-iix-down" -> Apply -> OK

Sebenarnya saat melakukan perubahan Mangle Rule untuk 192.168.32.0/24, ada jendela baru yang muncul. Kira-kira menu yang ada pada jendela adalah sbb :

Packet Mark : Downstream IIX
Tab General :
Chain : forward
Dst Address : 192.168.32.0/24
Connection Mark : users-con
Tab Advanced :
Src. Address List : nice
Tab Action :
Action : mark packet
New Packet Mark : 32-iix-down (sebelumnya local-net-32)
Passthrough : enable (atau contreng)

Packet Mark : Upstream IIX
Tab General :
Chain : forward
Dst Address : 192.168.32.0/24
Connection Mark : users-con-up
Tab Advanced :
Src. Address List : nice
Tab Action :
Action : mark packet
New Packet Mark : 32-iix-up (sebelumnya local-net-up-32)
Passthrough : enable (atau contreng)

Packet Mark : Downstream Internasional
Tab General :
Chain : forward
Src Address : 192.168.32.0/24
Connection Mark : users-con
Tab Advanced :
Src. Address List : !nice
Tab Action :
Action : mark packet
New Packet Mark : 32-intl-down (sebelumnya inter-net-32)
Passthrough : enable (atau contreng)

Packet Mark : Upstream Internasional
Tab General :
Chain : forward
Src Address : 192.168.32.0/24
Connection Mark : users-con-up
Tab Advanced :
Src. Address List : !nice
Tab Action :
Action : mark packet
New Packet Mark : 32-intl-up (sebelumnya inter-net-up-32)
Passthrough : enable (atau contreng)

Jangan lupa untuk klik Apply dan OK setelah perubahan dianggap benar. Untuk mengubah nama Packet Mark lainnya, caranya hampir sama. Packet Mark lainnya yang perlu sisesuaikan adalah :
  1. Upstream IIX
  2. Downstream Internasional
  3. Upstream Internasional
Perhatikan,
  1. Kalau koneksi IIX menggunakan Dst Address, namun kalau koneksi Internasional menggunakan Src Address
  2. Kalau koneksi IIX, Src. Address List = nice, tapi kalau koneksi Internasional, Src. Address List = !nice. Tanda seru berarti tidak.
  3. Kalau downstream, connection mark-nya users-con, tapi kalau upstream, connection marks-nya users-con-up. Tidak peduli koneksi IIX atau Internasional.
  4. Sebenarnya isian New Packet Mark bebas. Namun disini hanya ingin melakukan standarisasi. 32 adalah kode subnet, iix atau intl adalah jenis koneksinya, up atau down jenis stream-nya.

Setelah proses di atas selesai, masuk ke menu Queue -> Queue Tree -> pilih queue yang diinginkan -> Ganti Packet Mark dari "local-net-32" ke "32-iix-down" (gunakan pull down menu.

Setting Mikrotik Lanjutan :
  1. Setting IP untuk masing-masing ethernet card, eth1 dan eth2 (seharusnya dilakukan sebelum setting mikrotik sebagai PPPoE)
  2. Menambahkan Routing
  3. Setting DNS
  4. Source NAT (Network Address Translation) / Masquerading.
  5. DHCP (DynamicHost Configuration Protocol)
  6. Bandwidth Control
  7. Graphing

Cara setting ini bisa juga dilihat di :
http://wikanwiratmoko.blogspot.com/
http://lutfi.stickycom.net/

Friday, January 15, 2010

Upgrade My Fedora 10 ke Fedora 11

Diharapkan dengan melakukan upgrade Distro, berbagai kendala yang ada di distro saat ini bisa teratasi. Pernah suatu kali modem GSM Bandlux c120, mouse internal (touchpad), VGA Card tidak dikenal oleh distro. Namun setelah melakukan upgrade total (bukan hanya update paket), berbagai device mampu dikenali secara baik dan benar. Dalam kesempatan ini saya akan utarakan cara upgrade dari Fedora 10 ke Fedora 11, step by step. Sebenarnya bisa saja upgrade langsung ke Fedora 12, namun saya belum tahu dampak kalau upgrade lompat 2 tingkat.

Untuk melakukan upgrade distro, hanya dibutuhkan 2 (dua) perintah baris saja, yaitu :
# yum -y install preupgrade
# preupgrade

Lihat juga :
Upgrade Fedora 9 ke Fedora 10

Thursday, January 14, 2010

Menjalankan PHP dari perintah baris

Karena alasan-alasan tertentu, saya perlu menjalankan skrip PHP dari perintah baris pada Terminal Fedora 11. Nantinya skrip PHP ini akan dijalankan secara periodik, katakan setiap 5 menit. Tentunya melalui bantuan crontab. Skrip PHP pada dasarnya sudah bisa dijalankan dari web browser. Namun output web browser tidak bisa disimpan dalam sebuah file ASCII atau TXT. Sementara saya maunya, outputnya bisa langsung disimpan (redirect output) ke dalam sebuah file text. Dan kalau bisa secara APPEND.

Contoh file atau skrip PHP yang telah dicoba. Nama filenya adalah online.php.

<?php // ---- online.php ----

session_start();
include "online.inc.php";

$waktu=date("H:i:s d-m-Y");

$sqlLimit="select distinct ou_user from onlineusers order by ou_user asc";
$dbconnect=mysql_query($sqlLimit);
$rec_num=mysql_num_rows($dbconnect);

echo "$waktu";

for($RekRows=0;$RekRows<$rec_num;$RekRows++){
$getval=mysql_fetch_array($dbconnect);

$_ou_timestamp=$getval[ou_timestamp];
$_ou_user=$getval[ou_user];
$_ou_right_main=$getval[ou_right_main];
$id=$getval[id];

echo "
$_ou_user";


}

echo "Total user: ";
echo "$rec_num";
echo "";

?>

Ketika dijalankan di terminal, dihasilkan keluaran sbb :

[root@serpong4] ~ # php -f online.php

khairul
mantho
sugi@batan.go.id
Total user: 3
[root@serpong4] ~ #
Jika ingin agar hasil perintah ini disimpan di suatu file, misal file online.out. Sehingga perintahnya menjadi :

[root@serpong4] ~ # php -f online.php >>
online.out
Jika ingin dijalankan sebagai perintah shell, maka isi file shell online.sh adalah :

#/bin/sh
php -f /home/msmunir/public_html/webmail/online.php >> /home/msmunir/public_html/webmail/online.out

Jika sudah dibuat file shell-nya, tinggal diletakkan di crontab.

Edit crontab di /etc/crontab :

#minute hour mday month wday who command
#
*/5 * * * * root /home/msmunir/public_html/webmail/online.sh
#

Restart Crontab :
[root@serpong4] /etc/rc.d # ./cron restart
Stopping cron.
Waiting for PIDS: 757.
Starting cron.
[root@serpong4] /etc/rc.d #

Ubah Owner (user root, group wheel) dan attribute (777) file online.sh, online.php dan online.out

[root@serpong4] /etc # chown root:wheel /home/msmunir/public_html/webmail/online.sh
[root@serpong4] /etc # chown root:wheel /home/msmunir/public_html/webmail/online.php
[root@serpong4] /etc # chown root:wheel /home/msmunir/public_html/webmail/online.out


Sumber :
http://php.net/http://www.rumahweb.com/

Monday, January 11, 2010

Melihat online user webmail di FreeBSD dengan sintak MySQL

Untuk melihat online user webmail dapat juga dilakukan melalui MySQL. Adapun caranya adalah sbb :

[root@serpong4] ~ # mysql -S /tmp/mysql.sock2 -u userdt -p userdt
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 317031 to server version: 5.0.27
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

mysql> select * from onlineusers order by ou_user;
+--------------+----------+---------------------+
| ou_timestamp | ou_user | ou_right_main |
+--------------+----------+---------------------+
| 1263201975 | imank | /src/right_main.php |
| 1263201931 | imank | /src/right_main.php |
| 1263202006 | imank | /src/right_main.php |
| 1263202001 | imank | /src/right_main.php |
| 1263201912 | imank | /src/right_main.php |
| 1263201855 | khairul | /src/right_main.php |
| 1263201734 | khairul | /src/right_main.php |
| 1263201850 | khairul | /src/right_main.php |
| 1263201880 | khairul | /src/right_main.php |
| 1263201824 | msmunir | /src/right_main.php |
| 1263201739 | msmunir | /src/right_main.php |
| 1263201788 | msmunir | /src/right_main.php |
| 1263201727 | msmunir | /src/right_main.php |
| 1263201766 | msmunir | /src/right_main.php |
| 1263201756 | nu_rohma | /src/right_main.php |
| 1263202133 | setia | /src/right_main.php |
| 1263201611 | setia | /src/right_main.php |
| 1263201595 | setia | /src/right_main.php |
| 1263202130 | suprikeu | /src/right_main.php |
| 1263202074 | suprikeu | /src/right_main.php |
| 1263202090 | syahril | /src/right_main.php |
| 1263201591 | vendewi | /src/right_main.php |
| 1263201696 | vendewi | /src/right_main.php |
| 1263201634 | vendewi | /src/right_main.php |
| 1263201537 | vendewi | /src/right_main.php |
| 1263201556 | vendewi | /src/right_main.php |
| 1263201575 | vendewi | /src/right_main.php |
| 1263201607 | vendewi | /src/right_main.php |
| 1263201666 | vendewi | /src/right_main.php |
| 1263201650 | vendewi | /src/right_main.php |
| 1263202118 | yundi | /src/right_main.php |
| 1263202076 | yundi | /src/right_main.php |
| 1263201613 | zack | /src/right_main.php |
+--------------+----------+---------------------+
33 rows in set (0.00 sec)

mysql>

atau

mysql> select distinct ou_user from onlineusers order by ou_user;
+----------------------------+
| ou_user |
+----------------------------+
| agussy |
| agustin@batan.go.id |
| anis_rohanda |
| antie-p |
| baaseng |
| chevist |
| darbeny |
| darwis |
| frida |
| gunbki |
| hadi-susilo |
| hrdyanti |
| husenzam |
| ian |
| iis |
| imank |
| irawan |
| junaidis |
| june_mellawati@batan.go.id |
| makhsun |
| maruli |
| maskur |
| ppgn |
| rakhmats |
| ramon84 |
| tsalyo |
| wardojo |
| yesti |
| yulendya |
| yulianti |
+----------------------------+
30 rows in set (0.00 sec)

mysql>

Mencari pengguna :
mysql> select * from table1 where field1 like '%string%' order by field1 asc;
Misal mau mencari user yang ada kata 'sis' nya :
mysql> select * from mailbox where username like '%sis%' order by username asc;


Melihat struktur tabel
mysql> desc table;

Misal mau melihat struktur tabel mailbox :
mysql> desc mailbox;
+-----------+------------------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------------------+-------+
| username | varchar(255) | NO | PRI | | |
| password | varchar(255) | NO | | | |
| name | varchar(255) | NO | | | |
| nip | varchar(10) | YES | | NULL | |
| nip_baru | varchar(25) | YES | | NULL | |
| satker_id | int(10) unsigned | YES | | NULL | |
| maildir | varchar(255) | NO | | | |
| quota | bigint(10) | NO | | 0 | |
| domain | varchar(255) | NO | | | |
| created | datetime | NO | | 0000-00-00 00:00:00 | |
| modified | datetime | NO | | 0000-00-00 00:00:00 | |
| active | tinyint(1) | NO | | 1 | |
+-----------+------------------+------+-----+---------------------+-------+
12 rows in set (0.00 sec)

mysql>


Melihat user yang tidak aktif :
mysql> select * from mailbox where active = 0 order by username asc;

Keluar :

mysql>\quit