Skip to main content

Command Palette

Search for a command to run...

Reverse Proxy: Benteng Digital yang Membuat Website Anda Tak Terlihat oleh Peretas.

Updated
4 min read
Reverse Proxy: Benteng Digital yang Membuat Website Anda Tak Terlihat oleh Peretas.

Tak terlihat oleh peretas? kayak cuman clickbait wkkwkwk tapi benaran loh bisa menyembunyikan website menggunakan reverse proxy, kan biasanya reverse proxy digunakan untuk load balancing atau untuk agar TLS nya gak buat berkali kali lagi, Nah dari itu sebenarnya reverse proxy jadi garda terdepan setelah DNS untuk membuat domain kita memiliki website ataupun service (TCP/UDP or any). Oh ya mungkin yang merasa jaog atau udah tau kalo mau tetep baca gpp sii tapi kalo merasa buang-buang waktu yaudah sih stop baca wkkwkwk.

Pertama tama di sini jangan lupa set DNS A record subdomainya pakai * atau bisa di bilang *.domain.com atau disebut wildcard dan pointernya ke IP public server reverse proxie yang mau di setup. BTW bisa juga *.subdomain.domain.com

Mungkin aku mau nunjukin maksudnya apa, jadi kan kalau mau membuat website seperti page admin,soal CTF yang seharusnya di rahasia in tanpa terkena recon subdomain finder atau menggunakan https://crt.sh/ yang dapat di lihat setiap pembuatan TLS akan muncul. nah jadi sehubung web rahasia kita gak mau bocor bisa pakai reverse proxy untuk menjadi database subdomainya, dan cara kerjanya tetep yang utama di DNS servernya jadi kalo ada web emang mau di publish bisa setnya di DNS aja udah cukup. Nah yang uniknya reverse proxy itu, kalo DNS kan kasih domain name sama IP nya dulu kalo reverse proxy langsung kasih response HTTP / HTTPS.

Kalo gitu ketimbang basa basi, Disini saya menggunakan DNS Cloudflare dan itu gratis plan mungkin ada proses tambahan karena saya berencana untuk menambahkan proxied nya menyala mungkin yang tidak menyalakan proxied di Cloudflare DNS / menggunakan DNS lain / Cloudflare Plan berbayar mungkin tidak perlu. Mungkin disini aku buat api key Cloudflare dengan url Cloudflare Dashboard | Manage Your Account dan juga minus nya kalau proxied tidak bisa TCP,UDP,HTPP,SSH dkk hanya bisa HTTPS selain Plan berbayar mungkin beda lagi.

Create Token → Edit zone DNS (Template) → Permission

  • Zone → DNS → Edit

  • Zone → Zone → Read

Lalu untuk Zone Resources karena untuk 1 domain aja jadi aku set Include → spesifice zone → pilih domain, lalu continue dan create token

lalu buat file bernama cloudflare.ini gak harus itu namanya bisa sii taruhnya pun bisa mana aja juga kalo aku taruh home user folder. lalu isinya

dns_cloudflare_api_token = TOKEN_YANG_DIKASIH

terus set permission filenya

chmod 600 ~/cloudflare.ini

terus install certbot dengan cloudflare certbot

sudo apt update
sudo apt install certbot python3-certbot-dns-cloudflare

lalu kirim command “jangan lupa di ganti directory api token sama domainnya dengan yang kalian buat / punya”

sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials ~/cloudflare.ini \
  -d "*.domain.com" -d "domain.com"
sudo certbot renew --dry-run

nah setelah itu untuk reverse proxynya aku pake NGINX bebas sii preferensi masing masing

sudo apt install nginx

setelah itu buat file di “/etc/nginx/sites-available” mungkin aku buat nama filenya “ajojing” rubah sesuai yang kalian ingin buat, rubah server_name yang ingin di buat dan ganti lokasi SSL yang udah di buat oleh certbot

server {
    listen 80;
    server_name ajojing.domain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name ajojing.domain.com;

    ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;

    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    location / {
        proxy_pass http://127.0.0.1:4000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Setelah itu buat symlink ke site-enabled folder jangan lupa ganti nama ajojing dengan file yang kalian buat

sudo ln -s /etc/nginx/sites-available/ajojing /etc/nginx/sites-enabled/

setelah itu

#cek config aman apa engga
sudo nginx -t

jika aman tidak ada error maka lanjut

sudo systemctl reload nginx

dan yah seharusnya website yang kalian reverse proxy akan muncul di domain yang akan kalian buat contoh punya si penulis itu frostfire.id maka keluarnya di TLS full *.frostfire.id padahal ada page rahasia https://secret.frostfire.id tapi tidak muncul di subdomain finder dan juga certificate history

EXTRA

coba deh buat versi * atau wildcardnya buat file lagi di site-available ku namain “fake”

server {
    listen 80;
    server_name domain.com *.domain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name domain.com *.domain.com;

    ssl_certificate     /etc/letsencrypt/live/domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    # Always return a blank 200 OK page for any request
    location / {
        default_type text/plain;
        return 200 'Ayyo what are you doing here 💀';
    }
}

terus

sudo ln -s /etc/nginx/sites-available/fake /etc/nginx/sites-enabled/
sudo systemctl reload nginx

jadi kalo mereka nyoba brutefore subdomain seperti 123.domain.com abcd.domain.com dst, bakalan response 200 semua wkwkwk

buat pagenya bebas si di customize html,css atau framework laravel,nextjs sebebas bebas kalian dah

EXTRA 2

buat file /etc/nginx/snippets/dot_blocker.conf

location ~ /\.(?!well-known).* {
    default_type text/plain;
    return 200 'Ayyo what are you doing here 💀';
    access_log off;
    log_not_found off;
}

lalu di dalam setiap file di folder site-available kalo mau aman dari request langsung .env,.git, dst yang awalnya dot dot an selain .well-known untuk TLS. dan masukkan di server { yang listen 443 TLS

server {
include /etc/nginx/snippets/dot_blocker.conf;

contoh

server {
    listen 443 ssl http2;
    server_name ajojing.domain.com;

    include /etc/nginx/snippets/dot_blocker.conf;

    ssl_certificate /etc/letsencrypt/live/ajojing.domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ajojing.domain.com/privkey.pem;
....

lalu

sudo systemctl reload nginx

maka akan keluar

bebas si di customize pagenya html,css atau framework laravel,nextjs sebebas bebas kalian dah

J
joe9mo ago

Maaf si penulis baru pertama kali buat artikel jadi kata katanya banyak yang acak acak an