Skip to main content
  1. Posts/

Shell Fork Bomb Protection

·2 mins·
Table of Contents

Fork bomb adalah jenis serangan denial-of-service (DoS) yang membuat proses terus bertambah tanpa batas. Akibatnya, server bisa menjadi sangat lambat, tidak responsif, atau bahkan crash. Kondisi ini juga dapat terjadi karena penulisan kode yang buruk, kesalahan konfigurasi, maupun aktivitas berbahaya (malicious).

Selain fork bomb, aktivitas intensif seperti script mining cryptocurrency juga dapat menyebabkan server overload dan akhirnya crash.

Mengaktifkan Shell Fork Bomb Protection
#

Untuk mencegah penyalahgunaan terminal, kita dapat membatasi jumlah proses dan resource yang dapat dibuat oleh setiap user. Cara ini membantu menjaga kestabilan sistem apabila terjadi fork bomb atau pemakaian resource berlebihan.

Edit file berikut:

/etc/bashrc
/etc/profile

Lalu tambahkan script berikut pada baris paling bawah:

# start_shell_fork

# Default limits (lebih longgar, untuk admin)
ulimit -n 4096 -u 14335 -m unlimited -d unlimited -s 8192 -c 1000000 -v unlimited 2>/dev/null

LIMITUSER=$USER
if [ -e "/usr/bin/whoami" ]; then
    LIMITUSER=$(/usr/bin/whoami)
fi

# Terapkan limit ketat hanya untuk user non-root dan bukan anggota wheel/sudo
if [ "$LIMITUSER" != "root" ] &&
    ! id -Gn | grep -qsP '(^| )(wheel|sudo)( |$)' &&
    [ "$(id -u)" -ge "$( (grep -s '^UID_MIN' /etc/login.defs || echo 'x 500') | awk '{print $2}')" ]
then
    # Limit untuk user biasa
    ulimit -n 100 -u 35 -m 200000 -d 200000 -s 8192 -c 200000 -v unlimited 2>/dev/null
else
    # Limit untuk admin / root
    ulimit -n 4096 -u 14335 -m unlimited -d unlimited -s 8192 -c 1000000 -v unlimited 2>/dev/null
fi

# end_shell_fork

Penjelasan Limit untuk User Biasa:

Parameter Fungsi Nilai
-n Maksimal file terbuka 100
-u Maksimal jumlah proses per user 35
-m Batas memori resident (RAM) 200.000
-d Batas ukuran data segment 200.000
-s Batas ukuran stack 8.192
-c Maksimal ukuran core file 200.000
-v Batas memori virtual unlimited

Setelah konfigurasi selesai, reboot server agar semua limit diterapkan ke seluruh user.

Membatasi Akses Compiler
#

Anda juga dapat membatasi penggunaan compiler (misalnya gcc) hanya untuk group tertentu. Contohnya:

groupadd compiler
chmod 750 /bin/gcc
chown root:compiler /bin/gcc

Dengan cara ini, hanya user dalam group compiler yang dapat menjalankan perintah gcc.

Related