On Mon, 21 Dec 1998, carlos wrote:

> > Misalnya saya login sbg user biasa di Linux, terus saya jalanin
> > program-program yang bikin hang tsb...apa trus Linux Boxnya HANG TOTAL,
> > atau cuman untuk user itu. Kalau cuman user itu yg hang gak pa-pa...lha
> > kalo semuanya ikutan hang itu baru masalah :(....
> 
secara umum, seperti yang lain sudah bilang, kalau yang terkena serangan
itu user space, ya tetap lancar. cuma user bisa saja melakukan kegiatan
yang efeknya kernel space, NAH ini yang menyebabkan hang. tapi jelas
dengan kernel linux yang berkembang terus setiap pekan, kernel linux akan
makin mapan.

> kalau packet bombing,
>
nah, ini kan kenanya kernel space.

> si linux langsung hang, 
> sedang di bsdi mesinnya masih bisa jalan dengan baik, 
> tapi gak bisa ditelnet.
>
kalau nggak salah di linux versi sekarang sudah beres, atau belum juga ?
maklum belum pernah nge-test.

> Kalau forking bomb, baik linux dan bsdi langsung hang ..
> 
kalau user biasa, bukankah bisa dicegah dengan ulimit / getrlimit, ini
pertanyaan saya dalam hati. dan man ulimit di linux benar - benar
mengecewakan, belum di-update manpage-nya sejak kernel versi 1.2.4, saat
masih dibilang unimplemented !! :-)
setelah menelusuri isi /usr/include, dan saya telusuri source-code
shadow-package, saya agak optimis tampaknya di kernel v2.0.x yang saya
pakai sudah diimplement, apalagi shadow-package dengan /etc/limits-nya
harus pakai ini, so tinggal di coba:

di-artikel lain:

From: [EMAIL PROTECTED] (carlos)

mau bikin linux (O/S lain) hang mudah koq, 
kirim aja packet generator/bomber dari host lain 
misalnya 1000 packet/detik :-)

        -> ini belum pernah saya coba, males buat atau nyarinya :-)

atau forking bomb (process fork, malloc() , man ulimit ) :--)
( perl -e "while(1) {fork;}" )

        -> nah kalau ini, kebetulan saya sedang utak - atik /etc/limits
                dari package shadow, sudah coba manual, tapi dengan adanya
                issue HANG ini, jadi rajinin dikit membuat script yang
                cuma merapikan tulisannya carlos :-) di attach di atas
                ternyata /etc/limits di linux berfungsi dengan baik
                proses terus mem-fork, namun jumlah anak tetap nggak
                nambah kalau sudah sampai limit-nya (di situ 27),
                efeknya cuma mau ps agak lama saja.
                (program masih buggy, maunya kalau sudah gagal fork,
                program berhenti, yang bisa benerin tulung :-)

di artikel lain lagi:

From: [EMAIL PROTECTED] ("Niko D. Barli")

PERINGATAN : saya nggak tanggung jawab atas kerusakan yang mungkin
disebabkan oleh program di bawah ini (saya sendiri belum nyoba :) ).
Kalo mau nyoba, tanggung jawab sendiri. Don't try if you don't know
what the program is really doing .... Ini mungkin tergolong kriteria
"program jahil".

#include <malloc.h>
int main(){
  while(1){
    malloc(1000000);
  }
}

        -> terus sudah kepalang basah, ya saya teruskan mencoba malloc
                karena toh di /etc/limits selain batasan jumlah proses
                juga ada batasan DATA yang saya terjemahkan tampaknya
                ini berkaitan dengan alokasi heap-memory, so saya coba
                ternyata buat program C yang cuma merapihkan dikit
                program bung Niko :-) di attach di atas
                setelah di make, dijalanin, ternyata masih jalan baik,
                setelah malloc 74 kali, akhirnya keluar keluar
                "can't malloc()" yang diharapkan.

So,
buat yang menggunakan linux untuk server dengan shell account,
/etc/limits-nya shadow package termasuk perlu di-eksplorasi, selain
/etc/login.access dan /etc/porttime :-)
#!/usr/bin/perl
#

$i = 0;
while (1) {
        $retval = fork();
        $errcode = $!;
        if ($retval == -1) {
                printf(STDERR "can't fork()\n");
                exit(1);
        }
        elsif ($retval == 0) {
                printf(STDOUT "child: $i\n");
        }
        else {
                printf(STDOUT "parent: $i\n");
        }
        $i++;
}
/*
 * junkmalloc.c
 */

#include<stdio.h>
#include<malloc.h>

#define SATUMB 1048576

void main() {
        int i;
        void *retval;

        i = 0;
        while (1) {
                retval = malloc(SATUMB);
                if (retval == NULL) {
                        fprintf(stderr, "can't malloc()\n");
                        exit(1);
                }
                else {
                        fprintf(stdout, "malloc(): %d\n", i);
                        i++;
                }
        }
}
______________________________________________________________________
Utk berhenti langganan kirim email ke [EMAIL PROTECTED] 
Sudah cari di arsip? http://www.linux.or.id/milis.php3#arsip-id-linux
Utk info netiket, kirim email kosong ke [EMAIL PROTECTED]

Kirim email ke