新聞中心
在當(dāng)今信息技術(shù)高度發(fā)達(dá)的時(shí)代,安全問(wèn)題顯得尤為重要,安全的門禁系統(tǒng)也成為各種場(chǎng)所必不可少的設(shè)備之一。隨著Linux操作系統(tǒng)的廣泛應(yīng)用,越來(lái)越多的門禁系統(tǒng)開始選用Linux作為核心操作系統(tǒng),本文將詳細(xì)介紹Linux門禁安全措施,為您帶來(lái)全面的門禁安全解決方案。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比猇亭網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式猇亭網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋猇亭地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴。
一、Linux門禁系統(tǒng)的安全威脅
任何門禁系統(tǒng)都有其自身的安全威脅,對(duì)于運(yùn)行Linux操作系統(tǒng)的門禁系統(tǒng)來(lái)說(shuō)更是如此。以下是Linux門禁系統(tǒng)可能面臨的安全威脅:
1. 遠(yuǎn)程攻擊:攻擊者可以通過(guò)網(wǎng)絡(luò)對(duì)門禁系統(tǒng)進(jìn)行攻擊,比如通過(guò)網(wǎng)絡(luò)病毒、木馬、黑客攻擊等方式入侵系統(tǒng),從而實(shí)現(xiàn)非法的門禁控制或信息竊取等活動(dòng)。
2. 物理攻擊:攻擊者可以通過(guò)物理手段破壞門禁系統(tǒng),比如通過(guò)砸、損壞、撬門等手段進(jìn)入受保護(hù)區(qū)域,篡改門禁系統(tǒng)數(shù)據(jù)、改變門禁設(shè)置等。
3. 存儲(chǔ)攻擊:攻擊者可以通過(guò)存儲(chǔ)攻擊修改系統(tǒng)文件,比如篡改運(yùn)行腳本、修改記錄文件等。
以上安全威脅為L(zhǎng)inux門禁系統(tǒng)帶來(lái)了安全隱患,需要針對(duì)這些威脅采取措施,以保障門禁系統(tǒng)的安全穩(wěn)定運(yùn)行。
二、安全措施
1. 防止遠(yuǎn)程攻擊
(a) 安裝防病毒軟件:在Linux門禁系統(tǒng)上安裝防病毒軟件可以有效預(yù)防病毒和木馬攻擊,保障系統(tǒng)的安全性。
(b) 配置防火墻:配置Linux系統(tǒng)的防火墻可以防范黑客攻擊、網(wǎng)絡(luò)攻擊等,保證門禁系統(tǒng)的通信安全。
(c) 密碼強(qiáng)度管理:在門禁系統(tǒng)中,設(shè)置足夠復(fù)雜、難以破解的口令、用戶名,以提高門禁系統(tǒng)防護(hù)能力,防止非法用戶的入侵。
(d) 定期備份:通過(guò)定期進(jìn)行備份或映像,可以快速地恢復(fù)系統(tǒng)到原始狀態(tài),防止因遠(yuǎn)程攻擊導(dǎo)致的數(shù)據(jù)丟失或損壞。
2. 防止物理攻擊
(a) 控制物理訪問(wèn)權(quán)限:在門禁系統(tǒng)的實(shí)施過(guò)程中,設(shè)置門禁系統(tǒng)的訪問(wèn)權(quán)限。控制訪問(wèn)門禁系統(tǒng)的人員的權(quán)限,限制他們可以進(jìn)入的區(qū)域、使用的設(shè)備等,保護(hù)門禁系統(tǒng)開關(guān)等設(shè)備的完整性和安全。
(b) 使用環(huán)境監(jiān)測(cè)技術(shù):利用門禁系統(tǒng)中的環(huán)境監(jiān)測(cè)技術(shù),可以實(shí)時(shí)監(jiān)測(cè)門禁系統(tǒng)設(shè)備的狀態(tài),發(fā)生異常時(shí)及時(shí)報(bào)警,從而防止攻擊者修改門禁系統(tǒng)數(shù)據(jù)、改變門禁設(shè)置等。
(c) 使用加密技術(shù):在門禁系統(tǒng)數(shù)據(jù)通信過(guò)程中,使用一定的加密技術(shù),避免在傳輸過(guò)程中數(shù)據(jù)被他人竊取或篡改,保障數(shù)據(jù)傳輸?shù)陌踩浴?/p>
3. 防止存儲(chǔ)攻擊
(a) 設(shè)置初始化環(huán)境:通常會(huì)將Linux門禁系統(tǒng)設(shè)備設(shè)置成一個(gè)獨(dú)立的環(huán)境,以減少系統(tǒng)出現(xiàn)意外情況,從而提高系統(tǒng)的安全性和穩(wěn)定性。
(b) 加密存儲(chǔ)設(shè)備:在存儲(chǔ)門禁系統(tǒng)數(shù)據(jù)時(shí),將數(shù)據(jù)設(shè)備進(jìn)行加密,避免數(shù)據(jù)被未經(jīng)授權(quán)的人訪問(wèn)、修改,更大程度地保障數(shù)據(jù)的安全性。
(c) 升級(jí)及修補(bǔ)安全問(wèn)題:在Linux門禁系統(tǒng)中,經(jīng)常會(huì)發(fā)現(xiàn)一些安全問(wèn)題,比如漏洞等。門禁系統(tǒng)管理員可以根據(jù)需要及時(shí)升級(jí)、修補(bǔ),確保門禁系統(tǒng)的信息安全。
綜上所述,對(duì)于Linux門禁系統(tǒng),要想保障其安全性以及長(zhǎng)時(shí)間穩(wěn)定的運(yùn)行,需要大量的安全措施,包括防止遠(yuǎn)程攻擊、防止物理攻擊、防止存儲(chǔ)攻擊等方面的措施。對(duì)于這些措施的執(zhí)行者來(lái)說(shuō),需要認(rèn)真細(xì)致、周到的考慮門禁系統(tǒng)的安全性和穩(wěn)定性,為門禁系統(tǒng)運(yùn)營(yíng)提供安全可靠的保障。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)及定制高端網(wǎng)站建設(shè)服務(wù)!
linux內(nèi)核態(tài),在L框架中的文件操作hook接口中如何獲取一個(gè)正在作的文件的內(nèi)容?(linux4.4版本)
L是Linux Secrity Module的簡(jiǎn)稱,即linux安全模塊。其是一種輕量級(jí)通用訪
問(wèn)控制框架,適合于多種訪問(wèn)控制模型在它上面以內(nèi)核可加載模塊的形實(shí)現(xiàn)。用
戶可以根據(jù)自己的需求選擇合適的安全模塊加載到內(nèi)核上實(shí)現(xiàn)。
L設(shè)計(jì)思想:
L的設(shè)計(jì)思想:在最少改變內(nèi)核代碼的情況下,提供一個(gè)能夠成功實(shí)現(xiàn)強(qiáng)制訪
問(wèn)控制模塊需要的結(jié)構(gòu)或者接口。L避免了利用如在systrace系統(tǒng)調(diào)用中的出
現(xiàn)過(guò)的系統(tǒng)調(diào)用干預(yù),因?yàn)樗荒軘U(kuò)展到多處理器內(nèi)核,并且它受制于參數(shù)替換
攻擊。還有L在設(shè)計(jì)時(shí)做了兩點(diǎn)考慮:對(duì)不使用的人來(lái)說(shuō)盡量少引入麻煩,對(duì)
使用的人來(lái)說(shuō)要帶來(lái)效率。以
Linus Torvalds
為代表的內(nèi)核開發(fā)人員對(duì)Linux安
全模塊(L)提出了三點(diǎn)要求:
1、真正的通用,當(dāng)使用一個(gè)不同的安全模型的時(shí)候,只需要加載一個(gè)不同的內(nèi)
核模塊。
2、概念上簡(jiǎn)單,對(duì)
Linux內(nèi)核
影響最小,高效,并且。
3、能夠支持現(xiàn)存的POSIX.1e capabilities邏輯,作為一個(gè)可選的安全模塊。
還有,針對(duì)linux上提出的各種不同的Linux安全增強(qiáng)系統(tǒng)對(duì)Linux安全模塊(L
)提出的要求是:能夠允許他們以可加載內(nèi)核模塊的形式重新實(shí)現(xiàn)其安全功能,
并且不會(huì)在安全性方面帶來(lái)明顯的損失,也不會(huì)帶來(lái)額外的系統(tǒng)開銷。
L框架結(jié)構(gòu):
L框架主要由五部分構(gòu)成:
1、在特定的內(nèi)核
數(shù)據(jù)結(jié)構(gòu)
中加入安全域。
2、在內(nèi)核
源代碼
中不同的關(guān)鍵點(diǎn)插入對(duì)安全鉤子函數(shù)的調(diào)用。
3、加入一個(gè)通用的安全系統(tǒng)調(diào)用。
4、提供了函數(shù)允許內(nèi)核模塊注冊(cè)為安全模塊或者注銷。
5、5、將capabilities邏輯的大部分移植為一個(gè)可選的安全模塊。
安全域是一個(gè)void*類型的指針,它使得安全模塊把安全信息和內(nèi)核內(nèi)部對(duì)象聯(lián)
系起來(lái)。下面列出被修改加入了安全域的內(nèi)核數(shù)據(jù)結(jié)構(gòu),以及各自所代表的內(nèi)核
內(nèi)部對(duì)象:
task_struct結(jié)構(gòu):代表任務(wù)(進(jìn)程)
linux_binprm結(jié)構(gòu):代表程序
super_block結(jié)構(gòu):代表
文件系統(tǒng)
inode結(jié)構(gòu):代表管道,文件,或者Socket
套接字
file結(jié)構(gòu):代表打開的文件
sk_buff結(jié)構(gòu):代表網(wǎng)絡(luò)緩沖區(qū)(包)
net_device結(jié)構(gòu):代表
網(wǎng)絡(luò)設(shè)備
kern_ipc_perm結(jié)構(gòu):代表Semaphore信號(hào),共享內(nèi)存段,或者
消息隊(duì)列
msg_msg:代表單個(gè)的消息
Linux安全模塊(L)提供了兩類對(duì)安全鉤子函數(shù)的調(diào)用:一類管理內(nèi)核對(duì)象的
安全域,另一類仲裁對(duì)這些內(nèi)核對(duì)象的訪問(wèn)。對(duì)安全鉤子函數(shù)的調(diào)用通過(guò)鉤子來(lái)
實(shí)現(xiàn),鉤子是全局表security_ops中的
函數(shù)指針
,這個(gè)全局表的類型是
security_operations結(jié)構(gòu),這個(gè)結(jié)構(gòu)定義在include/linux/security.h這個(gè)頭
文件中。
L接口的核心是security_ops,當(dāng)系統(tǒng)啟動(dòng)時(shí),他們被初始化為傳統(tǒng)的DAC策略
。傳統(tǒng)DAC訪問(wèn)控制是指控制系統(tǒng)中的主體(如進(jìn)程)對(duì)系統(tǒng)中的客體(如文件
目錄、文件)的訪問(wèn)(讀、寫和執(zhí)行等)。自主訪問(wèn)控制DAC 是指主體(進(jìn)程,
用戶)對(duì)客體(文件、目錄、特殊設(shè)備文件、IPC等)的訪問(wèn)權(quán)限是由客體的屬
主或超級(jí)用戶決定的,而且此權(quán)限一旦確定,將作為以后判斷主體對(duì)客體是否有
訪問(wèn)權(quán)限的依據(jù)。
在加載安全模塊時(shí),我們必需先對(duì)模塊進(jìn)行注冊(cè),我們可以使用
register_security()函數(shù)向L注冊(cè)一個(gè)安全模塊。在我們的模塊被加載成
功后,就可以進(jìn)行訪問(wèn)控制操作。如果此時(shí)還有一個(gè)安全模塊要使用
register_security()函數(shù)進(jìn)行加載,則會(huì)出現(xiàn)錯(cuò)誤,直到使用
unregister_security()函數(shù)向框架注銷后,下一個(gè)模塊才可以載入。當(dāng)然LS
M還提供了mod_reg_security()函數(shù)和mod_unreg_security()函數(shù),可以連續(xù)注
冊(cè)多個(gè)安全模塊。如果有其他后來(lái)的模塊需要載入,可以通過(guò)mod_reg_security
()向之一個(gè)模塊注冊(cè),形成支持不同策略的模塊棧。
注:以上出現(xiàn)的函數(shù)均基于2.6.22以前的版本,對(duì)于后續(xù)的版本,出現(xiàn)了
register_security()函數(shù)未被導(dǎo)出或者取消掉了unregister_security()函數(shù)。
L執(zhí)行過(guò)程:
根據(jù)下圖的執(zhí)行步驟:用戶在執(zhí)行系統(tǒng)調(diào)用時(shí),先通過(guò)原有的內(nèi)核接口依次執(zhí)行
功能性的錯(cuò)誤檢查,接著進(jìn)行傳統(tǒng)的DAC檢查,并在即將訪問(wèn)內(nèi)核的內(nèi)部對(duì)象之
前,通過(guò)L鉤子函數(shù)調(diào)用L。L再調(diào)用具體的訪問(wèn)控制策略來(lái)決定訪問(wèn)的合
法性。圖三顯示了L鉤子的調(diào)用:
圖三:基于L的內(nèi)核對(duì)象訪問(wèn)過(guò)程
Lilinux安全模塊(L)主要支持”限制型”的訪問(wèn)控制決策:當(dāng)Linux內(nèi)核授予
文件或目錄訪問(wèn)權(quán)限時(shí),Linux安全模塊(L)可能會(huì)拒絕,而當(dāng) Linux內(nèi)核拒
絕訪問(wèn)時(shí),可以跳過(guò)L。
========
使用L實(shí)現(xiàn)自己的訪問(wèn)控制
首先對(duì)L 進(jìn)行簡(jiǎn)單介紹。雖然linux下的各位基本都知道一些,但是還要羅嗦
一下。
L中文全稱是linux安全模塊。英文全稱:linux security module.
L是一種輕量級(jí)、通用的訪問(wèn)控制框架,適合多種訪問(wèn)控制模型以內(nèi)核模塊的
形式實(shí)現(xiàn)。其特點(diǎn)是通用、簡(jiǎn)單、高效、支持POSIX。1e能力機(jī)制。
L的架構(gòu)圖如下:
通過(guò)系統(tǒng)調(diào)用進(jìn)入內(nèi)核之后,系統(tǒng)首先進(jìn)行傳統(tǒng)的權(quán)限檢查(傳統(tǒng)權(quán)限檢查主要
是基于用戶的,用戶通過(guò)驗(yàn)證之后就可以訪問(wèn)資源),通過(guò)之后才會(huì)進(jìn)行強(qiáng)制訪
問(wèn)控制。(強(qiáng)制訪問(wèn)控制是不允許主體干涉的一種訪問(wèn)控制,其采用
安全標(biāo)識(shí)
、
信息分級(jí)等信息敏感性進(jìn)行訪問(wèn)控制。并且通過(guò)比較主體的級(jí)別和資源的敏感性
來(lái)確定是否允許訪問(wèn)。比如說(shuō)系統(tǒng)設(shè)置A用戶不允許訪問(wèn)文件B,即便A是文件B的
所有者,訪問(wèn)也是受限制的。)從圖上看來(lái),L實(shí)現(xiàn)訪問(wèn)控制主要通過(guò)安全模
塊的鉤子函數(shù)實(shí)現(xiàn)。
L框架主要由五部分組成:這個(gè)網(wǎng)上資料很多。
在關(guān)鍵的特定內(nèi)核數(shù)據(jù)結(jié)構(gòu)中加入了安全域;
在內(nèi)核源碼中不同的關(guān)鍵點(diǎn)處插入對(duì)安全鉤子函數(shù)的調(diào)用;
提供了一個(gè)通用的安全系統(tǒng)調(diào)用;
提供了注冊(cè)和注銷函數(shù),使得訪問(wèn)控制策略可以以內(nèi)核模塊方式實(shí)現(xiàn);
將capabilities邏輯的大部分功能移植為一個(gè)可選的安全模塊。
我們這里重點(diǎn)結(jié)合源碼對(duì)L框架進(jìn)行解釋。我使用的源碼是3.5.4
首先介紹安全域字段,它是一個(gè)空類型的指針,在內(nèi)核中的很多內(nèi)核結(jié)構(gòu)中都存
在,比如inode、superblock、dentry、file等等。類型字段為void *
security;
那么安全域怎么和安全模塊中的信息關(guān)聯(lián)起來(lái)?
當(dāng)安全模塊加載之后,安全域中的指針便指向安全模塊中的安全信息。這里以
selinux為例進(jìn)行介紹。
內(nèi)核里面security/selinux/include/objsec.h中定義了不同對(duì)象的安全信息,
格式為XXX_security_strut.
上面的文件的安全信息里面包含打開
文件描述符
時(shí)的安全I(xiàn)D、文件所有者的安全
ID等等。
要聯(lián)系安全模塊中安全信息和安全域需要幾個(gè)控制鉤子函數(shù)。這些鉤子函數(shù)實(shí)現(xiàn)
了對(duì)內(nèi)核關(guān)鍵信息的設(shè)置和管理。這里主要介紹alloc_security、
free_security。
selinux里面通過(guò)實(shí)現(xiàn)安全信息空間分配實(shí)現(xiàn)關(guān)聯(lián)。比如以文件安全信息為例
這里分配空間成功之后,通過(guò)file->f_security = fsec實(shí)現(xiàn)了關(guān)聯(lián)。
撤銷關(guān)聯(lián)是在安全模塊卸載之后調(diào)用file_free_security.
這里具體通過(guò)設(shè)置file->f_secrity為NULL,然后釋放安全信息結(jié)構(gòu)實(shí)現(xiàn)。
現(xiàn)在來(lái)看看內(nèi)核如何實(shí)現(xiàn)selinux的訪問(wèn)控制。這里主要就是實(shí)現(xiàn)L里面的鉤子
函數(shù)了。L里面給出了
結(jié)構(gòu)體
security_operations,里面給出了很多鉤子函數(shù)
,實(shí)現(xiàn)了相關(guān)鉤子函數(shù)就可以實(shí)現(xiàn)訪問(wèn)控制了。
上面的函數(shù)就實(shí)現(xiàn)了file_permission鉤子函數(shù)??梢钥聪耰node結(jié)構(gòu)體的獲得,
感受內(nèi)核是通過(guò)文件->目錄項(xiàng)->inode。該函數(shù)主要實(shí)現(xiàn)自己的訪問(wèn)控制策略就
OK 了。
哪selinux來(lái)說(shuō),在獲得文件安全I(xiàn)D之后,主要對(duì)
掩碼
和文件打開時(shí)相關(guān)的安全
信息進(jìn)行檢測(cè),符合就通過(guò)訪問(wèn)控制。
selinux基本實(shí)現(xiàn)了L里面的所有鉤子函數(shù),待鉤子函數(shù)實(shí)現(xiàn)后,對(duì)L里面鉤
子域進(jìn)行填充就OK了。
做完以上這些還需要注冊(cè)安全模塊到L,這里注冊(cè)和注銷使用了
register_security和unregister_security。
比如selinux在注冊(cè)時(shí)使用語(yǔ)句register_security(&selinux_ops)實(shí)現(xiàn)。
接下來(lái)通過(guò)上面的分析我們可以實(shí)現(xiàn)簡(jiǎn)單的基于L的訪問(wèn)控制。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
static int l_test_file_permission(struct file *file,int mask)
{
int path=0;
struct file *filp;
struct nameidata nd;
path = path_lookup(FILENAME,LOOKUP_FOLLOW,&nd);
if(!mask)
return 0;
if(path)
{
printk(“l(fā)ookup file failed!\n”);
return -1;
}
filp = filp_open(“/home/yuyunchao/code/.c”,O_RDON,0);
{
printk(“open failed!\n”);
}
return 0;
}
static struct security_operations l_test_security_ops = {
.file_permission = l_test_file_permission,
};
static int __init l_file_init(void)
{
if(register_security(&l_test_security_ops)){
printk(“register error ……….\n”);
return -1;
}
printk(“l(fā)_file init..\n “);
return 0;
}
static void __exit l_file_exit(void)
{
if(unregister_security(&l_test_security_ops)){
printk(“unregister error…………….\n”);
return ;
}
printk(“module exit…….\n”);
}
MODULE_LICENSE(“GPL”);
module_init(l_file_init);
module_exit(l_file_exit);
========
L(Linux Security Module)應(yīng)用方法(簡(jiǎn)單例子)
L在內(nèi)核中很多地方已經(jīng)插入了hook函數(shù),并且在security.c函數(shù)中聲明了
security_ops結(jié)構(gòu),要實(shí)現(xiàn)你自己的安全模塊,只需要定義你自己的struct
security_operations,并且用register_security注冊(cè)即可,下面舉個(gè)簡(jiǎn)單例子
:
test.c代碼如下:
/*
* Test Linux Security Module
*
* Author: penghuan
*
* Copyright (C) 2023 UbuntuKylin, Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2, as
* published by the Free Software Foundation.
*
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int test_file_permission(struct file *file, int mask)
{
char *name = file->f_path.dentry->d_name.name;
if(!strcmp(name, “test.txt”))
{
file->f_flags |= O_RDON;
printk(“you can have your control code here!\n”);
}
return 0;
}
static struct security_operations test_security_ops = {
.name = “test”,
.file_permission = test_file_permission,
};
static __init int test_init(void)
{
printk(“enter test init!\n”);
printk(KERN_INFO “Test: becoming……\n”)
if (register_security(&test_security_ops))
panic(“Test: kernel registration failed.\n”);
return 0;
}
security_initcall(test_init);
將該文件以模塊的形式放到security/下編譯進(jìn)內(nèi)核,啟用新的內(nèi)核后,當(dāng)你操
作文件test.txt時(shí),通過(guò)dmesg命令就能再終端看到”you can have your
control code here!“輸出
所以一般的做法是:定義你自己的struct security_operations,實(shí)現(xiàn)你自己的
hook函數(shù),具體有哪些hook函數(shù)可以查詢include/linux/security.h文件,然后
調(diào)用register_security來(lái)用你的test_security_ops初始化全局的security_ops
指針
樓主,我剛開始研究L,但網(wǎng)上資料太少,您這個(gè)代碼,我編譯成ko文件老是
有警告,并且inod時(shí),說(shuō)Unknown symbol register_security。我最近看了看
內(nèi)核模塊變成,沒(méi)有對(duì)內(nèi)核進(jìn)行太深入的了解。不知能否把L的實(shí)驗(yàn)步驟給出
的再詳細(xì)點(diǎn),謝謝。
你需要把代碼編進(jìn)內(nèi)核
是需要把那段源碼拷到內(nèi)核目錄下,然后重新編譯內(nèi)核?。沒(méi)有不編譯內(nèi)核的
方法嗎?。直接按照模塊進(jìn)行編譯。另外那個(gè)test.txt放在哪個(gè)文件夾里?。
是需要把那段源碼拷到內(nèi)核目錄下,然后重新編譯內(nèi)核?。沒(méi)有不編譯內(nèi)核的
方法嗎?。直接按照模塊進(jìn)行 …
是的,你去網(wǎng)上找下怎么把模塊編進(jìn)內(nèi)核,l模塊不能以模塊方式加載,涉及
安全;test.txt是測(cè)試文件,當(dāng)你把代碼編進(jìn)內(nèi)核后,用新內(nèi)核啟動(dòng),然后操作
test.txt文件,就會(huì)有輸出,test.txt隨便放哪里
樓主,您好,我剛開始學(xué)習(xí)l模塊,把您的模塊編譯進(jìn)內(nèi)核,新的內(nèi)核加載后
,register_security總是失敗,請(qǐng)問(wèn)下可能是什么原因?qū)е碌?。我的?nèi)核版本
是3.13.11。
register_security的返回值是-11
========
L在Linux中的實(shí)現(xiàn)方式
L(Linux Secure Model)一種輕量級(jí)訪問(wèn)控制機(jī)制.
其實(shí)現(xiàn)方式有如在系統(tǒng)調(diào)用中加入一個(gè)后門….
方式如下:
static struct file *__dentry_open(struct dentry *dentry, struct
vfount *mnt,
struct file *f,
int (*open)(struct inode *, struct file *),
const struct cred *cred)
{
struct inode *inode;
int error;
………………………………………………………
error = security_dentry_open(f, cred); //L機(jī)制實(shí)現(xiàn)方式,在此加入了
一個(gè)L函數(shù).
//security_dentry_open的實(shí)現(xiàn)如下,相當(dāng)于一個(gè)接口,對(duì)一個(gè)函數(shù)指針再
//封裝一下.
//只返回是與否,這樣的控制信息.
if (error)
goto cleanup_all;
……………………………………………………….
return f;
cleanup_all:
………………………………………………………..
return ERR_PTR(error);
}
//========簡(jiǎn)單封裝一個(gè)指針結(jié)構(gòu)體===========================
int security_dentry_open(struct file *file, const struct cred *cred)
{
int ret;
ret = security_ops->dentry_open(file, cred);
if (ret)
return ret;
return fsnotify_perm(file, MAY_OPEN);
}
========
利用L實(shí)現(xiàn)更安全的linux
L的全稱是Linux Security Modules,它是linux內(nèi)核中用來(lái)支持更靈活的
安全策略的一個(gè)底層框架,雖然聽(tīng)起來(lái)比較復(fù)雜,但是可以就把它理解成一組安
插在linux內(nèi)核的鉤子函數(shù)和一些預(yù)留的被稱為安全域的數(shù)據(jù)結(jié)構(gòu),下面先說(shuō)說(shuō)
這個(gè)框架的由來(lái)吧。
linux本身的機(jī)制就保證了linux擁有更好的安全機(jī)制,但是在這個(gè)機(jī)制下面
,還是隱藏了許多的問(wèn)題:
1、權(quán)限粒度太大。用過(guò)linux的人應(yīng)該對(duì)0644這樣的訪問(wèn)權(quán)限設(shè)置不陌生,
它對(duì)能夠操作這個(gè)文件的用戶做了限制,但是這個(gè)只是限制到了組,而沒(méi)有更進(jìn)
一步的細(xì)分,當(dāng)然,如果L只是用來(lái)限制這個(gè)的話,那么也就太沒(méi)意思了,因
為實(shí)現(xiàn)文件更細(xì)的控制粒度,ACL就能夠很出色的完成,順便提一下,ACL有一個(gè)
分配的限制,如果哪位朋友需要用ACL進(jìn)行粒度更細(xì)的訪問(wèn)權(quán)限控制的話,可能
需要注意一下這方面的東西。
2、root用戶的權(quán)限太大。在linux中,root用戶就是至高無(wú)上的,他擁有對(duì)
機(jī)器的完全控制權(quán)限,可以做他想做的一切事情。但是很多時(shí)候,我們可能并不
希望有root有這么大的權(quán)限,比如在現(xiàn)在比較流行的云存儲(chǔ)中,用戶肯定不希望
服務(wù)提供商能夠隨意訪問(wèn)我們的文件,那么這個(gè)時(shí)候,就需要對(duì)root用戶進(jìn)行一
定的設(shè)置了。
由于這些問(wèn)題的存在,所以出現(xiàn)了像SE Linux(Securiy Enhanced Linux )
這樣的增強(qiáng)補(bǔ)丁。但是每個(gè)系統(tǒng)對(duì)于具體安全細(xì)節(jié)的控制不盡相同, 所以Linus
Tovalds 提出應(yīng)該要有一個(gè) Linux 內(nèi)核所能接受的安全框架來(lái)支持這些安全策
略,這個(gè)安全框架應(yīng)該提供包含內(nèi)核數(shù)據(jù)結(jié)構(gòu)中的透明安全域以及用來(lái)控制、維
護(hù)安全域操作的安全鉤子,于是就有了L。
L在內(nèi)核中的位置,可以用下圖來(lái)表示:
當(dāng)用戶態(tài)程序調(diào)用某些操作系統(tǒng)提供的函數(shù)的時(shí)候,比如read()函數(shù),其會(huì)
對(duì)應(yīng)于內(nèi)核中的一個(gè)系統(tǒng)調(diào)用,然后該首先會(huì)進(jìn)行一些常規(guī)的錯(cuò)誤檢測(cè),接著進(jìn)
行DAC(Discretionary Access Control)檢測(cè),再接著它會(huì)進(jìn)行L檢測(cè)。從上
圖中能夠看出來(lái),L其實(shí)是一個(gè)非常底層的安全策略框架,利用L,可以接管
所有的系統(tǒng)調(diào)用,這樣,我們就能對(duì)包括root在內(nèi)的所有用戶的權(quán)限進(jìn)行控制,
并且實(shí)現(xiàn)粒度更細(xì)的訪問(wèn)權(quán)限控制。
當(dāng)系統(tǒng)初始化的時(shí)候,L就是一個(gè)空的框架,它不提供任何的檢測(cè),其所
做的全部工作幾乎就是返回0,當(dāng)然,有些不帶返回值的函數(shù)除外。而我們則可
以針對(duì)自己特定的需求來(lái)編寫L,然后將我們編寫的L鉤子函數(shù),通過(guò)其數(shù)據(jù)
結(jié)構(gòu)struct security_operations注冊(cè)到系統(tǒng)中去,這樣,我們的L檢測(cè)就開
始起作用了。
更多信息可參考《Linux就該這么學(xué)》
關(guān)于linux門禁security的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
創(chuàng)新互聯(lián)-老牌IDC、云計(jì)算及IT信息化服務(wù)領(lǐng)域的服務(wù)供應(yīng)商,業(yè)務(wù)涵蓋IDC(互聯(lián)網(wǎng)數(shù)據(jù)中心)服務(wù)、云計(jì)算服務(wù)、IT信息化、AI算力租賃平臺(tái)(智算云),軟件開發(fā),網(wǎng)站建設(shè),咨詢熱線:028-86922220
本文名稱:Linux門禁安全措施詳解(linux門禁security)
文章轉(zhuǎn)載:http://m.fisionsoft.com.cn/article/djjhcip.html


咨詢
建站咨詢
