memahami privilege escalation ansible featured image

Memahami Privilege Escalation di Ansible Playbooks

Beberapa task di Ansible memerlukan perlakuan khusus atau special privileges agar dapat sukses mengeksekusi Ansible Host kamu, hal ini sama seperti perintah biasa yang dieksekusi di terminal. Privilege escalation di Ansible Playbooks perlu kamu pelajari ketika melakukan eksekusi task. Yuk, pahami privilege escalation di Ansible Playbooks dari pembahasan berikut!

Apa Itu Ansible?

logo ansible

Ansible adalah provisioning tool bersifat open source yang dikembangkan oleh Red Hat. Alat ini menjadi salah satu jalan termudah untuk melakukan otomatisasi pada server.

Keberadaan arsitektur yang tidak memerlukan software khusus untuk diinstal pada server/node membuat Ansible bisa kamu gunakan sebagai alternatif yang bagus untuk otomatisasi server. Selain itu, Ansible juga menggunakan SSH untuk mengeksekusi automation task dan file YAML (Yet Another Markup Language) yang bisa dibaca manusia untuk menentukan provisioning details.

Penting untuk memahami cara kerja privilege escalation di Ansible agar kamu dapat melakukan eksekusi task dengan permission yang sesuai. Secara default, task akan berjalan sebagai connecting user, mungkin root atau user biasa dengan akses SSH ke Ansible Hosts atau remote server yang ada dalam file inventory.

Memahami Privilege Escalation di Ansible Playbooks

Sebelum memulai pemahaman privilege escalation d Ansible Playbooks, kamu perlu mempersiapkan beberapa hal berikut:

  1. Memiliki 2 VPS yang aktif dengan OS Ubuntu 20.04.
  2. Memiliki akses root.
  3. Satu VPS Ansible Control Node yang sudah terinstal Ansible.

Dua VPS yang perlu disiapkan untuk:

  • Satu Ansible Control Node: Ansible Control Node yang akan digunakan untuk connect dan control ke Ansible Host melalui SSH.
  • Satu Ansible Hosts: Ansible Host nantinya akan dikontrol oleh Ansible Control Node yang sudah dikonfigurasi untuk otomatisasi. 

Berikut ini adalah beberapa langkah utama yang akan kita lakukan:

  • Update Server
  • Create User
  • Create Directory
  • Create Inventory
  • Ubah File Sudoers
  • Create Playbook File
  • Run Playbook

Kemudian, simak penjelasannya sebagai berikut.

Update Server

Login sebagai root dan update package yang ada pada server agar up-to-date.

$ apt-get update -y
$ apt-get upgrade -y
$ reboot

 

Create User

Kamu memerlukan user untuk keperluan privilege escalation, ikuti instruksi di bawah ini untuk membuat user baru. Tapi, jika sudah memiliki user, kamu bisa melewati langkah ini. Username “raka” bisa kamu ubah sesuai nama user yang kamu inginkan.

$ sudo adduser raka
Adding user `raka' ...
Adding new group `raka' (1000) ...
Adding new user `raka' (1000) with group `raka' ...
Creating home directory `/home/raka' ...
Copying files from `/etc/skel' ...
New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for raka
Enter the new value, or press ENTER for the default
Full Name []: Raka
Room Number []: 
Work Phone []: 
Home Phone []: 
Other []: 
Is the information correct? [Y/n] y

 

Kemudian add user-nya ke Sudo Group.

$ usermod -aG sudo raka

 

Create Directory

Buat direktori ansible-practice.

$ cd ~
$ mkdir ansible-practice

 

Create Inventory

Inventory di sini adalah list dari IP server yang akan dijadikan sebagai Ansible Host atau remote host.

$ cd ansible-practice
$ nano inventory

103.xxx.xxx.201

 

Lalu simpan dan keluar. Jangan lupa untuk mengubah alamat IP di atas menjadi alamat IP server yang kamu gunakan.

Baca Juga: IP Address: Pengertian dan Jenis-Jenis Alamat IP

Ubah File Sudoers

Agar user dapat melakukan perintah ansible-playbook dengan privilege escalation, kamu perlu menambahkan user di dalam file sudoers. Penambahannya ini dilakukan pada Ansible Hosts atau remote server. Di sini kami menggunakan 103.xxx.xxx.201.

$ nano /etc/sudoers

 

Tambahkan script di bawah ini, tepat di line “# User privilege specification”, di bawah root.

raka ALL=(ALL)  ALL

 

Kemudian simpan dan keluar. Jangan lupa untuk mengubah username sesuai dengan nama yang kamu gunakan, contohnya di artikel ini adalah “raka”.

 

Create Playbook File 

Buat file playbook baru bernama playbook-pe01.yml di dalam direktori ansible-practice.

$ cd ~/ansible-practice/
$ nano playbook-pe01.yml

 

Salin dan tempel script di bawah ini.

---
- hosts: all
  become: yes
  vars:
    user: "{{ ansible_env.USER }}"
  tasks:
    - name: Create root file
      file:
        path: /tmp/my_file_root
        state: touch

    - name: Create user file
      become_user: "{{ user }}"
      file:
        path: /tmp/my_file_{{ user }}
        state: touch

 

Kemudian simpan lalu keluar.

 

Run Playbook

Ansible_env.USER berisi username dari connecting user yang dapat ditentukan pada waktu eksekusi saat menjalankan perintah ansible-playbook dengan opsi -u, seperti di bawah ini.

$ ansible-playbook -i inventory playbook-pe01.yml -u raka -K

 

Maka output-nya akan seperti di bawah ini.

BECOME password: 

PLAY [all] *********************************************************************

TASK [Gathering Facts] *********************************************************
Enter passphrase for key '/root/.ssh/id_rsa': 
ok: [103.xxx.xxx.201]

TASK [Create root file] ********************************************************
changed: [103.xxx.xxx.201]

TASK [Create user file] ********************************************************
changed: [103.xxx.xxx.201]

PLAY RECAP *********************************************************************
103.xxx.xxx.201            : ok=3    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

 

Jika sudah selesai prosesnya, kamu bisa cek dengan konek ke SSH Ansible Hosts atau remote server, kemudian ke direktori /tmp

$ ssh [email protected]
$ ls -la /tmp/my_file_*
-rw-r--r-- 1 raka sudo 0 Jun 24 08:20 /tmp/my_file_raka
-rw-r--r-- 1 root root 0 Jun 24 08:19 /tmp/my_file_root

Baca Juga: SSH 101: Panduan Dasar

Simpulan

Jika kamu mengikuti instruksi di atas dengan tepat, maka seharusnya tak ada masalah berarti dan kamu telah memahami tentang privilege escalation di Ansible Playbooks.

Playbooks merupakan salah satu bagian dari Ansible inventory yang berguna untuk melakukan otomatisasi konfigurasi server dalam Ansible Hosts. Jika saat ini kamu belum memiliki server atau ingin menambah server baru, pastikan kamu menggunakan cloud VPS dari Dewaweb agar website-mu aman, cepat, dan selalu bisa diandalkan.

Demikian artikel cara memahami privilege escalation Ansible Playbooks ini, jangan sungkan untuk meninggalkan ide-ide topik yang ingin kamu baca di blog Dewaweb. Semoga artikel ini membantu.