mirror of
https://github.com/ditatompel/insights.git
synced 2025-01-08 03:12:06 +07:00
chore: Lint markdown format
This commit is contained in:
parent
5d0965673d
commit
f984c57952
12 changed files with 313 additions and 293 deletions
|
@ -1,13 +1,13 @@
|
||||||
---
|
---
|
||||||
title: "Bijak Dalam Pemilihan Dan Penggunaan Password / Kata Sandi"
|
title: "Bijak Dalam Pemilihan Dan Penggunaan Password / Kata Sandi"
|
||||||
description: "Membahas bagaimana seharusnya Anda membuat dan memperlakukan kata sandi Anda serta tips menggunakan password manager untuk mempermudah manajemen password yang unik dan acak di setiap situs / aplikasi yang Anda gunakan"
|
description: "Membahas bagaimana seharusnya Anda membuat dan memperlakukan kata sandi Anda serta tips menggunakan password manager untuk mempermudah manajemen password yang unik dan acak di setiap situs / aplikasi yang Anda gunakan"
|
||||||
|
summary: "Membahas bagaimana seharusnya Anda membuat dan memperlakukan kata sandi Anda serta tips menggunakan password manager untuk mempermudah manajemen password yang unik dan acak di setiap situs / aplikasi yang Anda gunakan"
|
||||||
date: 2022-09-09T19:47:48+07:00
|
date: 2022-09-09T19:47:48+07:00
|
||||||
lastmod:
|
lastmod:
|
||||||
draft: false
|
draft: false
|
||||||
noindex: false
|
noindex: false
|
||||||
featured: true
|
featured: true
|
||||||
pinned: false
|
pinned: false
|
||||||
# comments: false
|
|
||||||
series:
|
series:
|
||||||
# -
|
# -
|
||||||
categories:
|
categories:
|
||||||
|
@ -16,69 +16,64 @@ tags:
|
||||||
- Bitwarden
|
- Bitwarden
|
||||||
- KeepassXC
|
- KeepassXC
|
||||||
images:
|
images:
|
||||||
# -
|
|
||||||
# menu:
|
|
||||||
# main:
|
|
||||||
# weight: 100
|
|
||||||
# params:
|
|
||||||
# icon:
|
|
||||||
# vendor: bs
|
|
||||||
# name: book
|
|
||||||
# color: '#e24d0e'
|
|
||||||
authors:
|
authors:
|
||||||
- ditatompel
|
- ditatompel
|
||||||
---
|
---
|
||||||
|
|
||||||
Password adalah sesuatu yang rahasia, artikel ini membahas bagaimana seharusnya Anda membuat dan memperlakukan kata sandi Anda serta [tips menggunakan password manager](#gunakan-password-manager-yang-open-source) untuk mempermudah manajemen password yang unik dan acak di setiap situs / aplikasi yang Anda gunakan.
|
Password adalah sesuatu yang rahasia, artikel ini membahas bagaimana seharusnya Anda membuat dan memperlakukan kata sandi Anda serta [tips menggunakan password manager](#gunakan-password-manager-yang-open-source) untuk mempermudah manajemen password yang unik dan acak di setiap situs / aplikasi yang Anda gunakan.
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
Di lingkungan saya, masih banyak teman-teman saya menggunakan password yang sama di berbagai macam situs. Hal ini sudah menjadi kebiasaan dan akan berdampak sangat buruk jika password yang sama tersebut bocor ke publik, apa lagi di era yang serba digital ini.
|
Di lingkungan saya, masih banyak teman-teman saya menggunakan password yang sama di berbagai macam situs. Hal ini sudah menjadi kebiasaan dan akan berdampak sangat buruk jika password yang sama tersebut bocor ke publik, apa lagi di era yang serba digital ini.
|
||||||
|
|
||||||
Jadi, bagaimana seharusnya kita memperlakukan dan membuat password yang baik? Berikut ini 5 poin paling penting (menurut saya) mengenai password dan tips menggunakan **password manager**.
|
Jadi, bagaimana seharusnya kita memperlakukan dan membuat password yang baik? Berikut ini 5 poin paling penting (menurut saya) mengenai password dan tips menggunakan **password manager**.
|
||||||
|
|
||||||
## Jangan pernah membagikan password Anda kepada siapapun
|
## Jangan pernah membagikan password Anda kepada siapapun
|
||||||
Saya ingin nenanamkan salah satu [*Cypherpunk's Manifesto*](https://www.activism.net/cypherpunk/manifesto.html) mengenai perbedaan *private* (pribadi) dengan *secret* (rahasia) kepada Anda. ***Secret* adalah sesuatu yang <u>hanya</u> Anda yang tahu**, tidak ada orang lain yang boleh tau. Sedangkan ***private* adalah sesuatu yang Anda tidak ingin seluruh dunia tau**. *Private* itu seperti alamat rumah, nomor telepon, bentuk alat kela.... (*ah sudahlah...*), dsb. Orang-orang terdekat Anda boleh tahu tentang suatu yang private / pribadi mengenai diri Anda.
|
|
||||||
|
Saya ingin nenanamkan salah satu [_Cypherpunk's Manifesto_](https://www.activism.net/cypherpunk/manifesto.html) mengenai perbedaan _private_ (pribadi) dengan _secret_ (rahasia) kepada Anda. **_Secret_ adalah sesuatu yang <u>hanya</u> Anda yang tahu**, tidak ada orang lain yang boleh tau. Sedangkan **_private_ adalah sesuatu yang Anda tidak ingin seluruh dunia tau**. _Private_ itu seperti alamat rumah, nomor telepon, bentuk alat kela.... (_ah sudahlah..._), dsb. Orang-orang terdekat Anda boleh tahu tentang suatu yang private / pribadi mengenai diri Anda.
|
||||||
|
|
||||||
Sedangkan password adalah sesuatu yang rahasia, cuma Anda dan hanya Anda yang boleh tau. Tanamkan pada pikiran Anda bahwa ketika Anda sudah membagikan password Anda sendiri, Anda telah melakukan sesuatu yang sangat berdosa dan tidak dapat diampuni, paham? Bahkan jika Anda memiliki istri / suami dan meminta password Anda secara paksa, CERAIKAN! :smiling_imp:
|
Sedangkan password adalah sesuatu yang rahasia, cuma Anda dan hanya Anda yang boleh tau. Tanamkan pada pikiran Anda bahwa ketika Anda sudah membagikan password Anda sendiri, Anda telah melakukan sesuatu yang sangat berdosa dan tidak dapat diampuni, paham? Bahkan jika Anda memiliki istri / suami dan meminta password Anda secara paksa, CERAIKAN! :smiling_imp:
|
||||||
|
|
||||||
## Jangan gunakan password yang sama
|
## Jangan gunakan password yang sama
|
||||||
|
|
||||||
Selalu gunakan password yang berbeda di SETIAP situs / aplikasi yang Anda gunakan. Ini wajib hukumnya, kenapa? Karena kita tidak pernah tahu bagaimana mekanisme atau kebijakan situs tempat kita mendaftar.
|
Selalu gunakan password yang berbeda di SETIAP situs / aplikasi yang Anda gunakan. Ini wajib hukumnya, kenapa? Karena kita tidak pernah tahu bagaimana mekanisme atau kebijakan situs tempat kita mendaftar.
|
||||||
|
|
||||||
Apakah mereka sudah mengimplementasikan penyimpanan password sesuai standard? Apakah hanya menggunakan *one-way-hash* tanpa mengimplementasikan [*salt*](https://en.wikipedia.org/wiki/Salt_(cryptography)) saat menyimpan password? Apakah algoritma *hash* yang digunakan cukup aman dari serangan seperti [Dictionary Attack](https://en.wikipedia.org/wiki/Dictionary_attack) atau [Rainbow Attack](https://www.beyondidentity.com/glossary/rainbow-table-attack)? Bahkan, bagi yang belum tau, situs sekelas [**Facebook** pernah menyimpan password penggunanya dalam bentuk *plain-text*](https://techcrunch.com/2019/03/21/facebook-plaintext-passwords/). :clap: :shit:
|
Apakah mereka sudah mengimplementasikan penyimpanan password sesuai standard? Apakah hanya menggunakan _one-way-hash_ tanpa mengimplementasikan [_salt_](<https://en.wikipedia.org/wiki/Salt_(cryptography)>) saat menyimpan password? Apakah algoritma _hash_ yang digunakan cukup aman dari serangan seperti [Dictionary Attack](https://en.wikipedia.org/wiki/Dictionary_attack) atau [Rainbow Attack](https://www.beyondidentity.com/glossary/rainbow-table-attack)? Bahkan, bagi yang belum tau, situs sekelas [**Facebook** pernah menyimpan password penggunanya dalam bentuk _plain-text_](https://techcrunch.com/2019/03/21/facebook-plaintext-passwords/). :clap: :shit:
|
||||||
|
|
||||||
Kita semua yang hidup didunia teknologi yakin dan percaya bahwa tidak ada sistem yang sempurna, karena kesempurnaan hanya milik ~~saya~~ Tuhan :angel:. Kalau kita berandai-andai sistem dari situs yang kita gunakan sempurna tanpa cacat dari *layer 1* hingga *layer 7* [OSI model](https://en.wikipedia.org/wiki/OSI_model), ingat bahwa sebuah sistem tetap dioperasikan oleh manusia.
|
Kita semua yang hidup didunia teknologi yakin dan percaya bahwa tidak ada sistem yang sempurna, karena kesempurnaan hanya milik ~~saya~~ Tuhan :angel:. Kalau kita berandai-andai sistem dari situs yang kita gunakan sempurna tanpa cacat dari _layer 1_ hingga _layer 7_ [OSI model](https://en.wikipedia.org/wiki/OSI_model), ingat bahwa sebuah sistem tetap dioperasikan oleh manusia.
|
||||||
|
|
||||||
Saya sebagai *SysAdmin* / *programmer* dapat dengan mudah menyisipkan beberapa baris kode yang memerintahkan untuk (misalnya) mengirimkan username / email dan password yang diinput oleh *user* ke email pribadi saya, baru menyimpannya dengan *salted hash* ke database yang digunakan. Jadi jangan pernah mempercayakan sesuatu yang penting begitu saja, terutama ke perusahaan yang memperkejakan orang semacam saya :smiling_imp:.
|
Saya sebagai _SysAdmin_ / _programmer_ dapat dengan mudah menyisipkan beberapa baris kode yang memerintahkan untuk (misalnya) mengirimkan username / email dan password yang diinput oleh _user_ ke email pribadi saya, baru menyimpannya dengan _salted hash_ ke database yang digunakan. Jadi jangan pernah mempercayakan sesuatu yang penting begitu saja, terutama ke perusahaan yang memperkejakan orang semacam saya :smiling_imp:.
|
||||||
|
|
||||||
Ketika password Anda sudah didapatkan, apa lagi dalam bentuk *plain-text*, akun Anda di situs lain dapat diakses dengan mudah, apa lagi jika Anda tidak mengaktifkan fitur semacam [2FA](https://en.wikipedia.org/wiki/Multi-factor_authentication).
|
Ketika password Anda sudah didapatkan, apa lagi dalam bentuk _plain-text_, akun Anda di situs lain dapat diakses dengan mudah, apa lagi jika Anda tidak mengaktifkan fitur semacam [2FA](https://en.wikipedia.org/wiki/Multi-factor_authentication).
|
||||||
|
|
||||||
## Gunakan password yang panjang dan kompleks
|
## Gunakan password yang panjang dan kompleks
|
||||||
|
|
||||||
![Password Brute Force Table](feature-password-brute-time-table.png#center "Password Brute Force Table")
|
![Password Brute Force Table](feature-password-brute-time-table.png#center "Password Brute Force Table")
|
||||||
|
|
||||||
Gambar table diatas menginformasikan berapa lama waktu yang dibutuhkan untuk mendapatkan *plain-text password* menggunakan **Nvidia GeForce 1080** dengan asumsi dapat melakukan *brute force attack* sebanyak 30 juta kali dalam 1 detik.
|
Gambar table diatas menginformasikan berapa lama waktu yang dibutuhkan untuk mendapatkan _plain-text password_ menggunakan **Nvidia GeForce 1080** dengan asumsi dapat melakukan _brute force attack_ sebanyak 30 juta kali dalam 1 detik.
|
||||||
|
|
||||||
Tentu saja simulasi tersebut bervariasi tergantung kemampuan *hardware* terhadap algoritma *hash* yang digunakan. Gunakanlah **password minimal 12 karakter acak yang mengandung angka, simbol, huruf besar dan huruf kecil**. Semakin panjang akan semakin baik karena teknologi dan kemampuan hardware berkembang sangat cepat.
|
Tentu saja simulasi tersebut bervariasi tergantung kemampuan _hardware_ terhadap algoritma _hash_ yang digunakan. Gunakanlah **password minimal 12 karakter acak yang mengandung angka, simbol, huruf besar dan huruf kecil**. Semakin panjang akan semakin baik karena teknologi dan kemampuan hardware berkembang sangat cepat.
|
||||||
|
|
||||||
> Maksud **password acak** disini adalah password yang sama sekali tidak terlihat sebagai sebuah kata, entah itu kata benda maupun kata sifat. Contoh password acak : `i7#xYkU9Txd@5Y`
|
> Maksud **password acak** disini adalah password yang sama sekali tidak terlihat sebagai sebuah kata, entah itu kata benda maupun kata sifat. Contoh password acak : `i7#xYkU9Txd@5Y`
|
||||||
|
|
||||||
> Meskipun terdapat faktor lain yang dapat mempersingkat waktu yang dibutuhkan untuk mendapatkan *plan-text password* karena adanya [*Hash collision*](https://en.wikipedia.org/wiki/Hash_collision), tapi dengan password yang kompleks setidaknya memperkecil pilihan yang dapat digunakan *cracker* sehingga mereka tidak dengan mudah mendapatkan *plain-text password* kita.
|
> Meskipun terdapat faktor lain yang dapat mempersingkat waktu yang dibutuhkan untuk mendapatkan _plan-text password_ karena adanya [_Hash collision_](https://en.wikipedia.org/wiki/Hash_collision), tapi dengan password yang kompleks setidaknya memperkecil pilihan yang dapat digunakan _cracker_ sehingga mereka tidak dengan mudah mendapatkan _plain-text password_ kita.
|
||||||
|
|
||||||
## Hindari menggunakan password yang mengandung identifikasi pribadi
|
## Hindari menggunakan password yang mengandung identifikasi pribadi
|
||||||
|
|
||||||
Rata-rata, orang memilih menggunakan dan menyantumkan suatu yang personal di password mereka. Misalnya:
|
Rata-rata, orang memilih menggunakan dan menyantumkan suatu yang personal di password mereka. Misalnya:
|
||||||
|
|
||||||
- **Tanggal lahir**: ditatompel09111978 atau 19781109dita
|
- **Tanggal lahir**: ditatompel09111978 atau 19781109dita
|
||||||
- **Alamat**: tompelBrooklyn12St
|
- **Alamat**: tompelBrooklyn12St
|
||||||
- **Nomor Telepon**: dita7576
|
- **Nomor Telepon**: dita7576
|
||||||
- **Hobi**: Colly3x24
|
- **Hobi**: Colly3x24
|
||||||
|
|
||||||
*\*Yang terakhir abaikan* :speak_no_evil:.
|
_\*Yang terakhir abaikan_ :speak_no_evil:.
|
||||||
|
|
||||||
Hal-hal yang dapat ditebak dari informasi tersebut dapat dimanfaatkan untuk melakukan [*Brute Force*](https://en.wikipedia.org/wiki/Brute-force_attack) terhadap password Anda. Jadi **gunakan password yang susah ditebak dan sama sekali tidak ada hubungannya dengan Anda**.
|
Hal-hal yang dapat ditebak dari informasi tersebut dapat dimanfaatkan untuk melakukan [_Brute Force_](https://en.wikipedia.org/wiki/Brute-force_attack) terhadap password Anda. Jadi **gunakan password yang susah ditebak dan sama sekali tidak ada hubungannya dengan Anda**.
|
||||||
|
|
||||||
## Jangan simpan password Anda di browser atau mencatatnya ke dokumen digital tanpa enkripsi
|
## Jangan simpan password Anda di browser atau mencatatnya ke dokumen digital tanpa enkripsi
|
||||||
Jangan pernah simpan password Anda di browser. Fitur penyimpanan password dari sebagian besar browser *mainstream* tidak mengimplementasikan enkripsi, jadi password Anda kemungkinan besar disimpan dalam bentuk *plain-text*. Dan ketika PC / laptop kita dipinjam oleh teman atau kerabat, hanya butuh beberapa detik saja untuk mengambil password yang tersimpan di browser.
|
|
||||||
|
|
||||||
Begitu pula dengan fitur penyimpanan password bawaan dari ponsel, sebisa mungkin hindari menyimpan di sana dan gunakan **Password Manager** yang *open-source* yang nanti akan saya bahas juga di akhir artikel.
|
Jangan pernah simpan password Anda di browser. Fitur penyimpanan password dari sebagian besar browser _mainstream_ tidak mengimplementasikan enkripsi, jadi password Anda kemungkinan besar disimpan dalam bentuk _plain-text_. Dan ketika PC / laptop kita dipinjam oleh teman atau kerabat, hanya butuh beberapa detik saja untuk mengambil password yang tersimpan di browser.
|
||||||
|
|
||||||
|
Begitu pula dengan fitur penyimpanan password bawaan dari ponsel, sebisa mungkin hindari menyimpan di sana dan gunakan **Password Manager** yang _open-source_ yang nanti akan saya bahas juga di akhir artikel.
|
||||||
|
|
||||||
## Mengubah password secara berkala sudah tidak relevan
|
## Mengubah password secara berkala sudah tidak relevan
|
||||||
|
|
||||||
|
@ -86,56 +81,59 @@ Begitu pula dengan fitur penyimpanan password bawaan dari ponsel, sebisa mungkin
|
||||||
|
|
||||||
Dikutip dari situs [tempo.co](https://bisnis.tempo.co/read/1630039/kebocoran-data-pribadi-terjadi-lagi-johnny-plate-masyarakat-harus-sering-ganti-password), {{< katex formula="\large yang" inline=true />}} {{< katex formula="\large mulia" inline=true />}} **Mentri Kemenkominfo** {{< katex formula="\large maha" inline=true />}} {{< katex formula="\scriptstyle da" inline=true />}}{{< katex formula="\cal S\Eta\Iota\large T" inline=true />}}, Pak **Johnny G Plate** mengatakan :
|
Dikutip dari situs [tempo.co](https://bisnis.tempo.co/read/1630039/kebocoran-data-pribadi-terjadi-lagi-johnny-plate-masyarakat-harus-sering-ganti-password), {{< katex formula="\large yang" inline=true />}} {{< katex formula="\large mulia" inline=true />}} **Mentri Kemenkominfo** {{< katex formula="\large maha" inline=true />}} {{< katex formula="\scriptstyle da" inline=true />}}{{< katex formula="\cal S\Eta\Iota\large T" inline=true />}}, Pak **Johnny G Plate** mengatakan :
|
||||||
|
|
||||||
> *"One time password itu harus selalu kita ganti sehingga kita bisa menjaga agar data kita tidak diterobos,"*.
|
> _"One time password itu harus selalu kita ganti sehingga kita bisa menjaga agar data kita tidak diterobos,"_.
|
||||||
|
|
||||||
{{< katex >}}
|
{{< katex >}}
|
||||||
{one + time + password \above{2pt} harus + selalu + kita + ganti} \\\
|
{one + time + password \above{2pt} harus + selalu + kita + ganti} \\\
|
||||||
\\
|
\\
|
||||||
|
|
||||||
\begin{Bmatrix}
|
\begin{Bmatrix}
|
||||||
W + k + W + k + W + k \\
|
W + k + W + k + W + k \\
|
||||||
w + K + W + k + w + K
|
w + K + W + k + w + K
|
||||||
\end{Bmatrix} ^{8x} \\
|
\end{Bmatrix} ^{8x} \\
|
||||||
\underbrace{TROLLLol0lol0lol0lol0lol0lol}_{\LARGE \text{ \textdagger} RIP \text{ } \xcancel{teknologi}\text{ \textdagger}} \\\
|
\underbrace{TROLLLol0lol0lol0lol0lol0lol}\_{\LARGE \text{ \textdagger} RIP \text{ } \xcancel{teknologi}\text{ \textdagger}} \\\
|
||||||
\\
|
\\
|
||||||
{{< /katex >}}
|
{{< /katex >}}
|
||||||
|
|
||||||
*Ahemmm...* Jadi yang sama sekali belum mengerti bahasa *enggres*, **OTP** atau *one-time password* artinya password yang hanya digunakan 1 kali saja. Setelah digunakan **atau** sudah melewati batas waktu tertentu, password tersebut sudah tidak dapat digunakan lagi. Jadi *by nature* dia selalu berubah dan bukan kita yang menentukan nilai dari **OTP** tersebut.
|
_Ahemmm..._ Jadi yang sama sekali belum mengerti bahasa _enggres_, **OTP** atau _one-time password_ artinya password yang hanya digunakan 1 kali saja. Setelah digunakan **atau** sudah melewati batas waktu tertentu, password tersebut sudah tidak dapat digunakan lagi. Jadi _by nature_ dia selalu berubah dan bukan kita yang menentukan nilai dari **OTP** tersebut.
|
||||||
|
|
||||||
> *Saya yakin pak mentri bukannya tidak mengerti, tapi memang salah bicara. Maksud beliau pasti password biasa, bukan OTP. Ya pak ya? Ya kan pak? Ya kan?* :worried:
|
> _Saya yakin pak mentri bukannya tidak mengerti, tapi memang salah bicara. Maksud beliau pasti password biasa, bukan OTP. Ya pak ya? Ya kan pak? Ya kan?_ :worried:
|
||||||
|
|
||||||
Kembali ke topik mengenai kenapa menurut saya mengubah password secara berkala sudah tidak relevan, karena untuk mengingat situs atau aplikasi yang kita pernah mendaftar saja sudah sangatlah susah, apa lagi harus mengubahnya secara berkala dengan password acak yang berbeda.
|
Kembali ke topik mengenai kenapa menurut saya mengubah password secara berkala sudah tidak relevan, karena untuk mengingat situs atau aplikasi yang kita pernah mendaftar saja sudah sangatlah susah, apa lagi harus mengubahnya secara berkala dengan password acak yang berbeda.
|
||||||
|
|
||||||
Menurut saya pribadi, dengan mengimplementasikan poin-poin yang sudah saya sebutkan di atas sudah cukup (untuk orang-orang pada umumnya).
|
Menurut saya pribadi, dengan mengimplementasikan poin-poin yang sudah saya sebutkan di atas sudah cukup (untuk orang-orang pada umumnya).
|
||||||
|
|
||||||
## Gunakan Password Manager yang open-source
|
## Gunakan Password Manager yang open-source
|
||||||
Poin-poin diatas yang saya sebutkan akan sangat sulit dilakukan tanpa adanya *sofware* **Password Manager**. Gunakanlah password manager yang *open-source* yang sudah dan dapat diaudit secara bebas kapan saja oleh publik.
|
|
||||||
|
|
||||||
Ada banyak software password manager yang *open-source* seperti [Bitwarden](https://bitwarden.com/), [KeepassXC](https://keepassxc.org/), [Padloc](https://padloc.app/), dsb. Jika Anda **memiliki infrastruktur dan kemampuan** dalam membangun dan memanage *self-hosted server* dari password manager tersebut, akan lebih baik jika Anda menggunakan versi *self-hosted*nya.
|
Poin-poin diatas yang saya sebutkan akan sangat sulit dilakukan tanpa adanya _sofware_ **Password Manager**. Gunakanlah password manager yang _open-source_ yang sudah dan dapat diaudit secara bebas kapan saja oleh publik.
|
||||||
|
|
||||||
|
Ada banyak software password manager yang _open-source_ seperti [Bitwarden](https://bitwarden.com/), [KeepassXC](https://keepassxc.org/), [Padloc](https://padloc.app/), dsb. Jika Anda **memiliki infrastruktur dan kemampuan** dalam membangun dan memanage _self-hosted server_ dari password manager tersebut, akan lebih baik jika Anda menggunakan versi *self-hosted*nya.
|
||||||
|
|
||||||
### Tips menggunakan password manager
|
### Tips menggunakan password manager
|
||||||
|
|
||||||
Untuk dapat mengikuti tips saya ini, Anda memerlukan:
|
Untuk dapat mengikuti tips saya ini, Anda memerlukan:
|
||||||
|
|
||||||
- 2 buah akun email, 1 diantaranya adalah email yang **tidak pernah** Anda gunakan untuk registrasi **dimanapun**.
|
- 2 buah akun email, 1 diantaranya adalah email yang **tidak pernah** Anda gunakan untuk registrasi **dimanapun**.
|
||||||
- Mampu mengingat paling tidak 3 buah password kompleks yang berbeda (**minimal 12 karakter yang mengandung angka, simbol, huruf besar dan huruf kecil**).
|
- Mampu mengingat paling tidak 3 buah password kompleks yang berbeda (**minimal 12 karakter yang mengandung angka, simbol, huruf besar dan huruf kecil**).
|
||||||
|
|
||||||
Taruh kata, saya sudah mempunyai 2 buah alamat email berikut:
|
Taruh kata, saya sudah mempunyai 2 buah alamat email berikut:
|
||||||
|
|
||||||
1. `ditatompel@gmail.com`
|
1. `ditatompel@gmail.com`
|
||||||
2. `administrator@ditatompel.com`
|
2. `administrator@ditatompel.com`
|
||||||
|
|
||||||
|
|
||||||
Email pertama saya gunakan untuk setiap registrasi website yang memerlukan verifikasi email. Ingat dan catat baik-baik password untuk login email tersebut di **OTAK** Anda (jangan pernah tuliskan password login tersebut dimanapun, termasuk password manager).
|
Email pertama saya gunakan untuk setiap registrasi website yang memerlukan verifikasi email. Ingat dan catat baik-baik password untuk login email tersebut di **OTAK** Anda (jangan pernah tuliskan password login tersebut dimanapun, termasuk password manager).
|
||||||
|
|
||||||
Email kedua **HANYA** saya gunakan untuk fitur *recovery* / lupa password dari email pertama. Jangan beritahu kepada siapapun alamat email kedua ini kecuali *provider* email pertama.
|
Email kedua **HANYA** saya gunakan untuk fitur _recovery_ / lupa password dari email pertama. Jangan beritahu kepada siapapun alamat email kedua ini kecuali _provider_ email pertama.
|
||||||
|
|
||||||
Biasanya email *provider* sekelas **Gmail** juga akan mengirimkan notifikasi ke email *recovery* jika ada aktifitas yang dianggap mencurigakan dari akun Anda. Gunakan password yang berdeda dari email yang pertama untuk megakses email *recovery* ini (Ingat dan catat baik-baik password untuk login email tersebut di **OTAK** Anda (jangan pernah tuliskan password login dimanapun, termasuk password manager).
|
Biasanya email _provider_ sekelas **Gmail** juga akan mengirimkan notifikasi ke email _recovery_ jika ada aktifitas yang dianggap mencurigakan dari akun Anda. Gunakan password yang berdeda dari email yang pertama untuk megakses email _recovery_ ini (Ingat dan catat baik-baik password untuk login email tersebut di **OTAK** Anda (jangan pernah tuliskan password login dimanapun, termasuk password manager).
|
||||||
|
|
||||||
Register ke situs penyedia password manager menggunakan email pertama. Biasanya password manager akan meminta anda untuk menentukan ***Master Password*** Anda. Gunakan password yang berbeda dari password email pertama dan kedua. Dan, lagi-lagi: ingat dan catat baik-baik ***Master Password*** tersebut di **OTAK** Anda (jangan pernah tuliskan **Master Password** dimanapun, termasuk password manager itu sendiri).
|
Register ke situs penyedia password manager menggunakan email pertama. Biasanya password manager akan meminta anda untuk menentukan **_Master Password_** Anda. Gunakan password yang berbeda dari password email pertama dan kedua. Dan, lagi-lagi: ingat dan catat baik-baik **_Master Password_** tersebut di **OTAK** Anda (jangan pernah tuliskan **Master Password** dimanapun, termasuk password manager itu sendiri).
|
||||||
|
|
||||||
Jangan lupa aktifkan **2FA/OTP** (jika *provider* menyediakan fitur tersebut) untuk mengakses 3 akun penting diatas (email pertama, kedua, dan password manager).
|
Jangan lupa aktifkan **2FA/OTP** (jika _provider_ menyediakan fitur tersebut) untuk mengakses 3 akun penting diatas (email pertama, kedua, dan password manager).
|
||||||
|
|
||||||
Gunakan password manager untuk *mengenerate* dan menyimpan semua password situs atau aplikasi yang Anda gunakan **diluar** email pertama, email kedua, dan master password dari pasword manager yang Anda gunakan tersebut.
|
Gunakan password manager untuk _mengenerate_ dan menyimpan semua password situs atau aplikasi yang Anda gunakan **diluar** email pertama, email kedua, dan master password dari pasword manager yang Anda gunakan tersebut.
|
||||||
|
|
||||||
Dengan begitu, Anda benar-benar memiliki password acak yang berbeda untuk setiap situs atau aplikasi yang Anda gunakan tanpa harus repot mengingat. Semoga artikel ini berguna dan dapat menambah wawasan.
|
Dengan begitu, Anda benar-benar memiliki password acak yang berbeda untuk setiap situs atau aplikasi yang Anda gunakan tanpa harus repot mengingat. Semoga artikel ini berguna dan dapat menambah wawasan.
|
||||||
|
|
||||||
> Catatan khusus mengenai email, jika Anda menggunakan penyedia layanan email seperti Yahoo! atau Google, Anda bisa kehilangan akun email Anda jika Anda tidak pernah melakukan login dalam kurun waktu tertentu. Pembahasan mengenai hal ini saya tulis dalam bahasa Inggris di berjudul [*"Why Inactive Email Accounts is Dangerous"*](https://insights.ditatompel.com/en/blog/2020/06/why-inactive-email-accounts-is-dangerous/).
|
> Catatan khusus mengenai email, jika Anda menggunakan penyedia layanan email seperti Yahoo! atau Google, Anda bisa kehilangan akun email Anda jika Anda tidak pernah melakukan login dalam kurun waktu tertentu. Pembahasan mengenai hal ini saya tulis dalam bahasa Inggris di berjudul [_"Why Inactive Email Accounts is Dangerous"_](https://insights.ditatompel.com/en/blog/2020/06/why-inactive-email-accounts-is-dangerous/).
|
||||||
Jadi, selalu sempatkan login ke penyedia layanan email yang Anda gunakan minimal 2 bulan sekali.
|
> Jadi, selalu sempatkan login ke penyedia layanan email yang Anda gunakan minimal 2 bulan sekali.
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
title: "Cara Akses Reddit Tanpa VPN Dengan Libreddit"
|
title: "Cara Akses Reddit Tanpa VPN Dengan Libreddit"
|
||||||
description: "Buat kamu yang kesulitan mengakses Reddit karena diblokir oleh ISP, menggunakan libreddit adalah cara alternatif dan mudah untuk mengakses Reddit tanpa VPN"
|
description: "Buat kamu yang kesulitan mengakses Reddit karena diblokir oleh ISP, menggunakan libreddit adalah cara alternatif dan mudah untuk mengakses Reddit tanpa VPN"
|
||||||
|
summary: "Buat kamu yang kesulitan mengakses Reddit karena diblokir oleh ISP, menggunakan libreddit adalah cara alternatif dan mudah untuk mengakses Reddit tanpa VPN"
|
||||||
date: 2023-06-04T23:13:33+07:00
|
date: 2023-06-04T23:13:33+07:00
|
||||||
lastmod:
|
lastmod:
|
||||||
draft: false
|
draft: false
|
||||||
|
@ -17,31 +18,18 @@ tags:
|
||||||
- Reddit
|
- Reddit
|
||||||
- libreddit
|
- libreddit
|
||||||
images:
|
images:
|
||||||
# -
|
|
||||||
# menu:
|
|
||||||
# main:
|
|
||||||
# weight: 100
|
|
||||||
# params:
|
|
||||||
# icon:
|
|
||||||
# vendor: bs
|
|
||||||
# name: book
|
|
||||||
# color: '#e24d0e'
|
|
||||||
authors:
|
authors:
|
||||||
- vie
|
- vie
|
||||||
- jasmerah1966
|
- jasmerah1966
|
||||||
---
|
---
|
||||||
|
|
||||||
Buat kamu yang kesulitan mengakses **Reddit** karena diblokir oleh **ISP**, menggunakan **libreddit** adalah cara alternatif dan mudah untuk **mengakses Reddit tanpa VPN**.
|
Belakangan ini, banyak yang melaporkan bahwa kawan-kawan di Indonesia mulai kesulitan mengakses **Reddit**. Mungkin karena pemerintah mulai memperketat _"jalur keluar"_ dari _internet checkpoint_ (baca: "[Babak Baru Sensor Internet di Indonesia: DPI & TCP Reset Attack]({{< ref "/blog/new-stage-of-internet-censorship-in-indonesia-dpi-tcp-reset-attack/index.id.md" >}})"). Berikut ini salah satu cara mengakses `reddit.com` tanpa harus menggunakan **VPN**. Contohnya adalah menggunakan [libreddit](https://github.com/libreddit/libreddit).
|
||||||
|
|
||||||
<!--more-->
|
**Libreddit** itu sendiri adalah antar muka (_proxy_) untuk situs `reddit.com` (bukan _official_), jadi dia bertindak sebagai penghubung antara kamu dan situs `reddit.com`.
|
||||||
---
|
|
||||||
|
|
||||||
Belakangan ini, banyak yang melaporkan bahwa kawan-kawan di Indonesia mulai kesulitan mengakses **Reddit**. Mungkin karena pemerintah mulai memperketat *"jalur keluar"* dari *internet checkpoint* (baca: "[Babak Baru Sensor Internet di Indonesia: DPI & TCP Reset Attack]({{< ref "/blog/new-stage-of-internet-censorship-in-indonesia-dpi-tcp-reset-attack/index.id.md" >}})"). Berikut ini salah satu cara mengakses `reddit.com` tanpa harus menggunakan **VPN**. Contohnya adalah menggunakan [libreddit](https://github.com/libreddit/libreddit).
|
## Libreddit _instance_
|
||||||
|
|
||||||
**Libreddit** itu sendiri adalah antar muka (*proxy*) untuk situs `reddit.com` (bukan *official*), jadi dia bertindak sebagai penghubung antara kamu dan situs `reddit.com`.
|
**Libreddit _instance_** adalah mesin yang menjalankan program `libreddit` itu sendiri. _Instance_ ini biasanya dioperasikan oleh individu, tapi ada juga kelompok atau organisasi yang mengoperasikan **Libreddit _instance_**.
|
||||||
|
|
||||||
## Libreddit *instance*
|
|
||||||
**Libreddit _instance_** adalah mesin yang menjalankan program `libreddit` itu sendiri. *Instance* ini biasanya dioperasikan oleh individu, tapi ada juga kelompok atau organisasi yang mengoperasikan **Libreddit _instance_**.
|
|
||||||
|
|
||||||
Berikut ini daftar beberapa instance yang dapat kamu pakai:
|
Berikut ini daftar beberapa instance yang dapat kamu pakai:
|
||||||
|URL|Location|Behind Cloudflare?|Comment|
|
|URL|Location|Behind Cloudflare?|Comment|
|
||||||
|
@ -51,55 +39,62 @@ Berikut ini daftar beberapa instance yang dapat kamu pakai:
|
||||||
|https://lr.riverside.rocks|🇺🇸 Amerika Serikat|||
|
|https://lr.riverside.rocks|🇺🇸 Amerika Serikat|||
|
||||||
|https://libreddit.privacy.com.de|🇩🇪 Jerman|||
|
|https://libreddit.privacy.com.de|🇩🇪 Jerman|||
|
||||||
|
|
||||||
Untuk list yang lebih lengkap dan *up-to-date* bisa dilihat di [https://github.com/libreddit/libreddit-instances/blob/master/instances.md](https://github.com/libreddit/libreddit-instances/blob/master/instances.md).
|
Untuk list yang lebih lengkap dan _up-to-date_ bisa dilihat di [https://github.com/libreddit/libreddit-instances/blob/master/instances.md](https://github.com/libreddit/libreddit-instances/blob/master/instances.md).
|
||||||
|
|
||||||
## Cara menggunakan libreddit
|
## Cara menggunakan libreddit
|
||||||
Cara menggunakan `libreddit` sangat mudah, kamu cuma butuh *browser*, kunjungi salah satu [*instance* diatas](#libreddit-instance). Setelah kamu berada di halaman depan *instance* yang kamu pilih, hal pertama yang kamu harus lakukan adalah memilih *subreddit* yang ingin kamu *subscribe*.
|
|
||||||
|
|
||||||
Itu supaya ketika kamu kedepannya mengakses `libreddit` *instance* itu lagi, yang tampil di halaman depan adalah konten-konten dari *subreddit* yang sudah kamu *subscribe*.
|
Cara menggunakan `libreddit` sangat mudah, kamu cuma butuh _browser_, kunjungi salah satu [_instance_ diatas](#libreddit-instance). Setelah kamu berada di halaman depan _instance_ yang kamu pilih, hal pertama yang kamu harus lakukan adalah memilih _subreddit_ yang ingin kamu _subscribe_.
|
||||||
|
|
||||||
Caranya, cari *subreddit* yang ingin kamu *subscribe* dari kolom pencarian. Misalnya [r/indonesia](https://safereddit.com/r/indonesia).
|
Itu supaya ketika kamu kedepannya mengakses `libreddit` _instance_ itu lagi, yang tampil di halaman depan adalah konten-konten dari _subreddit_ yang sudah kamu _subscribe_.
|
||||||
|
|
||||||
|
Caranya, cari _subreddit_ yang ingin kamu _subscribe_ dari kolom pencarian. Misalnya [r/indonesia](https://safereddit.com/r/indonesia).
|
||||||
|
|
||||||
![Pencarian di libreddit](libreddit-1.png#center)
|
![Pencarian di libreddit](libreddit-1.png#center)
|
||||||
|
|
||||||
Setelah masuk ke halaman *subreddit* yang kamu pilih, tekan tombol _**"Subscribe"**_. Maka posting dari *subreddit* yang sudah kamu *subscribe* tersebut akan otomatis muncul di halaman depan.
|
Setelah masuk ke halaman _subreddit_ yang kamu pilih, tekan tombol _**"Subscribe"**_. Maka posting dari _subreddit_ yang sudah kamu _subscribe_ tersebut akan otomatis muncul di halaman depan.
|
||||||
|
|
||||||
## Kelebihan dan kekurangan
|
## Kelebihan dan kekurangan
|
||||||
|
|
||||||
Selalu ada kelebihan dan kekurangan, saya ingin mulai dari kekurangannya dulu baru kelebihannya.
|
Selalu ada kelebihan dan kekurangan, saya ingin mulai dari kekurangannya dulu baru kelebihannya.
|
||||||
|
|
||||||
### Kekurangan
|
### Kekurangan
|
||||||
Kekurangan paling utama adalah kita hanya bisa *browsing* atau melihat-lihat saja. Karena di `libreddit`, kita tidak perlu *login* (memang tidak bisa). Maka dari itu, kita juga pasti tidak bisa melakukan interaksi dengan pengguna lainnya seperti memberikan komentar, *upvote*, *downvote*, dan lain-lain.
|
|
||||||
|
Kekurangan paling utama adalah kita hanya bisa _browsing_ atau melihat-lihat saja. Karena di `libreddit`, kita tidak perlu _login_ (memang tidak bisa). Maka dari itu, kita juga pasti tidak bisa melakukan interaksi dengan pengguna lainnya seperti memberikan komentar, _upvote_, _downvote_, dan lain-lain.
|
||||||
|
|
||||||
### Kelebihan
|
### Kelebihan
|
||||||
|
|
||||||
- Tidak perlu **VPN**
|
- Tidak perlu **VPN**
|
||||||
Untuk mengakses `libreddit`, kita tidak perlu menginstal atau melakukan koneksi **VPN** jika ISP yang kamu pakai memblokir Reddit. Cukup bermodal *browser* dan mengakses Libreddit *instance* yang sudah saya sebutkan diatas.
|
Untuk mengakses `libreddit`, kita tidak perlu menginstal atau melakukan koneksi **VPN** jika ISP yang kamu pakai memblokir Reddit. Cukup bermodal _browser_ dan mengakses Libreddit _instance_ yang sudah saya sebutkan diatas.
|
||||||
- Tanpa iklan
|
- Tanpa iklan
|
||||||
Dengan menggunakan libeddit, kita bisa browsing posting-posting yang ada di Reddit tanpa iklan.
|
Dengan menggunakan libeddit, kita bisa browsing posting-posting yang ada di Reddit tanpa iklan.
|
||||||
- Lebih cepat
|
- Lebih cepat
|
||||||
Dari hasil pengalaman saya, mengakses reddit menggunakan libreddit terasa lebih cepat dan responsif.
|
Dari hasil pengalaman saya, mengakses reddit menggunakan libreddit terasa lebih cepat dan responsif.
|
||||||
- Privasi
|
- Privasi
|
||||||
**Libreddit** hanya menggunakan *"Cookie"* untuk menyimpan *menu "Setting"* dan *subreddit* yang kamu *subscribe*. *"Cookie"* tersebut sama sekali tidak menyimpan informasi personal kita.
|
**Libreddit** hanya menggunakan _"Cookie"_ untuk menyimpan _menu "Setting"_ dan _subreddit_ yang kamu _subscribe_. _"Cookie"_ tersebut sama sekali tidak menyimpan informasi personal kita.
|
||||||
- Pilihan **SFW** *only* / **+NSFW**
|
- Pilihan **SFW** _only_ / **+NSFW**
|
||||||
**Beberapa _libreddit instance_ memilih TIDAK menampilkan** konten **NSFW** (_**SFW** only_), seperti [safereddit.com](https://safereddit.com). Jadi kamu bisa lebih merasa "aman" ketika melakukan browsing reddit disana.
|
**Beberapa _libreddit instance_ memilih TIDAK menampilkan** konten **NSFW** (_**SFW** only_), seperti [safereddit.com](https://safereddit.com). Jadi kamu bisa lebih merasa "aman" ketika melakukan browsing reddit disana.
|
||||||
|
|
||||||
## Tips Memanfaatkan _Plugin **Privacy Redirect**_
|
## Tips Memanfaatkan _Plugin **Privacy Redirect**_
|
||||||
Sering kali saat kita melakukan pencarian di mesin penelusuran seperti Google.com, muncul konten dari halaman situs Reddit. Namun karena kita tidak dapat mengakses *link* Reddit tersebit karena ISP yang kita gunakan memblokir akses ke situs reddit.com.
|
|
||||||
|
|
||||||
Disini adanya [_plugin browser "**Privacy Redirect**"_](https://github.com/SimonBrazell/privacy-redirect) akan sangat membantu. Dia tugasnya akan melakukan *redirect* (mengubah) *link* asal ke *link* yang sudah kita tentukan sebelumnya.
|
Sering kali saat kita melakukan pencarian di mesin penelusuran seperti Google.com, muncul konten dari halaman situs Reddit. Namun karena kita tidak dapat mengakses _link_ Reddit tersebit karena ISP yang kita gunakan memblokir akses ke situs reddit.com.
|
||||||
|
|
||||||
Misalnya, ketika hasil pencarian dari google.com menampilkan *link* ke _https://**reddit.com**/r/indonesia_, ketika kita mengeklik *link* tersebut, _plugin "**Privacy Redirect**"_ akan mengubah *link* tersebut ke _libreddit instance_ pilihan kita yang sudah kita tentukan sebelumnya, misal: _https://**safereddit.com**/r/indonesia_.
|
Disini adanya [_plugin browser "**Privacy Redirect**"_](https://github.com/SimonBrazell/privacy-redirect) akan sangat membantu. Dia tugasnya akan melakukan _redirect_ (mengubah) _link_ asal ke _link_ yang sudah kita tentukan sebelumnya.
|
||||||
|
|
||||||
|
Misalnya, ketika hasil pencarian dari google.com menampilkan _link_ ke _https://**reddit.com**/r/indonesia_, ketika kita mengeklik _link_ tersebut, _plugin "**Privacy Redirect**"_ akan mengubah _link_ tersebut ke _libreddit instance_ pilihan kita yang sudah kita tentukan sebelumnya, misal: _https://**safereddit.com**/r/indonesia_.
|
||||||
|
|
||||||
Saat ini, _plugin Privacy Redirect_ tersebut tersedia di [Firefox Add-Ons](https://addons.mozilla.org/en-US/firefox/addon/privacy-redirect/), [Chrome Web Store](https://chrome.google.com/webstore/detail/privacy-redirect/pmcmeagblkinmogikoikkdjiligflglb), dan [Microsoft Edge Add-ons](https://microsoftedge.microsoft.com/addons/detail/privacy-redirect/elnabkhcgpajchapppkhiaifkgikgihj).
|
Saat ini, _plugin Privacy Redirect_ tersebut tersedia di [Firefox Add-Ons](https://addons.mozilla.org/en-US/firefox/addon/privacy-redirect/), [Chrome Web Store](https://chrome.google.com/webstore/detail/privacy-redirect/pmcmeagblkinmogikoikkdjiligflglb), dan [Microsoft Edge Add-ons](https://microsoftedge.microsoft.com/addons/detail/privacy-redirect/elnabkhcgpajchapppkhiaifkgikgihj).
|
||||||
|
|
||||||
Cara menggunakannya cukup *install plugin* tersebut ke *browser* yang kamu pakai, masuk ke pilihan **"More Options"** dan masukkan *URL instance* pilihan kamu ke **"Reddit Instance"**.
|
Cara menggunakannya cukup _install plugin_ tersebut ke _browser_ yang kamu pakai, masuk ke pilihan **"More Options"** dan masukkan _URL instance_ pilihan kamu ke **"Reddit Instance"**.
|
||||||
|
|
||||||
![Privacy Redirect Plugin](privacy-redirect-plugin.png#center).
|
![Privacy Redirect Plugin](privacy-redirect-plugin.png#center).
|
||||||
|
|
||||||
Kamu juga bisa dengan mudah mengaktifkan / menonaktifkan fitur *redirect* per situs dari tombol switch `on` - `off` seperti pada gambar di bawah:
|
Kamu juga bisa dengan mudah mengaktifkan / menonaktifkan fitur _redirect_ per situs dari tombol switch `on` - `off` seperti pada gambar di bawah:
|
||||||
|
|
||||||
![Privacy Redirect Plugin Switch](privact-redirect-plugin-swich-on-off.png#center).
|
![Privacy Redirect Plugin Switch](privact-redirect-plugin-swich-on-off.png#center).
|
||||||
|
|
||||||
## Alternatif libreddit
|
## Alternatif libreddit
|
||||||
Selain **libreddit**, ada alternatif lain yang cara kerjanya sama (sebagai *proxy*), yaitu [**teddit**](https://codeberg.org/teddit/teddit). Dari sisi tampilan, **libreddit** lebih mirip dengan desain reddit yang baru, sedangkan **teddit** terlihat mengikuti desain reddit yang lama (`old.reddit.com`).
|
|
||||||
|
Selain **libreddit**, ada alternatif lain yang cara kerjanya sama (sebagai _proxy_), yaitu [**teddit**](https://codeberg.org/teddit/teddit). Dari sisi tampilan, **libreddit** lebih mirip dengan desain reddit yang baru, sedangkan **teddit** terlihat mengikuti desain reddit yang lama (`old.reddit.com`).
|
||||||
|
|
||||||
Dari sisi bahasa program yang digunakan, libreddit menggunakan **Rust** sedangkan teddit menggunakan **NodeJS**.
|
Dari sisi bahasa program yang digunakan, libreddit menggunakan **Rust** sedangkan teddit menggunakan **NodeJS**.
|
||||||
|
|
||||||
|
|
|
@ -97,4 +97,3 @@ Sebagai _user_ `root`, _extract_ kemudian _copy_ folder hasil _extract_ ke `/usr
|
||||||
Maaf belum sempat buat untuk _player_ dan _desktop environment_ laen.
|
Maaf belum sempat buat untuk _player_ dan _desktop environment_ laen.
|
||||||
|
|
||||||
Pertanyaan & bugs report ke `https://devilzc0de.org/forum/thread-11791.html`.
|
Pertanyaan & bugs report ke `https://devilzc0de.org/forum/thread-11791.html`.
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
title: "Koneksi Ke Internet Modem Smart ZTE AC2726i pada Linux"
|
title: "Koneksi Ke Internet Modem Smart ZTE AC2726i pada Linux"
|
||||||
description: "Berikut ini adalah tutorial untuk melakukan koneksi ke internet dengan modem Smart Fren ZTE AC2726i (Dual Mode USB Modem) menggunakan wvdial."
|
description: "Tutorial untuk melakukan koneksi ke internet dengan modem Smart Fren ZTE AC2726i (Dual Mode USB Modem) menggunakan wvdial."
|
||||||
|
summary: "Tutorial untuk melakukan koneksi ke internet dengan modem Smart Fren ZTE AC2726i (Dual Mode USB Modem) menggunakan wvdial."
|
||||||
date: 2012-09-08T19:40:46+07:00
|
date: 2012-09-08T19:40:46+07:00
|
||||||
lastmod:
|
lastmod:
|
||||||
draft: false
|
draft: false
|
||||||
|
@ -17,36 +18,26 @@ tags:
|
||||||
- wvdial
|
- wvdial
|
||||||
- Linux
|
- Linux
|
||||||
images:
|
images:
|
||||||
# -
|
|
||||||
# menu:
|
|
||||||
# main:
|
|
||||||
# weight: 100
|
|
||||||
# params:
|
|
||||||
# icon:
|
|
||||||
# vendor: bs
|
|
||||||
# name: book
|
|
||||||
# color: '#e24d0e'
|
|
||||||
authors:
|
authors:
|
||||||
- ditatompel
|
- ditatompel
|
||||||
---
|
---
|
||||||
|
|
||||||
Berikut ini adalah tutorial untuk melakukan koneksi ke internet dengan modem **Smart Fren ZTE AC2726i** atau **ZTE AC2726** (*Dual Mode USB Modem*) menggunakan `wvdial`.
|
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
Pada saat tutorial ini dibuat Saya menggunakan Distro **BackTrack**. Dan harusnya dapat bekerja juga di distro **Linux** lainnya.
|
Pada saat tutorial ini dibuat Saya menggunakan Distro **BackTrack**. Dan harusnya dapat bekerja juga di distro **Linux** lainnya.
|
||||||
|
|
||||||
Pertama, Anda harus [mendownload terlebih dahulu `usb_modeswitch`](https://www.draisberghof.de/usb_modeswitch/#download). Jika anda sudah memiliki koneksi internet (dengan **WiFi** misalnya), Anda cukup menjalankan perintah `wget` :
|
Pertama, Anda harus [mendownload terlebih dahulu `usb_modeswitch`](https://www.draisberghof.de/usb_modeswitch/#download). Jika anda sudah memiliki koneksi internet (dengan **WiFi** misalnya), Anda cukup menjalankan perintah `wget` :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
wget https://www.draisberghof.de/usb_modeswitch/usb_modeswitch-1.0.2.tar.bz2
|
wget https://www.draisberghof.de/usb_modeswitch/usb_modeswitch-1.0.2.tar.bz2
|
||||||
```
|
```
|
||||||
|
|
||||||
Setelah proses mendownload selesai, *extract* `usb_modeswitch-1.0.2.tar.bz2` yang baru saja Anda download.
|
Setelah proses mendownload selesai, _extract_ `usb_modeswitch-1.0.2.tar.bz2` yang baru saja Anda download.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
tar -xjf usb_modeswitch-1.0.2.tar.bz2
|
tar -xjf usb_modeswitch-1.0.2.tar.bz2
|
||||||
```
|
```
|
||||||
|
|
||||||
Masuk ke folder `usb_modeswitch-1.0.2` dan install :
|
Masuk ke folder `usb_modeswitch-1.0.2` dan install :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd usb_modeswitch-1.0.2; sudo make install
|
cd usb_modeswitch-1.0.2; sudo make install
|
||||||
```
|
```
|
||||||
|
@ -60,11 +51,15 @@ install ./usb_modeswitch /usr/sbin
|
||||||
mkdir -p /etc
|
mkdir -p /etc
|
||||||
install ./usb_modeswitch.conf /etc
|
install ./usb_modeswitch.conf /etc
|
||||||
```
|
```
|
||||||
|
|
||||||
Terlihat bahwa ada 2 file terinstall : `usb_modeswitch` dan `usb_modeswitch.conf`. Edit `usb_modeswitch.conf` yang terletak pada folder `/etc`.
|
Terlihat bahwa ada 2 file terinstall : `usb_modeswitch` dan `usb_modeswitch.conf`. Edit `usb_modeswitch.conf` yang terletak pada folder `/etc`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo nano /etc/usb_modeswitch.conf
|
sudo nano /etc/usb_modeswitch.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
tambahkan konfigurasi berikut yang mirip dengan konfigurasi modem **ZTE AC2710** (**EVDO**) oleh **Wasim Baig**
|
tambahkan konfigurasi berikut yang mirip dengan konfigurasi modem **ZTE AC2710** (**EVDO**) oleh **Wasim Baig**
|
||||||
|
|
||||||
```plain
|
```plain
|
||||||
#########################################################
|
#########################################################
|
||||||
## ZTE AC2726i (EVDO)
|
## ZTE AC2726i (EVDO)
|
||||||
|
@ -74,12 +69,17 @@ TargetVendor= 0x19d2
|
||||||
TargetProduct= 0xfff1
|
TargetProduct= 0xfff1
|
||||||
MessageContent= "5553424312345678c00000008000069f010000000000000000000000000000"
|
MessageContent= "5553424312345678c00000008000069f010000000000000000000000000000"
|
||||||
```
|
```
|
||||||
|
|
||||||
Kemudian buka konfigurasi `wvdial` pada `/etc/wvdial.conf` dan edit file konfigurasinya :
|
Kemudian buka konfigurasi `wvdial` pada `/etc/wvdial.conf` dan edit file konfigurasinya :
|
||||||
> _* Saya sarankan untuk selalu membackup konfigurasi anda sebelum melakukan modifikasi._
|
|
||||||
|
> _\* Saya sarankan untuk selalu membackup konfigurasi anda sebelum melakukan modifikasi._
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo nano /etc/wvdial.conf
|
sudo nano /etc/wvdial.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
Tambahkan konfigurasi berikut ini :
|
Tambahkan konfigurasi berikut ini :
|
||||||
|
|
||||||
```plain
|
```plain
|
||||||
[Dialer smart]
|
[Dialer smart]
|
||||||
Init1 = ATZ
|
Init1 = ATZ
|
||||||
|
@ -99,21 +99,21 @@ Baud = 9600
|
||||||
Konfigurasi usb_modeswitch dan wvdial telah selesai.
|
Konfigurasi usb_modeswitch dan wvdial telah selesai.
|
||||||
|
|
||||||
Jalankan `usb_modeswitch` dari terminal untuk merubah product usb modem dari `fff5` ke `fff1`.
|
Jalankan `usb_modeswitch` dari terminal untuk merubah product usb modem dari `fff5` ke `fff1`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
usb_modeswitch
|
usb_modeswitch
|
||||||
```
|
```
|
||||||
|
|
||||||
Kemudian langkah selanjutnya yang perlu kita lakukan adalah mendeteksi **product id** dari modem yang kita gunakan:
|
Kemudian langkah selanjutnya yang perlu kita lakukan adalah mendeteksi **product id** dari modem yang kita gunakan:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo modprobe usbserial vendor=0x19d2 product=0xfff1
|
sudo modprobe usbserial vendor=0x19d2 product=0xfff1
|
||||||
```
|
```
|
||||||
|
|
||||||
Terakhir jalankan perintah `wvdial`:
|
Terakhir jalankan perintah `wvdial`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo wvdial smart
|
sudo wvdial smart
|
||||||
```
|
```
|
||||||
|
|
||||||
![wvdial Smart Fren](connect-internet-wvdial.png)
|
![wvdial Smart Fren](connect-internet-wvdial.png)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
---
|
---
|
||||||
title: "PHP E-Mail Advanced Validation (Format, MX Host, SMTP Mailbox)"
|
title: "PHP E-Mail Advanced Validation (Format, MX Host, SMTP Mailbox)"
|
||||||
description: "Sebuah script PHP sederhana untuk melakukan validasi E-Mail melalui format penulisan, MX record, dan SMTP mailbox."
|
description: "Sebuah script PHP sederhana untuk melakukan validasi E-Mail melalui format penulisan, MX record, dan SMTP mailbox."
|
||||||
|
summary: "Sebuah script PHP sederhana untuk melakukan validasi E-Mail melalui format penulisan, MX record, dan SMTP mailbox."
|
||||||
date: 2012-10-14T20:02:21+07:00
|
date: 2012-10-14T20:02:21+07:00
|
||||||
lastmod:
|
lastmod:
|
||||||
draft: false
|
draft: false
|
||||||
noindex: false
|
noindex: false
|
||||||
featured: false
|
featured: false
|
||||||
pinned: false
|
pinned: false
|
||||||
# comments: false
|
|
||||||
series:
|
series:
|
||||||
# -
|
# -
|
||||||
categories:
|
categories:
|
||||||
|
@ -15,30 +15,20 @@ categories:
|
||||||
tags:
|
tags:
|
||||||
- PHP
|
- PHP
|
||||||
images:
|
images:
|
||||||
# -
|
|
||||||
# menu:
|
|
||||||
# main:
|
|
||||||
# weight: 100
|
|
||||||
# params:
|
|
||||||
# icon:
|
|
||||||
# vendor: bs
|
|
||||||
# name: book
|
|
||||||
# color: '#e24d0e'
|
|
||||||
authors:
|
authors:
|
||||||
- ditatompel
|
- ditatompel
|
||||||
---
|
---
|
||||||
|
|
||||||
Tidak bisa dipungkiri lagi jika di internet, keberadaan **E-Mail** sangatlah penting. Dengan adanya E-Mail, informasi dapat sangat cepat sampai meskipun sang pengirim dan penerima berada di dua benua yang berbeda. Selain itu, email juga masih menjadi pilihan perusahaan dan developer untuk menyampaikan informasi kepada para pelanggannya.
|
Tidak bisa dipungkiri lagi jika di internet, keberadaan **E-Mail** sangatlah penting. Dengan adanya E-Mail, informasi dapat sangat cepat sampai meskipun sang pengirim dan penerima berada di dua benua yang berbeda. Selain itu, email juga masih menjadi pilihan perusahaan dan developer untuk menyampaikan informasi kepada para pelanggannya.
|
||||||
|
|
||||||
<!--more-->
|
Kali ini ijinkan saya untuk berbagi sebuah _script_ **PHP** sederhana untuk melakukan validasi E-Mail melalui format penulisan, **MX record**, dan **SMTP mailbox**.
|
||||||
|
|
||||||
Kali ini ijinkan saya untuk berbagi sebuah *script* **PHP** sederhana untuk melakukan validasi E-Mail melalui format penulisan, **MX record**, dan **SMTP mailbox**.
|
|
||||||
|
|
||||||
Untuk validasi alamat E-Mail, kita dapat melakukan beberapa hal. yaitu dari format penulisan email, melakukan pengecekan atas **MX record** pada domain yang ingin di cek, atau bahkan melakukan koneksi ke SMTP server yang dituju untuk melakukan pengecekan keberadaan user yang dituju.
|
Untuk validasi alamat E-Mail, kita dapat melakukan beberapa hal. yaitu dari format penulisan email, melakukan pengecekan atas **MX record** pada domain yang ingin di cek, atau bahkan melakukan koneksi ke SMTP server yang dituju untuk melakukan pengecekan keberadaan user yang dituju.
|
||||||
|
|
||||||
Source code dapat didownload di `http://go.webdatasolusindo.co.id/scripts/php/email-advanced-validation.php` atau di `http://pastebin.com/yyjChgKF`.
|
Source code dapat didownload di `http://go.webdatasolusindo.co.id/scripts/php/email-advanced-validation.php` atau di `http://pastebin.com/yyjChgKF`.
|
||||||
|
|
||||||
## 1. Validasi Format Email
|
## 1. Validasi Format Email
|
||||||
|
|
||||||
Format email yang sering digunakan adalah seperti berikut :
|
Format email yang sering digunakan adalah seperti berikut :
|
||||||
`username@domain.com`
|
`username@domain.com`
|
||||||
`Username` : nama user yang dituju.
|
`Username` : nama user yang dituju.
|
||||||
|
@ -49,6 +39,7 @@ Kelemahan pada validasi format seperti ini adalah kita tidak tahu apakah domain
|
||||||
Untuk memastikan bahwa domain tersebut valid atau tidak, kita dapat melakukan pengecekan melalui **MX record**.
|
Untuk memastikan bahwa domain tersebut valid atau tidak, kita dapat melakukan pengecekan melalui **MX record**.
|
||||||
|
|
||||||
## 2. Validasi MX Record
|
## 2. Validasi MX Record
|
||||||
|
|
||||||
Fungsi **MX Record** biasa digunakan untuk mendelegasikan email untuk suatu domain / host ke mail server yang dituju. (Baca : [Sistem penamaan domain](https://id.wikipedia.org/wiki/Sistem_Penamaan_Domain) agar lebih jelas)
|
Fungsi **MX Record** biasa digunakan untuk mendelegasikan email untuk suatu domain / host ke mail server yang dituju. (Baca : [Sistem penamaan domain](https://id.wikipedia.org/wiki/Sistem_Penamaan_Domain) agar lebih jelas)
|
||||||
|
|
||||||
Contohnya dengan menjalankan perintah `dig wds.co.id MX +short`:
|
Contohnya dengan menjalankan perintah `dig wds.co.id MX +short`:
|
||||||
|
@ -65,14 +56,15 @@ Contohnya dengan menjalankan perintah `dig wds.co.id MX +short`:
|
||||||
|
|
||||||
Maka akan terlihat **MX Record** untuk domain `wds.co.id`.
|
Maka akan terlihat **MX Record** untuk domain `wds.co.id`.
|
||||||
|
|
||||||
Dengan melakukan *query* **MX record** tersebut, bisa dikatakan bahwa domain tersebut merupakan domain yang memungkinkan memiliki alamat email. Sedangkan kelemahan pada validasi melalui MX record adalah kita tidak tahu apakah user pada domain tersebut benar-benar ada.
|
Dengan melakukan _query_ **MX record** tersebut, bisa dikatakan bahwa domain tersebut merupakan domain yang memungkinkan memiliki alamat email. Sedangkan kelemahan pada validasi melalui MX record adalah kita tidak tahu apakah user pada domain tersebut benar-benar ada.
|
||||||
|
|
||||||
Misalnya alamat email `alamat.palsu@wds.co.id` akan dikatakan valid meskipun sebenarnya user alamat palsu tidak benar-benar ada pada mail server yang dituju.
|
Misalnya alamat email `alamat.palsu@wds.co.id` akan dikatakan valid meskipun sebenarnya user alamat palsu tidak benar-benar ada pada mail server yang dituju.
|
||||||
|
|
||||||
Untuk dapat mengetahui user benar-benar ada pada mail server yang dituju, kita dapat mengembangkannya lagi dengan melakukan koneksi ke **SMTP** server yang dituju.
|
Untuk dapat mengetahui user benar-benar ada pada mail server yang dituju, kita dapat mengembangkannya lagi dengan melakukan koneksi ke **SMTP** server yang dituju.
|
||||||
|
|
||||||
## 3. Validasi SMTP mailbox
|
## 3. Validasi SMTP mailbox
|
||||||
Dengan melakukan koneksi ke **SMTP** server, kita dapat mengetahui apakah user pada domain tersebut benar-benar ada atau tidak. Contohnya saya melakukan `telnet` ke port `25` (*default port SMTP*) dan menjalankan perintah-perintah **SMTP**.
|
|
||||||
|
Dengan melakukan koneksi ke **SMTP** server, kita dapat mengetahui apakah user pada domain tersebut benar-benar ada atau tidak. Contohnya saya melakukan `telnet` ke port `25` (_default port SMTP_) dan menjalankan perintah-perintah **SMTP**.
|
||||||
|
|
||||||
```plain
|
```plain
|
||||||
dit@tompel ~ $ telnet aspmx3.googlemail.com 25
|
dit@tompel ~ $ telnet aspmx3.googlemail.com 25
|
||||||
|
@ -111,19 +103,23 @@ Connection closed by foreign host.
|
||||||
![SMTP commands](php-email-telnetsmtp.png#center)
|
![SMTP commands](php-email-telnetsmtp.png#center)
|
||||||
|
|
||||||
Perhatikan pada koneksi telnet pertama :
|
Perhatikan pada koneksi telnet pertama :
|
||||||
|
|
||||||
```plain
|
```plain
|
||||||
RCPT TO: <christian.dita@wds.co.id>
|
RCPT TO: <christian.dita@wds.co.id>
|
||||||
250 2.1.5 OK c2si11647357yhk.33
|
250 2.1.5 OK c2si11647357yhk.33
|
||||||
```
|
```
|
||||||
|
|
||||||
dan koneksi telnet kedua :
|
dan koneksi telnet kedua :
|
||||||
|
|
||||||
```plain
|
```plain
|
||||||
RCPT TO: <alamat.palsu@wds.co.id>
|
RCPT TO: <alamat.palsu@wds.co.id>
|
||||||
550-5.1.1 The email account that you tried to reach does not exist. [ Blah blah blah... ]
|
550-5.1.1 The email account that you tried to reach does not exist. [ Blah blah blah... ]
|
||||||
```
|
```
|
||||||
|
|
||||||
Pada koneksi pertama, terlihat bahwa *respond* mail server mau menerima email untuk recipient yg dituju.
|
Pada koneksi pertama, terlihat bahwa _respond_ mail server mau menerima email untuk recipient yg dituju.
|
||||||
Sedangkan pada koneksi kedua, mail server tidak mau menerima email untuk recipient yg dituju.
|
Sedangkan pada koneksi kedua, mail server tidak mau menerima email untuk recipient yg dituju.
|
||||||
|
|
||||||
Jadi bisa dikatakan bahwa user `alamat.palsu` pada domain `wds.co.id` tidak benar-benar ada.
|
Jadi bisa dikatakan bahwa user `alamat.palsu` pada domain `wds.co.id` tidak benar-benar ada.
|
||||||
|
|
||||||
Dari ke 3 validasi di atas itulah konsep dasar darp script **PHP E-Mail Advanced Validation** ini saya buat.
|
Dari ke 3 validasi di atas itulah konsep dasar darp script **PHP E-Mail Advanced Validation** ini saya buat.
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
title: "Sekilas Tentang DNS Hijacking"
|
title: "Sekilas Tentang DNS Hijacking"
|
||||||
description: "Mengupas bagaimana secara teknis DNS hijacking itu dilakukan, bukan tutorial mengenai penggunaan tools / teknik nyata seorang attacker melakukan DNS Hijacking"
|
description: "Mengupas bagaimana secara teknis DNS hijacking itu dilakukan, bukan tutorial mengenai penggunaan tools / teknik nyata seorang attacker melakukan DNS Hijacking"
|
||||||
|
summary: "Mengupas bagaimana secara teknis DNS hijacking itu dilakukan, bukan tutorial mengenai penggunaan tools / teknik nyata seorang attacker melakukan DNS Hijacking"
|
||||||
date: 2012-01-18T03:20:20+07:00
|
date: 2012-01-18T03:20:20+07:00
|
||||||
lastmod:
|
lastmod:
|
||||||
draft: false
|
draft: false
|
||||||
|
@ -17,6 +18,7 @@ tags:
|
||||||
- DNS
|
- DNS
|
||||||
- MiTM
|
- MiTM
|
||||||
images:
|
images:
|
||||||
|
- https://edge.ditatompel.com/assets/img/site-contents/sekilas-tentang-dns-hijacking/feature-dns_spoof-small-1.png
|
||||||
# -
|
# -
|
||||||
# menu:
|
# menu:
|
||||||
# main:
|
# main:
|
||||||
|
@ -30,19 +32,17 @@ authors:
|
||||||
- ditatompel
|
- ditatompel
|
||||||
---
|
---
|
||||||
|
|
||||||
Karena belakangan ini sedang marak **DNS Hijacking**, bahkan **Twitter** pun jadi korban, saya coba membahas dan ingin berdiskusi tentang apa itu *DNS hijacking*. Disini yang ingin saya bahas adalah bagaimana secara teknis DNS hijacking itu dilakukan, bukan tutorial mengenai penggunaan *tools* / teknik nyata seorang *attacker* melakukan **DNS Hijacking**.
|
Karena belakangan ini sedang marak **DNS Hijacking**, bahkan **Twitter** pun jadi korban, saya coba membahas dan ingin berdiskusi tentang apa itu _DNS hijacking_. Disini yang ingin saya bahas adalah bagaimana secara teknis DNS hijacking itu dilakukan, bukan tutorial mengenai penggunaan _tools_ / teknik nyata seorang _attacker_ melakukan **DNS Hijacking**.
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
**DNS Hijacking** adalah teknik serangan yang bertujuan untuk mengubah entri DNS menuju ke IP lain daripada menuju ke IP sebenarnya. Sebelum melanjutkan, ada baiknya untuk mengerti terlebih dahulu mengerti apa dan bagaimana [Sistem Penamaan Domain](https://web.archive.org/web/20110530065350/http://devilzc0de.org:80/forum/thread-7744.html) (Web Archive) itu bekerja.
|
**DNS Hijacking** adalah teknik serangan yang bertujuan untuk mengubah entri DNS menuju ke IP lain daripada menuju ke IP sebenarnya. Sebelum melanjutkan, ada baiknya untuk mengerti terlebih dahulu mengerti apa dan bagaimana [Sistem Penamaan Domain](https://web.archive.org/web/20110530065350/http://devilzc0de.org:80/forum/thread-7744.html) (Web Archive) itu bekerja.
|
||||||
|
|
||||||
![dig command](dig.png#center)
|
![dig command](https://edge.ditatompel.com/assets/img/site-contents/sekilas-tentang-dns-hijacking/dig.png#center)
|
||||||
|
|
||||||
Untuk memahami lebih baik, saya coba kasi contoh di kehidupan sehari-hari. Dan supaya tidak terlalu panjang saya pangkas *flow*nya sampai dengan *authoritative DNS* saja dan tidak sampai ke *root DNS*. (Bukan cerita nyata)
|
Untuk memahami lebih baik, saya coba kasi contoh di kehidupan sehari-hari. Dan supaya tidak terlalu panjang saya pangkas *flow*nya sampai dengan _authoritative DNS_ saja dan tidak sampai ke _root DNS_. (Bukan cerita nyata)
|
||||||
|
|
||||||
Taruh kata saya ingin mencari **exploit** di situs 1337day.com. Maka saya akan memasukkan alamat 1337day.com ke *address bar browser* lalu menekan enter, sehingga saya akan dibawa ke situs [http://1337day.com/ (archive)](https://web.archive.org/web/20130329071147/http://1337day.com/) . Tapi, apa yang terjadi di balik layar saat kita melakukan aktivitas tersebut?
|
Taruh kata saya ingin mencari **exploit** di situs 1337day.com. Maka saya akan memasukkan alamat 1337day.com ke _address bar browser_ lalu menekan enter, sehingga saya akan dibawa ke situs [http://1337day.com/ (archive)](https://web.archive.org/web/20130329071147/http://1337day.com/) . Tapi, apa yang terjadi di balik layar saat kita melakukan aktivitas tersebut?
|
||||||
|
|
||||||
Pada dasarnya, browser akan mengirimkan permintaan ke DNS Server untuk mendapatkan alamat IP domain 1337day.com, *authoritative DNS* server tersebut kemudian menjawab dan memberitahu browser kita alamat IP untuk 1337day.com adalah `77.120.120.218` sehingga browser kita akan mengakses alamat IP 1337day.com (`77.120.120.218`) dan menampilkan isi dari halaman website tersebut.
|
Pada dasarnya, browser akan mengirimkan permintaan ke DNS Server untuk mendapatkan alamat IP domain 1337day.com, _authoritative DNS_ server tersebut kemudian menjawab dan memberitahu browser kita alamat IP untuk 1337day.com adalah `77.120.120.218` sehingga browser kita akan mengakses alamat IP 1337day.com (`77.120.120.218`) dan menampilkan isi dari halaman website tersebut.
|
||||||
|
|
||||||
Cerita berlanjut, 2 hari kemudian saya dapat kabar dari seorang teman kalau situs 1337day.com udah tutup dan berubah jadi toko baju.
|
Cerita berlanjut, 2 hari kemudian saya dapat kabar dari seorang teman kalau situs 1337day.com udah tutup dan berubah jadi toko baju.
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ Otomatis saya tidak percaya, masa situs keren begitu berubah jadi toko baju.. Ya
|
||||||
|
|
||||||
Saya kaget, ternyata situs tersebut benar2 menjadi situs toko baju. Saya benar2 sudah yakin dan memastikan bahwa ini bukan sebuah lelucon. **URI** juga udah saya cek dengan teliti.
|
Saya kaget, ternyata situs tersebut benar2 menjadi situs toko baju. Saya benar2 sudah yakin dan memastikan bahwa ini bukan sebuah lelucon. **URI** juga udah saya cek dengan teliti.
|
||||||
|
|
||||||
Saya pikir *"Ini berita heboh nih..."* Saya langsung chatting sama pacar simpanan stok no #21 yang ada di Russia (sekali lagi, bukan cerita nyata!!). Saya beritahukan berita tersebut (cw simpenan saya yang 1 ini seorang geeks). Saya terkejut karena dia bilang situs *1337day.com* baik-baik saja, isinya juga masih seputar *exploits* dan *vulnerable software*. Trus pacar simpenan saya menyuruh saya untuk *nge-ping* ke *1337day.com* dan mencocokan IP hasil ping saya dengan IP hasil `ping` si do'i, dan hasilnya berbeda!
|
Saya pikir _"Ini berita heboh nih..."_ Saya langsung chatting sama pacar simpanan stok no #21 yang ada di Russia (sekali lagi, bukan cerita nyata!!). Saya beritahukan berita tersebut (cw simpenan saya yang 1 ini seorang geeks). Saya terkejut karena dia bilang situs _1337day.com_ baik-baik saja, isinya juga masih seputar _exploits_ dan _vulnerable software_. Trus pacar simpenan saya menyuruh saya untuk _nge-ping_ ke _1337day.com_ dan mencocokan IP hasil ping saya dengan IP hasil `ping` si do'i, dan hasilnya berbeda!
|
||||||
|
|
||||||
Kalau mau akses 1337day.com, langsung aja ke IPnya. Kata si do'i. Langsung saya coba akses melalui alamat IP.
|
Kalau mau akses 1337day.com, langsung aja ke IPnya. Kata si do'i. Langsung saya coba akses melalui alamat IP.
|
||||||
|
|
||||||
|
@ -65,15 +65,16 @@ Nah inilah contoh korban dari skenario **DNS hijacking**. Kita mungkin bertanya-
|
||||||
Ada beberapa teknik untuk melakukan DNS hijacking ini.
|
Ada beberapa teknik untuk melakukan DNS hijacking ini.
|
||||||
|
|
||||||
## DNS Cache Poisoning
|
## DNS Cache Poisoning
|
||||||
Seperti yang dapat kita bayangkan, DNS server tidak dapat menyimpan semua informasi tentang semua nama / IP yang ada di internet kedalam *memory space*nya. Itulah mengapa DNS server (*resolver*) melakukan *caching* yang memungkinkan untuk menyimpan DNS record untuk sementara waktu. Sebuah fakta bahwa Server DNS memiliki catatan / otoritas domain hanya untuk domain2 yang diarahkan kepadanya, Jika sebuah DNS Server (*resolver*) memerlukan *record* domain di luar otoritasnya, DNS Server akan mengirimkan permintaan ke server DNS lain yang bertanggung jawab atas record domain yang diperlukan. Karena itulah DNS menyimpan *record* ke dalam *cache* karena tidak mungkin sebuah DNS server melakukan *forward* request ada permintaan / *query*.
|
|
||||||
|
|
||||||
Informasi yang saya tuliskan diatas sudah dipersimple, karena sebenarnya di balik layar prosesnya jauh lebih kompleks. Saya akan coba membuat artikel khusus mengenai *Root DNS*, *Resolver*, *TLD*, dan *Authoritative DNS* di lain waktu.
|
Seperti yang dapat kita bayangkan, DNS server tidak dapat menyimpan semua informasi tentang semua nama / IP yang ada di internet kedalam *memory space*nya. Itulah mengapa DNS server (_resolver_) melakukan _caching_ yang memungkinkan untuk menyimpan DNS record untuk sementara waktu. Sebuah fakta bahwa Server DNS memiliki catatan / otoritas domain hanya untuk domain2 yang diarahkan kepadanya, Jika sebuah DNS Server (_resolver_) memerlukan _record_ domain di luar otoritasnya, DNS Server akan mengirimkan permintaan ke server DNS lain yang bertanggung jawab atas record domain yang diperlukan. Karena itulah DNS menyimpan _record_ ke dalam _cache_ karena tidak mungkin sebuah DNS server melakukan _forward_ request ada permintaan / _query_.
|
||||||
|
|
||||||
Sekarang mari kita lihat bagaimana seseorang melakukan *cache poisoning* ke DNS Server kita.
|
Informasi yang saya tuliskan diatas sudah dipersimple, karena sebenarnya di balik layar prosesnya jauh lebih kompleks. Saya akan coba membuat artikel khusus mengenai _Root DNS_, _Resolver_, _TLD_, dan _Authoritative DNS_ di lain waktu.
|
||||||
|
|
||||||
![DNS Cache Poisoning](dns-cache-poisoning.jpg#center)
|
Sekarang mari kita lihat bagaimana seseorang melakukan _cache poisoning_ ke DNS Server kita.
|
||||||
|
|
||||||
1. Penyerang melakukan *query* ke DNS server untuk alamat IP yang dikelola oleh *name server* yang dimiliki oleh penyerang "Berapa adalah alamat IP dari owned.com?"
|
![DNS Cache Poisoning](https://edge.ditatompel.com/assets/img/site-contents/sekilas-tentang-dns-hijacking/dns-cache-poisoning.jpg#center)
|
||||||
|
|
||||||
|
1. Penyerang melakukan _query_ ke DNS server untuk alamat IP yang dikelola oleh _name server_ yang dimiliki oleh penyerang "Berapa adalah alamat IP dari owned.com?"
|
||||||
2. DNS Cache Server tidak memiliki cache record untuk owned.com dan harus meneruskan query ke DNS Server yang bertanggungjawab untuk domain owned.com dimana DNS Server yang bertanggungjawab telah dikuasai oleh penyerang.
|
2. DNS Cache Server tidak memiliki cache record untuk owned.com dan harus meneruskan query ke DNS Server yang bertanggungjawab untuk domain owned.com dimana DNS Server yang bertanggungjawab telah dikuasai oleh penyerang.
|
||||||
3. DNS server milik penyerang memberitahu DNS Cache Server bahwa alamat IP dari owned.com adalah 200.1.1.10. Bersamaan dengan itu, DNS server milik penyerang juga menyisipkan record palsu. Misalnya :
|
3. DNS server milik penyerang memberitahu DNS Cache Server bahwa alamat IP dari owned.com adalah 200.1.1.10. Bersamaan dengan itu, DNS server milik penyerang juga menyisipkan record palsu. Misalnya :
|
||||||
|
|
||||||
|
@ -81,29 +82,32 @@ Sekarang mari kita lihat bagaimana seseorang melakukan *cache poisoning* ke DNS
|
||||||
1337day.com adalah 111.1.1.11
|
1337day.com adalah 111.1.1.11
|
||||||
mail.1337day.com adalah 111.1.1.11
|
mail.1337day.com adalah 111.1.1.11
|
||||||
```
|
```
|
||||||
4. DNS Cache Server merespon untuk query asli penyerang dengan - *"Alamat IP dari owned.com adalah 200.1.1.10."* Tapi siapa yang peduli, tujuan penyerang bukan untuk mendapatkan alamat IP dari owned.com, tapi untuk melakukan transfer record palsu diatas.
|
|
||||||
5. Beberapa hari kemudian, seorang user biasa yang juga menggunakan DNS Cache Server yang sama melakukan query untuk alamat IP dari 1337day.com - *"Berapa adalah alamat IP dari 1337day.com?"*
|
4. DNS Cache Server merespon untuk query asli penyerang dengan - _"Alamat IP dari owned.com adalah 200.1.1.10."_ Tapi siapa yang peduli, tujuan penyerang bukan untuk mendapatkan alamat IP dari owned.com, tapi untuk melakukan transfer record palsu diatas.
|
||||||
|
5. Beberapa hari kemudian, seorang user biasa yang juga menggunakan DNS Cache Server yang sama melakukan query untuk alamat IP dari 1337day.com - _"Berapa adalah alamat IP dari 1337day.com?"_
|
||||||
6. DNS Cache Server merespon request user biasa tersebut dari cache dengan record palsu yang sebelumnya telah disisipkan oleh penyerang.
|
6. DNS Cache Server merespon request user biasa tersebut dari cache dengan record palsu yang sebelumnya telah disisipkan oleh penyerang.
|
||||||
|
|
||||||
![DNS Spoofing](feature-dns_spoof-small-1.png#center)
|
![DNS Spoofing](https://edge.ditatompel.com/assets/img/site-contents/sekilas-tentang-dns-hijacking/feature-dns_spoof-small-1.png#center)
|
||||||
|
|
||||||
## DNS ID Spoofing (with Sniffing)
|
## DNS ID Spoofing (with Sniffing)
|
||||||
Ketika komputer A melakukan request alamat IP server B melalui sebuah DNS Server, komputer A membawa informasi sebuah nomor identitas acak yang harus dibawa ketika melakukan *query* ke DNS Server, kemudian ketika jawaban dari DNS Server diterima oleh komputer A dan dibandingkan dengan identitas acak tadi. Dalam hal ini jika kedua angka tadi sama, maka jawaban akan dianggap valid, dan jika tidak sama maka jawaban akan diabaikan oleh komputer A.
|
|
||||||
|
Ketika komputer A melakukan request alamat IP server B melalui sebuah DNS Server, komputer A membawa informasi sebuah nomor identitas acak yang harus dibawa ketika melakukan _query_ ke DNS Server, kemudian ketika jawaban dari DNS Server diterima oleh komputer A dan dibandingkan dengan identitas acak tadi. Dalam hal ini jika kedua angka tadi sama, maka jawaban akan dianggap valid, dan jika tidak sama maka jawaban akan diabaikan oleh komputer A.
|
||||||
|
|
||||||
Pertanyaannya, apakah konsep ini aman? Tidak sepenuhnya.
|
Pertanyaannya, apakah konsep ini aman? Tidak sepenuhnya.
|
||||||
|
|
||||||
Siapa pun bisa memulai serangan untuk mendapatkan nomor identitas tersebut. Jika Anda misalnya pada **LAN** / **Wireless**, seseorang dapat melakukan *sniffing* saat komputer A melakukan request ke DNS Server, melihat ID permintaan dan mengirimkan jawaban record palsu dengan nomor ID yang benar.
|
Siapa pun bisa memulai serangan untuk mendapatkan nomor identitas tersebut. Jika Anda misalnya pada **LAN** / **Wireless**, seseorang dapat melakukan _sniffing_ saat komputer A melakukan request ke DNS Server, melihat ID permintaan dan mengirimkan jawaban record palsu dengan nomor ID yang benar.
|
||||||
|
|
||||||
Bingung? Untuk lebih jelas bisa lihat gambar di bawah.
|
Bingung? Untuk lebih jelas bisa lihat gambar di bawah.
|
||||||
|
|
||||||
![DNS Spoofing ID](dns-spoofing-id.jpg#center)
|
![DNS Spoofing ID](https://edge.ditatompel.com/assets/img/site-contents/sekilas-tentang-dns-hijacking/dns-spoofing-id.jpg#center)
|
||||||
1. User mengirimkan melakukan UDP request ke DNS Server - *"Berapa adalah alamat IP dari 1337day.com?"* - Dengan ID dari 212.
|
|
||||||
2. Penyerang melakukan *snifing* semua lalu lintas jaringan user tersebut dan merespon DNS query.
|
|
||||||
3. Setelah mengidentifikasi DNS query untuk 1337day.com dengan ID 212, penyerang merespon dengan "Alamat IP dari 1337day.com adalah 111.1.1.11" menggunakan ID yang sama.
|
|
||||||
4. Dan baru beberapa saat kemudian, DNS Server mengirimkan respon *"Alamat IP dari 1337day.com adalah 77.120.120.218"*, tetapi diabaikan oleh komputer user karena telah menerima respon sebelumnya dari penyerang.
|
|
||||||
Ada beberapa keterbatasan untuk teknik serangan ini. Dari contoh di atas, penyerang menjalankan *sniffing*, mendapatkan nomor ID dan harus mampu membangun respon palsu lebih cepat daripada server DNS dapat menyediakan jawaban yang sah.
|
|
||||||
|
|
||||||
Sekian dulu untuk DNS Hijackingnya, sebenernya masih ada beberapa teknik untuk melakukan DNS Hijacking seperti DNS ID Spoofing (*without Sniffing*), *Birthday Attack*, *Page Rank Escalation*, dll seperti yang ada di [Pharming Attack Vectors Section 3](http://www.technicalinfo.net/papers/Pharming2.html) (cukup lengkap klo saya bilang).
|
1. User mengirimkan melakukan UDP request ke DNS Server - _"Berapa adalah alamat IP dari 1337day.com?"_ - Dengan ID dari 212.
|
||||||
|
2. Penyerang melakukan _snifing_ semua lalu lintas jaringan user tersebut dan merespon DNS query.
|
||||||
|
3. Setelah mengidentifikasi DNS query untuk 1337day.com dengan ID 212, penyerang merespon dengan "Alamat IP dari 1337day.com adalah 111.1.1.11" menggunakan ID yang sama.
|
||||||
|
4. Dan baru beberapa saat kemudian, DNS Server mengirimkan respon _"Alamat IP dari 1337day.com adalah 77.120.120.218"_, tetapi diabaikan oleh komputer user karena telah menerima respon sebelumnya dari penyerang.
|
||||||
|
Ada beberapa keterbatasan untuk teknik serangan ini. Dari contoh di atas, penyerang menjalankan _sniffing_, mendapatkan nomor ID dan harus mampu membangun respon palsu lebih cepat daripada server DNS dapat menyediakan jawaban yang sah.
|
||||||
|
|
||||||
|
Sekian dulu untuk DNS Hijackingnya, sebenernya masih ada beberapa teknik untuk melakukan DNS Hijacking seperti DNS ID Spoofing (_without Sniffing_), _Birthday Attack_, _Page Rank Escalation_, dll seperti yang ada di [Pharming Attack Vectors Section 3](http://www.technicalinfo.net/papers/Pharming2.html) (cukup lengkap klo saya bilang).
|
||||||
|
|
||||||
Saya akan coba tambahin dan benerin kata2 yang masih belepotan di kesempatan lain.
|
Saya akan coba tambahin dan benerin kata2 yang masih belepotan di kesempatan lain.
|
||||||
|
|
||||||
|
@ -112,7 +116,6 @@ Source :
|
||||||
- paper dari situs **darkc0de.com**
|
- paper dari situs **darkc0de.com**
|
||||||
- [Sistem Penamaan Domain](https://web.archive.org/web/20110530065350/http://devilzc0de.org:80/forum/thread-7744.html) oleh **linuxer46** (Web Archive)
|
- [Sistem Penamaan Domain](https://web.archive.org/web/20110530065350/http://devilzc0de.org:80/forum/thread-7744.html) oleh **linuxer46** (Web Archive)
|
||||||
- **SET(harvester)+Dns Spoofing** (*dead link *URL: `http://devilzc0de.org:80/forum/thread-11128.html`) oleh **motaroirhaby**
|
- **SET(harvester)+Dns Spoofing** (*dead link *URL: `http://devilzc0de.org:80/forum/thread-11128.html`) oleh **motaroirhaby**
|
||||||
- **DNS spoofing di Local Network Tutorial** (*dead link* URL: `http://devilzc0de.org/forum/thread-2671.html`) oleh **wenkhairu**
|
- **DNS spoofing di Local Network Tutorial** (_dead link_ URL: `http://devilzc0de.org/forum/thread-2671.html`) oleh **wenkhairu**
|
||||||
- **DNS Cache Poisoning** (*dead link* URL: `http://devilzc0de.org/forum/thread-800.html`) oleh **oela**
|
- **DNS Cache Poisoning** (_dead link_ URL: `http://devilzc0de.org/forum/thread-800.html`) oleh **oela**
|
||||||
- [Bailiwicked DNS Attack (Cache Poisoning)](https://web.archive.org/web/20210921234941/http://ezine.echo.or.id/ezine19/e19.008.txt) oleh **Cyberheb** (Web Archive)
|
- [Bailiwicked DNS Attack (Cache Poisoning)](https://web.archive.org/web/20210921234941/http://ezine.echo.or.id/ezine19/e19.008.txt) oleh **Cyberheb** (Web Archive)
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
title: "Compile Nginx Latest Stable Version Dari Source Code"
|
title: "Compile Nginx Latest Stable Version Dari Source Code"
|
||||||
description: Bukan rahasia umum bahwa sampai saat ini web server yang paling banyak digunakan adalah Apache, tapi bagaimana dengan web server lain? Apakah tidak se-powerful Apache?
|
description: Bukan rahasia umum bahwa sampai saat ini web server yang paling banyak digunakan adalah Apache, tapi bagaimana dengan web server lain? Apakah tidak se-powerful Apache?
|
||||||
|
summary: Bukan rahasia umum bahwa sampai saat ini web server yang paling banyak digunakan adalah Apache, tapi bagaimana dengan web server lain? Apakah tidak se-powerful Apache?
|
||||||
# linkTitle:
|
# linkTitle:
|
||||||
date: 2011-08-25T18:00:31+07:00
|
date: 2011-08-25T18:00:31+07:00
|
||||||
lastmod:
|
lastmod:
|
||||||
|
@ -34,20 +35,15 @@ authors:
|
||||||
- ditatompel
|
- ditatompel
|
||||||
---
|
---
|
||||||
|
|
||||||
Bukan rahasia umum bahwa sampai saat ini web server yang paling banyak digunakan adalah **Apache**, tapi bagaimana dengan *web server* lain? Apakah tidak *se-powerful* Apache?
|
**Nginx**, sebuah _web server_ yang di-develop oleh **Igor Sysoev** pada tahun 2002 Menjadi sebuah alternatif baru pengganti **Apache**.
|
||||||
|
|
||||||
**Nginx**, sebuah *web server* yang di-develop oleh **Igor Sysoev** pada tahun 2002 Menjadi sebuah alternatif baru pengganti **Apache**.
|
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
> _**CATATAN**: Artikel ini dibuat di tahun 2011, jadi Anda perlu beradaptasi dalam mengikuti tutorial ini. Terelebih lagi, saat ini mayoritas distribusi Linux sudah banyak meninggalkan `sysVinit` beralih menggunakan `SystemD`._
|
> _**CATATAN**: Artikel ini dibuat di tahun 2011, jadi Anda perlu beradaptasi dalam mengikuti tutorial ini. Terelebih lagi, saat ini mayoritas distribusi Linux sudah banyak meninggalkan `sysVinit` beralih menggunakan `SystemD`._
|
||||||
|
|
||||||
|
Nginx (pengucapan **"Engine X"**) adalah _web server_ / _reverse proxy_ dan _e-mail_ (**IMAP**/**POP3**) _proxy_ yang ringan dengan kinerja tinggi , dilisensikan di bawah **lisensi BSD**. Berjalan pada **UNIX**, **GNU/Linux**, **Solaris**, **Varian BSD** seperti **Mac OS X**, dan **Microsoft Windows**.
|
||||||
Nginx (pengucapan **"Engine X"**) adalah *web server* / *reverse proxy* dan *e-mail* (**IMAP**/**POP3**) *proxy* yang ringan dengan kinerja tinggi , dilisensikan di bawah **lisensi BSD**. Berjalan pada **UNIX**, **GNU/Linux**, **Solaris**, **Varian BSD** seperti **Mac OS X**, dan **Microsoft Windows**.
|
|
||||||
|
|
||||||
## Kenapa Nginx?
|
## Kenapa Nginx?
|
||||||
|
|
||||||
1. **Kecepatan**: Cukup satu *core processor* untuk menangani ribuan koneksi, sehingga beban CPU dan konsumsi *memory* jauh lebih ringan.
|
1. **Kecepatan**: Cukup satu _core processor_ untuk menangani ribuan koneksi, sehingga beban CPU dan konsumsi _memory_ jauh lebih ringan.
|
||||||
|
|
||||||
2. **Mudah digunakan**: Konfigurasi file jauh lebih mudah dimengerti dan dimodifikasi daripada konfigurasi web server lainnya seperti Apache. Beberapa baris saja sudah cukup untuk menciptakan sebuah `virtual host` yang cukup lengkap.
|
2. **Mudah digunakan**: Konfigurasi file jauh lebih mudah dimengerti dan dimodifikasi daripada konfigurasi web server lainnya seperti Apache. Beberapa baris saja sudah cukup untuk menciptakan sebuah `virtual host` yang cukup lengkap.
|
||||||
|
|
||||||
|
@ -55,30 +51,34 @@ Nginx (pengucapan **"Engine X"**) adalah *web server* / *reverse proxy* dan *e-m
|
||||||
|
|
||||||
4. dan yang paling penting, **Open Source** (BSD-like license)
|
4. dan yang paling penting, **Open Source** (BSD-like license)
|
||||||
|
|
||||||
Beberapa contoh website besar yang menggunakan Nginx entah itu sebagai web server atau sebagai *reserve proxy* sebagai backend Apache antara lain : **kaskus.us**, **indowebster.com**, **wordpress.com**, **sourceforge.net**, **github.com**, dll.
|
Beberapa contoh website besar yang menggunakan Nginx entah itu sebagai web server atau sebagai _reserve proxy_ sebagai backend Apache antara lain : **kaskus.us**, **indowebster.com**, **wordpress.com**, **sourceforge.net**, **github.com**, dll.
|
||||||
|
|
||||||
## Latar Belakang Melakukan Kompilasi
|
## Latar Belakang Melakukan Kompilasi
|
||||||
Dalam proses instalasi web server, dibutuhkan beberapa *tools* dan parameter yang harus kita putuskan pada saat kompilasi, dan beberapa konfigurasi tambahan yang harus dilakukan dan disesuaikan dengan sistem kita.
|
|
||||||
|
|
||||||
Nah, kali ini kita memilih untuk *men-download* *source code* aplikasi dan menginstalnya secara manual daripada menginstal menggunakan *package manager*. Ada beberapa alasan kenapa orang memilih melakukan instalasi secara manual :
|
Dalam proses instalasi web server, dibutuhkan beberapa _tools_ dan parameter yang harus kita putuskan pada saat kompilasi, dan beberapa konfigurasi tambahan yang harus dilakukan dan disesuaikan dengan sistem kita.
|
||||||
|
|
||||||
1. Mengenal lebih jauh bagaimana sistem (terutama *web server*) yang kita gunakan itu bekerja.
|
Nah, kali ini kita memilih untuk _men-download_ _source code_ aplikasi dan menginstalnya secara manual daripada menginstal menggunakan _package manager_. Ada beberapa alasan kenapa orang memilih melakukan instalasi secara manual :
|
||||||
|
|
||||||
|
1. Mengenal lebih jauh bagaimana sistem (terutama _web server_) yang kita gunakan itu bekerja.
|
||||||
2. (Mungkin) belum tersedia dalam repositori dari distribusi Linux yang sedang digunakan.
|
2. (Mungkin) belum tersedia dalam repositori dari distribusi Linux yang sedang digunakan.
|
||||||
|
|
||||||
Disamping itu jarang repositori yang menawarkan untuk *men-download* dan menginstall Nginx menggunakan *package manager* (`yum`|`apt`|`yast`) untuk versi yang terbaru (kecuali pada distribusi *rolling-release* seperti **Arch Linux**). Kebanyakan menyediakan versi lama yang kurang *up-to-date* alias basi. x_x.
|
Disamping itu jarang repositori yang menawarkan untuk _men-download_ dan menginstall Nginx menggunakan _package manager_ (`yum`|`apt`|`yast`) untuk versi yang terbaru (kecuali pada distribusi _rolling-release_ seperti **Arch Linux**). Kebanyakan menyediakan versi lama yang kurang _up-to-date_ alias basi. x_x.
|
||||||
|
|
||||||
## Proses Kompilasi Nginx
|
## Proses Kompilasi Nginx
|
||||||
Berikut ini ada *capture screen video* yang sudah saya buat sebelumnya. Mungkin bisa membantu dalam proses installasi. (tidak perlu sama persis, yang penting tau proses dan cara kerja-nya)
|
|
||||||
|
Berikut ini ada _capture screen video_ yang sudah saya buat sebelumnya. Mungkin bisa membantu dalam proses installasi. (tidak perlu sama persis, yang penting tau proses dan cara kerja-nya)
|
||||||
|
|
||||||
{{< youtube AtJ5OBOj1gE >}}
|
{{< youtube AtJ5OBOj1gE >}}
|
||||||
|
|
||||||
### Download source-code
|
### Download source-code
|
||||||
|
|
||||||
Pertama, mari kita download web server kita dari [http://nginx.org/download/nginx-1.0.5.tar.gz](http://nginx.org/download/nginx-1.0.5.tar.gz) (saat saya menulis artikel ini versi stable terbarunya adalah `1.0.5`).
|
Pertama, mari kita download web server kita dari [http://nginx.org/download/nginx-1.0.5.tar.gz](http://nginx.org/download/nginx-1.0.5.tar.gz) (saat saya menulis artikel ini versi stable terbarunya adalah `1.0.5`).
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
wget http://nginx.org/download/nginx-1.0.5.tar.gz
|
wget http://nginx.org/download/nginx-1.0.5.tar.gz
|
||||||
```
|
```
|
||||||
setelah itu,*copy source* tersebut ke `/usr/local/src/` kemudian *extract*.
|
|
||||||
|
setelah itu,_copy source_ tersebut ke `/usr/local/src/` kemudian _extract_.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo cp nginx-1.0.5.tar.gz /usr/local/src/
|
sudo cp nginx-1.0.5.tar.gz /usr/local/src/
|
||||||
|
@ -87,49 +87,57 @@ sudo tar -xvzf nginx-1.0.5.tar.gz
|
||||||
```
|
```
|
||||||
|
|
||||||
**Catatan:**
|
**Catatan:**
|
||||||
1. Sebelum proses installasi, lebih baik cek apakah `port 80` sedang digunakan atau tidak. Saya menggunakan distro **BackTrack** dan secara default **Apache** menggunakan `port 80` pada saat *startup*. `/etc/init.d/apache2 stop` atau `killall apache2`.
|
|
||||||
2. Nginx adalah program yang dibuat menggunakan **bahasa C**, jadi untuk dapat menggunakannya pertama-tama kita harus punya *tools* seperti **GNU Compiler Collection (GCC)** pada komputer kita. **GCC** biasanya sudah terinstall pada kebanyakan Linux distro.
|
|
||||||
|
|
||||||
Untuk memastikannya, jalankan saja perintah "`gcc`" (tanpa quote) melalui terminal. Jika anda mendapatkan *output* *"gcc: no input files"* berarti GCC sudah terinstall pada komputer anda. Jika tidak, anda perlu menginstallnya terlebih dahulu.
|
1. Sebelum proses installasi, lebih baik cek apakah `port 80` sedang digunakan atau tidak. Saya menggunakan distro **BackTrack** dan secara default **Apache** menggunakan `port 80` pada saat _startup_. `/etc/init.d/apache2 stop` atau `killall apache2`.
|
||||||
|
2. Nginx adalah program yang dibuat menggunakan **bahasa C**, jadi untuk dapat menggunakannya pertama-tama kita harus punya _tools_ seperti **GNU Compiler Collection (GCC)** pada komputer kita. **GCC** biasanya sudah terinstall pada kebanyakan Linux distro.
|
||||||
|
|
||||||
|
Untuk memastikannya, jalankan saja perintah "`gcc`" (tanpa quote) melalui terminal. Jika anda mendapatkan _output_ _"gcc: no input files"_ berarti GCC sudah terinstall pada komputer anda. Jika tidak, anda perlu menginstallnya terlebih dahulu.
|
||||||
|
|
||||||
Oke, lanjott..
|
Oke, lanjott..
|
||||||
|
|
||||||
### ./configure dan make install
|
### ./configure dan make install
|
||||||
|
|
||||||
masuk ke folder `nginx-1.0.5` pada direktori `/usr/local/src/` dan mulai lakukan kompilasi.
|
masuk ke folder `nginx-1.0.5` pada direktori `/usr/local/src/` dan mulai lakukan kompilasi.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd nginx-1.0.5
|
cd nginx-1.0.5
|
||||||
./configure
|
./configure
|
||||||
```
|
```
|
||||||
|
|
||||||
Secara default, **HTTP rewrite module** onomatis ikut terinstall saat instalasi default Nginx. Module ini memerlukan **PCRE (Perl Compatible Regular Expression) library** karena **Rewrite** dan **HTTP Core modules** dari Nginx menggunakan PCRE sebagai syntax *regular expression* mereka.
|
Secara default, **HTTP rewrite module** onomatis ikut terinstall saat instalasi default Nginx. Module ini memerlukan **PCRE (Perl Compatible Regular Expression) library** karena **Rewrite** dan **HTTP Core modules** dari Nginx menggunakan PCRE sebagai syntax _regular expression_ mereka.
|
||||||
|
|
||||||
Sekarang tergantung pilihan kita, jika kita :
|
Sekarang tergantung pilihan kita, jika kita :
|
||||||
|
|
||||||
1. membutuhkan *rewrite module*, kita harus install PCRE terlebih dahulu:
|
1. membutuhkan _rewrite module_, kita harus install PCRE terlebih dahulu:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
apt-get install libpcre3 libpcre3-dev
|
apt-get install libpcre3 libpcre3-dev
|
||||||
```
|
```
|
||||||
|
|
||||||
2. jika kita tidak membutuhkannya :
|
2. jika kita tidak membutuhkannya :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./configure --without-http_rewrite_module
|
./configure --without-http_rewrite_module
|
||||||
```
|
```
|
||||||
Pilihan kita jatuh pada opsi pertama karena nantinya kebanyakan situs yang digunakan sangat membutuhkan *rewrite module* tersebut. Maka setelah melakukan instalasi PCRE, kita harus melakukan konfigurasi kembali.
|
|
||||||
|
Pilihan kita jatuh pada opsi pertama karena nantinya kebanyakan situs yang digunakan sangat membutuhkan _rewrite module_ tersebut. Maka setelah melakukan instalasi PCRE, kita harus melakukan konfigurasi kembali.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./configure
|
./configure
|
||||||
```
|
```
|
||||||
|
|
||||||
lakukan proses installasi :
|
lakukan proses installasi :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make && make install
|
make && make install
|
||||||
```
|
```
|
||||||
proses instalasi default yang kita lakukan di atas akan menempatkan *"ruang kerja"* Nginx pada direktori `/usr/local/nginx`
|
|
||||||
|
proses instalasi default yang kita lakukan di atas akan menempatkan _"ruang kerja"_ Nginx pada direktori `/usr/local/nginx`
|
||||||
|
|
||||||
### Membuat SysVinit untuk Nginx
|
### Membuat SysVinit untuk Nginx
|
||||||
|
|
||||||
buat file dengan nama `nginx` pada direktori `/etc/init.d`
|
buat file dengan nama `nginx` pada direktori `/etc/init.d`
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
nano /etc/init.d/nginx
|
nano /etc/init.d/nginx
|
||||||
```
|
```
|
||||||
|
@ -199,19 +207,19 @@ esac
|
||||||
exit 0
|
exit 0
|
||||||
```
|
```
|
||||||
|
|
||||||
`chmod +x` supaya *script* dapat dieksekusi
|
`chmod +x` supaya _script_ dapat dieksekusi
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
chmod +x /etc/init.d/nginx
|
chmod +x /etc/init.d/nginx
|
||||||
```
|
```
|
||||||
|
|
||||||
Setelah ini, maka kita dapat melakukan **start**, **stop**, **restart** atau **reload** proses Nginx melalui *script* tersebut. Mari kita coba jalankan Nginx:
|
Setelah ini, maka kita dapat melakukan **start**, **stop**, **restart** atau **reload** proses Nginx melalui _script_ tersebut. Mari kita coba jalankan Nginx:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
/etc/init.d/nginx start
|
/etc/init.d/nginx start
|
||||||
```
|
```
|
||||||
|
|
||||||
Maka seharusnya kita mendapatkan pesan sambutan *"welcome to nginx!"* saat mengakses `localhost` dari brwoser Anda.
|
Maka seharusnya kita mendapatkan pesan sambutan _"welcome to nginx!"_ saat mengakses `localhost` dari brwoser Anda.
|
||||||
|
|
||||||
## Instalasi dan konfigurasi PHP FAST CGI (spawn-fcgi) dengan Nginx
|
## Instalasi dan konfigurasi PHP FAST CGI (spawn-fcgi) dengan Nginx
|
||||||
|
|
||||||
|
@ -221,13 +229,13 @@ Download PHP `spawn-fcgi`
|
||||||
apt-get install php5-cgi spawn-fcgi
|
apt-get install php5-cgi spawn-fcgi
|
||||||
```
|
```
|
||||||
|
|
||||||
Setelah proses installasi melalui *package manager* selesai, buat file bernama `php-fastcgi` pada direktori `/etc/init.d`
|
Setelah proses installasi melalui _package manager_ selesai, buat file bernama `php-fastcgi` pada direktori `/etc/init.d`
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
nano /etc/init.d/php-fastcgi
|
nano /etc/init.d/php-fastcgi
|
||||||
```
|
```
|
||||||
|
|
||||||
Copy paste *shell init script* di bawah ini.
|
Copy paste _shell init script_ di bawah ini.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
@ -273,7 +281,7 @@ esac
|
||||||
exit $RETVAL
|
exit $RETVAL
|
||||||
```
|
```
|
||||||
|
|
||||||
jangan lupa `chmod +x` supaya *script* dapat dieksekusi
|
jangan lupa `chmod +x` supaya _script_ dapat dieksekusi
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
chmod +x /etc/init.d/php-fastcgi
|
chmod +x /etc/init.d/php-fastcgi
|
||||||
|
@ -297,7 +305,7 @@ kemudian edit konfigurasi Nginx agar sesuai dengan struktur website yang sedang
|
||||||
nano /usr/local/nginx/conf/nginx.conf
|
nano /usr/local/nginx/conf/nginx.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
Karena *root public html* kita berada di `/var/www/nginx` maka konfigurasi sebagai berikut :
|
Karena _root public html_ kita berada di `/var/www/nginx` maka konfigurasi sebagai berikut :
|
||||||
|
|
||||||
```nginx
|
```nginx
|
||||||
#user nobody;
|
#user nobody;
|
||||||
|
@ -442,14 +450,13 @@ Dari situ kita dapat menentukan apakah nNginx sudah dapat berjalan dan melakukan
|
||||||
|
|
||||||
Layaknya sebuah aplikasi, pasti tidak akan lepas dari yang namanya bugs. Begitu juga dengan Nginx.
|
Layaknya sebuah aplikasi, pasti tidak akan lepas dari yang namanya bugs. Begitu juga dengan Nginx.
|
||||||
|
|
||||||
### Nginx “*no input file specified”* PHP fast-cgi 0day Exploit
|
### Nginx “_no input file specified”_ PHP fast-cgi 0day Exploit
|
||||||
|
|
||||||
|
|
||||||
Setelah Nginx dan PHP CGI berjalan, cobalah test mengakses http://localhost/terserah.php
|
Setelah Nginx dan PHP CGI berjalan, cobalah test mengakses http://localhost/terserah.php
|
||||||
|
|
||||||
Jika browser menunjukan *“no input file specified”*, konfigurasi kita masih rentan dan belum layak dipakai.
|
Jika browser menunjukan _“no input file specified”_, konfigurasi kita masih rentan dan belum layak dipakai.
|
||||||
|
|
||||||
**Exploit** : Buat file `apaaja.gif` menggunakan **GIMP**. Pada kotak komentar isi dengan *script PHP* `<?php phpinfo(); ?>` dan letakan pada direktori nginx server root (jika dalam artikel kali ini `/var/www/nginx/apaaja.gif`).
|
**Exploit** : Buat file `apaaja.gif` menggunakan **GIMP**. Pada kotak komentar isi dengan _script PHP_ `<?php phpinfo(); ?>` dan letakan pada direktori nginx server root (jika dalam artikel kali ini `/var/www/nginx/apaaja.gif`).
|
||||||
|
|
||||||
![Nginx 0day](nginx-0day.png#center)
|
![Nginx 0day](nginx-0day.png#center)
|
||||||
|
|
||||||
|
@ -457,15 +464,15 @@ Secara normal, jika kita akses dari browser `http://localhost/apaaja.gif` akan n
|
||||||
|
|
||||||
![Nginx 0day Exploit](nginx-0day-exploit.png#center)
|
![Nginx 0day Exploit](nginx-0day-exploit.png#center)
|
||||||
|
|
||||||
File `.gif` tersebut dieksekusi sebagai file PHP (ingat *comment* pada file `.gif` `<?php phpinfo(); ?>`).
|
File `.gif` tersebut dieksekusi sebagai file PHP (ingat _comment_ pada file `.gif` `<?php phpinfo(); ?>`).
|
||||||
|
|
||||||
Tentu saja `http://localhost/apaaja.gif/terserah.php` sebenarnya tidak ada. Tapi tiap request yang diakhiri dengan `.php` akan **DIEKSEKUSI** sebagai script PHP oleh Nginx melalui fitur `cgi.fix_pathinfo` sehingga Nginx mengeksekusi file `.gif` tersebut sebagai script PHP!
|
Tentu saja `http://localhost/apaaja.gif/terserah.php` sebenarnya tidak ada. Tapi tiap request yang diakhiri dengan `.php` akan **DIEKSEKUSI** sebagai script PHP oleh Nginx melalui fitur `cgi.fix_pathinfo` sehingga Nginx mengeksekusi file `.gif` tersebut sebagai script PHP!
|
||||||
|
|
||||||
Cara mengatasi :
|
Cara mengatasi :
|
||||||
|
|
||||||
1. Ubah `cgi.fix_pathinfo=1` menjadi `cgi.fix_pathinfo=0` pada `php.ini`
|
1. Ubah `cgi.fix_pathinfo=1` menjadi `cgi.fix_pathinfo=0` pada `php.ini`
|
||||||
|
|
||||||
2. Edit `/usr/local/nginx/conf/nginx.conf` dan tambahkan sctipt berikut di antara *block* `server { }`
|
2. Edit `/usr/local/nginx/conf/nginx.conf` dan tambahkan sctipt berikut di antara _block_ `server { }`
|
||||||
|
|
||||||
```nginx
|
```nginx
|
||||||
error_page 400 402 403 404 /40x.html;
|
error_page 400 402 403 404 /40x.html;
|
||||||
|
@ -478,76 +485,77 @@ error_page 400 402 403 404 /40x.html;
|
||||||
|
|
||||||
### Nginx Configure Module options
|
### Nginx Configure Module options
|
||||||
|
|
||||||
Saat proses konfigurasi, beberapa *module* akan aktif secara default, dan beberapa *module* perlu diaktifkan secara manual.
|
Saat proses konfigurasi, beberapa _module_ akan aktif secara default, dan beberapa _module_ perlu diaktifkan secara manual.
|
||||||
|
|
||||||
#### Otomatis aktif
|
#### Otomatis aktif
|
||||||
Berikut ini *module-module* yang **otomatis aktif** saat command `./configure` dijalankan, tambahkan perintah-perintah di bawah untuk *me-disable* module tersebut:
|
|
||||||
|
|
||||||
`--without-http_charset_module`: Menonaktifkan *module* *Charset* untuk *re-encoding* halaman web.
|
Berikut ini _module-module_ yang **otomatis aktif** saat command `./configure` dijalankan, tambahkan perintah-perintah di bawah untuk _me-disable_ module tersebut:
|
||||||
|
|
||||||
`--without-http_gzip_module`: Menonaktifkan *module* kompresi **Gzip**.
|
`--without-http_charset_module`: Menonaktifkan _module_ _Charset_ untuk _re-encoding_ halaman web.
|
||||||
|
|
||||||
|
`--without-http_gzip_module`: Menonaktifkan _module_ kompresi **Gzip**.
|
||||||
|
|
||||||
`--without-http_ssi_module`: Menonaktifkan **Server Side Include module**.
|
`--without-http_ssi_module`: Menonaktifkan **Server Side Include module**.
|
||||||
|
|
||||||
`--without-http_userid_module`: Menonaktifkan *User ID module* yang menyediakan identifikasi pengguna menggunakan cookies.
|
`--without-http_userid_module`: Menonaktifkan _User ID module_ yang menyediakan identifikasi pengguna menggunakan cookies.
|
||||||
|
|
||||||
`--without-http_access_module`: Menonaktifkan *module* pembatasan akses yang memungkinkan kita untuk konfigurasi akses untuk **IP range** tertentu. misal : `deny 192.168.1.1/24`.
|
`--without-http_access_module`: Menonaktifkan _module_ pembatasan akses yang memungkinkan kita untuk konfigurasi akses untuk **IP range** tertentu. misal : `deny 192.168.1.1/24`.
|
||||||
|
|
||||||
`--without-http_auth_basic_module`: Menonaktifkan **Basic Authentication module**. (seperti **Auth Basic Apache**)
|
`--without-http_auth_basic_module`: Menonaktifkan **Basic Authentication module**. (seperti **Auth Basic Apache**)
|
||||||
|
|
||||||
`--without-http_autoindex_module`: Menonaktifkan **Automatic Index module**.
|
`--without-http_autoindex_module`: Menonaktifkan **Automatic Index module**.
|
||||||
|
|
||||||
`--without-http_geo_module`: Menonaktifkan *module* yang memungkinkan kita untuk mendefinisikan *variabel* menurut **IP range** tertentu.
|
`--without-http_geo_module`: Menonaktifkan _module_ yang memungkinkan kita untuk mendefinisikan _variabel_ menurut **IP range** tertentu.
|
||||||
|
|
||||||
`--without-http_map_module`: Module ini memungkinkan kita untuk mengklasifikasikan suatu nilai menjadi nilai yang berbeda, menyimpan hasilnya dalam bentuk *variabel*.
|
`--without-http_map_module`: Module ini memungkinkan kita untuk mengklasifikasikan suatu nilai menjadi nilai yang berbeda, menyimpan hasilnya dalam bentuk _variabel_.
|
||||||
|
|
||||||
`--without-http_referer_module`: Module ini memungkinkan untuk memblokir akses berdasarkan *header* `http referer`.
|
`--without-http_referer_module`: Module ini memungkinkan untuk memblokir akses berdasarkan _header_ `http referer`.
|
||||||
|
|
||||||
`--without-http_rewrite_module`: Menonaktifkan module **Rewrite**.
|
`--without-http_rewrite_module`: Menonaktifkan module **Rewrite**.
|
||||||
|
|
||||||
`--without-http_proxy_module`: Menonaktifkan **module HTTP proxy** untuk request transfer ke server lain (*reverse proxy*).
|
`--without-http_proxy_module`: Menonaktifkan **module HTTP proxy** untuk request transfer ke server lain (_reverse proxy_).
|
||||||
|
|
||||||
`--without-http_fastcgi_module`: Menonaktifkan *module* untuk interaksi dengan proses **FastCGI**.
|
`--without-http_fastcgi_module`: Menonaktifkan _module_ untuk interaksi dengan proses **FastCGI**.
|
||||||
|
|
||||||
`--without-http_memcached_module`: Menonaktifkan *module* untuk interaksi dengan daemon *memcache*.
|
`--without-http_memcached_module`: Menonaktifkan _module_ untuk interaksi dengan daemon _memcache_.
|
||||||
|
|
||||||
`--without-http_limit_zone_module`: Module ini memungkinkan untuk membatasi jumlah koneksi untuk alamat / direktori tertentu.
|
`--without-http_limit_zone_module`: Module ini memungkinkan untuk membatasi jumlah koneksi untuk alamat / direktori tertentu.
|
||||||
|
|
||||||
`--without-http_limit_req_module`: Menonaktifkan **module limit request** yang memungkinkan kita untuk membatasi jumlah *request per user*.
|
`--without-http_limit_req_module`: Menonaktifkan **module limit request** yang memungkinkan kita untuk membatasi jumlah _request per user_.
|
||||||
|
|
||||||
`--without-http_empty_gif_module`: Menampilkan gambar `.gif` transparan berukuran 1px x 1px. (sangat berguna untuk web designer)
|
`--without-http_empty_gif_module`: Menampilkan gambar `.gif` transparan berukuran 1px x 1px. (sangat berguna untuk web designer)
|
||||||
|
|
||||||
`--without-http_browser_module`: Menonaktifkan module yang menungkinkan kita untuk membaca *string* **User Agent**.
|
`--without-http_browser_module`: Menonaktifkan module yang menungkinkan kita untuk membaca _string_ **User Agent**.
|
||||||
|
|
||||||
`--without-http_upstream_ip_hash_module`: Menonaktifkan **module IP-hash** untuk load-balancing ke *upstream* server.
|
`--without-http_upstream_ip_hash_module`: Menonaktifkan **module IP-hash** untuk load-balancing ke _upstream_ server.
|
||||||
|
|
||||||
#### Tidak otomatis aktif
|
#### Tidak otomatis aktif
|
||||||
|
|
||||||
Berikut ini module-module yang tidak aktif saat command `./configure` dijalankan, tambahkan perintah-perintah di bawah untuk *me-enable module* tersebut:
|
Berikut ini module-module yang tidak aktif saat command `./configure` dijalankan, tambahkan perintah-perintah di bawah untuk _me-enable module_ tersebut:
|
||||||
|
|
||||||
`--with-http_ssl_module`: Mengaktifkan **module SSL** untuk website menggunakan protokol `https://`.
|
`--with-http_ssl_module`: Mengaktifkan **module SSL** untuk website menggunakan protokol `https://`.
|
||||||
|
|
||||||
`--with-http_realip_module`: Mengaktifkan *module* untuk membaca alamat IP yang sebenarnya dari sebuah request (biasanya didapat dari **HTTP header** *trusted proxy*).
|
`--with-http_realip_module`: Mengaktifkan _module_ untuk membaca alamat IP yang sebenarnya dari sebuah request (biasanya didapat dari **HTTP header** _trusted proxy_).
|
||||||
|
|
||||||
`--with-http_addition_module`: Mengaktifkan *module* yang memungkinkan kita menambahkan data ke halaman website.
|
`--with-http_addition_module`: Mengaktifkan _module_ yang memungkinkan kita menambahkan data ke halaman website.
|
||||||
|
|
||||||
`--with-http_xslt_module`: Mengaktifkan *module* untuk transformasi XSL ke XML. Catatan: Perlu menginstal `libxml2` dan `libxslt` *library*.
|
`--with-http_xslt_module`: Mengaktifkan _module_ untuk transformasi XSL ke XML. Catatan: Perlu menginstal `libxml2` dan `libxslt` _library_.
|
||||||
|
|
||||||
`--with-http_image_filter_module`: Mengaktifkan *module* yang memungkinkan kita untuk modifikasi gambar. Catatan: Perlu menginstal `libgd` *library* untuk *module* ini.
|
`--with-http_image_filter_module`: Mengaktifkan _module_ yang memungkinkan kita untuk modifikasi gambar. Catatan: Perlu menginstal `libgd` _library_ untuk _module_ ini.
|
||||||
|
|
||||||
`--with-http_sub_module`: Mengaktifkan *module* untuk melakukan *replace* teks dalam halaman web.
|
`--with-http_sub_module`: Mengaktifkan _module_ untuk melakukan _replace_ teks dalam halaman web.
|
||||||
|
|
||||||
`--with-http_dav_module`: Mengaktifkan fitur **WebDAV**
|
`--with-http_dav_module`: Mengaktifkan fitur **WebDAV**
|
||||||
|
|
||||||
`--with-http_flv_module`: Mengaktifkan *module* khusus untuk *meng-handle* *flash video file* (`.flv`).
|
`--with-http_flv_module`: Mengaktifkan _module_ khusus untuk _meng-handle_ _flash video file_ (`.flv`).
|
||||||
|
|
||||||
`--with-http_gzip_static_module`: Mengaktifkan **module GZIP static compression**.
|
`--with-http_gzip_static_module`: Mengaktifkan **module GZIP static compression**.
|
||||||
|
|
||||||
`--with-http_random_index_module`: Mengaktifkan *module* untuk memilih file secara acak sebagai *index file* pada suatu direktori.
|
`--with-http_random_index_module`: Mengaktifkan _module_ untuk memilih file secara acak sebagai _index file_ pada suatu direktori.
|
||||||
|
|
||||||
`--with-http_secure_link_module`: Mengaktifkan *module* untuk memeriksa request URL dengan *security token* yang dibutuhkan. (Mantap juga buat antisipasi **CSRF**)
|
`--with-http_secure_link_module`: Mengaktifkan _module_ untuk memeriksa request URL dengan _security token_ yang dibutuhkan. (Mantap juga buat antisipasi **CSRF**)
|
||||||
|
|
||||||
`--with-http_stub_status_module`: Mengaktifkan *module* yang *menggenerate* server statistik dan informasi proses web server.
|
`--with-http_stub_status_module`: Mengaktifkan _module_ yang _menggenerate_ server statistik dan informasi proses web server.
|
||||||
|
|
||||||
#### Miscellaneous options
|
#### Miscellaneous options
|
||||||
|
|
||||||
|
@ -559,9 +567,9 @@ Menambahkan third-party module yang bisa di download dari internet. Misal dari [
|
||||||
--add-module=/folder/ke/module/tambahan
|
--add-module=/folder/ke/module/tambahan
|
||||||
```
|
```
|
||||||
|
|
||||||
Seperti yang kita lihat, perintah yang cukup mudah untuk konfigurasi sebuah web server. Pada umunya kita hanya perlu untuk menambahkan **module SSL** untuk konten **HTTPS**, dan **"Real IP"** untuk mengambil alamat IP pengunjung jika menggunakan *proxy* atau kita menjalankan **Nginx** sebagai *backend server* dengan web server lain.
|
Seperti yang kita lihat, perintah yang cukup mudah untuk konfigurasi sebuah web server. Pada umunya kita hanya perlu untuk menambahkan **module SSL** untuk konten **HTTPS**, dan **"Real IP"** untuk mengambil alamat IP pengunjung jika menggunakan _proxy_ atau kita menjalankan **Nginx** sebagai _backend server_ dengan web server lain.
|
||||||
|
|
||||||
Contoh untuk konfigurasi dengan semua *module* :
|
Contoh untuk konfigurasi dengan semua _module_ :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./configure --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module
|
./configure --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module
|
||||||
|
@ -569,6 +577,7 @@ Contoh untuk konfigurasi dengan semua *module* :
|
||||||
|
|
||||||
Untuk referensi bahan bacaan :
|
Untuk referensi bahan bacaan :
|
||||||
|
|
||||||
* [http://wiki.nginx.org/](http://wiki.nginx.org/)
|
- [http://wiki.nginx.org/](http://wiki.nginx.org/)
|
||||||
* [http://markmail.org/browse/ru.sysoev.nginx](http://markmail.org/browse/ru.sysoev.nginx)
|
- [http://markmail.org/browse/ru.sysoev.nginx](http://markmail.org/browse/ru.sysoev.nginx)
|
||||||
* [http://www.joeandmotorboat.com/2008/02/28/apache-vs-nginx-web-server-performance-deathmatch/](http://www.joeandmotorboat.com/2008/02/28/apache-vs-nginx-web-server-performance-deathmatch/)
|
- [http://www.joeandmotorboat.com/2008/02/28/apache-vs-nginx-web-server-performance-deathmatch/](http://www.joeandmotorboat.com/2008/02/28/apache-vs-nginx-web-server-performance-deathmatch/)
|
||||||
|
|
||||||
|
|
|
@ -37,8 +37,6 @@ authors:
|
||||||
|
|
||||||
Kali ini saya ingin berbagi tips untuk meningkatkan keamanan server dengan menggunakan teknik **port knocking**. **Port knocking** adalah sebuah cara untuk membuka _port_ tertentu dengan cara mengirimkan paket ke sedetetan port-port tertentu yang telah ditentukan sebelumnya.
|
Kali ini saya ingin berbagi tips untuk meningkatkan keamanan server dengan menggunakan teknik **port knocking**. **Port knocking** adalah sebuah cara untuk membuka _port_ tertentu dengan cara mengirimkan paket ke sedetetan port-port tertentu yang telah ditentukan sebelumnya.
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
> _**Q** : Tujuannya untuk apa?_
|
> _**Q** : Tujuannya untuk apa?_
|
||||||
|
|
||||||
**A** : Tujuannya untuk menghindari serangan dari _pentester_ yang melakukan _scanning port_ untuk mendapatkan _service-service_ yang mungkin bisa diexploitasi oleh mereka. Karena jika _pentester_ yang melakukan _scanning_ tersebut tidak mengetuk _port_ yang telah ditentukan sebelumnya secara berurutan, maka _port_ yang ingin kita lindungi tersebut tidak akan terbuka.
|
**A** : Tujuannya untuk menghindari serangan dari _pentester_ yang melakukan _scanning port_ untuk mendapatkan _service-service_ yang mungkin bisa diexploitasi oleh mereka. Karena jika _pentester_ yang melakukan _scanning_ tersebut tidak mengetuk _port_ yang telah ditentukan sebelumnya secara berurutan, maka _port_ yang ingin kita lindungi tersebut tidak akan terbuka.
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
title: "Generate Custom Wordlist Dari Situs Target, My Own Brute Way"
|
title: "Generate Custom Wordlist Dari Situs Target, My Own Brute Way"
|
||||||
description: Kadang seorang administrator menggunakan password dengan kata dari website mereka. entah itu dari nama perusahaan, organisasi atau nama produk unggulan mereka. Berikut ini tutorial cara untuk men-download website dan mengubahnya menjadi sebuah wordlist.
|
description: Tutorial cara untuk men-download website dan mengubahnya menjadi sebuah wordlist.
|
||||||
|
summary: Tutorial cara untuk men-download website dan mengubahnya menjadi sebuah wordlist.
|
||||||
# linkTitle:
|
# linkTitle:
|
||||||
date: 2011-10-01T22:36:55+07:00
|
date: 2011-10-01T22:36:55+07:00
|
||||||
lastmod:
|
lastmod:
|
||||||
|
@ -8,10 +9,6 @@ draft: false
|
||||||
noindex: false
|
noindex: false
|
||||||
# comments: false
|
# comments: false
|
||||||
nav_weight: 1000
|
nav_weight: 1000
|
||||||
# nav_icon:
|
|
||||||
# vendor: bootstrap
|
|
||||||
# name: toggles
|
|
||||||
# color: '#e24d0e'
|
|
||||||
series:
|
series:
|
||||||
# - Tutorial
|
# - Tutorial
|
||||||
categories:
|
categories:
|
||||||
|
@ -22,23 +19,15 @@ tags:
|
||||||
- Wyd
|
- Wyd
|
||||||
- BackTrack
|
- BackTrack
|
||||||
images:
|
images:
|
||||||
# menu:
|
- https://edge.ditatompel.com/assets/img/site-contents/generate-custom-wordlist/feature-my-own-brute-way.jpeg
|
||||||
# main:
|
|
||||||
# weight: 100
|
|
||||||
# params:
|
|
||||||
# icon:
|
|
||||||
# vendor: bs
|
|
||||||
# name: book
|
|
||||||
# color: '#e24d0e'
|
|
||||||
authors:
|
authors:
|
||||||
- ditatompel
|
- ditatompel
|
||||||
---
|
---
|
||||||
|
|
||||||
Kadang seorang Sistem Administrator menggunakan password dengan kata dari website mereka. entah itu dari nama perusahaan, organisasi atau nama produk unggulan mereka. Berikut ini tutorial cara untuk *men-download* website dan mengubahnya menjadi sebuah *wordlist*.
|
Kadang seorang Sistem Administrator menggunakan password dengan kata dari website mereka. entah itu dari nama perusahaan, organisasi atau nama produk unggulan mereka. Berikut ini tutorial cara untuk _men-download_ website dan mengubahnya menjadi sebuah _wordlist_.
|
||||||
|
|
||||||
<!--more-->
|
_Tools_ yang diperlukan:
|
||||||
|
|
||||||
*Tools* yang diperlukan:
|
|
||||||
1. [Wyd](http://packetstormsecurity.org/files/51130/wyd.tar.gz.html)
|
1. [Wyd](http://packetstormsecurity.org/files/51130/wyd.tar.gz.html)
|
||||||
2. [Hydra](http://thc.org/thc-hydra/)
|
2. [Hydra](http://thc.org/thc-hydra/)
|
||||||
3. [Cupp](http://ls-la.ditatompel.crayoncreative.net/linux/cupp-3.0.tar.gz)
|
3. [Cupp](http://ls-la.ditatompel.crayoncreative.net/linux/cupp-3.0.tar.gz)
|
||||||
|
@ -46,14 +35,19 @@ Kadang seorang Sistem Administrator menggunakan password dengan kata dari websit
|
||||||
Untuk para pengguna **BackTrack**, tidak perlu repot menginstall semua tools tersebut. Untuk Distro lain, bisa mengikuti langkah-langkah berikut.
|
Untuk para pengguna **BackTrack**, tidak perlu repot menginstall semua tools tersebut. Untuk Distro lain, bisa mengikuti langkah-langkah berikut.
|
||||||
|
|
||||||
## Download semua konten situs
|
## Download semua konten situs
|
||||||
|
|
||||||
Pertama kita buat dulu direktori kerja
|
Pertama kita buat dulu direktori kerja
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
mkdir ~/custom-wl; cd ~/custom-wl
|
mkdir ~/custom-wl; cd ~/custom-wl
|
||||||
```
|
```
|
||||||
|
|
||||||
Download semua isi konten website target dengan wget sampai selesai, misal situs target kita adalah `http://ditatompel.crayoncreative.net`:
|
Download semua isi konten website target dengan wget sampai selesai, misal situs target kita adalah `http://ditatompel.crayoncreative.net`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
wget -r http://ditatompel.crayoncreative.net
|
wget -r http://ditatompel.crayoncreative.net
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```
|
||||||
<blah blah blah . . . . .>
|
<blah blah blah . . . . .>
|
||||||
FINISHED --2011-10-01 12:55:41--
|
FINISHED --2011-10-01 12:55:41--
|
||||||
|
@ -63,6 +57,7 @@ Downloaded: 602 files, 19M in 6m 21s (51.2 KB/s)
|
||||||
File2 tersebut akan disimpan di direktori `~/custom-wl/[domain-situs]` atau dalam tutorial kali ini `~/custom-wl/ditatompel.crayoncreative.net`.
|
File2 tersebut akan disimpan di direktori `~/custom-wl/[domain-situs]` atau dalam tutorial kali ini `~/custom-wl/ditatompel.crayoncreative.net`.
|
||||||
|
|
||||||
## Menggunakan wyd.pl
|
## Menggunakan wyd.pl
|
||||||
|
|
||||||
Kemudian ambil dan siapkan senjata perang utama kita : `wyd.pl` ( Pengguna **BackTrack** tidak perlu download karena sudah ada di `/pentest/password`).
|
Kemudian ambil dan siapkan senjata perang utama kita : `wyd.pl` ( Pengguna **BackTrack** tidak perlu download karena sudah ada di `/pentest/password`).
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -72,7 +67,7 @@ cd wyd
|
||||||
perl wyd.pl -n -o ~/custom-wl/wordlist-mentah.txt ~/custom-wl/ditatompel.crayoncreative.net
|
perl wyd.pl -n -o ~/custom-wl/wordlist-mentah.txt ~/custom-wl/ditatompel.crayoncreative.net
|
||||||
```
|
```
|
||||||
|
|
||||||
![Custom Wordlist 1](custom-wordlist1.jpg#center)
|
![Custom Wordlist 1](https://edge.ditatompel.com/assets/img/site-contents/generate-custom-wordlist/custom-wordlist1.jpg#center)
|
||||||
|
|
||||||
Nah, kita punya file berisi kata-kata dari situs target, dan senjata utama juga sudah beraksi. Tapi masih ada yang kurang nih bro..
|
Nah, kita punya file berisi kata-kata dari situs target, dan senjata utama juga sudah beraksi. Tapi masih ada yang kurang nih bro..
|
||||||
|
|
||||||
|
@ -80,16 +75,18 @@ Nah, kita punya file berisi kata-kata dari situs target, dan senjata utama juga
|
||||||
less ~/custom-wl/wordlist-mentah.txt
|
less ~/custom-wl/wordlist-mentah.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
kata-kata yang digenerate sama `wyd.pl` tadi masih banyak yang kembar. Kita rapikan dulu dengan menggunakan perintah `uniq` supaya nantinya kita tidak mengorbankan *memory usage*.
|
kata-kata yang digenerate sama `wyd.pl` tadi masih banyak yang kembar. Kita rapikan dulu dengan menggunakan perintah `uniq` supaya nantinya kita tidak mengorbankan _memory usage_.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cat ~/custom-wl/wordlist-mentah.txt | uniq > ~/custom-wl/wordlist-setengah-matang.txt
|
cat ~/custom-wl/wordlist-mentah.txt | uniq > ~/custom-wl/wordlist-setengah-matang.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
## Install Hydra, `pw-inspector`
|
## Install Hydra, `pw-inspector`
|
||||||
|
|
||||||
Oke, sekarang *wordlist* kita sudah agak rapi. Kita pilihin lagi nih bro supaya *script2* tanpa spasi seperti `jquery.min.js` ga ikut masuk ke dalam *wordlist*. Caranya kita buang *wordlist* yang hurufnya kurang dari 5 dan lebih dari 30 (karena jarang orang punya password lebih dari 30 karakter) menggunakan alat `pw-inspector` (didapat dari fiturnya **Hydra**, jadi klo yang belum punya **Hydra** download dan install dulu).
|
Oke, sekarang _wordlist_ kita sudah agak rapi. Kita pilihin lagi nih bro supaya _script2_ tanpa spasi seperti `jquery.min.js` ga ikut masuk ke dalam _wordlist_. Caranya kita buang _wordlist_ yang hurufnya kurang dari 5 dan lebih dari 30 (karena jarang orang punya password lebih dari 30 karakter) menggunakan alat `pw-inspector` (didapat dari fiturnya **Hydra**, jadi klo yang belum punya **Hydra** download dan install dulu).
|
||||||
|
|
||||||
Install Hydra :
|
Install Hydra :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
wget http://www.thc.org/releases/hydra-7.0-src.tar.gz -O /usr/local/src/hydra-7.0-src.tar.gz
|
wget http://www.thc.org/releases/hydra-7.0-src.tar.gz -O /usr/local/src/hydra-7.0-src.tar.gz
|
||||||
cd /usr/local/src/; tar -xvzf hydra-7.0-src.tar.gz
|
cd /usr/local/src/; tar -xvzf hydra-7.0-src.tar.gz
|
||||||
|
@ -97,16 +94,19 @@ cd hydra-7.0-src
|
||||||
./configure
|
./configure
|
||||||
make && make install
|
make && make install
|
||||||
```
|
```
|
||||||
Buang *wordlist* yang hurufnya kurang dari 5 dan lebih dari 30 :
|
|
||||||
|
Buang _wordlist_ yang hurufnya kurang dari 5 dan lebih dari 30 :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cat ~/custom-wl/wordlist-setengah-matang.txt | pw-inspector -m 5 -M 30 > ~/custom-wl/wordlist-oke.txt
|
cat ~/custom-wl/wordlist-setengah-matang.txt | pw-inspector -m 5 -M 30 > ~/custom-wl/wordlist-oke.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
Nah sekarang udah lumayan rapi *wordlist* kita. Bro2 sekalian bisa pilih-pilih lagi tuh *wordlist*. Klo wordlistnya cukup besar, buka pake vi / editor spt kate bisa makan banyak *memory*, atau kita bisa gunakan `head -n 25 wordlist.txt` Untuk melihat 25 baris pertama atau `tail -n 25 wordlist.txt` untuk melihat 25 baris terakhir (optional).
|
Nah sekarang udah lumayan rapi _wordlist_ kita. Bro2 sekalian bisa pilih-pilih lagi tuh _wordlist_. Klo wordlistnya cukup besar, buka pake vi / editor spt kate bisa makan banyak _memory_, atau kita bisa gunakan `head -n 25 wordlist.txt` Untuk melihat 25 baris pertama atau `tail -n 25 wordlist.txt` untuk melihat 25 baris terakhir (optional).
|
||||||
|
|
||||||
## Menggunakan CUPP
|
## Menggunakan CUPP
|
||||||
|
|
||||||
Lalu sebagai pemanis kita jalanin uler kadut yang di **BackTrack** juga udah eksis, **CUPP**. Yang belum punya **CUPP** bisa download dulu :
|
Lalu sebagai pemanis kita jalanin uler kadut yang di **BackTrack** juga udah eksis, **CUPP**. Yang belum punya **CUPP** bisa download dulu :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
wget http://ls-la.ditatompel.crayoncreative.net/linux/cupp-3.0.tar.gz -O ~/custom-wl/cupp-3.0.tar.gz
|
wget http://ls-la.ditatompel.crayoncreative.net/linux/cupp-3.0.tar.gz -O ~/custom-wl/cupp-3.0.tar.gz
|
||||||
cd ~/custom-wl/; tar -xvzf cupp-3.0.tar.gz
|
cd ~/custom-wl/; tar -xvzf cupp-3.0.tar.gz
|
||||||
|
@ -114,6 +114,7 @@ cd cupp; python cupp.py -w ~/custom-wl/wordlist-oke.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
Jawab pertanyaan dari sang juru kunci ini. Outputnya kurang lebih seperti ini :
|
Jawab pertanyaan dari sang juru kunci ini. Outputnya kurang lebih seperti ini :
|
||||||
|
|
||||||
```
|
```
|
||||||
> Do you want to concatenate all words from wordlist? Y/[N]: N
|
> Do you want to concatenate all words from wordlist? Y/[N]: N
|
||||||
> Do you want to add special chars at the end of words? Y/[N]: N
|
> Do you want to add special chars at the end of words? Y/[N]: N
|
||||||
|
@ -126,10 +127,11 @@ Jawab pertanyaan dari sang juru kunci ini. Outputnya kurang lebih seperti ini :
|
||||||
[+] Now load your pistolero with /root/custom-wl/wordlist-oke.txt.cupp.txt and shoot! Good luck!
|
[+] Now load your pistolero with /root/custom-wl/wordlist-oke.txt.cupp.txt and shoot! Good luck!
|
||||||
```
|
```
|
||||||
|
|
||||||
![Custom Wordlist 2](custom-wordlist2.jpg#center)
|
![Custom Wordlist 2](https://edge.ditatompel.com/assets/img/site-contents/generate-custom-wordlist/custom-wordlist2.jpg#center)
|
||||||
|
|
||||||
Nah sampai di sini dulu.. Untuk bruteforcenya pasti udah pada punya tools favorit masing2.
|
Nah sampai di sini dulu.. Untuk bruteforcenya pasti udah pada punya tools favorit masing2.
|
||||||
|
|
||||||
## Referensi
|
## Referensi
|
||||||
* Ebook **Cracking Passwords** by: **J. Dravet**
|
|
||||||
* [http://thc.org/thc-hydra/README](http://thc.org/thc-hydra/README)
|
- Ebook **Cracking Passwords** by: **J. Dravet**
|
||||||
|
- [http://thc.org/thc-hydra/README](http://thc.org/thc-hydra/README)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
title: "Instalasi PHP, Apache, MySQL dan PhpMyAdmin di Arch Linux"
|
title: "Instalasi PHP, Apache, MySQL dan PhpMyAdmin di Arch Linux"
|
||||||
description: "Step-by-step instalasi PHP Apache, MySQL dan PhpMyAdmin di Arch Linux."
|
description: "Step-by-step instalasi PHP Apache, MySQL dan PhpMyAdmin di Arch Linux."
|
||||||
|
summary: "Step-by-step instalasi PHP Apache, MySQL dan PhpMyAdmin di Arch Linux."
|
||||||
# linkTitle:
|
# linkTitle:
|
||||||
date: 2012-02-18T05:01:30+07:00
|
date: 2012-02-18T05:01:30+07:00
|
||||||
lastmod:
|
lastmod:
|
||||||
|
@ -34,40 +35,44 @@ authors:
|
||||||
- ditatompel
|
- ditatompel
|
||||||
---
|
---
|
||||||
|
|
||||||
*Step-by-step* instalasi **PHP**, **Apache**, **MySQL** dan **PhpMyAdmin** di **Arch Linux**.
|
Kenapa Arch Linux? Karena saya nyaman menggunakan Arch, dan hanya dengan package managernya kita udah dapet kernel dan software-software terbaru dan _up-to-date_.
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
Kenapa Arch Linux? Karena saya nyaman menggunakan Arch, dan hanya dengan package managernya kita udah dapet kernel dan software-software terbaru dan *up-to-date*.
|
|
||||||
|
|
||||||
{{< youtube zr7TVU7SZUs >}}
|
{{< youtube zr7TVU7SZUs >}}
|
||||||
|
|
||||||
1. Pertama kita pastikan bahwa sistem kita sudah up to date.
|
1. Pertama kita pastikan bahwa sistem kita sudah up to date.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pacman -Syu
|
pacman -Syu
|
||||||
```
|
```
|
||||||
2. Jika sudah, kita mulai *install* apa yang kita butuhkan.
|
|
||||||
|
2. Jika sudah, kita mulai _install_ apa yang kita butuhkan.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pacman -S php apache php-mcrypt phpmyadmin mysql
|
pacman -S php apache php-mcrypt phpmyadmin mysql
|
||||||
```
|
```
|
||||||
|
|
||||||
3. masuk pada folder `/etc/webapps/phpmyadmin`, kemudian copy konfigurasi **phpmyadmin** ke `/etc/httpd/conf/extra`
|
3. masuk pada folder `/etc/webapps/phpmyadmin`, kemudian copy konfigurasi **phpmyadmin** ke `/etc/httpd/conf/extra`
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cp /etc/webapps/phpmyadmin/apache.example.conf /etc/httpd/conf/extra/httpd-phpmyadmin.conf
|
cp /etc/webapps/phpmyadmin/apache.example.conf /etc/httpd/conf/extra/httpd-phpmyadmin.conf
|
||||||
```
|
```
|
||||||
4. Kita *include-kan* konfigurasi tersebut pada `httpd.conf` utama di folder `/etc/httpd/conf`
|
|
||||||
|
4. Kita _include-kan_ konfigurasi tersebut pada `httpd.conf` utama di folder `/etc/httpd/conf`
|
||||||
|
|
||||||
```apache
|
```apache
|
||||||
# Konfigurasi phpmyadmin
|
# Konfigurasi phpmyadmin
|
||||||
Include conf/extra/httpd-phpmyadmin.conf
|
Include conf/extra/httpd-phpmyadmin.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
![Apache Config PHPMyAdmin](phpmyadmin-include.png#center)
|
![Apache Config PHPMyAdmin](phpmyadmin-include.png#center)
|
||||||
|
|
||||||
Kemudian cek `localhost` dan `phpmyadmin` pada browser.
|
Kemudian cek `localhost` dan `phpmyadmin` pada browser.
|
||||||
|
|
||||||
6. Jika ada pesan *forbidden* pada **phpmyadmin**, kita tambahkan konfigurasi `DirectoryIndex index.html index.php` pada `/etc/httpd/conf/extra/httpd-phpmyadmin.conf` lalu **restart** http server.
|
6. Jika ada pesan _forbidden_ pada **phpmyadmin**, kita tambahkan konfigurasi `DirectoryIndex index.html index.php` pada `/etc/httpd/conf/extra/httpd-phpmyadmin.conf` lalu **restart** http server.
|
||||||
|
|
||||||
![DirectoryIndex Apache](directoryIndex.png#center)
|
![DirectoryIndex Apache](directoryIndex.png#center)
|
||||||
|
|
||||||
7. Jika **PhpMyAdmin** sudah dapat diakses, tetapi masih ada pesan error *"The mysqli extension is missing."* atau *"The mcrypt extension is missing"*; Kita perlu *me-enable* ekstensi tersebut pada `php.ini` dengan menghilangkan tanda titik koma (`;`) di depan ekstensi yang dibutuhkan.
|
7. Jika **PhpMyAdmin** sudah dapat diakses, tetapi masih ada pesan error _"The mysqli extension is missing."_ atau _"The mcrypt extension is missing"_; Kita perlu _me-enable_ ekstensi tersebut pada `php.ini` dengan menghilangkan tanda titik koma (`;`) di depan ekstensi yang dibutuhkan.
|
||||||
|
|
||||||
![PHP Extension](extension.png#center)
|
![PHP Extension](extension.png#center)
|
||||||
|
|
||||||
|
@ -79,13 +84,12 @@ extension=mysql.so
|
||||||
|
|
||||||
kemudian kita coba **restart** http server lagi.
|
kemudian kita coba **restart** http server lagi.
|
||||||
|
|
||||||
Untuk informasi, pada Arch Linux, secara default `httpd` berjalan dengan *user* `http` dan *group* `http`. Agar lebih nyaman dan tidak terdapat pesan error pada CMS2 tertentu, kita perlu merubah permission dan owner pada folder `/srv/http` (tempat folder `public_html`)
|
Untuk informasi, pada Arch Linux, secara default `httpd` berjalan dengan _user_ `http` dan _group_ `http`. Agar lebih nyaman dan tidak terdapat pesan error pada CMS2 tertentu, kita perlu merubah permission dan owner pada folder `/srv/http` (tempat folder `public_html`)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
chown -R http:http /srv/http
|
chown -R http:http /srv/http
|
||||||
```
|
```
|
||||||
|
|
||||||
maka selesai sudah proses installasi Apache, PHP, MySQL, dan PhpMyAdmin.
|
maka selesai sudah proses installasi Apache, PHP, MySQL, dan PhpMyAdmin.
|
||||||
|
|
||||||
Nah sementara basicnya sampe disini dulu.
|
Nah sementara basicnya sampe disini dulu.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
title: "Konfigurasi PHPMyAdmin Untuk Multi Database Server"
|
title: "Konfigurasi PHPMyAdmin Untuk Multi Database Server"
|
||||||
description: Cara mengkonfigurasi aplikasi PHPMyAdmin sehingga dapat digunakan untuk memanage multi MySQL database server.
|
description: Cara mengkonfigurasi aplikasi PHPMyAdmin sehingga dapat digunakan untuk memanage multi MySQL database server.
|
||||||
|
summary: Cara mengkonfigurasi aplikasi PHPMyAdmin sehingga dapat digunakan untuk memanage multi MySQL database server.
|
||||||
# linkTitle:
|
# linkTitle:
|
||||||
date: 2012-08-15T17:49:16+07:00
|
date: 2012-08-15T17:49:16+07:00
|
||||||
lastmod:
|
lastmod:
|
||||||
|
@ -32,25 +33,28 @@ authors:
|
||||||
- ditatompel
|
- ditatompel
|
||||||
---
|
---
|
||||||
|
|
||||||
Pada kesempatan kali ini saya ingin berbagi bagaimana caranya mengkonfigurasi aplikasi **PHPMyAdmin** sehingga dapat digunakan untuk memanage **multi MySQL database server** (secara *remote*).
|
Pada kesempatan kali ini saya ingin berbagi bagaimana caranya mengkonfigurasi aplikasi **PHPMyAdmin** sehingga dapat digunakan untuk memanage **multi MySQL database server** (secara _remote_).
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
Saat menulis tulisan ini, penulis menggunakan **PHPMyAdmin** Versi `3.5.2.1` dengan Web Server **Apache** yang berjalan di atas OS **Linux**. Sedangkan untuk remote **MySQL database server** menggunakan versi `5.x`. Sebelumnya penulis mengansumsikan bahwa Anda telah dapat menjalankan **PHPMyAdmin** pada komputer Anda.
|
Saat menulis tulisan ini, penulis menggunakan **PHPMyAdmin** Versi `3.5.2.1` dengan Web Server **Apache** yang berjalan di atas OS **Linux**. Sedangkan untuk remote **MySQL database server** menggunakan versi `5.x`. Sebelumnya penulis mengansumsikan bahwa Anda telah dapat menjalankan **PHPMyAdmin** pada komputer Anda.
|
||||||
|
|
||||||
## Remote MySQL Server
|
## Remote MySQL Server
|
||||||
|
|
||||||
Pada remote MySQL server, buatlah user database baru yang nanti kita gunakan untuk mengakses server tersebut dari PC atau komputer pribadi kita.
|
Pada remote MySQL server, buatlah user database baru yang nanti kita gunakan untuk mengakses server tersebut dari PC atau komputer pribadi kita.
|
||||||
|
|
||||||
Pertama, login ke MySQL kemudian buat user baru :
|
Pertama, login ke MySQL kemudian buat user baru :
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
CREATE USER 'nama_user'@'alamat_ip' IDENTIFIED BY 'katasandi';
|
CREATE USER 'nama_user'@'alamat_ip' IDENTIFIED BY 'katasandi';
|
||||||
```
|
```
|
||||||
Dimana:
|
|
||||||
- `nama_user` adalah *username database* yang kita gunakan untuk login ke database server.
|
|
||||||
- `alamat_ip` adalah alamat IP atau *hostname* tempat dimana PHPMyAdmin diinstall.
|
|
||||||
- `katasandi` adalah *password* untuk login ke database server.
|
|
||||||
|
|
||||||
Setelah itu berikan *permission* yang dibutuhkan pada user tersebut dengan perintah **GRANT** :
|
Dimana:
|
||||||
|
|
||||||
|
- `nama_user` adalah _username database_ yang kita gunakan untuk login ke database server.
|
||||||
|
- `alamat_ip` adalah alamat IP atau _hostname_ tempat dimana PHPMyAdmin diinstall.
|
||||||
|
- `katasandi` adalah _password_ untuk login ke database server.
|
||||||
|
|
||||||
|
Setelah itu berikan _permission_ yang dibutuhkan pada user tersebut dengan perintah **GRANT** :
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
GRANT ALL PRIVILEGES ON *.* TO 'nama_user'@'alamat_ip';
|
GRANT ALL PRIVILEGES ON *.* TO 'nama_user'@'alamat_ip';
|
||||||
```
|
```
|
||||||
|
@ -58,21 +62,27 @@ GRANT ALL PRIVILEGES ON *.* TO 'nama_user'@'alamat_ip';
|
||||||
![MySQL GRANT](phpmyadmin1.png#center)
|
![MySQL GRANT](phpmyadmin1.png#center)
|
||||||
|
|
||||||
**Dimana :**
|
**Dimana :**
|
||||||
|
|
||||||
- `ALL PRIVILEGES` artinya semua permission yang dimiliki user tersebut kecuali opsi `GRANT` ke user lain.
|
- `ALL PRIVILEGES` artinya semua permission yang dimiliki user tersebut kecuali opsi `GRANT` ke user lain.
|
||||||
- `*.*` Artinya semua database dan table. Tanda bintang pertama berdiri untuk nama database dan tanda bintang ke dua berdiri untuk table dalam database tersebut.
|
- `*.*` Artinya semua database dan table. Tanda bintang pertama berdiri untuk nama database dan tanda bintang ke dua berdiri untuk table dalam database tersebut.
|
||||||
- `'nama_user'@'alamat_ip'` adalah username yang sudah kita buat sebelumnya.
|
- `'nama_user'@'alamat_ip'` adalah username yang sudah kita buat sebelumnya.
|
||||||
|
|
||||||
Misalnya Anda hanya menginginkan permission **SELECT**, dan **UPDATE** *table* `tbl_transaksi` di dalam database `db_website` untuk user `finance` dengan alamat IP `192.169.1.1` gunakan :
|
Misalnya Anda hanya menginginkan permission **SELECT**, dan **UPDATE** _table_ `tbl_transaksi` di dalam database `db_website` untuk user `finance` dengan alamat IP `192.169.1.1` gunakan :
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
GRANT SELECT, UPDATE ON db_website.tbl_transaksi TO 'finance'@'192.169.1.1';
|
GRANT SELECT, UPDATE ON db_website.tbl_transaksi TO 'finance'@'192.169.1.1';
|
||||||
```
|
```
|
||||||
Kemudian terakhir jangan lupa untuk **flush** untuk *privilege*-nya.
|
|
||||||
|
Kemudian terakhir jangan lupa untuk **flush** untuk _privilege_-nya.
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
```
|
```
|
||||||
|
|
||||||
## PHPMyAdmin Client
|
## PHPMyAdmin Client
|
||||||
|
|
||||||
Cari dimana lokasi aplikasi **PHPMyAdmin** berada. Pada tutorial kali ini, lokasinya ada pada `/usr/share/webapps/phpmyadmin`. Edit file `config.inc.php` yang berada pada folder tersebut dan tambahkan konfigrasi berikut :
|
Cari dimana lokasi aplikasi **PHPMyAdmin** berada. Pada tutorial kali ini, lokasinya ada pada `/usr/share/webapps/phpmyadmin`. Edit file `config.inc.php` yang berada pada folder tersebut dan tambahkan konfigrasi berikut :
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$i++;
|
$i++;
|
||||||
$cfg['Servers'][$i]['verbose'] = 'MRTG IP 169.1/28';
|
$cfg['Servers'][$i]['verbose'] = 'MRTG IP 169.1/28';
|
||||||
|
@ -86,6 +96,7 @@ $cfg['Servers'][$i]['auth_type'] = 'cookie';
|
||||||
![PHPMyAdmin `config.inc.php`](phpmyadmin2.png#center)
|
![PHPMyAdmin `config.inc.php`](phpmyadmin2.png#center)
|
||||||
|
|
||||||
**Dimana :**
|
**Dimana :**
|
||||||
|
|
||||||
- `verbose` adalah nama server yang akan muncul di **PHPMyAdmin**
|
- `verbose` adalah nama server yang akan muncul di **PHPMyAdmin**
|
||||||
- `host` adalah alamat IP atau nama domain remote MySQL database server.
|
- `host` adalah alamat IP atau nama domain remote MySQL database server.
|
||||||
- `port` adalah port remote MySQL database server. (default `3306`)
|
- `port` adalah port remote MySQL database server. (default `3306`)
|
||||||
|
@ -108,3 +119,4 @@ Ataupun melakukan monitoring remote database dari komputer pribadi Anda meskipun
|
||||||
![MySQL Process PHPMyAdmin](phpmyadmin5.png)
|
![MySQL Process PHPMyAdmin](phpmyadmin5.png)
|
||||||
|
|
||||||
Semoga berguna.
|
Semoga berguna.
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
title: "Membaca Binary Secara Manual"
|
title: "Membaca Binary Secara Manual"
|
||||||
description: "Bagaimana membaca sekumpulan angka 0 dan 1 (Binary) menjadi decimal. Kemudian cara menggunakan angka desimal tersebut diterjemahkan ke text (ASCII) menggunakan ASII table"
|
description: "Bagaimana membaca sekumpulan angka 0 dan 1 (Binary) menjadi decimal. Kemudian cara menggunakan angka desimal tersebut diterjemahkan ke text (ASCII) menggunakan ASII table"
|
||||||
|
summary: "Bagaimana membaca sekumpulan angka 0 dan 1 (Binary) menjadi decimal. Kemudian cara menggunakan angka desimal tersebut diterjemahkan ke text (ASCII) menggunakan ASII table"
|
||||||
# linkTitle:
|
# linkTitle:
|
||||||
date: 2012-01-08T04:29:52+07:00
|
date: 2012-01-08T04:29:52+07:00
|
||||||
lastmod:
|
lastmod:
|
||||||
|
@ -32,13 +33,9 @@ authors:
|
||||||
- jasmerah1966
|
- jasmerah1966
|
||||||
---
|
---
|
||||||
|
|
||||||
Bagaimana membaca sekumpulan angka 0 dan 1 (*Binary*/*Biner*) menjadi angka *decimal*/*Desimal*. Kemudian cara menggunakan angka desimal tersebut diterjemahkan ke text (ASCII) menggunakan **ASII table** atau keyboard & Notepad.
|
|
||||||
|
|
||||||
<!--more-->
|
|
||||||
|
|
||||||
Tulisan ini diadopsi dari tulisan om **ditatompel** dari **devilzc0de** yang berjudul Membaca [Binary Secara Manual](https://rtd.ditatompel.com/membaca-binary-secara-manual/) dan diadaptasi seperlunya. Semoga berguna terutama buat kamu yang ingin mulai masuk di bidang ilmu komputer.
|
Tulisan ini diadopsi dari tulisan om **ditatompel** dari **devilzc0de** yang berjudul Membaca [Binary Secara Manual](https://rtd.ditatompel.com/membaca-binary-secara-manual/) dan diadaptasi seperlunya. Semoga berguna terutama buat kamu yang ingin mulai masuk di bidang ilmu komputer.
|
||||||
|
|
||||||
Sebenarnya artikel ini udah lama. Beberapa saya pungut dari tulisannya om **Capsoel** di **X-Code Magazine edisi 6**, om **ditatompel** dari **devilzc0de** dan sisanya *Googling*. Semoga berguna terutama buat kamu yang ingin mulai masuk di bidang ilmu komputer.
|
Sebenarnya artikel ini udah lama. Beberapa saya pungut dari tulisannya om **Capsoel** di **X-Code Magazine edisi 6**, om **ditatompel** dari **devilzc0de** dan sisanya _Googling_. Semoga berguna terutama buat kamu yang ingin mulai masuk di bidang ilmu komputer.
|
||||||
|
|
||||||
## Apa itu bilangan Binary?
|
## Apa itu bilangan Binary?
|
||||||
|
|
||||||
|
@ -46,12 +43,14 @@ Sebenarnya artikel ini udah lama. Beberapa saya pungut dari tulisannya om **Caps
|
||||||
01000100011001010111011001101001011011000111101001100011001100000110010001100101
|
01000100011001010111011001101001011011000111101001100011001100000110010001100101
|
||||||
```
|
```
|
||||||
|
|
||||||
Apa itu? kenapa hanya angka `0` dan `1`? Saya yakin tidak semua orang (bahkan yang setiap harinya utak atik komputer) mengerti bagimana membaca **Binary**. Bahkan orang-orang yang *"ahli"* berkecimpung di bidang trading Binomo seperti **Indra Kenz** atau **Doni Salmanan** yang baru viral belakangan ini mengerti cara menerjemahkan *binary* ke *decimal*, karena memang tidak ada hubungannya dengan *trading* mereka :laughing:.
|
Apa itu? kenapa hanya angka `0` dan `1`? Saya yakin tidak semua orang (bahkan yang setiap harinya utak atik komputer) mengerti bagimana membaca **Binary**. Bahkan orang-orang yang _"ahli"_ berkecimpung di bidang trading Binomo seperti **Indra Kenz** atau **Doni Salmanan** yang baru viral belakangan ini mengerti cara menerjemahkan _binary_ ke _decimal_, karena memang tidak ada hubungannya dengan _trading_ mereka :laughing:.
|
||||||
|
|
||||||
Sederetan angka 0 dan 1 ini adalah kode **binary**. Pertama, saya akan menunjukan bagaimana membaca sekumpulan angka 0 dan 1 tersebut sebagai angka **desimal**. Kemudian saya baru menunjukan bagaimana cara menggunakan angka tersebut diterjemahkan ke text (ASCII) menggunakan **ASCII table**.
|
Sederetan angka 0 dan 1 ini adalah kode **binary**. Pertama, saya akan menunjukan bagaimana membaca sekumpulan angka 0 dan 1 tersebut sebagai angka **desimal**. Kemudian saya baru menunjukan bagaimana cara menggunakan angka tersebut diterjemahkan ke text (ASCII) menggunakan **ASCII table**.
|
||||||
|
|
||||||
## Menerjemahkan Binary ke Decimal
|
## Menerjemahkan Binary ke Decimal
|
||||||
|
|
||||||
Sebagai contoh mudah:
|
Sebagai contoh mudah:
|
||||||
|
|
||||||
```
|
```
|
||||||
10101
|
10101
|
||||||
```
|
```
|
||||||
|
@ -63,12 +62,13 @@ _ _ _ _ _
|
||||||
```
|
```
|
||||||
|
|
||||||
Cara membaca **binary** adalah dari kanan ke kiri.
|
Cara membaca **binary** adalah dari kanan ke kiri.
|
||||||
* Slot **pertama** dari kanan mewakili nilai **1**,
|
|
||||||
* slot **kedua** dari kanan mewakili nilai **2**,
|
- Slot **pertama** dari kanan mewakili nilai **1**,
|
||||||
* slot **ketiga** mewakili nilai **4**,
|
- slot **kedua** dari kanan mewakili nilai **2**,
|
||||||
* slot **keempat** mewakili nilai **8**,
|
- slot **ketiga** mewakili nilai **4**,
|
||||||
* slot **kelima** mewakili **16**,
|
- slot **keempat** mewakili nilai **8**,
|
||||||
* dan seterusnya hingga slot ke 8.
|
- slot **kelima** mewakili **16**,
|
||||||
|
- dan seterusnya hingga slot ke 8.
|
||||||
|
|
||||||
```
|
```
|
||||||
slot 1 = 1
|
slot 1 = 1
|
||||||
|
@ -82,9 +82,10 @@ slot 8 = 128
|
||||||
```
|
```
|
||||||
|
|
||||||
Dengan memberikan angka `1` atau `0` pada slot-slot tersebut, kita menentukan nilai pada slot tersebut. 1 bernilai "`true`", dan 0 bernilai "`false`". Sebagai contoh:
|
Dengan memberikan angka `1` atau `0` pada slot-slot tersebut, kita menentukan nilai pada slot tersebut. 1 bernilai "`true`", dan 0 bernilai "`false`". Sebagai contoh:
|
||||||
* nilai bilangan **desimal** `1` dalam **binary** adalah `1`,
|
|
||||||
* nilai bilangan **desimal** `2` dalam **binary** adalah `10`,
|
- nilai bilangan **desimal** `1` dalam **binary** adalah `1`,
|
||||||
* nilai bilangan **desimal** `4` dalam **binary** adalah `100`.
|
- nilai bilangan **desimal** `2` dalam **binary** adalah `10`,
|
||||||
|
- nilai bilangan **desimal** `4` dalam **binary** adalah `100`.
|
||||||
|
|
||||||
Kenapa bisa begitu? Kembali lagi ke slot-slot di atas.
|
Kenapa bisa begitu? Kembali lagi ke slot-slot di atas.
|
||||||
|
|
||||||
|
@ -96,7 +97,7 @@ _ _ _ _ 1
|
||||||
|
|
||||||
Untuk **desimal** `2`, bilangan **biner** = `10`
|
Untuk **desimal** `2`, bilangan **biner** = `10`
|
||||||
|
|
||||||
karena slot pertama bernilai 1 diberi angka 0 (*false*) dan slot ke 2 diberi angka 1 (*true*)
|
karena slot pertama bernilai 1 diberi angka 0 (_false_) dan slot ke 2 diberi angka 1 (_true_)
|
||||||
|
|
||||||
```
|
```
|
||||||
_ _ _ 1 0
|
_ _ _ 1 0
|
||||||
|
@ -104,30 +105,32 @@ _ _ _ 1 0
|
||||||
|
|
||||||
Untuk **desimal** `4`, bilangan **biner** = `100`
|
Untuk **desimal** `4`, bilangan **biner** = `100`
|
||||||
|
|
||||||
karena slot pertama bernilai 1 diberi angka 0 (*false*) dan slot ke 2 diberi angka 0 (*false*) dan baru slot ketiga yg bernilai 4 diberi angka 1 (*true*)
|
karena slot pertama bernilai 1 diberi angka 0 (_false_) dan slot ke 2 diberi angka 0 (_false_) dan baru slot ketiga yg bernilai 4 diberi angka 1 (_true_)
|
||||||
|
|
||||||
```
|
```
|
||||||
_ _ 1 0 0
|
_ _ 1 0 0
|
||||||
```
|
```
|
||||||
|
|
||||||
Lalu gimana klo **desimal** `3`? Kan ga ada nilainya pada slot? `1 + 2 = 3`. Jadi, nilai **desimal** `3` pada **binary** adalah `11`
|
Lalu gimana klo **desimal** `3`? Kan ga ada nilainya pada slot? `1 + 2 = 3`. Jadi, nilai **desimal** `3` pada **binary** adalah `11`
|
||||||
|
|
||||||
```
|
```
|
||||||
_ _ _ 1 1
|
_ _ _ 1 1
|
||||||
```
|
```
|
||||||
|
|
||||||
klo desimal `5`? `1 + 4 = 5` berarti bilangan *binernya* `101`.
|
klo desimal `5`? `1 + 4 = 5` berarti bilangan _binernya_ `101`.
|
||||||
|
|
||||||
```
|
```
|
||||||
_ _ 1 0 1
|
_ _ 1 0 1
|
||||||
```
|
```
|
||||||
|
|
||||||
Lalu jika kode binernya panjang banget seperti ini? Gimana bacanya ke **ASCII** / *text*?
|
Lalu jika kode binernya panjang banget seperti ini? Gimana bacanya ke **ASCII** / _text_?
|
||||||
|
|
||||||
```
|
```
|
||||||
01000100011001010111011001101001011011000111101001100011001100000110010001100101
|
01000100011001010111011001101001011011000111101001100011001100000110010001100101
|
||||||
```
|
```
|
||||||
|
|
||||||
Pisahkan dulu menjadi 8 digit:
|
Pisahkan dulu menjadi 8 digit:
|
||||||
|
|
||||||
```
|
```
|
||||||
01000100 01100101 01110110 01101001 01101100 01111010 01100011 00110000 01100100 01100101
|
01000100 01100101 01110110 01101001 01101100 01111010 01100011 00110000 01100100 01100101
|
||||||
```
|
```
|
||||||
|
@ -148,6 +151,7 @@ Lalu convert ke bilangan **decimal**
|
||||||
```
|
```
|
||||||
|
|
||||||
## Menerjemahkan Decimal ke ASCII
|
## Menerjemahkan Decimal ke ASCII
|
||||||
|
|
||||||
Lalu ASCIInya mana? Untuk menerjemahkan Decimal ke ASCII, bisa menggunakan ASCII table berikut (gunakan kolom `Dec` dan `Char`):
|
Lalu ASCIInya mana? Untuk menerjemahkan Decimal ke ASCII, bisa menggunakan ASCII table berikut (gunakan kolom `Dec` dan `Char`):
|
||||||
|
|
||||||
![ASCII table](ascii-table.png#center "ASCII table")
|
![ASCII table](ascii-table.png#center "ASCII table")
|
||||||
|
|
Loading…
Reference in a new issue