Category Archives

18 Articles
Akses Dolphin (Manajer Berkas KDE) ke SMBv2 atau SMBv3
About KDE

Akses Dolphin (Manajer Berkas KDE) ke SMBv2 atau SMBv3

Karena WCry 2.0, protokol SMBv1 sudah tidak berlaku lagi. Kebanyakan peladen berkas sudah berjalan di versi 2 ke atas. Masalahnya, banyak penjelajah berkas masih menggunakan SMBv1 secara baku. Untuk itu, perlu diaktifkan klien versi 2 ke atas.

 “Well, hell! PMP exam topics That’s no excuse for insulting me! You PMP exam topics 300-320 questions pdf are 300-320 questions pdf Ma’s PMP exam topics PMP exam topics own blood son, but did PMP exam topics she take on that time PMP exam topics Tony Fontaine shot you in the leg? 70-532 answer analysis No, she 70-532 answer analysis just 300-320 questions pdf sent for old Doc 70-532 answer analysis Fontaine to dress it and asked the doctor what ailed Tony’s aim. Said she guessed licker was spoiling his marksmanship. Remember how mad that made Tony?”Both boys yelled 70-532 answer analysis with laughter.“Ma’s a card!” said Brent with loving approval. “You can always count on her to do the right thing 300-320 questions pdf and 70-532 answer analysis not embarrass you in front of PMP exam topics folks.”  But Gerald remained Gerald. 300-320 questions pdf His habits PMP exam topics of living and his ideas changed, but his manners he would 300-075 certification exam not change, 300-075 certification exam even had he been 70-532 answer analysis able to change them. He admired 300-320 questions pdf the drawling 300-075 certification exam elegance of the 300-075 certification exam wealthy rice and cotton planters, who rode into Savannah from their moss-hung kingdoms, mounted 70-532 answer analysis on 300-320 questions pdf thoroughbred horses and followed by the carriages of their 300-320 questions pdf equally elegant ladies 70-532 answer analysis and the wagons 300-320 questions pdf of their slaves. But Gerald could never attain elegance. 70-532 answer analysis Their lazy, blurred voices fell pleasantly 300-075 certification exam 300-075 certification exam 300-320 questions pdf on PMP exam topics his PMP exam topics ears, but his 300-075 certification exam PMP exam topics own 300-075 certification exam brisk brogue clung to his tongue. He liked the casual 70-532 answer analysis 300-075 certification exam grace with which they PMP exam topics conducted affairs 300-320 questions pdf of importance, 300-320 questions pdf risking 300-320 questions pdf a fortune, a plantation or a slave 70-532 answer analysis 300-075 certification exam on the 300-075 certification exam turn 70-532 answer analysis of a card and writing off their losses with careless good humor and no more ado than when they scattered 300-320 questions pdf pennies to pickaninnies. But Gerald had known poverty, and PMP exam topics he could never PMP exam topics learn to lose money with 70-532 answer analysis good 300-075 certification exam humor or good 300-320 questions pdf 70-532 answer analysis 300-320 questions pdf grace. They were PMP exam topics a pleasant race, these coastal Georgians, with their soft-voiced, 70-532 answer analysis PMP exam topics quick rages and their charming inconsistencies, and Gerald liked them. But 300-075 certification exam there was a 300-075 certification exam brisk and 70-532 answer analysis restless vitality 300-075 certification exam about the young Irishman, fresh from a country where winds blew wet and chill, where misty swamps held no fevers, that 300-075 certification exam set him apart from these indolent gentle-folk of semi-tropical weather and malarial marshes.

Saya pernah membuat sebuah retasan dengan memasang berkas tersebut menggunakan CIFS. Ternyata ada cara yang lebih baik, yakni dengan mengonfigurasi pustaka klien SMB untuk mengaktifkan sampai versi 3.

Caranya:

$ mkdir ~/.smb
$ cat > ~/.smb/smb.conf  << EOF
[global]
    client max protocol = SMB3
EOF

Selesai.

Bacaan Lebih Lanjut

Memasang Golang Terbaru

Memasang Golang Terbaru

Debian Jessie memiliki Go versi lawas di repositorinya. Hal ini membuat beberapa aplikasi Go seperti Hydra SSO tidak bisa berjalan. Untuk itu, harus dipasang Go versi manual.

Pertama-tama, pergi ke laman unduh di situs resmi Go. Saat penulisan versi Go yang terbaru adalah 1.8.3. Lalu, salin tautan unduhan untuk dipakai.

Unduh dan taruh Go ke direktori tertentu. Kalau saya, lebih suka di /opt

wget -O- https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz | sudo tar xvfz - -C /opt

Go memerlukan direktori Go untuk pengguna dan direktori Go sendiri untuk bisa dieksekusi. Maka, buatlah berkas /etc/profiles.d/golang.sh yang berisi:

export GOROOT=/opt/go
export GOPATH=$HOME/.go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

Selesai.

Oh, iya, supaya tidak usah keluar, langsung saja eksekusi:

source /etc/profile.d/golang.sh

 

Wily Broke The Window

Read more about ..

Kalau KMail mengambek dengan pesan:

org.kde.pim.kmail: "The protocol version of the Akonadi server is incompatible. Make sure you have a compatible version installed. (Protocol version mismatch. Server version is newer (56) than ours (57). If you updated your system recently please restart the Akonadi server.)"
*** KMail got signal 11 (Exiting)
Segmentation fault

Itu berarti Akonadi perlu dinyalakan ulang.

akonadictl restart

 

Mengubah Format PEM (Apache/NGINX) ke Keystore JAVA

Mengubah Format PEM (Apache/NGINX) ke Keystore JAVA

Untuk organisasi/individu yang memegang domain dengan banyak sub-domain, biasanya dibeli sertifikat wildcard. Dengan sertifikat wilcard, tak perlu membeli sertifikat per sub-domain. Hanya saja, biasanya format yang diberikan adalah PEM untuk peladen HTTP semacam Apache2 atau NGINX.

Bagaimana dengan peladen berbasis Web macam Tomcat?

Saya asumsikan sudah ada tiga berkas ini:

server.key
Kunci privat peladen.
server.crt
Sertifikat peladen yang sudah ditandatangani oleh CA.
ca.cert
Sertifikat CA yang menandatangani sertifikat peladen.

Selanjutnya, ubah bentuk X.509 ke format PKCS12 dengan OpenSSL:

openssl pkcs12 -export -in server.crt -inkey server.key -out keystore.p12 -name red5 -certfile ca.cert

Anda akan ditanyakan sandi baru. Jangan lewati karena proses berikutnya butuh sandi tersebut! Isi sandi dengan sandi yang aman.

Selanjutnya, impor kunci PKCS12 tersebut ke sebuah keystore Java:

keytool -importkeystore -deststorepass ahs8kahLuvu3nahb -destkeypass ahs8kahLuvu3nahb -destkeystore keystore.jks -srckeystore keystore.p12 -srcstoretype PKCS12 -srcstorepass ahs8kahLuvu3nahb -alias red5

Saya menggunakan PWGen untuk membuat sandi acak. Mohon ganti ahs8kahLuvu3nahb dengan sandi yang Anda telah masukkan sebelumnya pada proses openssl.

Selesai. Anda kini sudah memiliki keystore.jks yang siap dipakai oleh aplikasi Java untuk membuat koneksi SSL/TLS.

Selamat mencoba.

Aktifkan Koneksi ADB dari Komputer ke Perangkat Android

Saya rasa ada di suatu entri di blog ini. Tapi, saya membuat tulisan ini agar lebih jelas.

Aturan UDEV Android

Agar Android dapat dikenali, pasang aturan UDEV untuk Android. Baik systemd maupun sysvinit dapat menikmati ini.

Unduh berkas aturan dan taruh ke direktori aturan UDEV.

sudo wget https://raw.githubusercontent.com/M0Rf30/android-udev-rules/master/51-android.rules -O /etc/udev/rules.d/51-android.rules

Muat ulang UDEV.

sudo /etc/init.d/udev restart

Selanjutnya aktifkan modus USB Debugging.

USB Debugging

Aktifkan USB DEBUG pada menu Pengembang. Caranya:

  1. Masuk ke Setelan => Tentang ponsel
  2. Tap beberapa kali pada Nomor bentukan
  3. OPO akan memberitahukan Anda kalau Anda sudah masuk ke menu pengembang.
  4. Keluar dari menu Tentang ponsel dan masuk ke menu Opsi pengembang
  5. Aktifkan Android Debugging
  6. Hubungkan komputer ke OPO dengan kabel USB. Lalu izinkan debugging USB.
    ADB enable access from PC

    ADB enable access from PC

Selesai.

Contoh Kalau Berhasil

Kalau berhasil, Anda bisa lakukan ini pada mode Recovery atau Normal:

$ adb devices
List of devices attached 
4aea6b78        device

Saat telepon Anda dapat masuk ke dalam mode Fastboot, maka yang terdeteksi adalah sebagai berikut:

$ fastboot devices
4aea6b78        fastboot

Selesai.

Cara Pasang Raspberry Pi 2

Cara Pasang Raspberry Pi 2

Sesuai janji dengan seseorang, inilah tulisan tentang memasang di Raspberry Pi 2. Maaf penulisan tidak rapi.

Persiapan

Saat ini saya lagi menjadi fakir MicroSD. MicroSD saya yang kencang ada di rumah. Saat ini saya hanya menggunakan MicroSD pinjaman dari kelas sebelah. Makanya, untuk menyiasati itu, saya menyediakan satu direktori terpisah di komputer.

Konsepnya, saya pasang segala sesuatu pada direktori tersebut. Setelah semuanya selesai, baru isinya dipindahkan ke MicroSD. Mudah bukan?

Siapkan direktori sementara untuk ditulisi. Saya buat /tmp/ROOTFS, tapi Anda bisa beda. Malah lebih baik. Saya, ‘kan, kebetulan memori 32GB dan /tmp dipasangi tmpfs

Buat konvensi:

export ROOTFS=/tmp/ROOT
export REALROOTFS=/mnt/realroot
export REALBOOTFS=/mnt/realboot

Keterangan:

  • Variabel $ROOTFS merupakan direktori sementara yang akan kita pakai untuk memasang-masang sistem sebelum disalin ke MicroSD.
  • Variabel $REALROOTFS merupakan direktori tempat kita nantinya akan mengaitkan partisi utama MicroSD.
  • Variabel $REALBOOTFS merupakan direktori tempat kita nantinya akan mengaitkan partisi boot MicroSD.

Buat direktorinya kalau belum ada.

sudo mkdir $ROOTFS $REALROOTFS $REALBOOTFS

Firmware

Unduh firmware untuk Raspberry Pi.

wget https://github.com/raspberrypi/firmware/archive/master.zip && unzip master.zip

Atau, salin repositori GIT-nya supaya bisa diperbaharui nanti.

Cara kedua.

git clone https://github.com/raspberrypi/firmware.git firmware

Biar tidak bingung, mari buat konvensi direktori firmware ada di sini:

export FIRMWARE_DIR=/home/user/Unduhan/firmware-master

Atau:

export FIRMWARE_DIR=/home/user/Unduhan/firmware

Selanjutnya memasang perkakas pada sistem.

Persiapan Sistem dengan QEMU

Pasang QEMU.

sudo apt-get install qemu binfmt-support qemu-user-static

Lakukan Debootstrap dengan QEMU.

sudo qemu-debootstrap --no-check-gpg --arch=armhf sid $ROOTFS http://kambing.ui.ac.id/debian/

Setelah selesai memasang sistem, lakukan:

sudo qemu-debootstrap --no-check-gpg --arch=armhf sid $ROOTFS http://kambing.ui.ac.id/debian/

Salin modul kernel ke dalam sistem

sudo cp -r $FIRMWARE_LIB/modules $ROOTFS/lib/

 

Masuk ke sistem:

sudo chroot $ROOTFS

Persiapan Sistem Di Dalam QEMU

Siapkan FSTAB

# cat > /etc/fstab << EOF > /dev/mmcblk0p1          /boot           vfat            defaults        0 2
> /dev/mmcblk0p2          none            swap            sw              0 0
> /dev/mmcblk0p3          /               xfs             defaults,noatime,nodiratime        0 1
> EOF

Siapkan bahasa.

apt-get install locales

Aktifkan Bahasa Indonesia

dpkg-reconfigure locales

Siapkan Zona Waktu

dpkg-reconfigure tzdata

Sampai sini, sih, seharusnya sistem siap dipasangi apa pun. Biar cantik, pasang ini:

apt-get install vim

Yang terakhir tergantung agama dan kepercayaan masing-masing. Saya tidak sedang memaksa Anda pindah agama.

Pengguna

Pasang sudo untuk pengguna admin.

apt-get install sudo

Buat satu pengguna.

# adduser jp
Adding user `jp' ...
Adding new group `jp' (1000) ...
Adding new user `jp' (1000) with group `jp' ...
Creating home directory `/home/jp' ...
Copying files from `/etc/skel' ...
Masukkan sandi Unix yang baru :
Ketik ulang sandi Unix:
passwd: kata sandi diperbaharui dengan sukses
Mengubah informasi pengguna dari jp
Masukkan nilai baru atau tekan ENTER untuk nilai bawaan
        Nama Lengkap []: Jan Peter Alexander Rajagukguk
        Nomor Ruangan []: 1145
        Telepon Kantor []: 
        Telepon Rumah []: 
        Lain-lain []: 
Is the information correct? [Y/n] Y

Buat dia sebagai admin.

adduser jp sudo

Pasang perkakas sistemberkas yang Anda gunakan. Saya menggunakan XFS, jadi saya pasang:

apt-get install xfsprogs dosfstools ntfs-3g

Saya hanya memilih XFS, FAT32/16, dan NTFS. Untuk perkakas EXT2/3/4 nampaknya sudah otomatis terpasang. Selanjutnya memasang sistem dasar.

Siapkan Peladen SSH

Pasang Dropbear, peladen SSH yang lebih ringan dari OpenSSH.

apt-get install dropbear openssh-client

Aktifkan dia supaya jalan di awal.

sed -i 's/NO_START=1/NO_START=0/g' /etc/default/dropbear

Sampai sini sistem dasar sudah selesai. Silakan keluar dari CHROOT dengan CTRL+D atau ketik “quit” atau “exit”. Setelah puas memasang segala sesuatu, saatnya sistem ditaruh ke dalam mount.

Menaruh Aplikasi Ke MicroSD

Saya diberi pinjaman sebuah MicroSD sebesar 4GB. Saya partisi dengan:

  • BOOT: 128MB
  • SWAP: 384MB
  • ROOT: Sisanya.

Saya tidak tahu sisanya itu ada berapa. Tapi silakan lihat gambar. Saya menggunakan pemartisi KDE.

Raspberry Pi 2 Partitions

My Raspberry Pi 2 partition scheme

Partisi BOOT memang harus FAT32 atau FAT16. Ya, saya pilih FAT16 saja. Yang menarik, saya memberikan partisi utama dengan sistemberkas XFS. GUNAKAN SAJA EXT3/4!

Persiapan Partisi BOOT

Anda bisa lakukan ini di penjelajah berbasis GUI favorit Anda (Nautilus/Dolphin/dsb.) atau gunakan cara yang lebih sulit.

Saya asumsikan partisi MicroSD ada di partisi /dev/sde1 ini tergantung sistem Anda. Berikut caranya:

sudo mount /dev/sde1 $REALBOOTFS

Salin dari unduhan kita ke direktori itu

sudo cp -r $FIRMWARE_DIR/boot/* $REALBOOTFS

Tambahkan baris parameter pada berkas cmdline.txt, biasanya belum ada.

 echo "root=/dev/mmcblk0p3 rw rootwait console=ttyAMA0,115200 console=tty1 selinux=0 plymouth.enable=0 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 kgdboc=ttyAMA0,115200 elevator=noop" | sudo tee $REALBOOTFS/cmdline.txt

Selesai, jangan lupa sinkronisasikan perubahan ke dalam MicroSD.

sync

Persiapan Partisi Utama

Sekali lagi, Anda tidak perlu menyusahkan diri. Tapi, kalau mau pakai cara ini, ya, sudah.

sudo mount /dev/sde3 $REALROOTFS

Salin semua kerjaan kita ke sana.

sudo cp -a $ROOTFS/* $REALROOTFS/

Dan jangan lupa,

sync

Setelah ini selesai, lepas kaitan dan masukkan ke dalam RaspberryPi.

sudo umount $REALROOTFS $REALBOOTFS

Selesai.

Referensi

Membuat WIFI Sendiri dengan hostapd, dhcpd, dan nftables

Membuat WIFI Sendiri dengan hostapd, dhcpd, dan nftables

Access point configuration

Access point configuration

Saya hendak membuat sebuah jaringan nirkabel. Jaringan nirkabel itu terhubung ke sebuah komputer yang berfungsi sebagai router. Setiap akses dari perangkat-perangkat dalam jaringan tersebut dienkapsulasi dalam NAT dan dikirim ke Internet/jaringan lainnya.

Komputer yang saya gunakan adalah GNU/Linux Gentoo dengan spesifikasi sebagai berikut:

  • Kernel Linux 3.19-pf1
  • Systemd 219

Saya pun tertarik menggunakan nftables karena dia yang akan menggantikan iptables di masa mendatang. Perkakas nftables pertama kali ada di Linux 3.13. Jadi, ya, lumayan relatif baru.

Aktifkan IP Forwarding

Setiap kali mau memakai NAT, jangan lupa mengaktifkan IP Forwarding di kernel. Lihat dulu kalau dia aktif:

$ sudo sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0

Kalau nilainya 0, berarti belum aktif. Aktifkan:

sudo sysctl -w net.ipv4.ip_forward=1

Supaya permanen, tambahkan ke konfigurasi. Ingat! Sistem ini menggunakan systemd. Jadi, berkasnya ada di /etc/sysctl.d

echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.d/99-sysctl.conf

Ini kalau tadi sebelumnya IPv4 belum menyala. Kalau sudah, lewati saja. Tapi, biasanya distro-distro bakunya mematikan fitur ini.

nftables

Ada beberapa langkah yang dilakukan untuk memasang nftables:

  1. Memasang kernel yang sudah mendukung nftables.
  2. Memasang perkakas nftables.
  3. Memasang unit systemd.

Modul Kernel

Saya tidak tahu Anda menggunakan kernel versi apa. Tapi, seandainya kernel tersebut di atas 3.13, kemungkinan ada. Kalau saya kebetulan mengompilasi sendiri kernel saya. Jadinya, saya aktifkan nftables pada bagian:

-> Networking support
  -> Networking options
    -> Network packet filtering framework (Netfilter)
      -> Core Netfilter Configuration

Lalu saya centang saja semua yang berbau nf_tables di konfigurasi seperti terlihat pada gambar.

I just opt-in every "nf_tables" in Core Netfilter Configuration

I just opt-in every “nf_tables” in Core Netfilter Configuration

Setelah saya kompilasi dan pasang kernel saya. Lalu saya masuk ke sistem dengan menggunakan kernel tersebut. Selanjutnya saya memasang perkakas nftables untuk bisa memanipulasi tabel nftables.

Perkakas

Saya memasang nftables dengan cara berikut:

sudo emerge -av net-firewall/nftables

Atau gunakan pemaket dari distro kesayangan Anda masing-masing. Untuk Debian dan turunannya, ada bacaan menarik mengenai cara cepat membuat perkakas ini.

Jika sudah, ada beberapa contoh penggunaan nftables yang menarik, misalnya:

  • Melihat seluruh isi tabel:
    nft list ruleset
  • Menghapus seluruh tabel:
    nft flush ruleset
  • Menyimpan seluruh tabel ke berkas konfigurasi:
    nft list ruleset > /var/lib/nftables/rules-save
  • Memuat konfigurasi dari berkas konfigurasi:
    nft -f /var/lib/nftables/rules-save

Saya mengikuti tata letak berkas di Gentoo. Dia menaruh aturan iptables, nftables, ebtables, dan lain-lain di direktori /var/lib. Kalau Debian menaruhnya di /etc. Anda terserah mau taruh di mana, yang penting konsisten.

Inisialisasi Aturan nftables

Awal-awalnya nftables masih kosong. Saya menggunakan aturan yang telah disediakan gentoo untuk IPv4 NAT. Gentoo saat ini menaruh berbagai aturan siap pakai di /etc/nftables.

Mengapa saat ini? Karena biasanya aturan siap pakai ditaruh di /usr/share. Mungkin saja bilamana nftables sudah stabil, aturan-aturan ini dipindahkan ke sana. Ya, sudah, pakai saja:

sudo nft -f /etc/nftables/ipv4-nat

Supaya Anda tidak penasaran, isi berkas itu sebenarnya cuma aturan biasa:

#!/sbin/nft -f

table nat {
    chain prerouting    { type nat hook prerouting priority -150; }
    chain postrouting   { type nat hook postrouting priority -150; }
}

Mirip-miriplah dengan tutorial nftables NAT yang resmi.

Lalu tambahkan aturan yang mentranslasi semua paket jaringan dari wlan0 ke eth0.

sudo nft add rule nat postrouting ip saddr 10.10.0.0/24 meta oif eth0 snat 192.168.0.5

Ganti 192.168.0.5 dengan IP kartu ethernet Anda. Lihat gambar awal mengenai skema jaringan yang hendak dibangun.

Padanan di iptables

Aturan ini padanannya di iptables seperti ini:

sudo iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j SNAT --to 192.168.0.5

Lalu mengapa tidak menggunakan iptables saja biar sederhana? Judul artikel ini belajar nftables. Lagipula, sebenarnya lebih sederhana nftables, hanya saja ia belum terintegrasi dengan distro-distro yang ada saat ini. Dia masih baru, bahkan kernel yang mendukung belum masuk.

Sebelum ini saya biasanya menggunakan perintah berikut untuk iptables:

sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Nanti saya coba di Wheezy, deh. Kalau tidak malas, tapinya. Untuk saat ini jangan lupa untuk mematikan NAT di iptables supaya tidak kacau!

sudo rmmod iptable_nat

Menyimpan Aturan nftables

Kalau sudah selesai, seharusnya aturan nftables akan sebagai berikut:

$ sudo nft list ruleset
table ip nat {
    chain prerouting {
         type nat hook prerouting priority -150;
    }

    chain postrouting {
         type nat hook postrouting priority -150;
         ip saddr 10.10.0.0/24 oif eth0 snat 192.168.0.5
    }
}

Nah, kalau di Gentoo, dia sudah menyediakan skrip initnya. Sayangnya cuma untuk OpenRC. Kita bisa memanfaatkan skrip itu untuk menyimpan aturan NAT:

sudo /etc/init.d/nftables save

Atau cara manualnya:

sudo mkdir -p /var/lib/nftables
sudo nft list ruleset | sudo tee /var/lib/nftables/rules-save

Selanjutnya membuat aturan systemd supaya dijalankan otomatis.

Aturan systemd untuk nftables

Belum ada aturan untuk nftables. Ada seseorang yang berbaik hati untuk membuat skrip untuk systemd. Tetapi, saya memilih untuk membuat sendiri.

Skrip orang itu membuat nftables sebagai layanan. Tetapi, saya pikir seharusnya perilaku nftables sama seperti skrip ALSA dan iptables. Ia hanya perlu dijalankan sekali saja. Itu sebabnya, sama seperti kedua subsistem, saya memecah nftables menjadi tiga berkas aturan.

Aturan /usr/lib/systemd/system/nftables.service

[Unit]
Description=Store and restore nftables firewall rules
Documentation=man:nftables(8)

[Install]
Also=nftables-store.service
Also=nftables-restore.service

Aturan /usr/lib/systemd/system/nftables-restore.service

[Unit]
Description=Restore nftables firewall rules
# if both are queued for some reason, don't store before restoring 🙂
Before=nftables-store.service
# sounds reasonable to have firewall up before any of the services go up
Before=network.target
Conflicts=shutdown.target

[Service]
Type=oneshot
ExecStart=/sbin/nft -f /var/lib/nftables/rules-save

[Install]
WantedBy=basic.target

Aturan /usr/lib/systemd/system/nftables-store.service

[Unit]
Description=Store nftables firewall rules
Before=shutdown.target
DefaultDependencies=No

[Service]
Type=oneshot
ExecStart=/bin/sh -c "/sbin/nft list ruleset > /var/lib/nftables/rules-save"

[Install]
WantedBy=shutdown.target

Selanjutnya, pasang ketiga layanan tersebut:

sudo systemctl enable nftables

Selesai untuk nftables, selanjutnya mengonfigurasi antarmuka jaringan.

Mengonfigurasi Antarmuka Jaringan

Sudah menjadi aturan umum kalau firewall berjalan sebelum antarmuka jaringan diaktifkan. Dengan memulai firewall terlebih dahulu, tidak ada jeda yang bisa dipakai untuk masuk. Tidak ada waktu antara menjalankan antarmuka jaringan dengan menyalakan firewall. Itu sebabnya, nftables dipasang pertama kali sebelum antarmuka jaringan.

Kalau Anda pengguna destop, kemungkinan sudah ada NetworkManager. Untuk konfigurasi minimal, NetworkManager biasanya tidak dipasang. Antarmuka jaringan harus dipasang dengan cara lain.

Saya gagal menggunakan metode systemd-networkd. Kalau saya menggunakan infrastruktur itu, firewall (nftables/iptables) tidak ada yang berjalan! Mungkin saya ada yang kurang. Entahlah, yang pasti saya mengonfigurasi statik dengan cara lain saja.

Antarmuka eth0

Gentoo menggunakan pendekatan yang sama dengan Arch Linux. Mereka menggunakan systemd untuk menjalankan skrip Gentoo. Dengan demikian, konfigurasi Gentoo yang lama bisa dibaca. Ini konfigurasi lama saya di  /etc/conf.d/net

dns_servers=( "8.8.8.8" )

config_eth0="192.168.0.5 netmask 255.255.255.0"
routes_eth0="default via 192.168.0.1"

Cara mengaktifkan layanan adalah dengan membuat tautan simbolik dari net@.service ke net@eth0.service.

sudo ln -s /usr/lib/systemd/system/net@{,eth0}.service

Kalau Anda tidak percaya diri dengan menggunakan enumerasi BASH, bentuk lain dari perintah itu adalah

sudo ln -s /usr/lib/systemd/system/net@.service /usr/lib/systemd/system/net@eth0.service

Setelah itu, pasang layanan ini ke systemd agar dijalankan pada waktu komputer baru menyala.

sudo systemctl enable net@eth0

Kalau Debian, seperti biasa ada di /etc/network/interfaces. Jadi, mungkin systemd tidak terlalu dibutuhkan.

Antarmuka wlan0

Saya menggunakan Linksys WUSB54GC. Kemampuan yang dimiliki:

    Supported interface modes:
         * IBSS
         * managed
         * AP
         * AP/VLAN
         * WDS
         * monitor
         * mesh point

Dia bisa menjadi Access Point (AP)!

Implementasi yang kita pilih merupakan implementasi statik. Kita bisa dengan aman berasumsi bahwa IP yang dipakai tidak akan berubah.

Saya tadinya ingin membuat seperti antarmuka Ethernet. Tapi, konfigurasi gagal karena RFKill selalu memblokir wlan0 dengan soft block. Saya pun memutuskan untuk membuat sebuah layanan kecil untuk menjalankan wlan0 di /usr/lib/systemd/system/ap-static.service

[Unit]
Description=Static WLAN0 as an Access Point
Documentation=man:rfkill(8) man:ip(8)
After=network.target
After=time-sync.target

[Service]
Type=oneshot
RemainAfterExit=yes 
ExecStart=/usr/sbin/rfkill unblock all
ExecStart=/bin/ip addr add 10.10.0.1/24 dev wlan0
ExecStart=/bin/ip link set wlan0 up

[Install]
WantedBy=multi-user.target

Seperti biasa, pasang layanan ini:

sudo systemctl enable ap-static

Untuk antarmuka nirkabel sudah selesai. Saatnya memasang layanan yang akan mengonfigurasi klien WIFI.

Layanan Konfigurator WIFI

Ada dua layanan utama yang dipakai untuk tutorial kali ini. Keduanya masing-masing bisa diganti dengan yang lain. Namun, saat ini saya menggunakan dua layanan ini karena keduanya dapat dikembangkan untuk kebutuhan kompleks.

hostapd
Hostapd adalah aplikasi penyedia Access Point. Dia menyediakan autentikator, mengatur antarmuka WIFI, dan sejenisnya. Selain memiliki autentikator internal, hostapd dapat terhubung ke Radius dan mendukung ACS.
DHCPd
DHCPd adalah penyedia layanan DHCP. Layanan ini yang mengatur kepemilikan IP dan sejenisnya kepada klien. Sebenarnya masih ada udhcpd yang lebih sederhana. Yah, namanya juga belajar.

Mari konfigurasi keduanya.

Layanan hostapd

Setiap distro umum memiliki paket hostapd. Saya sendiri di Gentoo mengunakan hostapd versi:

$ sudo hostapd -v
hostapd v2.3
User space daemon for IEEE 802.11 AP management,
IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
Copyright (c) 2002-2014, Jouni Malinen <j@w1.fi> and contributors

Pertama-tama, konfigurasikan AP yang hendak kita buat. Berikut contohnya pada /etc/hostapd/hostapd.conf

# WiFi Hotspot
interface=wlan0
driver=nl80211
# Access Point
ssid=AP Lo Nyambung2
hw_mode=g
ieee80211d=1
country_code=ID  ### 802.11d/h harus ada kode negara
# WiFi Channel:
ieee80211h=1  
channel=3     ### Channel 3
wmm_enabled=1 ### QoS
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_passphrase=s4nD1Al4yFtW
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP

Saya menyalin skrip layanan systemd hostapd yang disediakan oleh Gentoo menjadi /usr/lib/systemd/system/hostapd-wlan0.service. Alasan saya supaya kalau ada pembaharuan sistem, skrip ini tidak berubah. Lagipula, saya mengubah agar layanan berjalan setelah ap-static.service sudah berjalan. Isinya:

[Unit]
Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
After=network.target
After=ap-static.service

[Service]
ExecStart=/usr/sbin/hostapd /etc/hostapd/hostapd.conf

[Install]
WantedBy=multi-user.target

Setelah itu, pasang layanan ini.

sudo systemctl enable hostapd-wlan0

Selesai.

Layanan dhcpd

Seperti saya bilang, sebenarnya DHCPd agak mubazir. Tapi, berhubung sistem ringan, saya pasang saja. Oh, iya, kalau di Debian, nama paketnya isc-dhcp-server.

Gentoo:

sudo emerge -av net-misc/dhcp

Debian dan turunannya:

sudo apt-get install isc-dhcp-server

Setelah terpasang, buat berkas konfigurasi /etc/dhcp/dhcpd.conf

ddns-update-style none;
log-facility local7;
subnet 10.10.0.0 netmask 255.255.255.0 {
    range 10.10.0.2 10.10.0.32;
    option domain-name-servers 8.8.8.8;
    option routers 10.10.0.1;
}

Jangkauan IP tidak saya buat jauh karena pun jumlah maksimal klien yang terhubung ke AP tidak begitu banyak. Lain cerita kalau misalnya DHCPd kita pakai juga untuk yang lain.

Seperti biasa, saya menyalin berkas systemd DHCPd dan menamainya menjadi /usr/lib/systemd/system/dhcpd4-wlan0.service

[Unit]
Description=DHCPv4 Server Daemon
Documentation=man:dhcpd(8) man:dhcpd.conf(5)
After=ap-static.service

[Service]
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcp -group dhcp --no-pid

[Install]
WantedBy=multi-user.target

Terakhir, pasang layanan DHCPd:

sudo systemctl enable dhcpd4-wlan0

Selesai.

Terakhir

Matikan dan kemudian hidupkan kembali komputer yang dipakai sebagai AP. Kalau benar, maka otomatis layanan ini akan berjalan.

Example on working AP.

Example on working AP from my phone.

Tamat.

Memasang Viber untuk Gentoo GNU/Linux

Memasang Viber untuk Gentoo GNU/Linux

Viber adalah sebuah produk komunikasi seperti BBM, WhatsApp, dan sebagainya. Viber menyediakan aplikasi untuk dijalankan di destop. Asyiknya, destop termasuk juga GNU/Linux.

Viber menyediakan dua paket, paket Debian dan RPM. Untungnya, setelah saya periksa, pustaka yang disertakan oleh Viber dikompilasi secara statik. Artinya, GNU/Linux selain Debian, Redhat, dan sejenisnya dapat menggunakan Viber.

Mari Memasang

Unduh di laman unduh Viber untuk GNU/Linux.

wget http://download.cdn.viber.com/cdn/desktop/Linux/viber.deb

Pasang ke sistem Anda:

ar p viber.deb data.tar.gz | sudo tar xvfz - -C/

Paket Viber memasang dirinya sendiri ke /opt/viber dan beberapa ikon ke direktori standar. Selanjutnya, buat tautan ke binari Viber agar mudah dieksekusi.

sudo ln -sf /opt/viber/Viber /usr/local/bin/Viber

Selesai dan siap digunakan.

Memperketat Keamanan Situs

Memperketat Keamanan Situs

Pendahuluan

Halo, jumpa lagi di hari Jumat!

Karena isu keamanan akhir-akhir ini semakin ketat, saya merasakan perlunya pembelajaran kepada masyarakat Indonesia mengenai penggunaan enkripsi yang tepat. Entahlah, mungkin ini juga karena saya meneliti Owncloud terlalu jauh. Atau mungkin ini sekedar tulisan menambah kuota tulisan saya di blog. Ilmu memang untuk dibagi.

Orang pasti sudah tahu tentang BEAST, CRIME, dan HEARTBLEED. BEAST adalah proof-of-concept serangan terhadap enkripsi TLSv1.0 yang menyebabkan sebuah domain dapat dibajak dari implementasi TLS v1.0 yang buruk di sistem operasi. Lalu, ada CRIME yang menyerang implementasi kompresi HTTP pada TLS dan SPDY. Yang menghebohkan berikutnya adalah HEARTBLEED yang menyerang implementasi cacat OpenSSL pada implementasi ekstensi TLS heartbeat.

Yang terakhir dan teranyar adalah POODLE, eksploit terhadap SSLv3 yang menyebabkan sekarang ini orang dipaksa untuk mematikan SSLv3. Ya, kecuali Anda menggunakan IE6/7 pada Windows XP yang belum diperbaharui, sebenarnya SSLv3 sudah lama tidak diperlukan. Bahkan, sebaiknya Anda memaksa peramban Anda langsung menggunakan TLS v1.2.

Ekstensi AES-NI

Tapi… tapi… bukankah menggunakan enkripsi membuat peladen kurang responsif?

Itu dulu! Sekarang, ‘kan, sudah ada ekstensi AES-NI pada prosesor x86. Jadi, enkripsi dilakukan secara langsung oleh CPU. Saya melakukan eksperimen kecil untuk memperlihatkan perbedaan operasi biasa dan menggunakan AES-NI.

Operasi biasa menggunakan instruksi CPU normal.

$ OPENSSL_ia32cap="~0x200000200000000" openssl speed -elapsed -evp aes-128-cbc
You have chosen to measure elapsed time instead of user CPU time.
Doing aes-128-cbc for 3s on 16 size blocks: 34349970 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 64 size blocks: 8984170 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 2337382 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 1024 size blocks: 589989 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 8192 size blocks: 74022 aes-128-cbc's in 3.00s
OpenSSL 1.0.1i 6 Aug 2014
built on: Fri Aug  8 06:23:32 WIB 2014
options:bn(64,64) rc4(8x,int) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx) 
compiler: x86_64-pc-linux-gnu-gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -O2 -pipe -march=native -mtune=native -fomit-frame-pointer -flto=8 -floop-interchange -ftree-loop-distribution -floop-strip-mine -floop-block -ftree-vectorize -fno-strict-aliasing -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128-cbc     183199.84k   191662.29k   199456.60k   201382.91k   202129.41k

Sedangkan berikut operasi menggunakan instruksi AES-NI.

$ openssl speed -elapsed -evp aes-128-cbc
You have chosen to measure elapsed time instead of user CPU time.
Doing aes-128-cbc for 3s on 16 size blocks: 99416661 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 64 size blocks: 27157194 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 256 size blocks: 7746016 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 1024 size blocks: 2005119 aes-128-cbc's in 3.00s
Doing aes-128-cbc for 3s on 8192 size blocks: 253147 aes-128-cbc's in 3.00s
OpenSSL 1.0.1i 6 Aug 2014
built on: Fri Aug  8 06:23:32 WIB 2014
options:bn(64,64) rc4(8x,int) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx) 
compiler: x86_64-pc-linux-gnu-gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -Wall -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM -O2 -pipe -march=native -mtune=native -fomit-frame-pointer -flto=8 -floop-interchange -ftree-loop-distribution -floop-strip-mine -floop-block -ftree-vectorize -fno-strict-aliasing -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128-cbc     530222.19k   579353.47k   660993.37k   684413.95k   691260.07k

Berikut tabel hasilnya:

Instruksi CPU Tipe 16-bit 64-bit 256-bit 1024-bit 8192-bit
AES-NI aes-128-cbc 530222,19 579353,47 660993,37 684413,95 691260,07
Normal 183199,84 191662,29 199456,6 201382,91 202129,41
Performa 2,8942284557 3,0227827811 3,313970909 3,3985701667 3,4198886248
Total Performa AES-NI 3,2098881874

Tampak bahwa dalam kasus ini, penggunakan AES-NI pada OpenSSL meningkatkan performa 3 kali lipat.

Dukungan AES-NI

Untuk mengetahui apakah prosesor peladen Anda mendukung AES-NI, silakan lihat dengan:

$ cat /proc/cpuinfo  | grep aes
flags           : ... aes ...

Kalau didukung, akan ada tulisan ‘aes’. Biasanya, sih, untuk prosesor AMD dan Intel yang baru [baca: keluaran tahun-tahun ini] sudah mendukung instruksi AES-NI. Kalau pun belum, bisa langsung saja mengompilasi OpenSSL dengan menggunakan instruksi SSE4 atau AVX. Ya, tapi itu di luar cakupan tulisan ini agar tidak terlalu rumit.

Untuk Debian Wheezy, OpenSSL 1.0.1e yang digunakan akan secara otomatis mendeteksi AES-NI. Tidak perlu mengompilasi sendiri untuk versi Debian tersebut. Untuk sistem operasi yang lain, silakan konsultasi kepada Mbah Gugel.

Bila Anda menggunakan KVM atau Proxmox, pastikan Anda menggunakan tipe CPU Host. Cara lain adalah pastikan instruksi AES-NI diperbolehkan untuk KVM.

Konfigurasi NGINX

Karena OpenSSL transparan, maka tidak ada yang perlu dipusingkan oleh NGINX untuk menggunakan AES-NI. NGINX hanya perlu memberitahukan protokol enkripsi yang dipakai untuk HTTPS.  Untuk itu, perhatikan contoh konfigurasi NGINX:

server {
        listen   80;
        listen  [::]:80 ipv6only=on;
        server_name  www.contoh.aja;
        server_name_in_redirect on;
        port_in_redirect on;

        access_log  /var/log/nginx/normal.access.log;
        error_log  /var/log/nginx/normal.error.log;

        ## redirect http to https ##
        rewrite        ^ https://$server_name$request_uri? permanent;
}

server {
        listen   443 ssl spdy;
        listen [::]:443 ipv6only=on ssl spdy;

        server_name  www.contoh.aja;
        server_name_in_redirect on;
        port_in_redirect on;

        ssl  on;
        ssl_certificate /etc/nginx/ssl.cert;
        ssl_certificate_key /etc/nginx/ssl.key;
        
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers         "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";
        ssl_prefer_server_ciphers on;
        ssl_session_cache   shared:SSL:10m;
        ssl_session_timeout 10m;

        access_log  /var/log/nginx/ssl.access.log;
        error_log  /var/log/nginx/ssl.error.log;

        ## HERE PHP ENGINE AND OTHER REWRITE RULES ##
}

Saya akan mencoba menjelaskan beberapa bagian yang penting. Saya mengasumsikan Anda sudah tahu mengonfigurasi NGINX secara dasar sehingga saya tak perlu menjelaskan semuanya. Atau, setidaknya Anda bisa mencari langsung di Internet.

Saya sengaja tidak menyertakan aturan FastCGI PHP dan aturan-aturan rewrite untuk mengurangi kompleksitas kode. Ada banyak tutorial dasar untuk menyertakan aturan FastCGI. Lagipula, untuk aturan-aturan rewrite tergantung kepada aplikasi yang kita gunakan (Drupal, WordPress, dsb.).

Yak, langsung saja.

Mendengar di IPv4 dan IPv6

Berikut sintaksis agar NGINX mendengar semua antarmuka jaringan (IPv4 dan IPv6).

listen   80;
listen  [::]:80 ipv6only=on;

Ada alasan mengapa mengaktifkan dual stack. Universitas Indonesia (UI) sudah sejak lama memiliki satu blok (/16) IPv4 kelas B. Karena termasuk historical member dari IANA, UI juga beruntung mendapatkan satu blok /48 IPv6. Itu sebabnya, hampir semua peladen UI sudah memiliki IPv6 sendiri berikut IPv4 publik.

Mengarahkan Semua ke HTTPS

Berikut sintaksis untuk mengarahkan koneksi HTTP ke HTTPS.

rewrite        ^ https://$server_name$request_uri? permanent;

Ada tutorial lama yang menyampur koneksi HTTPS dan HTTP. Hal ini tidak sesuai dengan prinsip keamanan. Bila memang situs ingin aman sepenuhnya, maka harus semuanya harus menggunakan HTTPS. Konten campuran (berisi HTTP dan HTTPS) tidak disarankan dan beberapa peramban akan cerewet tentang itu.

Mengaktifkan SPDY

Berikut sintaksis agar NGINX menggunakan SSL (HTTPS) dengan SPDY.

listen   443 ssl spdy;
listen [::]:443 ipv6only=on ssl spdy;

Untuk akselerasi HTTPS, Google mengembangkan teknik SPDY. Hampir semua peramban modern mendukung protokol SPDY. Saya pernah membahas ini.

Mengaktifkan SSL

Baris-baris inilah yang mengaktifkan enkripsi HTTPS (SSL).

ssl  on;
ssl_certificate /etc/nginx/ssl.cert;
ssl_certificate_key /etc/nginx/ssl.key;

Baris ssl_certificate mengarahkan ke berkas sertifikat peladen. Ada tiga jenis skenario untuk berkas sertifikat peladen:

  1. Untuk menambah legitimasi, biasanya sertifikat ditandatangani oleh Certificate Authority (CA) yang sudah diakui. StartSSL menyediakan layanan ini dengan gratis. Kalau mau yang murah ada RapidSSL atau Komodo. Kalau mau lebih bonafide, gunakan VeriSign. Mereka ini biasanya sertifikat utamanya (root certificate) sudah dipasang di sistem operasi/peramban. Root certificate adalah sertifikat CA yang dipakai untuk melegitimasi sertifikat sebuah server.
  2. Ada juga organisasi yang membuat root certificate sendiri. Biasanya, mereka memasang sendiri root certificate ke sistem operasi/peramban pengguna. Ada banyak tutorial tentang itu, terutama Windows Server dan UNIX.
  3. Yang paling jamak digunakan di tutorial-tutorial biasanya menggunakan sertifikat yang ditandatangani sendiri (self-signed).

Silakan pilih skenario yang terbaik. Untuk situs bisnis biasanya menggunakan CA pihak ketiga (poin 1). Namun, untuk Intranet biasanya menggunakan poin 2.

Baris berikutnya ssl_certificate_key mengarahkan berkas kunci privat peladen. Pastikan berkas ini hanya bisa diakses baca-saja oleh root (0400).

Parameter Tambahan

Berikut parameter tambahan yang opsional. Parameter-parameter ini yang memperkuat enkripsi situs.

Hanya Gunakan TLS

Protokol SSLv3 sudah tamat semenjak POODLE beberapa hari yang lalu. Banyak yang menyarankan untuk mematikan protokol ini. Ya, berhubung protokol ini sudah sangat lama, wajar saja. Lagipula, hanya IE6/7 yang menggunakan Windows XP SP3 yang belum ditambal saja yang terpengaruh. Sisanya, dunia sudah mengenal TLS sejak lama.

Ya sudah, cukup aktifkan semua versi protokol TLS saja.

ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;

Protokol TLS pun sebenarnya tidak begitu aman. Kalau mau paranoid, hanya aktifkan TLSv1.2 saja. Tentu saja, ini mengurangi jumlah pengunjung dan peramban yang bisa mengakses situs kita.

Gunakan SHA256 AES-GCM dengan Forward Secrecy dan RC4 Sebagai Cadangan

Semenjak tahun 2011, SHA1 dianggap sudah tidak aman lagi. Lebih parah lagi, Google akan mempenalti situs-situs yang masih menggunakan SHA1 pada 1 Januari 2017. Artinya, semua situs yang masih memakai sertifikat dengan tanda tangan SHA1 akan dianggap tidak aman oleh produk-produk Google.

Bila Anda masih baru mau memasang sertifikat, gunakan sertifikat dengan tanda tangan SHA256. Atau kalau lebih bagus lagi, gunakan SHA387. Tetapi, untuk SHA387 masih jarang dan lagi mahal.

Ada banyak protokol pertukaran kunci dan saya tidak mau terlalu detail. Saat ini protokol yang aman dari gangguan adalah AES-GCM dan RC4. Protokol RC4 sudah lama dan relatif aman. Sedangkan GCM masih relatif baru, sehingga beberapa peramban lama tidak mendukung.

[Lama itu hitungannya 10 s.d. 20 tahun yang lalu, ya, kawan-kawan.]

Saat ini RC4 disarankan untuk ditinggalkan. Bukan berarti dia tidak aman. Sudah ada metodenya, tetapi untuk bisa membobol RC4 saat ini memerlukan sumber daya yang sangat besar. Jadi, RC4 relatif cukup aman.

Penggunaan AES-GCM disarankan oleh karena adanya instruksi AES-NI yang mempercepat percepat perhitungan.  Teknik ini peningkatan implementasi dari AES-CBC dengan menggunakan instruksi perangkat keras. Itu sebabnya, AES-CBC disarankan ditinggalkan.

Berikut instruksinya.

ssl_ciphers         "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS";

Oh, iya, satu lagi. Dalam konfigurasi ini diaktifkan mode Forward Secrecy yang ada di TLSv1.2.

Mengaktifkan Urutan Enkripsi Di Sisi Server

Instruksinya:

ssl_prefer_server_ciphers on;

Instruksi ini mengakibat peladen akan menyuruh klien untuk menggunakan metode enkripsi yang diinginkan sesuai dengan urutan. Ini mengurangi kemungkinan klien yang sudah mendukung TLSv1.2 malah menggunakan versi terdahulu karena konfigurasi perambannya. Hal ini bisa memitigasi terhadap serangan BEAST.

Menyimpan Sesi SSL

Instruksinya:

ssl_session_cache   shared:SSL:10m;
ssl_session_timeout 10m;

Untuk keperluan optimasi, NGINX dapat menyimpan sesi SSL pada tembolok. Ada dua jenis yang didukung. Yang pertama, tembolok tersebut disimpan oleh NGINX sehingga bisa diakses oleh sesama proses-proses pekerja NGINX. Yang kedua, per pekerja menggunakan tembolok yang disediakan oleh OpenSSL. Disarankan untuk menggunakan tembolok NGINX saja.

Menurut NGINX, 1 MB mampu menampung 4000 sesi. Konfigurasi ini menggunakan 10MB sehingga kira-kira ada 40000 sesi yang didukung. Setiap sesi ini disimpan selama 10 menit saja. Silakan dikonfigurasikan sesuai kemampuan peladen Anda.

Terakhir

Setelah semua selesai, silakan menyalakan ulang NGINX. Mari saya rekap untuk Anda:

  1. Gunakan SPDY untuk mempercepat koneksi HTTPS.
  2. Gunakan kunci dengan algoritma SHA256 atau lebih yang sudah divalidasi oleh CA.
  3. Gunakan protokol TLS teranyar dengan AES-GCM dengan RC4 sebagai cadangan.
  4. Gunakan tembolok untuk mengoptimasi penggunaan TLS.

Anda pun sudah memiliki peladen yang cukup handal. Anda bisa mempelajari teknik-teknik tambahan lain mengenai SSL, misalnya menggunakan OCSP.

Terakhir, Anda perlu mengedukasi pengguna Anda agar tidak memberikan sandi kepada siapa pun dan mengganti sandi secara periodik, misalnya 6 bulan sekali. Percuma punya infrastruktur yang handal tanpa pengguna yang paham.

Nota Bene

Gunakan pihak ketiga untuk menguji SSL. Saya menggunakan perkakas dari Qualys SSL Lab. Contoh hasil pengujian konfigurasi SSL pada Blog Staff UI.

SSL Labs test on Blog Staff UI. Yeah, we need to upgrade into SHA256. The certificate is issued not long ago.

SSL Labs test on Blog Staff UI. Yeah, we need to upgrade into SHA256. The certificate is issued not long ago.

Bacaan Lebih Lanjut

Deadlight pada WINE dengan Menggunakan PlayOnLinux
WINE Is Not Emulator

Deadlight pada WINE dengan Menggunakan PlayOnLinux

Sebelum Ini

Ada beberapa syarat untuk dapat Memasang Deadlight.

  1. Sudah memasang PlayOnLinux.
  2. Sudah membeli/berniat membeli Deadlight dari STEAM. Saya tak sudi membantu pembajakan.
  3. Rasa haus mau belajar dan bermain.
  4. Semua dimulai dari Halaman Depan.
    PlayOnLinux front page

    PlayOnLinux front page

Selanjutnya proses pemasangan sederhana, kok. Intinya ada tiga kegiatan:

  1. Memasang WINE
  2. Memasang Lingkungan WINE untuk Steam.
  3. Memasang Steam
  4. Memainkan Deadlight

Gampang, bukan?

Memasang WINE

Untuk memasang WINE gunakan langkah seperti berikut.

  1. Dari Halaman Depan, buka menu Tools ⇒ Manage Wine versions
  2. Pastikan Anda ada di tab Wine versions (x86) untuk Wine 32-bit. Kebanyakan permainan masih memakai pustaka 32-bit.
    PlayOnLinux-WINE version Installer - 01 Pick Version

    PlayOnLinux-WINE version Installer – 01. Pick Version

  3. Pada tab tersebut, pada bagian Available Wine versions: pilihlah versi 1.7.24-LeagueOfLegendsCSMT dan tekan tombol “>” untuk dipasang.Saya tidak tertarik kepada LoL. Tetapi, teknologi CSMT membuat instruksi OpenGL berjalan secara paralel sehingga menghasilkan gambar lebih cepat.
  4. Terakhir, wisaya akan menanyakan konfirmasi Anda. Langsung saja Next.
PlayOnLinux-WINE version Installer - 00 Intro

PlayOnLinux-WINE version Installer – 00. Intro

 

Saya tidak sempat mengambil cuplikan proses pemasangan karena prosesnya di tempat saya terlalu cepat. Bukannya mau menyombongkan diri, tapi memang demikian. Setelah ini pun Wine yang kita inginkan telah tersedia.

Memasang Lingkungan WINE untuk Steam

Sekarang saatnya memasang Steam:

  1. Dari Halaman Utama pilih tombol Configure untuk membuka PlayOnLinux configuration
  2. Pada laman PlayOnLinux configuration, pilih tombol New untuk membuat sebuah lingkungan Wine baru. Menarik sekali kalau PlayOnLinux menamakan sebuah lingkungan Wine sebagai sebuah Virtual Drive.
    PlayOnLinux Configure page

    PlayOnLinux Configure page

  3. Pada laman Virtual Drive creator, tinggal Next saja.
    PlayOnLinux VirtualDrive creator

    PlayOnLinux VirtualDrive creator

  4. Seperti yang disebutkan sebelumnya, permainan Windows banyak menggunakan pustaka 32-bit. Maka, demi menjaga kompabilitas tinggi, langsung saja kita konfigurasikan Wine kita untuk lingkungan 32-bit.
    PlayOnLinux's Virtual Drive: Choose Architecture type

    PlayOnLinux’s Virtual Drive: Choose Architecture type

  5. Pilih Wine versi 1.7.24-LeagueOfLegendsCSMT.
    PlayOnLinux's Virtual Drive: Choose WINE Version

    PlayOnLinux’s Virtual Drive: Choose WINE Version

  6. Masukkan nama Lingkungan Wine yang baru dibuat.
    PlayOnLinux's Virtual Drive: Enter Wine's Environment name

    PlayOnLinux’s Virtual Drive: Enter Wine’s Environment name

  7. Sudah selesai.

Selanjutnya tutorial dimulai dari halaman PlayOnLinux configuration. Sebagai contoh, lingkungan WINE yang dipakai adalah “steamjp”. Iya, saya kurang kreatif dalam memberi nama. 🙂

Memasang Steam

Dari laman PlayOnLinux configuration, pilih lingkungan Wine yang baru saja kita pasang (contohnya, “steamjp”, lalu:

  1. Dengan “steamjp” terpilih, buka tab Install Components dan cari dan pilih Steam.
    PlayOnLinux configuration - Install Component - Steam

    PlayOnLinux configuration ⇒ Install Component ⇒ Steam

  2. Pilih tombol Install untuk memasang. Nanti PlayOnLinux akan menjalankan instalasi Steam. Pasang Steam seperti biasa. Oh, iya! Supaya gampang, saya memasang Steam pada direktori C:\Steam agar mudah diakses.
  3. Selesai.

Setelah itu, saatnya memainkan Deadlight.

Memainkan Deadlight

Pertama-tama, jalankan Steam pada lingkungan WINE. Ada setidaknya dua cara untuk menjalankan Steam:

  1. Cara keren dengan Command Line.
  2. Cara biasa dengan pemilih berkas.
  3. Cara unik dengan Task Manager.

Cara Keren

Cara keren dengan Command Line:

  1. Cara keren dengan menggunakan Command Line. Dapat dibuka dari tab Wine, pilih Command Prompt
    PlayOnLinux configuration - Wine - Command Line

    PlayOnLinux configuration ⇒ Wine ⇒ Command Line

  2. Dari Command Line, masuk ke direktori Steam dan jalankan Steam.exe.
    PlayOnLinux: Run Steam from command line

    PlayOnLinux: Run Steam from command line

Cara Biasa

Agar lebih mudah, sebaiknya Anda buat pintasan agar mudah diakses. Caranya, dari tab General pilih Make a new shortcut for this virtual drive untuk membuat tautan.

Selanjutnya, untuk menggunakan cara biasa dengan pemilih berkas:

  1. Buka tab Miscellaneous dan pilih Run a .exe file in this virtual drive
    PlayOnLinux: Run Steam from Miscellaneous

    PlayOnLinux: Run Steam from a file chooser

  2. Pilih Steam.exe untuk dieksekusi dan pilih Open.
    PlayOnLinux: Select Steam.exe to execute it.

    PlayOnLinux: Select Steam.exe to execute it.

  3. Steam pun berjalan.

Selesai.

Cara Unik

Steam pun dapat digunakan dengan menggunakan Task Manager. Bagi Anda yang terbiasa di Windows, Task Manager biasanya dinyalakan dengan kombinasi tombol CTRL+ALT+DEL. Untuk dapat menjalankan Task Manager:

  1. Buka tab Wine dan pilih Task manager
  2. Dari Task Manager, FileNew Task (Run…)
  3. Pilih Steam.exe dan jalankan.

Saya sengaja tidak bikin cuplikan karena gambarnya sama saja dengan Task Manager di Windows. Cuma, bedanya ini berjalan di GNU/Linux

Terakhir

Saya menggunakan MESA dari GIT dengan tambalan dari grup IXIT untuk Gallium Direct3D tracker (fitur ini tidak terpakai). Selain itu, spesifikasi komputer saya cukup tinggi:

  • AMD FX(tm)-8350 Eight-Core Processor @ 4GHz.
  • MSI 990FXA-GD80 dengan BIOS AMI versi 13.4.
  • Patriot Division 4 Viper Xtreme, 16GB (4x4GB) 1866 MHz
  • AMD Radeon HD 5770 (Juniper) dengan memori 256MB.

Selanjutnya, saya memakai konfigurasi grafis tinggi.

Deadlight's Display Settings

Deadlight’s Display Settings

Hasilnya? Tidak ada patah-patah sama sekali. Berikut galeri yang menyertai.

 

Memasang PlayOnLinux di GNU/Linux

Memasang PlayOnLinux di GNU/Linux

PlayOnLinux front page

PlayOnLinux front page

Cara paling gampang adalah dengan memasang dari repositori:

$ sudo apt-get install playonlinux

atau

$ sudo emerge -aq playonlinux

Selesai.

Versi Terbaru

Untuk versi terbaru, dapat menggunakan yang dari GIT. Saya sarankan untuk sudah memasang PlayOnLinux yang sudah ada di distro terlebih dahulu. Hal ini agar paket-paket ketergantungannya dipasang.

Jika sudah, langsung saja kloning repo GIT-nya:

$ git clone https://github.com/PlayOnLinux/POL-POM-4 playonlinux
Cloning into 'playonlinux'...
remote: Counting objects: 43849, done.
remote: Compressing objects: 100% (110/110), done.
remote: Total 43849 (delta 58), reused 0 (delta 0)
Receiving objects: 100% (43849/43849), 62.93 MiB | 982.00 KiB/s, done.
Resolving deltas: 100% (23122/23122), done.
Checking connectivity... done.

Nanti kalau mau memainkannya tinggal:

$ ./playonlinux/playonlinux

Atau sesuaikan dengan tempat Anda berada. Selesai!

Yak, sudah. Kok, bengong? Kurang panjang? 😛

Adobe Flash untuk Opera 24 GNU/Linux
Opera Developer

Adobe Flash untuk Opera 24 GNU/Linux

Basa-basi

Saya asumsikan Opera 24 dipasang seperti cara sebelum ini. Karena ini versi pengembang, Opera belum bisa menyalakan Adobe Flash. Itu sebabnya, akhir-akhir ini komputer saya stabil.

Saya mau membuang kestabilan itu demi eksperimen. Opera 24 dibangun di atas Chromium. Artinya, secara infrastruktur dia sudah menyediakan fasilitas Adobe Flash versi PPAPI (PepperFlash). Ini versi yang akan selalu diperbaharui oleh Adobe. Dan inilah cara jantan menyalakan PepperFlash Opera 24.

Pemasangan

Ada tiga bagian dalam pemasangan, memasang PepperFlash, membuat skrip pembungkus, dan membuat konfigurasi.

Memasang PepperFlash

PepperFlash didapatkan dari Chromium/Google Chrome. Kalau sudah memasang perangkat lunak tersebut, silakan saja salin direktori PepperFlash beserta isinya. Namun, saya asumsikan Anda belum memasang Chromium/Google Chrome.

Unduh Google Chrome dari saluran Unstable. Mengapa versi itu? Sebagai pengingat saja dan gaya-gayaan.

wget https://dl.google.com/linux/direct/google-chrome-unstable_current_amd64.deb

Ekstraksi PepperFlash ke /usr/local/lib/

ar p google-chrome-unstable_current_amd64.deb data.tar.lzma \
 | sudo tar xvfJ - -C/ ./opt/google/chrome-unstable/PepperFlash --xform='s,\(/opt/google/chrome-unstable/\),/usr/local/lib/,'

Selanjutnya membuat sebuah skrip tambahan.

Membuat Skrip Tambahan

Pada versi awal opera-developer merupakan tautan ke binari Opera. Saat ini saya akan membuat opera-developer sebagai skrip pembungkus. Ubah direktori jika Anda mengubah posisi instalasi.

Gunakan penyunting teks favorit Anda, kalau saya gunakan langsung:

cat > opera-developer << EOF
#!/bin/bash

# Allow the user to override command-line flags, bug #357629.
# This is based on Debian's opera-developer-browser package, and is intended
# to be consistent with Debian.
for f in /etc/opera-developer/*; do
    [[ -f ${f} ]] && source "${f}"
done

# Prefer user defined OPERA_USER_FLAGS (from env) over system
# default OPERA_FLAGS (from /etc/opera-developer/default).
OPERA_FLAGS=${OPERA_USER_FLAGS:-"$OPERA_FLAGS"}

if [[ ${EUID} == 0 && -O ${XDG_CONFIG_HOME:-${HOME}} ]]; then
    # Running as root with HOME owned by root.
    # Pass --user-data-dir to work around upstream failsafe.
    OPERA_FLAGS="--user-data-dir=${XDG_CONFIG_HOME:-${HOME}/.config}/opera-developer
        ${OPERA_FLAGS}"
fi

# Set the .desktop file name
export OPERA_DESKTOP="opera-developer.desktop"

exec -a "opera-developer" "/usr/local/lib/x86_64-linux-gnu/opera-developer/opera" --extra-plugin-dir=/usr/lib64/nsbrowser/plugins ${OPERA_FLAGS} "$@"
EOF

Ini skrip diambil dari skrip Chromium dan diubah secara barbar. Untuk saat ini, NPAPI (plugin-plugin Firefox) tidak lagi didukung oleh Chromium. Jadi, sepertinya menambah direktori NPAPI tidak perlu. Tapi saya terlalu malas untuk menghapusnya.

Mari pindahkan dan buat supaya bisa dieksekusi.

chmod +x opera-developer
sudo cp opera-developer /usr/local/bin

Nah, sekarang kita perlu mengatur OPERA_FLAGS.

Membuat Konfigurasi Tambahan

Saatnya membuat konfigurasi tambahan. Gunakan penyunting teks kesayangan atau seperti saya langsung dari terminal.

cat > default << EOF
# Default settings for chromium. This file is sourced by /usr/local/bin/opera-developer

# Options to pass to opera-developer
OPERA_FLAGS=" --ppapi-flash-path=/usr/local/lib/PepperFlash/libpepflashplayer.so --ppapi-flash-version=14.0.0.125"
EOF

Mari buat direktori /etc/opera-developer untuk berkas konfigurasi tersebut. Lalu, pindahkan ke sana.

sudo mkdir -p /etc/opera-developer
sudo cp default /etc/opera-developer/default

Selesai.

Kata Terakhir

Jalankan Opera dan akhirnya Adobe Flash pun berjalan. Sistem pun kembali tak stabil. FTW!

sed Membuang Sebuah Pola Hingga Baris Tertentu
RegEx

sed Membuang Sebuah Pola Hingga Baris Tertentu

RegEx

RegEx

Ada virus Windoze yang menginjeksi berkas-berkas HTML dengan VBScript dan binari berbahaya. Sepertinya target operasi mereka adalah pengembang Web yang menggunakan Windoze. Nantinya, HTML tersebut akan dipublikasikan di sebuah peladen dan diakses oleh banyak orang.

Kebetulan, dari hasil inspeksi bersih-bersih, kami menemukan adanya berkas-berkas HTML yang terinfeksi virus demikian. Kalau hanya satu atau dua, mungkin cukup dihapus. Tapi, kali ini harus memanggil Kapten Regex!

IFS=$(echo -en "\n\b") ; for a in `grep -rlH 'DropFileName = "svchost.exe"' .` ; do sed -i '/<SCRIPT Language=VBScript.*/,+14d' $a; done

Penjelasan:

  • IFS=$(echo -en "\n\b") ;
    Ini memberitahukan kepada BASH bahwa penanda akhir baris adalah Line Break (“\n” atau “\b”). Ini untuk mengatasi nama berkas dengan spasi.
  • grep -rlH 'DropFileName = "svchost.exe"' .
    Mencari berkas-berkas yang berisi ‘DropFileName = “svchost”‘ pada direktori ini “.” dan anak-anaknya.
  • sed -i '/<SCRIPT Language=VBScript.*/,+14d' $a
    Mencari pola “<SCRIPT Language=VBScript” dan menghapus pola tersebut dan 14 baris setelahnya.

Kebetulan saya membaca dulu berkas yang terinfeksi. Ia menginfeksi di akhir baris tapi bukan di baris baru. Wah, ini tantangan dalam menemukan pola yang benar. Apalagi memang beberapa HTML yang mendukung Windoze juga menggunakan VBScript.

Kebetulan saya bukan guru sed.  Saya tidak tahu bagaimana melanjutkan menghapus sampai akhir baris. Saya terpaksa menghitung ada berapa baris. Jumlah baris infeksi ada 14 baris.

Mungkin rekan-rekan ada peningkatan yang lebih bagus?

Galat Heartbleed pada OpenSSL

Galat Heartbleed pada OpenSSL

Selagi Pemilu, ternyata muncul sebuah kehebohan tentang galat pada OpenSSL. Saya belum sempat menulis karena kehebohan Pemilu lebih terasa. Saya sudah memilih, loh.

Kehebohan tentang OpenSSL dikarenakan adanya sebuah modul di OpenSSL yang bernama Hearbeats. Modul ini menyebabkan OpenSSL membuka sampai 64KB memori untuk dibaca. Itu sebabnya, galat ini berbahaya karena bisa jadi 64KB memori itu berisi login, sandi, atau sertifikat X.509.

Cara mengatasinya?

Galat ini hanya ada pada OpenSSL versi 1.0.1 s.d. 1.0.1f dan 1.0.2-beta. Silakan tingkatkan ke versi 1.0.1g atau 1.0.2-beta1.

Atau cara kedua adalah dengan mematikan Hearbeats. Caranya dengan mengompilasi ulang OpenSSL Anda dengan menambah “-DOPENSSL_NO_HEARTBEATS” pada kompilasi untuk mematikan Heartbeats pada kompilasi.

Cara Paling Gampang

Anda sudah mengaktifkan repo keamanan distro Anda? Ya, tinggal:

$ sudo apt-get update && sudo apt-get dist-upgrade

Selesai.

Cara Agak Susah

Cara agak susah adalah dengan mengompilasi sendiri. Bisa ikuti cara BLFS.

Unduh OpenSSL-1.0.1g dan semuanya.

$ wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
$ wget http://www.linuxfromscratch.org/patches/blfs/svn/openssl-1.0.1g-fix_parallel_build-1.patch
$ wget http://www.linuxfromscratch.org/patches/blfs/svn/openssl-1.0.1g-fix_pod_syntax-1.patch

Buka dan tambal paket.

$ tar xvfz openssl-1.0.1g.tar.gz
$ cd openssl-1.0.1g
$ patch -Np1 -i ../openssl-1.0.1g-fix_parallel_build-1.patch
$ patch -Np1 -i ../openssl-1.0.1g-fix_pod_syntax-1.patch

Kompilasi.

$ ./config --prefix=/usr --openssldir=/etc/ssl --libdir=lib shared zlib-dynamic
$ make

Saya pikir Debian tidak akan menggunakan pustaka statik. Maka, matikan saja dari pada mengotori sistem.

$ sed -i 's# libcrypto.a##;s# libssl.a##' Makefile

Selanjutnya pasang.

$ sudo make MANDIR=/usr/share/man MANSUFFIX=ssl install
$ sudo install -dv -m755 /usr/share/doc/openssl-1.0.1g
$ sudo cp -vfr doc/* /usr/share/doc/openssl-1.0.1g

Beres.

Cara saya

Hmm… cara saya terlalu rumit untuk ditulis di sini. Nanti saja.

Bacaan Lebih Lanjut

Debootstrap BlankBerry pada Gentoo

Debootstrap BlankBerry pada Gentoo

Halaman membangun BlankBerry hanya memberikan asumsi bahwa kita menggunakan BlankOn atau sistem berbasis Debian lainnya. Untuk sistem Gentoo, ada caranya. Terinspirasi dari halaman ini. Saya mengasumsikan bahwa:

  1. Debootstrap telah terpasang.
  2. Direktori yang akan dipasangi BlankBerry sudah siap (maksudnya drive-nya sudah di-mountpada direktori tersebut, dsb.).
    export rootfs=/mnt/sysroot
  3. Akses Internet mumpuni atau Anda sudah menyiapkan repo lokal.

Persiapan dari sisi Gentoo

USE="static" emerge -b1 qemu-user

Ini akan memasang “/usr/bin/qemu-static-arm” dan “qemu-static-arm-binfmt” dan seabrek-abrek arsitektur lainnya.

Sekarang saatnya berpesta! Debootstrap seperti biasa.

debootstrap --verbose --arch armhf --no-check-gpg --foreign rote $rootfs http://arsip-dev.blankonlinux.or.id/raspbian /usr/share/deboostrap/scripts/wheezy

Pasang sistem-sistemberkas yang perlu.

mount -t proc none $rootfs/proc
mount -t sysfs none $rootfs/sys
mount -o bind /dev $rootfs/dev
mount -t devpts none $rootfs/dev/pts

Mari persiapkan “binfmt_misc”.  Modul “binfmt_misc” adalah sebuah fasilitas kernel Linux untuk menjalankan sebuah binari kepada sebuah aplikasi, misalnya emulator. Mari pasang modul ini untuk menjalankan ARM.

modprobe binfmt_misc
mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc

Beritahu emulator untuk ARM.

echo ':arm:M::\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x28\x00:\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff:/usr/bin/qemu-static-arm:' > /proc/sys/fs/binfmt_misc/register

Salin kedua berkas emulator ARM.

cp /usr/bin/qemu-static-arm $rootfs/usr/bin/qemu-static-arm-binfmt
cp /usr/bin/qemu-static-arm-binfmt $rootfs/usr/bin/qemu-static-arm-binfm

Yak, sudah selesai.

Lanjutkan Debootstrap:

LC_ALL=C chroot $rootfs /debootstrap/debootstrap --second-stage

Yak, ini semua untuk menggantikan satu baris berikut yang ada pada halaman WIKI BlankOn:

qemu-debootstrap --arch armhf rote $rootfs http://arsip-dev.blankonlinux.or.id/raspbian /usr/share/debootstrap/scripts/wheezy

Selanjutnya terserah Anda.

Jurnal Debootstrap BlankBerry

Jurnal Debootstrap BlankBerry

Prakata

Uh, nampaknya tulisan ini sudah terpublikasi di Planet. Sepertinya saya salah memencet tombol. Ya, sudah, berhubung tulisan ini ditujukan bagi pemakai lanjut yang beruntung memiliki Raspberry Pi. Sebelumnya, saya menggunakan repositori BlankOn dan harus memakai cara yang hancur-hancuran. Beruntung, @aftian memberikan tautan yang benar mengenai repositori BlankOn yang sebenarnya.

 

Uh, seandainya kamu adalah wanita cantik akan kukecup mesra. Ha… ha… ha….

kabur takut kena gaplok

Sekilas Raspberry

Raspberry menggunakan ARM dengan tambahan prosesor untuk menghitung floating point. Firmware yang ia gunakan mengasumsikan bahwa SDCard memiliki setidaknya hal berikut:

  • Partisi pertama harus FAT32 (VFAT) dan berisi firmware yang akan dijalankan pertama kali.
  • Partisi kedua biasanya berisi sistem berkas utama. Biasanya formatnya EXT4.

Di dalam BlankOn, SDCard terpasang sebagai mmcblk0. Dengan demikian, partisi pertama disebut /dev/mmcblk0p1 dan partisi kedua bernama /dev/mmcblk0p2.

Saya mengasumsikan kartu memori (SDCard) sudah terpartisi dan terformat dengan baik. Gampang, tinggal menggunakan gparted.

Saya membagi beberapa pekerjaan ini menjadi beberapa bagian:

  • Awalan: mempersiapkan partisi yang hendak ditulisi dan variabel rootfs agar memudahkan.
  • Pasang Awal: proses debootstrap. Dilakukan dua kali karena kita menggunakan arsitektur yang berbeda
  • Konfigurasi: pasang sandi, jaringan, waktu, lokalisasi, dsb.
  • Pasang kernel: memasang kernel yang telah disertakan oleh Hexxeh.
  • Bersih-bersih: menghapus paket-paket dan melepaskan partisi.

Ada beberapa proses yang terlewat, seperti membuat pengguna biasa baru. Nanti saya perbaiki lagi tulisan ini, saya hendak mengulang apa yang saya kerjakan.

Tulisan ini sudah berhasil dan diujicobakan pada dapur Fem*na… hahaha…. 🙂

Awalan

export rootfs=/mnt
mount /dev/mmcblk0p2 $rootfs

Pasang Awal

debootstrap --verbose --arch armhf --variant=minbase --no-check-gpg --foreign rote $rootfs http://arsip-dev.blankonlinux.or.id/raspbian
cp $(which qemu-arm-static) $rootfs/usr/bin
mkdir $rootfs/dev/pts
mount -t devpts none $rootfs/dev/pts
mount -t proc none $rootfs/proc
LC_ALL=C chroot $rootfs /debootstrap/debootstrap --second-stage

Konfigurasi

echo "deb http://arsip-dev.blankonlinux.or.id/raspbian rote main" > $rootfs/etc/apt/sources.list
echo "blankjp" > $rootfs/etc/hostname
cat > $rootfs/etc/hosts << EOF
127.0.0.1    localhost.localdomain    localhost blankjp
::1     localhost6.localdomain6    localhost6 blankjp
EOF

cat > $rootfs/etc/network/interfaces << EOF
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
EOF

cat >> $rootfs/etc/modules << EOF
echo vchiq
snd_bcm2835
EOF

LC_ALL=C chroot $rootfs /usr/bin/apt-get update
LC_ALL=C chroot $rootfs /usr/bin/apt-get -y --force-yes install binutils kmod
LC_ALL=C chroot $rootfs 
/usr/bin/apt-get -y --force-yes install apt-utils dialog locales
&& dpkg-reconfigure locales && dpkg-reconfigure tzdata
LC_ALL=C chroot $rootfs 
/usr/bin/apt-get -y --force-yes install
dhcp3-client udev netbase ifupdown iproute ssh iputils-ping wget net-tools ntpdate vim less LC_ALL=C chroot $rootfs su -c "echo \"root:blankon\" | chpasswd" LC_ALL=C chroot $rootfs su -c "sed -i -e 's/KERNEL\!=\"eth\*|/KERNEL\!=\"/' /lib/udev/rules.d/75-persistent-net-generator.rules"
LC_ALL=C chroot $rootfs dpkg-reconfigure locales
LC_ALL=C chroot $rootfs dpkg-reconfigure tzdata

cat > $rootfs/etc/fstab << EOF
/dev/mmcblk0p2 / ext4 noatime,nodiratime  0  0
/dev/mmcblk0p1 /boot vfat defaults  0   0
EOF

Pasang Kernel

mount /dev/mmcblk0p1 $rootfs/boot
touch $rootfs/boot/start.elf
mkdir $rootfs/lib/modules
ROOT_PATH=$rootfs BOOT_PATH=$rootfs/boot rpi-update
echo "dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait" > $rootfs/boot/cmdline.txt

Bonus: Menambah Satu Pengguna

LC_ALL=C chroot $rootfs 
/usr/bin/apt-get -y --force-yes install
sudo LC_ALL=C chroot $rootfs addgroup blankon LC_ALL=C chroot $rootfs chroot $rootfs useradd blankon -g blankon -G adm,disk,sudo,audio,video,plugdev -m LC_ALL=C chroot $rootfs su -c "echo \"blankon:blankon\" | chpasswd"

Bersih-bersih

LC_ALL=C chroot $rootfs /usr/bin/apt-get clean
umount $rootfs/boot
umount $rootfs/dev/pts
umount $rootfs/proc
umount $rootfs
sync

Beres

Colok ke Raspberry Pi dan berharap tidak ada masalah.

BlankOn dan Raspberry Pi

BlankOn dan Raspberry Pi

Tulisan ini ditulis sambil menunggu kompilasi. Kalau seperti tidak niat menulis, mohon maaf karena saya juga hendak menulis sekenanya saja. Mungkin nanti saya tambahkan tautan dan tulisan lebih sempurna.

Pertama-tama, ingatkan saya untuk tidak menggunakan SD Card di bawah kelas 10. Lama sekali memasang sistem. Setelah dipasang, belum tentu jalan. Saya salah satu korbannya.

Setelah stres mengganti-ganti SD Card,  tetap saja Raspberry gagal dijalankan. Saya sudah suntuk. Maklum, nampaknya repositori BlankOn belum lengkap dan skrip debootstrap yang saya miliki tidak memasang sistem dengan sempurna. Hal ini mengakibatkan saya harus secara langsung menyunting sistem.

Berhubung rumit dan harus kasus per kasus, saya tidak jadi menulis pengalaman saya menggunakan repositori murni BlankOn. Namun, tadi malam setelah saya jalan-jalan sebentar, saya baru menyadari kesalahan saya. Saya terlalu bernafsu untuk membuat sistem dengan:

  • Partisi utama menggunakan NILFS2. Hal ini karena NILFS2 lebih efisien dibandingkan dengan ext4. (noatime dan nodiratime tentunya)
  • Arsitektur yang dipakai adalah ARMHF, sebuah arsitektur yang telah memanfaatkan prosesor floating point terpisah. Selama ini, prosesor ARM dipakai juga untuk operasi floating point (soft floating point/ARMEL). Padahal, di dalam perangkat keras sudah tersedia sebuah instruksi tambahan untuk menghitungnya.

Nah, dari hasil perenungan saya, saya baru sadar bahwa saya menggunakan kernel yang dibangun dengan arsitektur ARMEL. Aih, pantas saja selalu gagal! Bikin tidak bisa tidur… 🙁

Karena itu, sekarang saya hendak membangun infrastruktur ARMHF yang bisa dipakai untuk membangun paket-paket yang terhilang. Saya kali ini membangunnya dari Raspbian. Saya lihat BlankBerry Rote pun dibangun dari Raspbian.

Ih, curang… 🙂

Saya kira dibangun dari repositori BlankOn. Ternyata dibangun dari repositori Raspberry dan repositori lokal (192.168.x.x) yang sepertinya berisi paket-paket BlankOn yang masih dalam pengembangan dan tidak tersedia di dalam repositori BlankOn.

Ya, begitulah. Setelah gagal seharian membangun sistem sendiri dengan debootstrap, saya pun memasang BlankBerry yang sudah jadi. Dari situ baru saya menemukan kesalahan saya.

Nampaknya pula, BlankBerry yang sudah jadi tidak kompatibel dengan repostori BlankOn yang ARMHF. Saya memasang openssh-server dan mengalami kerusakan segmentasi. Nampaknya saya harus kembali memasang.

Yak, semoga saya tidak malas untuk mendokumentasikan perjalanan saya. Kembali mengoprek… 🙂

Bonus: Cicip BlankBerry Bagi yang Punya Raspberry Pi

Saat ini tutorial di wiki BlankOn hanya bagi yang menggunakan QEmu. Buat yang beruntung telah mendapatkan Raspberry Pi, saya memiliki cara untuk memasang BlankBerry.

Alat-alat yang dibutuhkan

  • XZ Utils
    sudo apt-get install xz-utils
  • gparted
    sudo apt-get install gparted

Caranya

Unduh: (pilih versi terbaru)

$ wget http://kambing.ui.ac.id/pub/blankon/blankberry/rote/blankberry-rote-armhf-20120827-01.img.xz

Taruh ke dalam SD Card:

$ xzcat blankberry-rote-armhf-20120827-01.img.xz > /dev/mmcblk0

Saya asumsikan bahwa itu nama driver ruang penyimpan Anda. Ingat! Taruhnya di ruang utama Anda, bukan di sebuah partisi.

Anda sudah salam orang tua, cuci piring, atau menyapu rumah?

Setelah melakukan hal-hal trivial dan transfer image ke dalam SD Card, Anda dapat memodifikasi partisi SD Card Anda. Secara baku, BlankBerry mengandung dua partisi: 64MB partisi dan sebuah partisi ext4 berisi 1,6 GB Blankon.

Jika Anda memiliki SD Card berukuran lebih dari 2 GB, terdapat banyak ruang mubazir. Untuk itu, Anda dapat mengubah partisi dengan GUI:

$ sudo gparted /dev/mmcblk0

Tinggal digeser-geser sesuai selera. Saya sendiri menambahkan partisi ketiga, yakni partisi swap. Lumayan, jargon ruang swap dua kali besar memori kembali terngiang.

Yak, setelah itu selesai, tinggal ditaruh ke BlankBerry.

Selanjutnya: Proses instalasi dengan menggunakan repositori BlankOn.  (Mungkin) 🙂