Linux核心即時入侵檢測安全增強-後語(轉)
Linux核心即時入侵檢測安全增強-後語(轉)[@more@]五.後語
冰塊
這篇文章的整個補丁程式碼我沒有找到,可能是因為這個人關於這個東西的開發已經放棄了吧。呵呵,如果誰能找到。請告訴大家,原來他們提供的url是:
這篇文章和以前發表的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;
}
冰塊
這篇文章的整個補丁程式碼我沒有找到,可能是因為這個人關於這個東西的開發已經放棄了吧。呵呵,如果誰能找到。請告訴大家,原來他們提供的url是:
這篇文章和以前發表的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;
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-958312/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux核心即時入侵檢測安全增強-介紹(轉)Linux
- Linux核心即時入侵檢測安全增強-系統呼叫執行步驟(轉)Linux
- Linux核心即時入侵檢測安全增強-防止緩衝區溢位的核心補丁(轉)Linux
- Linux核心入侵檢測安全增強實現(下)(轉)Linux
- Linux核心入侵檢測安全增強實現(上)(轉)Linux
- Linux入侵檢測(轉)Linux
- linux 核心安全增強 — stack canaryLinux
- 入侵檢測術語全接觸(轉)
- linux 核心安全增強(一)— stack canaryLinux
- *NIX入侵檢測方法(轉)
- 如何增強 Linux 核心中的訪問控制安全Linux
- Linux入侵檢測基礎Linux
- Linux後門入侵檢測工具,附bash漏洞解決方法Linux
- 用LIDS增強Linux系統安全(轉)Linux
- 網路安全筆記-入侵檢測系統筆記
- Linux後門入侵檢測工具,附最新bash漏洞解決方法Linux
- 無線入侵檢測讓無線安全檢測變得簡單
- Linux後門入侵檢測工具,附bash漏洞最終解決方法Linux
- linux檢測系統是否被入侵(上)Linux
- 防火牆入侵於檢測——————4、思科安全裝置防火牆
- 入侵檢測系統分析及其在Linux下的實現(轉)Linux
- 入侵檢測工具Watcher(含原始碼) (轉)原始碼
- Linux中如何檢測系統是否被入侵Linux
- 檢測Unix是否被入侵最快捷的方法(轉)
- SNORT入侵檢測系統
- Snort 入侵檢測系統
- 6.20入侵檢測排查
- 防火牆入侵於檢測——————2、思科安全技術和特性防火牆
- Linux 上搭建 Snort+BASE 入侵檢測系統Linux
- CS後門原始碼特徵分析與IDS入侵檢測原始碼特徵
- 開源的IDS(入侵檢測系統)-- Snort (轉)
- Freebsd構建小型的入侵檢測系統(轉)
- 在 Go 語言中增強 Cookie 的安全性GoCookie
- 無線入侵檢測系統
- 入侵檢測技術基礎
- Linux入侵監測系統LIDS原理(轉)Linux
- 實驗室環境下測試千兆入侵檢測系統(轉)
- Java Web中的入侵檢測及簡單實現(轉)JavaWeb