歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> Linux內核 >> Linux內核即時入侵檢測安全增強-後語

Linux內核即時入侵檢測安全增強-後語

日期:2017/2/27 14:14:40   编辑:Linux內核

五.後語 冰塊    這篇文章的整個補丁代碼我沒有找到,可能是因為這個人關於這個東西的開發已經放棄了吧。呵呵,如果誰能找到。請告訴大家,原來他們提供的url是: www.iac.rm.cnr.it/tecno/software/indexs.Html    這篇文章和以前發表的LIDS文章都是關於內核模塊級的系統安全的。這篇主要是對緩沖區溢出的漏洞進行防范。雖然沒有代碼的原形,但是它給出的幾個代碼事例能夠幫助我們更好的理解Linux的內核模塊如何截獲系統調用,或是如何對進程運行權分析的實現。對於我們理解Linux和其他操作系統的內核有一定的幫助。希望大家能通過這篇文章能多提高點理解認識,對以後自己開發系統安全軟件能有一定理論上的幫助作用。下面是check_rootproc函數的代碼:    /*check_rootproc.c*/    int check_rootproc(strUCt inode *ino){    int cont=0,iproc=0,error=0;    suidp_t * suidproc;    efile_t f;    suidp_t p;    if ((IS_SETUID_TO_ROOT(current))(IS_A_ROOT_DAEMON(current))) {    for (;cont    if ((permitted.lst[cont].efid.device==ino->i_dev&&    permitted.lst[cont].efid.inode==ino->i_ino)){    if ((permitted.lst[cont].efid.size==ino->i_size)&&    permitted.lst[cont].efid.modif==ino->i_mtime)){    suidproc=permitted.lst[cont].processes;    for(iproc=1;iproc<=permitted.lst[cont].proc_nr;iproc++){    if(!strcmp(suidproc->suidp_id.comm,current->comm)){    suidproc->suidp_id.count++;    return PSA;    }    if (iproc    suidproc=suidproc->next;    }    }    }else{    error=EFNA;    goto file_exe_unauthorized;    }    }    }    error=EXENA;/*EXE is not in the database*/    goto file_exe_unauthorized;    }    return PNS;/*the process is not setuid to root or root daemon*/    file_exe_unauthorized:    f.efid.device=ino->i_dev;


   f.efid.inode=ino->i_ino;    f.efid.size=ino->i_size;    f.efid.modif=ino->i_mtime;    strncpy(p.suidp_id.comm,current->comm,    sizeof(p.suidp_id.comm));    p.suidp_id.count=1;    do{    while(writer_pid!=0){    cli();/*interrupt disabled*/    if (writer_pid!=0)    interruptible_sleep_on(&pid_queue);    sti();    }    }    while(!atomic_Access(&writer_pid,current->pid));    /*start of critical section*/    do_setuid_put(&(f.efid),&(p.suidp_id),FAILURE);    writer_pid=0;/*end of critical section*/    atomic_access(&writer_pid,0);/*release of the lock*/    return error;    }





Copyright © Linux教程網 All Rights Reserved