chore(lint): Markdown lint

This commit is contained in:
Cristian Ditaputratama 2024-06-06 11:52:57 +07:00
parent 61eb82c207
commit 8d08ace495
Signed by: ditatompel
GPG key ID: 31D3D06D77950979
4 changed files with 176 additions and 153 deletions

View file

@ -1,13 +1,13 @@
---
title: "Devilzc0de Streaming Radio Amarok Script"
description: Berhubung saya adalah tipe orang yang sulit bekerja jika ada banyak browser tab terbuka di browser, saya buat script sederhana supaya radio devilzc0de bisa didengarkan melalui Amarok.
summary: Berhubung saya adalah tipe orang yang sulit bekerja jika ada banyak browser tab terbuka di browser, saya buat script sederhana supaya radio devilzc0de bisa didengarkan melalui Amarok.
date: 2011-12-29T03:14:32+07:00
lastmod:
draft: false
noindex: false
featured: false
pinned: false
# comments: false
series:
# -
categories:
@ -16,28 +16,18 @@ tags:
- Amarok
- Linux
images:
# -
# menu:
# main:
# weight: 100
# params:
# icon:
# vendor: bs
# name: book
# color: '#e24d0e'
authors:
- ditatompel
---
Berhubung saya adalah tipe orang yang sulit bekerja jika ada banyak browser tab terbuka di browser, saya buat script sederhana supaya radio **devilzc0de** bisa didengarkan melalui **Amarok**.
<!--more-->
_tested on_ :
*tested on* :
* OS: **Arch Linux** Kernel `3.x` `x86_64`
* DE: **KDE** SC `4.7.4`
* Qt: `4.8.0`
* Source Code : `http://ls-la.ditatompel.crayoncreative.net/linux/devilzc0de_stream.tar.bz2`
- OS: **Arch Linux** Kernel `3.x` `x86_64`
- DE: **KDE** SC `4.7.4`
- Qt: `4.8.0`
- Source Code : `http://ls-la.ditatompel.crayoncreative.net/linux/devilzc0de_stream.tar.bz2`
![](dc-amarok2.png#center)
@ -46,59 +36,65 @@ Berhubung saya adalah tipe orang yang sulit bekerja jika ada banyak browser tab
![](dc-amarok4.png#center)
## List Radio Station
* ainstream
* Devilzc0de Radio
* Radio Bandung
* Prambors FM
* Delta FM
* Radio Surabaya
* Mercury 96FM
* Prambors FM
* Delta FM
* Radio Yogyakarta
* Redjo Buntung
* Jogjafamily
* Swaragama
* Female FM
* Prambors FM
* Radio Semarang
* Gajahmada FM
* TOP FM Bumiayu
* Female FM
* Prambos FM
* Radio Jakarta
* Delta FM
* Female FM
* Prambors FM
* Radio Lainnya
* Kaskus Radio
* Static Stream Crayon Networks
* Lagu Galauers
* Instrumental
* Latest Song Mix
- ainstream
- Devilzc0de Radio
- Radio Bandung
- Prambors FM
- Delta FM
- Radio Surabaya
- Mercury 96FM
- Prambors FM
- Delta FM
- Radio Yogyakarta
- Redjo Buntung
- Jogjafamily
- Swaragama
- Female FM
- Prambors FM
- Radio Semarang
- Gajahmada FM
- TOP FM Bumiayu
- Female FM
- Prambos FM
- Radio Jakarta
- Delta FM
- Female FM
- Prambors FM
- Radio Lainnya
- Kaskus Radio
- Static Stream Crayon Networks
- Lagu Galauers
- Instrumental
- Latest Song Mix
## Cara Install
Cara installasi bisa menggunakan 2 metode, yaitu menggunakan **Amarok script manager** (*single user*) atau manual (*all users*).
### Menggunakan Amarok script manager (*single user*)
Cara installasi bisa menggunakan 2 metode, yaitu menggunakan **Amarok script manager** (_single user_) atau manual (_all users_).
### Menggunakan Amarok script manager (_single user_)
1. Buka Amarok
2. Masuk **Settings** -> **Configure Amarok** -> **Script** -> **Manage Scripts**
3. Search dengan *keyword* **Devilzc0de** -> **Install**
3. Search dengan _keyword_ **Devilzc0de** -> **Install**
![](dc-amarok1.png#center)
### Manual (*all users*)
### Manual (_all users_)
```bash
wget http://ls-la.ditatompel.crayoncreative.net/linux/devilzc0de_stream.tar.bz2
```
Sebagai *user* `root`, *extract* kemudian *copy* folder hasil *extract* ke `/usr/share/apps/amarok/scripts/`.
Sebagai _user_ `root`, _extract_ kemudian _copy_ folder hasil _extract_ ke `/usr/share/apps/amarok/scripts/`.
## Cara Penggunaan
1. Masuk ke menu **internet**.
2. Pilih **devilzc0de Radio**.
3. Pilih stasiun radio yang ingin didengarkan.
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`.

View file

@ -1,6 +1,7 @@
---
title: "Firewall iptables Port Knocking"
description: "Berbagi tips untuk meningkatkan keamanan server dengan menggunakan teknik port knocking iptables firewall."
summary: "Berbagi tips untuk meningkatkan keamanan server dengan menggunakan teknik port knocking iptables firewall."
# linkTitle:
date: 2013-07-01T22:16:19+07:00
lastmod:
@ -34,21 +35,21 @@ authors:
- ditatompel
---
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?_
**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.
> _**Q** : Bisa lebih detail?_
**A** : Misalnya kita punya *service* **SSH** yang listen di *port* `22`, sedangkan *pentester* punya *0day remote root exploit* untuk aplikasi **OpenSSH** tersebut misalnya. Maka server akan terancam keamanannya karena port `22` tersebut terbuka. Dengan menggunakan teknik *port knocking*, hanya mereka yang mengetahui port mana yang harus di *"hit"* terlebih dahulu yang dapat membuka dan mengakses port `22` tersebut.
**A** : Misalnya kita punya _service_ **SSH** yang listen di _port_ `22`, sedangkan _pentester_ punya _0day remote root exploit_ untuk aplikasi **OpenSSH** tersebut misalnya. Maka server akan terancam keamanannya karena port `22` tersebut terbuka. Dengan menggunakan teknik _port knocking_, hanya mereka yang mengetahui port mana yang harus di _"hit"_ terlebih dahulu yang dapat membuka dan mengakses port `22` tersebut.
Supaya lebih jelas, saya ambil contoh dari *thread* saya sebelumnya tentang **celeng Lawang Sewu CTF** (`http://devilzc0de.org/forum/thread-20071.html`). Challange yang ke-2 adalah mengenai *port knocking*.
Supaya lebih jelas, saya ambil contoh dari _thread_ saya sebelumnya tentang **celeng Lawang Sewu CTF** (`http://devilzc0de.org/forum/thread-20071.html`). Challange yang ke-2 adalah mengenai _port knocking_.
*Port knocking* ini bisa kita konfigurasi dengan `iptables` *firewall* (yang biasanya sudah dimiliki *kernel Linux* pada kebanyakan distro linux).
_Port knocking_ ini bisa kita konfigurasi dengan `iptables` _firewall_ (yang biasanya sudah dimiliki _kernel Linux_ pada kebanyakan distro linux).
Pada kesempatan kali ini saya share bagaimana **cara konfigurasi port knocking menggunakan `iptables`**.
@ -57,29 +58,30 @@ Pada kesempatan kali ini saya share bagaimana **cara konfigurasi port knocking m
VIDEO TUTORIAL : [http://youtu.be/0zFQocf7C_0](http://youtu.be/0zFQocf7C_0).
Yang dibutuhkan pada tutorial kali ini :
- Server & Client dengan **OS Linux** (pada tutorial kali ini ane menggunakan **CentOS**)
- `iptables` (server firewall)
- `nmap` (untuk *scan* dan *knocking port* dari *client*)
- Pengetahuan dasar mengenai *iptables*.
- `nmap` (untuk _scan_ dan _knocking port_ dari _client_)
- Pengetahuan dasar mengenai _iptables_.
**Studi Kasus:**
Saya punya sebuah server (IP : `192.168.0.100`), saya menggunakan SSH untuk melakukan manajemen server tersebut. SSH port untuk *remote* aksesnya adalah default (Port `22`). Saya ingin menutup port `22` dan hanya terbuka pada saat dibutuhkan.
Saya punya sebuah server (IP : `192.168.0.100`), saya menggunakan SSH untuk melakukan manajemen server tersebut. SSH port untuk _remote_ aksesnya adalah default (Port `22`). Saya ingin menutup port `22` dan hanya terbuka pada saat dibutuhkan.
Disinilah kita gunakan teknik *port knocking*, dimana saya sudah menge-set konfigurasi supaya user harus mengirimkan paket **TCP** ke port (misalnya) `1111` lalu `2222`, lalu `3333`, dan terakhir `4444` baru kembudian port `22` (SSH) tersebut terbuka.
Disinilah kita gunakan teknik _port knocking_, dimana saya sudah menge-set konfigurasi supaya user harus mengirimkan paket **TCP** ke port (misalnya) `1111` lalu `2222`, lalu `3333`, dan terakhir `4444` baru kembudian port `22` (SSH) tersebut terbuka.
- IP Server : `192.168.0.100`.
- OS : **CentOS**.
- SSH Port : `22`.
- Skema **Port Knocking** : Paket `TCP` Port `1111` => `2222` => `3333` => `4444` => Port `22` terbuka.
Untuk bawaan server **CentOS**, konfigurasi *firewall* sudah membuka port `22` untuk SSH.
Untuk bawaan server **CentOS**, konfigurasi _firewall_ sudah membuka port `22` untuk SSH.
![Port 22 open](pk-01.png#center)
Maka kita perlu mengkonfigurasi ulang `iptables` *firewall*nya. Kita dapat menggunakan perintah `iptables-save > iptables.rules` untuk melakukan *dump* / *backup rules firewall*.
Maka kita perlu mengkonfigurasi ulang `iptables` *firewall*nya. Kita dapat menggunakan perintah `iptables-save > iptables.rules` untuk melakukan _dump_ / _backup rules firewall_.
Coba lihat pada hasil konfigurasi *firewall* yang baru saja kita *dump*, kurang lebih seperti berikut (untuk **CentOS**):
Coba lihat pada hasil konfigurasi _firewall_ yang baru saja kita _dump_, kurang lebih seperti berikut (untuk **CentOS**):
```plain
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
@ -89,48 +91,57 @@ Coba lihat pada hasil konfigurasi *firewall* yang baru saja kita *dump*, kurang
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
```
![iptables dump config](pk-02.png#center)
Perhatikan pada rules berikut :
```plain
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
```
terlihat bahwa iptables memperbolehkan akses melalui port 22.
Mari kita buat `iptables` *rules* sesuai keinginan kita di studi kasus ini, yaitu kita ingin menutup port `22` tersebut, dan hanya terbuka pada saat port `1111`,`2222`,`3333`,`4444` mendapatkan paket `TCP` secara berurutan.
Mari kita buat `iptables` _rules_ sesuai keinginan kita di studi kasus ini, yaitu kita ingin menutup port `22` tersebut, dan hanya terbuka pada saat port `1111`,`2222`,`3333`,`4444` mendapatkan paket `TCP` secara berurutan.
Copy `iptables.rules` yang sebelumnya sudah kita dapatkan ke `iptables-new.rules`, kemudian edit.
```bash
cp iptables.rules iptables-new.rules
vi iptables-new.rules
```
dan edit seperti pada gambar dibawah :
![iptables port knocking rules](pk-03.png#center)
Dengan kata lain, saya membuka port `80`, kemudian menambahkan *firewall rules* baru yang secara dinamis dapat membuka port `22` selama 15 detik jika port `1111`, `2222`, `3333`, `4444` mendapatkan kiriman paket `TCP` secara berurutan dalam jangka waktu 5 detik.
Dengan kata lain, saya membuka port `80`, kemudian menambahkan _firewall rules_ baru yang secara dinamis dapat membuka port `22` selama 15 detik jika port `1111`, `2222`, `3333`, `4444` mendapatkan kiriman paket `TCP` secara berurutan dalam jangka waktu 5 detik.
Setelah dirasa udah oke, kita restore konfigurasi firewall yang baru dengan menggunakan `iptables-restore`, lalu *restart iptables service*nya.
```bash
iptables-restore < iptables-new.rules
service iptables save
service iptables restart
```
kemudian untuk memastikan rules yang baru sudah berjalan gunakan perintah :
```bash
iptables -L -n
```
![iptables rules list](pk-04.png#center)
Nah kalau udah, mari kita coba cek scan port `22` pada server dari komputer kita menggunakan `nmap`, maka akan terlihat port tersebut tertutup oleh *firewall*.
Nah kalau udah, mari kita coba cek scan port `22` pada server dari komputer kita menggunakan `nmap`, maka akan terlihat port tersebut tertutup oleh _firewall_.
```bash
nmap -Pn 192.168.0.100 -p22
```
![nmap port 22](pk-05.png#center)
Setelah itu kita buat **script bash** sederhana untuk melakukan *knocking port*.
Setelah itu kita buat **script bash** sederhana untuk melakukan _knocking port_.
```bash
#!/bin/bash
@ -142,29 +153,27 @@ do
done
```
Simpan dengan nama `knock.sh` lalu `chmod +x` agar *script* tersebut dapat dieksekusi.
Simpan dengan nama `knock.sh` lalu `chmod +x` agar _script_ tersebut dapat dieksekusi.
cara penggunaan:
```bash
# ./knock.sh [ip server] [list port]
# misalnya:
./knock.sh 192.168.0.100 1111 2222 3333 4444
```
Dengan mengetuk port `1111`, `2222`, `3333`, `4444` secara berurutan maka port `22` yang telah kita tentukan dari *rules firewall* akan terbuka. Dengan begitu kita dapat melakukan koneksi SSH ke server.
Dengan mengetuk port `1111`, `2222`, `3333`, `4444` secara berurutan maka port `22` yang telah kita tentukan dari _rules firewall_ akan terbuka. Dengan begitu kita dapat melakukan koneksi SSH ke server.
![nmap port knocking](pk-06.png#center)
Sekian tutorial mengenai port knocking.
Silahkan dikembangkan sendiri dengan kreatifitas masing2, *protocol* dan paket yang dikirimkan tidak hanya terbatas pada **TCP** saja, kita juga bisa memanfaatkan kombinasi protokol **TCP**, **UDP** atau bahkan **ICMP**.
Silahkan dikembangkan sendiri dengan kreatifitas masing2, _protocol_ dan paket yang dikirimkan tidak hanya terbatas pada **TCP** saja, kita juga bisa memanfaatkan kombinasi protokol **TCP**, **UDP** atau bahkan **ICMP**.
Referensi:
- [http://en.wikipedia.org/wiki/Port_knocking](http://en.wikipedia.org/wiki/Port_knocking)
- [http://www.faqs.org/docs/iptables/index.html](http://www.faqs.org/docs/iptables/index.html)
- [https://wiki.archlinux.org/index.php/Port_Knocking](https://wiki.archlinux.org/index.php/Port_Knocking)
- Tambahan dari om @[od3yz]: [http://www.overflow.web.id/source/Metode-Port-Knocking-dengan-Iptables.pdf](http://www.overflow.web.id/source/Metode-Port-Knocking-dengan-Iptables.pdf)

View file

@ -1,6 +1,7 @@
---
title: "Membuat Lab Virtualisasi Pada Jaringan Lokal Dengan VirtualBox (2012)"
description: "Beberapa teman bertanya dan tertarik untuk belajar build server. Kebanyakan dari mereka berfikir bahwa untuk belajar build server / maintenance server itu butuh VPS atau bahkan dedicated server. Sebenarnya kita bisa memanfaatkan VirtualBox untuk membangun lab virtualisasi lokal."
description: "Memanfaatkan VirtualBox untuk membangun lab virtualisasi pada jaringan lokal."
summary: "Memanfaatkan VirtualBox untuk membangun lab virtualisasi pada jaringan lokal."
# linkTitle:
date: 2012-12-21T20:40:14+07:00
lastmod:
@ -8,10 +9,6 @@ draft: false
noindex: false
# comments: false
nav_weight: 1000
# nav_icon:
# vendor: bootstrap
# name: toggles
# color: '#e24d0e'
series:
# - Tutorial
categories:
@ -21,36 +18,27 @@ tags:
- Linux
- MySQL
images:
# menu:
# main:
# weight: 100
# params:
# icon:
# vendor: bs
# name: book
# color: '#e24d0e'
authors:
- ditatompel
---
Belakangan ada beberapa teman yang bertanya dan tertarik untuk belajar *build* server. Kebanyakan dari mereka berfikir bahwa untuk belajar build server / maintenance server itu butuh **VPS** atau bahkan *dedicated server*. Apa bener begitu? Padahal harga untuk **VPS** untuk ukuran sebagian mahasiswa dirasa cukup tinggi, apa lagi *dedicated server*.
Belakangan ada beberapa teman yang bertanya dan tertarik untuk belajar _build_ server. Kebanyakan dari mereka berfikir bahwa untuk belajar build server / maintenance server itu butuh **VPS** atau bahkan _dedicated server_. Apa bener begitu? Padahal harga untuk **VPS** untuk ukuran sebagian mahasiswa dirasa cukup tinggi, apa lagi _dedicated server_.
<!--more-->
Sebenarnya kalau kita hanya ingin belajar, tidak harus sewa **VPS**, awal2 kita bisa manfaatkan yang namanya _virtualisasi_. (namanya belajar jadi ga perlu kan _IP public_ yang bisa diakses siapa saja, makanya kita gunakan jaringan dan IP lokal).
Sebenarnya kalau kita hanya ingin belajar, tidak harus sewa **VPS**, awal2 kita bisa manfaatkan yang namanya *virtualisasi*. (namanya belajar jadi ga perlu kan *IP public* yang bisa diakses siapa saja, makanya kita gunakan jaringan dan IP lokal).
Ada banyak jalan untuk melakukan virtualisasi ini, ada **OpenVZ**, **VirtualBox**, **Xen**, **VMware**, dll. dari **para-virtualisasi** sampai **full-virtualisasi**, dari versi _community_ (gratis) sampai _enterprise_ (berbayar). Masing-masing ada kelebihan dan kekurangan (dan saya ga mau berdebat masalah ini).
Ada banyak jalan untuk melakukan virtualisasi ini, ada **OpenVZ**, **VirtualBox**, **Xen**, **VMware**, dll. dari **para-virtualisasi** sampai **full-virtualisasi**, dari versi *community* (gratis) sampai *enterprise* (berbayar). Masing-masing ada kelebihan dan kekurangan (dan saya ga mau berdebat masalah ini).
kali ini saya menggunakan **VirtualBox**, Karena sudah banyak user yang menggunakan **VirtualBox** pada komputer pribadinya. Sebelum melanjutkan, saya informasikan dulu situasi dan kondisi pada saat *guide* ini dibuat.
kali ini saya menggunakan **VirtualBox**, Karena sudah banyak user yang menggunakan **VirtualBox** pada komputer pribadinya. Sebelum melanjutkan, saya informasikan dulu situasi dan kondisi pada saat _guide_ ini dibuat.
- **Subnet**: `/24`
- **Gateway** : `192.168.0.2`
- **Host OS** : IP=`192.168.0.242` OS=`Linux`
Taruh kata saya ingin membuat **2 virtual server**, 1 untuk *database server* (**MySQL server**) dan 1 sever lainnya untuk apa juga belum terpikirkan. ;p
Taruh kata saya ingin membuat **2 virtual server**, 1 untuk _database server_ (**MySQL server**) dan 1 sever lainnya untuk apa juga belum terpikirkan. ;p
Jadi yang dibutuhkan :
- **VirtualBox** dengan *module* `vboxnetfit`
- **VirtualBox** dengan _module_ `vboxnetfit`
- **ISO CentOS 6.x netinstall**
- Koneksi Internet
@ -58,9 +46,11 @@ Video:
{{< youtube r5s8lBDNBXI >}}
## Part 1: Setting Guest Hosts (virtual server)
Pertama kita pastinya butuh **VirtualBox**. Silahkan yang belom punya download dulu. Kemudian module `vboxnetfit` untuk *bridged adapter* ke *virtual server*. Kemungkinan Anda juga butuh module `vboxdrv` (optional buat jalanin custom *kernel*) Aktifinnya tinggal `modprobe` [nama_module].
Pertama kita pastinya butuh **VirtualBox**. Silahkan yang belom punya download dulu. Kemudian module `vboxnetfit` untuk _bridged adapter_ ke _virtual server_. Kemungkinan Anda juga butuh module `vboxdrv` (optional buat jalanin custom _kernel_) Aktifinnya tinggal `modprobe` [nama_module].
Jika sudah mari kita jalankan VirtualBox dan buat virtual hostnya. Caranya klik Icon New di kiri atas, lalu masukan informasi nama dan OS yang digunakan. Misalnya:
- **Name** : CentOS Contoh Server III
- **Type** : Linux
- **Version** : RedHat (32/64 sesuai CPU Host)
@ -69,7 +59,7 @@ Kemudian tekan tombol Next.
![Add New VirtualBox Host](feature-virtual-lab-jar-lokal-01.png#center)
berikutnya menentukan kapasitas **RAM** yang nantinya dipake sama *virtual server*, kasi aja **512MB**, klo udah tekan tombol next lagi.
berikutnya menentukan kapasitas **RAM** yang nantinya dipake sama _virtual server_, kasi aja **512MB**, klo udah tekan tombol next lagi.
![VirtualBox Set Guest RAM](virtual-lab-jar-lokal-02.png#center)
@ -77,11 +67,11 @@ Selanjutnya buat virtual HDD, pilih opsi ke 2 **"Create a virtual hard drive now
![VirtualBox Set Guest Virtual HDD](virtual-lab-jar-lokal-03.png#center)
Setelah itu keluar lagi pilihan buat tipe hard drivenya. Klo nantinya tidak ingin memindah ke virtualisasi lain pilih saja *default* **VDI**. Tp kali ini saya pilih **QEMU** biar **dikira** *dewa*. Klo udah tekan tombol **Create**.
Setelah itu keluar lagi pilihan buat tipe hard drivenya. Klo nantinya tidak ingin memindah ke virtualisasi lain pilih saja _default_ **VDI**. Tp kali ini saya pilih **QEMU** biar **dikira** _dewa_. Klo udah tekan tombol **Create**.
![VirtualBox Set Guest Virtual HDD Type](virtual-lab-jar-lokal-04.png#center)
nanti di sebelah kiri ada *list Virtual Guest* yang pernah dibuat. Klik kanan pada menu yang baru aja kita buat dan pilih **"Setting"**.
nanti di sebelah kiri ada _list Virtual Guest_ yang pernah dibuat. Klik kanan pada menu yang baru aja kita buat dan pilih **"Setting"**.
Pada menu **Storage** => **Controller IDE** pilih image file yang digunakan. Ane pake **ISO CentOS 6.2 Netinstall 64 Bit**.
@ -95,11 +85,11 @@ klo udah klik **Ok**, lalu Start **Virtual Guest**nya.
Nah proses installasi sama aja ky install OS biasa.
Media Installation OS ane pilih URL *biar dikira admin*.
Media Installation OS ane pilih URL _biar dikira admin_.
![Linux install method](virtual-lab-jar-lokal-07.png#center)
Yang perlu diperhatikan adalah : Gunakan Alamat *IP statik*/*DHCP Statik* dari *router*, jangan dinamis. Karena jika IP dinamis kita bakal susah ngeremote terutama masalah *fingerprint* SSH.
Yang perlu diperhatikan adalah : Gunakan Alamat _IP statik_/_DHCP Statik_ dari _router_, jangan dinamis. Karena jika IP dinamis kita bakal susah ngeremote terutama masalah _fingerprint_ SSH.
![Linux install IP setting](virtual-lab-jar-lokal-08.png#center)
@ -127,7 +117,9 @@ Lalu jalankan perintah berikut untuk menjalankan virtual guest di background : `
```bash
VBoxManage startvm "CentOS Contoh Server III" --type=headless
```
Kalau udah jalan coba `ping` ke IP virtual guest yang tadi kita buat (`192.168.0.152`), tunggu sampai up dan masuk melalui **SSH**.
```bash
ssh root@192.168.0.152
```
@ -135,13 +127,17 @@ ssh root@192.168.0.152
Dari sana nte bisa setting nama hostname, update software, dll.
## Part 2: Install Guest Host lain
Ulangi **Part 1** untuk membuat *Virtual Guest* lain sehingga kita punya 2 *virtual host* dan di-*run* bersamaan dengan *option headless* tadi. Beri virtual guest ke 2 ini dengan IP `192.168.0.151`. Sebagai contoh virtual guest ke 2 kali ini kita gunakan untuk database server.
Ulangi **Part 1** untuk membuat _Virtual Guest_ lain sehingga kita punya 2 _virtual host_ dan di-_run_ bersamaan dengan _option headless_ tadi. Beri virtual guest ke 2 ini dengan IP `192.168.0.151`. Sebagai contoh virtual guest ke 2 kali ini kita gunakan untuk database server.
Di Virtual Guest yang ke-2 ini, install MySQL Server :
```bash
yum install mysql mysql-devel mysql-server
```
Start mysql server
```bash
service mysqld start
```
@ -149,15 +145,19 @@ service mysqld start
settting ulang mysql servernya dengan menjalankan perintah `/usr/bin/mysql_secure_installation`. Maka bakal ada pertanyaan interaktif untuk menyetting ulang MySQL server.
kemudian masuk ke MySQL server dengan user `root` untuk membuat user dan database baru.
```bash
mysql -h localhost -u root -p
```
maka nte bakal disuruh isi password mysqlnya untuk user root. Setelah masuk buat user baru:
```bash
CREATE USER 'ditatompel'@'192.168.0.%' IDENTIFIED BY 'password';
```
dimana:
- `ditatompel` adalah **nama user**nya
- `192.168.0.%` adalah nama hostname/IP dari mana dia melakukan remote koneksi ke MySQL server. (`192.168.0.%` sama saja dengan `192.168.0.0/24`)
- `password` adalah password yang digunakan.
@ -165,6 +165,7 @@ dimana:
```sql
CREATE DATABASE IF NOT EXISTS db_testing;
```
dimana `db_testing` adalah nama database yang nanti kita gunakan.
```sql
@ -176,7 +177,8 @@ dimana `SELECT`, `INSERT`, `UPDATE`, `DELETE` adalah permission milik user `dita
```sql
FLUSH PRIVILEGES;
```
Kalau sudah pastikan juga port **MySQL** (*default* `3306`) tidak di block oleh *firewall*.
Kalau sudah pastikan juga port **MySQL** (_default_ `3306`) tidak di block oleh _firewall_.
![iptables](virtual-lab-jar-lokal-12.png#center)
@ -185,13 +187,13 @@ Setelah itu coba melakukan koneksi ke server MySQL dari virtual guest yang 1 nya
```bash
mysql -h 192.168.0.151 -u ditatompel -p
```
dimana `192.168.0.151` adalah alamat IP server MySQL dan `ditatompel` adalah user yang kita buat pada server MySQL sebelumnya.
![iptables](virtual-lab-jar-lokal-13.png#center)
> _**Q** : Om, klo mau bikin 5 virtual guest dan RAM laptop / PC ane cuma 1GB kan ga mungkin, trus gimana ?_
**A** : Nte pake / bawa pulang laptop temen, colokin ke 1 network dan jalanin virtualbox, lakuin langkah2 di atas. Klo nte ada 4 laptop dan per laptop nte jalanin 3 Virtual guest berarti nte punya 12 virtual guest.
Jadi intinya begitu semua sudah terhubung dan dapat berkomunikasi, beres udah. Nte bisa juga testing buat belajar *port knocking*, config *firewall*, **IDS/IPS**, *load balancing* sampai *clustering*. meskipun hasilnya masih sangat jauh dari maksimal.
Jadi intinya begitu semua sudah terhubung dan dapat berkomunikasi, beres udah. Nte bisa juga testing buat belajar _port knocking_, config _firewall_, **IDS/IPS**, _load balancing_ sampai _clustering_. meskipun hasilnya masih sangat jauh dari maksimal.

View file

@ -1,6 +1,7 @@
---
title: "SSH Client - Server (Security & Simplicity)"
description: Berbagi trik untuk sedikit lebih memperketat akses SSH dengan men-disable root akses SSH, mengubah port default dan menggunakan public dan private key.
summary: Berbagi trik untuk sedikit lebih memperketat akses SSH dengan men-disable root akses SSH, mengubah port default dan menggunakan public dan private key.
# linkTitle:
date: 2012-05-17T17:09:21+07:00
lastmod:
@ -8,10 +9,6 @@ draft: false
noindex: false
# comments: false
nav_weight: 1000
# nav_icon:
# vendor: bootstrap
# name: toggles
# color: '#e24d0e'
series:
# - Tutorial
categories:
@ -21,60 +18,60 @@ tags:
- Linux
- SSH
images:
# menu:
# main:
# weight: 100
# params:
# icon:
# vendor: bs
# name: book
# color: '#e24d0e'
authors:
- ditatompel
---
Bagi para **System Administrator**, sebagai pengganti **Telnet** penggunaan **SSH** pasti sudah merupakan makanan sehari-hari yang banyak digunakan untuk mengakses sistem berbasis **Linux/Unix**. Meskipun password yang dikirim ke server sudah dienkripsi dan tidak berbentuk *plaintext* lagi, installasi [OpenSSH](https://www.openssh.com/) secara default dirasa kurang aman.
Bagi para **System Administrator**, sebagai pengganti **Telnet** penggunaan **SSH** pasti sudah merupakan makanan sehari-hari yang banyak digunakan untuk mengakses sistem berbasis **Linux/Unix**. Meskipun password yang dikirim ke server sudah dienkripsi dan tidak berbentuk _plaintext_ lagi, installasi [OpenSSH](https://www.openssh.com/) secara default dirasa kurang aman.
<!--more-->
Kali ini saya ingin berbagi trik yang sebenarnya sudah umum, untuk sedikit lebih memperketat akses SSH. Yaitu men-*disable* akses SSH untuk *user* `root`, menggunakan **public dan private key**, sampai mengubah *port default*. Selain itu saya juga ingin sedikit berbagi trik agar proses memanage server(s) menjadi lebih mudah dan simple.
Kali ini saya ingin berbagi trik yang sebenarnya sudah umum, untuk sedikit lebih memperketat akses SSH. Yaitu men-_disable_ akses SSH untuk _user_ `root`, menggunakan **public dan private key**, sampai mengubah _port default_. Selain itu saya juga ingin sedikit berbagi trik agar proses memanage server(s) menjadi lebih mudah dan simple.
Pada diskusi kali ini dibutuhkan (atau saya menggunakan) :
* Client PC : **Linux** dengan *desktop environment* **KDE** `4.8`.
* Server SSH (Remote PC) : Linux dengan IP `202.150.169.245`.
* Mengerti sedikit dasar Linux CLI seperti `chmod`, `ssh`, `groupadd`, `useradd`.
* Mampu menggunakan text editor seperti `vi`/`vim`/`nano`/`pico`, dll.
* dan setumpuk kesabaran yang ditumis dengan rasa keingintahuan (yang ini lupakan).
- Client PC : **Linux** dengan _desktop environment_ **KDE** `4.8`.
- Server SSH (Remote PC) : Linux dengan IP `202.150.169.245`.
- Mengerti sedikit dasar Linux CLI seperti `chmod`, `ssh`, `groupadd`, `useradd`.
- Mampu menggunakan text editor seperti `vi`/`vim`/`nano`/`pico`, dll.
- dan setumpuk kesabaran yang ditumis dengan rasa keingintahuan (yang ini lupakan).
## Disable Akses root Melalui SSH
`Root` *user* adalah user yang pasti ada pada sistem Unix/Unix-Like, jika kita tidak mendisable user tersebut, maka akan mempermudah pentester melakukan serangan bruteforce.
Sebelum mendisable akses `root`, tentu saja kita perlu membuat 1 user baru yang mempunyai hak untuk menggunakan *service* SSH dan masuk ke dalam list `sudoers`.
`Root` _user_ adalah user yang pasti ada pada sistem Unix/Unix-Like, jika kita tidak mendisable user tersebut, maka akan mempermudah pentester melakukan serangan bruteforce.
Sebelum mendisable akses `root`, tentu saja kita perlu membuat 1 user baru yang mempunyai hak untuk menggunakan _service_ SSH dan masuk ke dalam list `sudoers`.
1. Akses ssh server menggunakan _user_ `root` terlebih dahulu.
1. Akses ssh server menggunakan *user* `root` terlebih dahulu.
```bash
ssh root@202.150.169.245
```
2. setelah masuk server SSH, buat user dan *group* baru. (Silahkan lihat `man useradd` untuk lebih jelas)
2. setelah masuk server SSH, buat user dan _group_ baru. (Silahkan lihat `man useradd` untuk lebih jelas)
```bash
groupadd ditatompel
useradd -s /bin/bash -d /home/ditatompel -g ditatompel -G root -m ditatompel
```
3. Set password user tersebut dengan perintah `passwd ditatompel`.
![Create User](create-user.png#center)
4. Lalu tambahkan user `ditatompel` ke list `sudoers`. Edit file `/etc/sudoers` dan tambahkan permission untuk user baru tersebut:
```plain
ditatompel ALL=(ALL) ALL
```
5. Kemudian edit file `/etc/ssh/sshd_config` dan tambah / edit konfigurasi berikut :
```plain
PermitRootLogin no
AllowUsers ditatompel
```
6. Restart SSH *daemon*
6. Restart SSH _daemon_
```bash
service sshd restart #(Untuk CentOS dkk)
/etc/init.d/ssh restart #(untuk Debian)
@ -84,31 +81,35 @@ service sshd restart #(Untuk CentOS dkk)
> _**Note** : Setelah restart, pastikan akses SSH yang sedang berjalan / terkoneksi tidak putus / di close supaya kita masih memiliki akses dan dapat mengedit konfigurasi jika terjadi kesalahan._
7. Coba akses SSH server menggunakan user yang tadi baru saja kita buat, yaitu `ditatompel`.
```bash
ssh ditatompel@202.150.169.245
```
## Ubah Port Default SSH (Optional)
Mengubah port default SSH (`22`) dapat menghindari *bruteforcer ababail* yg cuma ambil script dari internet karena kebanyakan script *bruteforce* SSH defaultnya melakukan brute ke port `22`.
Mengubah port default SSH (`22`) dapat menghindari _bruteforcer ababail_ yg cuma ambil script dari internet karena kebanyakan script _bruteforce_ SSH defaultnya melakukan brute ke port `22`.
**NOTE** : Jika firewall server aktif, kita perlu membuka akses ke port yang baru, misalnya jika kita menggunakan `iptables`:
```bash
iptables -A INPUT -p tcp --dport 1337 -j ACCEPT
iptables save
service iptables restart
```
* Ingat, jangan menutup koneksi SSH awal yang sudah terhubung untuk menghindari hal2 yang tidak diinginkan.
- Ingat, jangan menutup koneksi SSH awal yang sudah terhubung untuk menghindari hal2 yang tidak diinginkan.
Kemudian, untuk mengubah port, edit file `/etc/ssh/sshd_config` dan tambah / edit konfigurasi berikut :
```plain
Port 1337
```
kemudian restart SSH daemon.
Seperti yang kita lihat, SSH daemon melakukan listen di port `1337`. Untuk memastikannya bisa menggunakan perintah `netstat`.
```bash
netstat -plnt
```
@ -116,15 +117,19 @@ netstat -plnt
Terakhir, selalu test lagi apakah server kita bisa diakses.
## Gunakan Public dan Private Key
1. Buat dulu *keypair* untuk SSH client dan SSH server dengan menggunakan `ssh-keygen`.
1. Buat dulu _keypair_ untuk SSH client dan SSH server dengan menggunakan `ssh-keygen`.
```bash
ssh-keygen -b 4048 -f serverLama-169-245 -t rsa -C "ditatompel@serverLama-169-245"
```
Maka ia akan membuat file bernama `serverLama-169-245` dan `serverLama-169-245.pub` dimana :
`serverLama-169-245` adalah **private key** kita, dan `serverLama-169-245.pub` adalah **public key** yang nantinya diletakan letakkan di server kita.
2. Pindahkan ke 2 file tersebut ke folder `~/.ssh` dan ubah file permissionnya menjadi `600`.
```bash
mv serverLama-169-245 serverLama-169-245.pub ~/.ssh/
find ~/.ssh/ -type f -exec chmod 600 {} +
@ -132,12 +137,13 @@ find ~/.ssh/ -type f -exec chmod 600 {} +
![SSH-keygen](sshkeygen.jpg#center)
3. Pada komputer server dengan user yang baru kita buat tadi (`ditatompel`) buat *hidden folder* `.ssh` pada *home dir*nya dan ubah folder permissionnya menjadi `700`.
3. Pada komputer server dengan user yang baru kita buat tadi (`ditatompel`) buat _hidden folder_ `.ssh` pada *home dir*nya dan ubah folder permissionnya menjadi `700`.
```bash
mkdir ~/.ssh; chmod 700 ~/.ssh
```
4. Copy **public key** yang tadi kita buat ke folder `~/.ssh` pada remote PC (*SSH Server*) dengan nama `authorized_keys` dan file permission `600`
4. Copy **public key** yang tadi kita buat ke folder `~/.ssh` pada remote PC (_SSH Server_) dengan nama `authorized_keys` dan file permission `600`
(untuk meng*copy file* tersebut bisa menggunakan `sftp` / `scp`) : Contoh :
@ -158,7 +164,9 @@ sftp> chmod 600 /home/ditatompel/.ssh/authorized_keys
```plain
PasswordAuthentication no
```
6. Restart SSH *daemon* dan coba lagi akses SSH server dengan menggunakan command :
6. Restart SSH _daemon_ dan coba lagi akses SSH server dengan menggunakan command :
```bash
ssh -i ~/.ssh/serverLama-169-245 -p 1337 ditatompel@202.150.169.245
```
@ -166,13 +174,15 @@ ssh -i ~/.ssh/serverLama-169-245 -p 1337 ditatompel@202.150.169.245
![SSH pass](ssh-pass.png#center)
## Memanage Server Menggunakan FISH Protocol
Ni bagian yang saya suka dan yang sebenernya pingin saya share, mungkin aja ada beberapa yang belum tau.
**FISH** (*Files transferred over Shell protocol*) adalah sebuah protokol jaringan yang menggunakan **Secure Shell (SSH)** atau **Remote Shell (RSH)** untuk mentransfer file antara komputer kita dan komputer server semudah membuka2 folder / mengedit file di komputer kita. Saya menggunakan **Dolphin** yang sudah menjadi bawaan **KDE**. Selain Dolphin, KDE user juga bisa menggunakan `Konqueror` untuk menggunakan protokol FISH. (Untuk **Gnome** - **Nautilus** saya kurang tahu, mungkin yang lain bisa menambahkan dimari)
**FISH** (_Files transferred over Shell protocol_) adalah sebuah protokol jaringan yang menggunakan **Secure Shell (SSH)** atau **Remote Shell (RSH)** untuk mentransfer file antara komputer kita dan komputer server semudah membuka2 folder / mengedit file di komputer kita. Saya menggunakan **Dolphin** yang sudah menjadi bawaan **KDE**. Selain Dolphin, KDE user juga bisa menggunakan `Konqueror` untuk menggunakan protokol FISH. (Untuk **Gnome** - **Nautilus** saya kurang tahu, mungkin yang lain bisa menambahkan dimari)
Caranya tinggal klik pada *breadcrumb* navigasi folder dan ketikan `{protokol}{user}@{server}:{port}/{folder}` kemudian tekan enter.
Caranya tinggal klik pada _breadcrumb_ navigasi folder dan ketikan `{protokol}{user}@{server}:{port}/{folder}` kemudian tekan enter.
misalnya :
```plain
fish://ditatompel@202.150.169.245:1337/var/www/path/to/folder/you/want/to/access/
```
@ -180,7 +190,8 @@ fish://ditatompel@202.150.169.245:1337/var/www/path/to/folder/you/want/to/access
![Fish protocol](fish.png#center)
setelah itu kita akan dipromot untuk memasukan password SSH kita. Tapi ada permasalahan yang dihadapi, protokol FISH pada Dolphin / Konqueror tidak secara langsung tahu jika kita menggunakan public dan private key untuk mengakses server.
Maka dari itu kita dapat memanfaatkan fitur **ssh config** (lokasinya ada di `~/.ssh/config` untuk konfigurasi per user, atau `/etc/ssh/sshd_config` untuk *system wide*). Untuk konfigurasi tiap user, biasanya belum terdapat file `~/.ssh/config`, maka dari itu kita perlu buat dulu file tersebut dengan menambahkan konfigurasi `IdentityFile` supaya program yang kita gunakan tau bahwa kita harus menggunakan **private key** SSH kita :
Maka dari itu kita dapat memanfaatkan fitur **ssh config** (lokasinya ada di `~/.ssh/config` untuk konfigurasi per user, atau `/etc/ssh/sshd_config` untuk _system wide_). Untuk konfigurasi tiap user, biasanya belum terdapat file `~/.ssh/config`, maka dari itu kita perlu buat dulu file tersebut dengan menambahkan konfigurasi `IdentityFile` supaya program yang kita gunakan tau bahwa kita harus menggunakan **private key** SSH kita :
```plain
IdentityFile /home/dit/.ssh/serverlama-169-245
```
@ -188,9 +199,11 @@ IdentityFile /home/dit/.ssh/serverlama-169-245
Lalu bagaimana jika kita memiliki banyak server dan banyak **private key** untuk masing2 server? Yuk mari kita baca lanjutannya.
## Trik Konfigurasi ~/.ssh/config
Untuk para system administrator yang ngurusin banyak server yang mengharuskan tiap server memiliki akses login yang berbeda,pasti bakal susah mengingat port, password, user, dll. Belum lagi untuk inget akses aplikasi yang ada pada server2 tersebut. Maka dari itu kita bisa manfaatin fitur ssh config yang memungkinkan kita mengakses shell hanya dengan mengingat IP server dan passpharsenya saja.
Berikut ini contoh konfigurasi SSH untuk identitas multi server :
```plain
Host 202.150.169.245
Hostname 202.150.169.245
@ -220,12 +233,15 @@ Dengan begitu kita dapat menggunakan command SSH hanya dengan :
```bash
ssh 202.150.169.245
```
atau dengan menambahkannya ke folder *network* dengan mengakses **Network** > **Add Network Folder** kemudian isi informasi remote PC (SSH server) yang dibutuhkan.
atau dengan menambahkannya ke folder _network_ dengan mengakses **Network** > **Add Network Folder** kemudian isi informasi remote PC (SSH server) yang dibutuhkan.
![Fish Protocol](fish-protocol1.png#center)
Mungkin sekian dulu dari saya, silahkan bagi teman2 yang ingin menambahkan / mengkoreksi, saya akan sangat menghargai.
Referensi:
* [http://linux.die.net/man/5/ssh_config](http://linux.die.net/man/5/ssh_config).
* [http://kb.mediatemple.net/questions/1625/Using+an+SSH+Config+File](http://kb.mediatemple.net/questions/1625/Using+an+SSH+Config+File).
- [http://linux.die.net/man/5/ssh_config](http://linux.die.net/man/5/ssh_config).
- [http://kb.mediatemple.net/questions/1625/Using+an+SSH+Config+File](http://kb.mediatemple.net/questions/1625/Using+an+SSH+Config+File).