Membuat Isolated Server Dalam Container Docker Sebagai Tindakan Preventif Serangan Siber


Selamat datang dalam tutorial Docker ini! Sebelum kita mulai merambah ke dunia kontainerisasi, mari kita bahas mengapa Docker dapat menjadi pilihan yang lebih aman daripada tidak menggunakan kontainer. Docker memberikan lapisan isolasi tambahan, yang membatasi akses aplikasi dalam kontainer dan meminimalkan potensi dampak jika terjadi peretasan. Dengan menggunakan Docker, kita dapat mengelola dependensi, mengisolasi lingkungan, dan mengimplementasikan prinsip-prinsip keamanan yang memperkuat aplikasi kita. Mari kita jelajahi keunggulan keamanan Docker dan mengapa ini menjadi pilihan cerdas untuk pengelolaan aplikasi modern

  • Instal Docker dengan Command

sudo apt update

sudo apt install docker.io


  • Kemudian Reboot server dengan command

Reboot


  • Pastikan Docker diaktifkan:

Pastikan layanan Docker diaktifkan dan berjalan. Anda dapat menjalankan perintah berikut:

sudo systemctl start docker

sudo systemctl enable docker


  • Buat file index.php dan filelain.php taruh pada directory /var/www/html/ dengan isi

<?php

$id = "Hello, Docker!";

echo $id;

?>

  •  Buat file dengan nama Dockerfile (tanpa ekstensi) taruh pada directory /var/www/html/ dan isinya seperti berikut:

# Gunakan image PHP versi terbaru

FROM php:latest

# Pindahkan file index.php ke dalam container di direktori /var/www/html/

COPY index.php /var/www/html/

COPY filelain.php /var/www/html/

# Expose port 80 untuk akses web

EXPOSE 80

# Untuk menjalankan user agar tidak root 

RUN useradd -ms /bin/bash appuser

USER appuser

# Perintah untuk menjalankan server web saat container dijalankan

CMD ["php", "-S", "0.0.0.0:80", "-t", "/var/www/html/"]

  •  Buka terminal, pindah ke direktori di mana file Dockerfile dan index.php berada, lalu jalankan perintah berikut untuk membangun Docker image:

docker build -t my-php-app .
  • Setelah selesai membangun image, jalankan container dengan perintah:

docker run -p 8080:80 my-php-app


  • Jika anda ingin membuat duplikasi pada beberapa web dengan port yang berbeda anda bisa membuat file docker-compose.yml berisi

version: '3'

services:

  web:

    image: my-php-app

    ports:

      - "8081:80"

    volumes:

      - ./uploads_8081:/var/www/html/uploads


  web2:

    image: my-php-app

    ports:

      - "8082:80"

    volumes:

      - ./uploads_8082:/var/www/html/uploads


  web3:

    image: my-php-app

    ports:

      - "8083:80"

    volumes:

      - ./uploads_8083:/var/www/html/uploads


  web4:

    image: my-php-app

    ports:

      - "8084:80"

    volumes:

      - ./uploads_8084:/var/www/html/uploads


  web5:

    image: my-php-app

    ports:

      - "8085:80"

    volumes:

      - ./uploads_8085:/var/www/html/uploads


  • kemudian run dengan command

docker-compose up #untuk mematikan docker stop $(docker ps -q)

  • setelah itu silahkan check http://ip:8085/
  • kemudian pasang domain (disini saya set A Record Ke IP saya)
  • Agar visitor mendapatkan port yang berbeda beda set configurasi nginx pada file /etc/nginx/sites-available/load-balancer

upstream myapp {

  least_conn;

  server localhost:8081;

  server localhost:8082;

  server localhost:8083;

  server localhost:8084;

  server localhost:8085;

}


server {

  listen 80;

  server_name your-domain.com;


  location / {

    proxy_pass http://myapp;

  }

}

  • setelah itu aktifkan dengan command 
sudo ln -s /etc/nginx/sites-available/load-balancer /etc/nginx/sites-enabled/
sudo nginx -t  # Memastikan konfigurasi tidak ada kesalahan
sudo systemctl restart nginx


Note: Jika kalian ada error kalian bisa melakukan unistall docker yang telah kalian install sebelumnya.. dan menginstall kembali dengan command diatas 


Catatan: Hanya anggota dari blog ini yang dapat mengirim komentar.