Reset Fortigate Password

Kopi pes dari sini, biar ga lupa kalo satu saat butuh

Setup and Troubleshooting Foritgate firewalls.

setup_troubleshoot_fortigate

Works only on console port!!!!
Here are the instructions to login to a FortiGate firewall when the admin password is unknown. You will not find this information in fortinets knowledge base.

1. Power off the Fortigate unit by unplugging the power cable.

2. Connect to the console port with a serial cable. Launch Putty or winterm and connect to the port with default com settings.

3. Power on the fortigate firewall.

4. At the login: prompt enter maintainer

5. At the password: prompt enter bcpb The serial number is on the bottom of the unit and you will see it during boot. The userid and password need to be entered within 30-60 seconds or you will get “The hashed password length is invalid”

Example

Ver:04000006

Serial number: FWF60B3908617986 ß Serial Number

RAM activation

Total RAM: 256MB

Enabling cache…Done.

Scanning PCI bus…Done.

Allocating PCI resources…Done.

Enabling PCI resources…Done.

Zeroing IRQ settings…Done.

Verifying PIRQ tables…Done.

Boot up, boot device capacity: 64MB.

Press any key to display configuration menu…

……

Reading boot image 1983899 bytes.

Initializing firewall…

System is started.

VOALOANER login: maintainer ß Enter within 30-60 seconds

Password: bcpbFWF60B3908617986 ß Enter within 30-60 seconds

Welcome !

VOALOANER #

Image Spam

Bertugas sebagai kacung yang mengawasi lalu lintas email memang susah-susah gampang. Paling enak memang ketika sistem bekerja dengan lancar, tinggal ongkang-ongkang kaki. Tapi ketika ada masalah, semua orang berteriak serempak dan semuanya ingin didengarkan saat itu juga.

Yang paling jadi masalah belakangan ini adalah email-email spam. Sebagian besar email spam memang sudah diatasi dengan spamassassin, tapi masih banyak juga spam yang lolos. Dalam 1 hari, email spam yang lolos masuk ke inbox ada sekitar 80-90-an. Kategori 90-an email spam itu sudah tergolong besar mengingat klien-klien yang baru menerima 5-8 email spam saja sudah teriak-teriak.

Email spam yang berhasil lolos itu sebagian besar berupa image spam. Image spam biasanya berupa email dengan attachment gif, jpg, jpeg. Isi dari file image itu berupa kata-kata yang biasanya ada di email spam lainnya, seperti viagra, investor, medicine, dan lainnya.

Image spam ini menjadi masalah, karena spamassassin tidak bisa melakukan pengecekan terhadap attachment yang ada. Pantas aja semua spam pada lolos. Setelah mencari-cari di google, akhirnya dicoba untuk masang plugin FuzzyOcr di spamassassin. Berikut beberapa langkah instalasi yang diperlukan, diambil dari sini: (note: versi yang lebih baru sudah keluar)

Paket yang dibutuhkan:

  • SpamAssassin 3.1.1 atau lebih
  • libungif-4.1.4.tar.gz
  • libnetpbm10-dev
  • netpbm
  • giflib3g-dev
  • libimage-exif-perl
  • libstring-approx-perl
  • imagemagick
  • libjpeg-progs
  • gocr-0.40.tar.gz
  • fuzzyocr-2.3b.tar.gz

Kalau pakai debian atau fedora, aplikasi yang ada bisa tinggal di apt-get atau di yum. Terkecuali untuk paket-paket .tar.gz ya, sebaiknya install dari source. Untuk paket libstring-approx-perl, lebih mudah install dari cpan.

perl -MCPAN -e shell
install String::Approx

  1. Download, extract, patch, dan install libungif
    cd /usr/local/src
    wget http://internap.dl.sourceforge.net/sourceforge/libungif/libungif-4.1.4.tar.gz
    tar xzvf libungif-4.1.4.tar.gz
    cd libungif-4.1.4/util
    wget https://arjuna.files.wordpress.com/2007/02/giftext-segfaultpatch.doc
    patch giftext.c < giftext-segfault.patch
    cd ..
    ./configure –prefix=/usr && make && make install
  2. Download, extract, patch, compile dan install gocr:
    cd /usr/local/src
    wget http://www-e.uni-magdeburg.de/jschulen/ocr/gocr-0.40.tar.gz
    tar xzvf gocr-0.40.tar.gz
    cd gocr-0.40/src
    wget https://arjuna.files.wordpress.com/2007/02/patch-gocr-segfault.doc
    patch pgm2asc.c < patch-gocr-segfault.doc
    cd ..
    ./configure –prefix=/usr && make && make install

    Tes gocr dengan file ini
    wget https://arjuna.files.wordpress.com/2007/02/image001.gif
    giftopnm image001.gif > image001.pnm
    gocr image001.pnm

    Harusnya muncul seperti ini:
    ‘ AnENTlON ALL DAY TRADERS AND INVESTORS ‘

    Sekarang coba test dengan giffix, mustinya nggak ada error seperti di awal:
    giffix image001.gif > image001.fixed
    giftopnm image001.fixed > image001.pnm
    gocr image001.pnm

  3. Install FuzzyOcr 2.3b
    cd /usr/local/src/
    wget http://users.own-hero.net/~decoder/fuzzyocr/fuzzyocr-2.3b.tar.gz
    tar xzvf fuzzyocr-2.3b.tar.gz
    cd FuzzyOcr-2.3b

    Patch pakai punyanya Robert LeBlanc
    wget https://arjuna.files.wordpress.com/2007/02/fuzzyocr-23b-hashdb-poisonpatch.doc
    patch FuzzyOcr.pm < fuzzyocr-23b-hashdb-poison.patch.doc

    Kopi plugin dan configurasi file ke direktori spamassassin:
    cp FuzzyOcr.pm /etc/mail/spamassassin/
    cp FuzzyOcr.cf /etc/mail/spamassassin/
    cp FuzzyOcr.words.sample /etc/mail/spamassassin/FuzzyOcr.words

    Tambahkan baris “loadplugin FuzzyOcr /etc/spamassassin/FuzzyOcr.pm” di file v310.pre
    cp /etc/mail/spamassassin/v310.pre /etc/mail/spamassassin/v310.pre.bak
    echo ” loadplugin FuzzyOcr /etc/mail/spamassassin/FuzzyOcr.pm” >> /etc/mail/spamassassin/v310.pre

    Edit konfigurasi FuzzyOcr:
    vi /etc/spamassassin/FuzzyOcr.cf
    – Remark baris yang load plugin FuzzyOcr
    #loadplugin FuzzyOcr FuzzyOcr.pm

    #Khusus spamassassin di bawah versi 3.1.4, uncomment baris ini dan ganti isinya ke 1.0:
    focr_pre314 1.0

    #sesuaikan konfigurasi dengan di bawah ini
    focr_base_score 2
    focr_autodisable_score 50

  4. Test spamassassin dan fuzzyocr
    spamassassin –lint

    Kalau tidak ada error, test plugin fuzzyocr dengan file-file samples yang disediakan:
    /usr/local/src/fuzzyocr-2.3b/samples
    spamassassin -t < animated-gif.eml

    Hasil:

    19 FUZZY_OCR BODY: Mail contains an image with common spam text inside
    Words found:
    “alert” in 4 lines
    “charts” in 1 lines
    “symbol” in 1 lines
    “alert” in 4 lines
    “stock” in 2 lines
    “company” in 3 lines
    “trade” in 1 lines
    “xanax” in 1 lines
    “meridia” in 1 lines
    “growth” in 1 lines
    (19 word occurrences found)

    spamassassin -t < corrupted-gif.eml

    Hasil:

    1.5 FUZZY_OCR_WRONG_CTYPE BODY: Mail contains an image with wrong
    content-type set
    Image has format “GIF” but content-type is
    “image/jpeg”
    2.5 FUZZY_OCR_CORRUPT_IMG BODY: Mail contains a corrupted image
    Corrupt image: GIF-LIB error: Image is
    defective, decoding aborted.
    10 FUZZY_OCR BODY: Mail contains an image with common spam text inside
    Words found:
    “alert” in 1 lines
    “alert” in 1 lines
    “stock” in 2 lines
    “investor” in 1 lines
    “company” in 1 lines
    “trade” in 1 lines
    “target” in 1 lines
    “service” in 1 lines
    “recommendation” in 1 lines
    (10 word occurrences found)

    spamassassin -t < jpeg.eml

    Hasil:

    4.0 FUZZY_OCR BODY: Mail contains an image with common spam text inside
    Words found:
    “viagra” in 2 lines
    “cialis” in 1 lines
    “levitra” in 1 lines
    (4 word occurrences found)

    spamassassin -t < png.eml

    28 FUZZY_OCR BODY: Mail contains an image with common spam text inside
    Words found:
    “alert” in 2 lines
    “news” in 2 lines
    “symbol” in 1 lines
    “alert” in 2 lines
    “stock” in 1 lines
    “investor” in 3 lines
    “company” in 2 lines
    “buy” in 1 lines
    “price” in 2 lines
    “trade” in 2 lines
    “target” in 2 lines
    “service” in 2 lines
    “recommendation” in 1 lines
    “levitra” in 1 lines
    “software” in 2 lines
    (26 word occurrences found)

    Kalau tidak ada masalah, kembalikan setingan focr_autodisable_score ke nilai yang normal

    vi /etc/mail/spamassassin/FuzzyOcr.cf
    focr_autodisable_score 8

  5. Restart Spamassassin
    /etc/init.d/spamassassin restart
  6. Cek log maillog
    Lihat apakah plugin sudah berjalan atau belum
    tail -f /var/log/maillog |grep FUZZY_OCR

Done! Selamat menikmati berkurangnya spam.

PS: hati-hati false positive :))

Maenan CBQ

Gue termasuk orang yang tidak bisa menata file di komputer dengan rapi. Ya, kalau kalian punya waktu luang dan berkenan meriksa isi harddisk komputer gue, kalian akan menemukan banyak file yang bertebaran di sembarang folder.

Salah satu tempat yang paling banyak menyimpan file adalah direktori tmp. Padahal mustinya cuma temporary doangan yah. Nggak heran kalau akhirnya space harddisk komputer gue penuh dengan file-file tidak jelas. Sementara di komputer gue juga tersimpan koleksi Smallville dan Heroes. Alhasil demi kepentingan yang lebih penting, gue terpaksa memindahkan beberapa koleksi ke harddisk pc lain yang nganggur dan mempunyai space besar.

Nah, yang jadi masalah adalah, kalau gue sedang melakukan aksi abusing space harddisk, secara otomatis gue melakukan abusing bandwidth yang ada. Kenapa? Kalau ngecek di mrtg yang ada, setiap kali gue melakukan kupi-mengkupi file, maka mrtg yang ada langsung melonjak gila-gilaan.

mrtg upload

Kok bisa? Ya namanya transfer antar pc, bandwidth yang ‘kosong’ dan tidak dilimit mengakibatkan gue abusing 2 hal dalam waktu yang bersamaan. Setelah dipikir-pikir, akhirnya gue memutuskan untuk masang bandwidth limiting di pc gue khusus untuk traffic scp. Kok scp? Karena gue transfer file antar pc melalui scp.

Tadinya gue mikir mau pakai HTB, tapi karena gue udah pernah maenan HTB beberapa kali sementara CBQ belum pernah gue sentuh, jadi aja CBQ yang gue pake.

Langkah yang perlu dilakukan, pertama-tama, Install Linux.

Pastikan kernel linux anda dikompail dengan modul yang dibutuhkan oleh CBQ. Kalau sudah, download cbq.init. Simpan file cbq.init itu ke dalam direktori /etc/rc.d. Untuk Redhat dan teman-temannya, anda bisa simpan di /etc/rc.d/init.d. Karena gue pake slackware, file cbq.init itu gue namakan rc.cbq.init.

Buat direktori cbq di /etc/sysconfig

# mkdir -p /etc/sysconfig/cbq

Karena gue hanya mau ngelimit traffic scp, maka gue bikin file cbq-10.scp-network di direktori /etc/sysconfig/cbq. Isi file tersebut kurang lebih begini:

DEVICE=eth0,10Mbit,1Mbit
RATE=1000Kbit
WEIGHT=100Kbit
LEAF=sfq
PRIO=5
RULE=202.1.2.3,:22

Besaran RATE dan WEIGHT itu gue ubah-ubah tergantung kebutuhan gue transfer file seberapa cepat atau seberapa gede traffic yang nongol di mrtg.

Kalau sudah, tinggal compile cbq dengan menjalankan perintah
/etc/rc.d/rc.cbq.init compile

Kalau sudah yakin mau ngelimit traffic, jalankan cbq-nya
/etc/rc.d/rc.cbq.init start

Kalau sudah bosen nungguin kopi file yang lama, matiin cbq
/etc/rc.d/rc.cbq.init stop

Done.

Clearing Quarantine Mail

Kalau punya email server yang dilengkapi antivirus, salah satu kegiatan rutin selain ngecek log, musti juga rajin-rajin ngecek folder quarantine. Itu kalau option antivirus-nya diset quarantine, kalo diset buat delete ya ga usah dicek.

Qmailscanner yang gue pake punya direktori quarantine di direktori /var/spool/qmailscan/quarantine, dan karena dia berupa maildir, semua email yang dikarantina ada di /var/spool/qmailscan/quarantine/new.

Karena traffic email gue cukup padat (dengan sekitar puluhan ribu spam setiap hari), maka isi dari direktori quarantine ini cepat sekali melonjak. Dalam sebulan gue pernah dapet sekitar 2GB email bervirus yang dikarantina. Karena email-email bervirus ini gak ada gunanya disimpen, kecuali elu orang yang doyan neliti virus, maka tugas gue adalah menjaga space harddisk yang ada untuk menyimpan hasil donlodan seperti Smallville.

Gue kerajinan bikin script buat bersihin isi direktori karantina, padahal sebenernya sih bisa pake program tmpwatch, tapi distro yang gue pake rupanya nggak doyan masang tmpwatch ini di dalam paket-paketnya.

Solusi yang gampang bagi gue ya tinggal ngikutin petunjuk di sini. Tinggal pakai perintah find.

find /var/spool/qmailscan/quarantine/new -type f -atime +30 -delete

Gue setel dengan option -atime +30, yang berarti cari semua file yang tanggal aksesnya lebih dari 30 hari. Dengan kata lain, gue menyisakan email-email yang dikarantina dalam hitungan 1 bulan (30 hari) terakhir.

Perintah find ini dimasukin dalam crontab, tinggal pilih berapa kali perlu dijalanin dalam waktu satu minggu. Gue sih prefer menjalankan setiap hari, pada jam-jam yang nggak sibuk.

Yang rada aneh, gue nggak menemukan option -delete ini di distro redhat. Mungkin karena beda versi paket find.

Naik Turun 30 Menit

Sudah duduk dengan nyaman? Sudah sedia secangkir kopi dan cemilan? Kalau sudah, silakan anda lanjutkan baca tulisan ini, soalnya (mungkin) bakal panjang.

Berawal dari beberapa waktu yang lalu, gue ngecek backup server yang sering gagal dalam menjalankan tugasnya. Si backup server ini hanya bertugas mengeksekusi beberapa script untuk membackup server-server yang lain dan script itu dijalankan melalui crontab dieksekusi setiap harinya.

Beberapa hal aneh yang terjadi adalah si backup server ini sering gagal dalam mengirimkan email report, statusnya masih queue sampai harus diflush dahulu. Keanehan yang kedua, beberapa script yang dieksekusi tidak berjalan sebagaimana mestinya. Padahal kalau dicek melalui log crontab (/var/log/cron), script tersebut sudah dijalankan sesuai dengan jadwalnya. Kesalahan pada scriptnya? Kayaknya mah gak mungkin. Soalnya gagal ini hanya kadang-kadang aja. Kalau dieksekusi manual, scriptnya sukses membackup. So? Masalahnya apa ya?

Nggak sengaja pas lagi remote server backup ini, gue iseng ping mail server.
# ping mail
ping: unknown host mail

Lah sih… Unknown host? Cek /etc/resolv.conf, sudah mengarah ke DNS yang benar. Tapi ga bisa resolve? Artinya problem ada di DNS toh. Baiklah™.

Dengan berbekal info ini, gue login ke DNS server. Aneh dan semakin aneh. DNS server kadang-kadang mau nerima query dari host lain. Tapi ada beberapa waktu yang dianya malah ga bekerja. Setelah seharian lebih[1] mempelajari log dari DNS, akhirnya ketemu juga polanya. Si DNS ini mulai tidak menerima query pada setiap jamnya di menit ketujuh. Dari menit ketujuh ini dan 30 menit ke depan, si DNS magabut. Menit ke-37, si DNS mulai bekerja normal lagi dan kembali berhenti pada menit ke-7 jam berikutnya. Bingung dan sebel sih gue sama mesin ini. Tapi waktu ngeliat uptimenya, gue jadi maklum. Sudah tua toh dia.
# uptime
10:36am up 1148 day(s), 1:35, 1 user, load average: 1.51, 1.55, 1.55

Gara-gara magabut ini traffik MRTG gue dapet pujian dari jelantix
mrtg bermasalah

<jelantix> wah keren itu …
<jelantix> gemana cara nya bikin graph mrtg kayak gitu.

Nah, akar dari segala masalah udah ketawan. Gegara DNS yang magabut ini bikin banyak masalah yang lain. Entah mail yang ga bisa diakses, website yang nggak kebuka, backup script yang nggak jalan. Cuma sekarang, apa solusinya? Gue cuma tau si DNS mogok kerja tiap 30 menit. Tapi apa yang bikin dia mogok?

Selama hampir 3 hari gue nunggu wangsit yang turun dari mbah Maridjan sambil bersumpah 3 hari 3 malam nggak akan makan Sushi ataupun Hanamasa dulu soalnya blom gajian lagi.

Setelah melanggar sumpah dengan mimpi makan Yakiniku di Hanamasa, gue mulai menganalisa masalahnya.

1. DNS nggak bisa diquery tiap 30 menit.
2. Selama rentang 30 menit mogok itu, server DNS masih bisa diakses remote.
3. Service ssh artinya tidak mogok tiap 30 menit.
4. Yang bermasalah di server DNS hanya service DNS saja.
5. Jangan mimpi makan Yakiniku, bangun-bangun hanya bikin ngiler aja.

Ok, berbekal hasil analisa itu gue coba restart service DNS melalui script di /etc/init.d. Stopping … Starting … OK.

Coba query lagi…
Loh, masih failed. Masih ngambek juga. Selidik punya selidik, entah kenapa waktu distop, service DNS masih jalan juga. Jadi selama ini kalau direstart, service yang jalan masih itu-itu juga. Belum pernah ada restart service yang benar. Selama ini kalau ada pengubahan isi DNS, service hanya direload saja. Iseng kemarin sekitar jam 4 gue kill servicenya trus gue start lagi. Sekarang ini hasil MRTGnya:
mrtg bener

Done. Mission accomplished!
Next time kalau restart service, mendingan kill manual kali ya.


[1] Kenapa seharian? Ternyata ini mesin Solaris. Gue blom terlalu familiar sama jeroan dari Solaris.