国产成人毛片毛片久久网_国产午夜激无码av毛片不_国产乱对白精彩在线播放_av资源站中文字幕_亚洲男人的天堂网站_国产成 人 综合 亚洲网_中国国产激情一区_少妇一级淫片免费放_亚洲一本大道av久在线播放_免费观看美女裸体网站

安全播報(bào)

防御吧作為15年知名老牌域名服務(wù)商,CNNIC和CANN雙認(rèn)證域名注冊商,已經(jīng)
持續(xù)為500多萬個(gè)域名提供服務(wù),包括智能DNS/自由轉(zhuǎn)移/隱私保護(hù)等服務(wù)!
多人共用Linux服務(wù)器,如何防止別人干“壞事”?
2020-08-25 20:48:59 【

本文就討論一下 Linux 系統(tǒng)和應(yīng)用安全。我們知道,在開發(fā)一個(gè)應(yīng)用的過程中,需要涉及代碼、操作系統(tǒng)、網(wǎng)絡(luò)和數(shù)據(jù)庫等多個(gè)方面。所以,只是了解代碼安全肯定是不夠的,我們還需要了解常見的基礎(chǔ)環(huán)境和工具中的安全機(jī)制,學(xué)會通過正確地配置這些安全機(jī)制,來提升安全保障。

談到 Linux,我相信你每天都在使用 Linux 進(jìn)行各種開發(fā)和運(yùn)維操作。但是,大多數(shù)情況下,公司不會給每一個(gè)員工分配專有的 Linux 服務(wù)器,而是多個(gè)開發(fā)和運(yùn)維共用一臺 Linux服務(wù)器。那么,其他員工在使用 Linux 服務(wù)器的時(shí)候,會不會對我們自己的數(shù)據(jù)和進(jìn)程產(chǎn)生影響呢?另外,我在 Web 安全中講過,黑客可以通過很多漏洞控制 Linux 服務(wù)器,那我們又該如何避免和控制黑客的破壞呢?

一、如何理解Linux中的安全模型?

要解決這些安全問題,我們首先要了解一個(gè)安全模型,Linux 的安全模型。

我們先來看一下 Linux 的構(gòu)成,Linux 可以分為內(nèi)核層和用戶層。用戶層通過內(nèi)核層提供的操作接口,來執(zhí)行各類任務(wù)。

內(nèi)核層提供的權(quán)限劃分、進(jìn)程隔離和內(nèi)存保護(hù)的安全功能,是用戶層的安全基礎(chǔ)。一旦內(nèi)核安全被突破(比如黑客能夠修改內(nèi)核邏輯),黑客就可以任意地變更權(quán)限、操作進(jìn)程和獲取內(nèi)存了。這個(gè)時(shí)候,任何用戶層的安全措施都是沒有意義的。

既然 Linux 的內(nèi)核安全這么重要,那我們是不是要在防護(hù)上付出大量的精力呢?事實(shí)上,正如我們不需要在開發(fā)應(yīng)用時(shí)(尤其是使用 Java 這類相對高層的語言時(shí)),過多地關(guān)心操作系統(tǒng)相關(guān)的內(nèi)容一樣,我們在考慮 Linux 安全時(shí),也不需要過多地考慮內(nèi)核的安全,更多的是要考慮用戶層的安全。所以,對于 Linux 內(nèi)核層的安全,我們只需要按照插件漏洞的防護(hù)方法,確保使用官方的鏡像并保持更新就足夠了。

既然,使用最多的是用戶層,那我們就來看一下,用戶層的操作都有什么。

在 Linux 中,用戶層的所有操作,都可以抽象為“主體 -> 請求 -> 客體”這么一個(gè)流程。比如,“打開 /etc/passwd”這一操作的主體是實(shí)際的用戶,請求是讀,客體是/etc/passwd 這個(gè)文件。

在這個(gè)過程中,Linux 內(nèi)核安全提供了基于權(quán)限的訪問控制,確保數(shù)據(jù)不被其他操作獲取。Linux 用戶層則需要確保權(quán)限的正確配置,這就是我開篇提到的,如何保證多人安全地共用服務(wù)器的關(guān)鍵,也是本文需要關(guān)注的重點(diǎn)內(nèi)容。

二、黃金法則是如何在Linux系統(tǒng)中應(yīng)用的?

現(xiàn)在我們知道了,Linux 系統(tǒng)安全防護(hù)的核心是正確配置用戶層權(quán)限。那接下來,我們就從黃金法則的認(rèn)證、授權(quán)和審計(jì)這三個(gè)方面來看一下,Linux 系統(tǒng)是如何進(jìn)行權(quán)限配置的,這其中,又有哪些值得我們重點(diǎn)關(guān)注的安全選項(xiàng)。

1.Linux中的認(rèn)證機(jī)制

Linux 系統(tǒng)是一個(gè)支持多用戶的操作系統(tǒng),它通過普通的文本文件來保存和管理用戶信息。這其中,有 2 個(gè)比較關(guān)鍵的文件:/etc/passwd和/etc/shadow。

我們知道,在 Linux 中,/etc/passwd是全局可讀的,不具備保密性。因此,/etc/passwd不會直接存儲密碼,而是用 x 來進(jìn)行占位。那實(shí)際的用戶密碼信息,就會存儲到僅 ROOT 可讀的/etc/shadow中。

在/etc/shadow中,除了加密后的密碼,也保存了諸如密碼有效天數(shù)、失效多少天告警之類的密碼管理策略。我們可以通過 Chage 命令來對密碼管理策略進(jìn)行修改,比如,通過下面的 Chage 命令,就可以強(qiáng)制 Test 用戶在 60 天內(nèi)必須對密碼進(jìn)行修改。通過這樣的方式,就可以降低密碼泄漏的可能性了。

chage-M60test

因?yàn)檎J(rèn)證這個(gè)功能是由 Linux 內(nèi)核來提供的,所以在用戶層,我們需要關(guān)心的安全問題,就是弱密碼導(dǎo)致的身份信息泄漏。為了解決這個(gè)問題,在/etc/shadow中,我們可以制定適當(dāng)?shù)拿艽a策略。除此之外,我們也可以通過John the Ripper,使用已知的弱密碼庫,來對 Linux 中的弱密碼進(jìn)行檢測。下面的命令,就是使用 John the Ripper 檢測弱密碼。

unshadow/etc/passwd/etc/shadow>mypasswdjohnmypasswdjohn--showmypassw

2.Linux中的授權(quán)機(jī)制

在“黃金法則”中,認(rèn)證只是第一步,它提供了一個(gè)可信的身份標(biāo)識。有了這個(gè)身份標(biāo)識之后,就需要通過授權(quán),來限制用戶能夠發(fā)起的請求了。

在 Linux 中,客體只有文件和目錄兩種,針對這兩種類型的客體,Linux 都定義了讀、寫和執(zhí)行這三種權(quán)限。你可以通過我總結(jié)的這張對比表格看到,文件和目錄在這三種權(quán)限上的區(qū)別。

除此之外,Linux 還提供了一些額外的權(quán)限標(biāo)簽,來進(jìn)行更細(xì)粒度地權(quán)限控制。

比如,Linux 提供了文件屬性的概念,來對文件設(shè)置更多的保護(hù)。通過chattr +i/etc/passwd可以防止文件被任何用戶修改。

Linux 還提供了“粘滯位”的功能,主要用來防止用戶隨意操作其他用戶的文件。比如chmod +t /tmp可以阻止刪除 /tmp 目錄下其他用戶的文件。

這些都是 Linux 在授權(quán)中的自我保護(hù)機(jī)制,那我們能在這個(gè)過程中進(jìn)行怎樣的防護(hù)呢?

前面,我們一直在強(qiáng)調(diào),Linux 系統(tǒng)面臨的安全威脅其實(shí)就是權(quán)限問題。也就是說,要么就是敏感文件的權(quán)限配置不當(dāng),導(dǎo)致這些文件可以被額外的用戶訪問或執(zhí)行;要么就是應(yīng)用存在漏洞或密碼泄漏,導(dǎo)致低權(quán)限用戶可以獲得更高的權(quán)限。

要解決權(quán)限問題,我們就要實(shí)踐最小權(quán)限原則。

我們先來看一個(gè) Linux 系統(tǒng)安全中最普遍的問題:濫用 ROOT。很多人在登錄 Linux 系統(tǒng)后,第一個(gè)命令就是通過 su 來獲取 ROOT 的 Shell 環(huán)境,這樣我們就不需要在每次操作的時(shí)候,通過 sudo 來臨時(shí)提升至 ROOT 權(quán)限。

但是,這里你需要注意一點(diǎn),在 ROOT 的 Shell 環(huán)境中,啟動的所有進(jìn)程也都具備 ROOT權(quán)限。如果啟動的是一個(gè)立即返回的進(jìn)程,如 CAT,不會有太多問題,但如果是一個(gè)長期運(yùn)行的進(jìn)程,就很容易產(chǎn)生權(quán)限的濫用。

比如,當(dāng)你以 ROOT 的身份啟動 Redis 或者 MySQL 等存儲工具時(shí),如果這時(shí)有其他用戶連入 Redis 或者 MySQL,那他們也能間接地獲取 ROOT 的權(quán)限。在大部分服務(wù)器入侵的場景中,黑客都是通過這些具備 ROOT 權(quán)限的進(jìn)程漏洞,來實(shí)現(xiàn)權(quán)限提升的。

因此,在運(yùn)行任何長駐進(jìn)程時(shí),我們都需要謹(jǐn)記“最小權(quán)限”原則。也就是說,我們可以根據(jù)要執(zhí)行的操作等級,配置“最小權(quán)限”來啟動常駐進(jìn)程。比如,如果只是在 Redis 和MySQL 這樣的數(shù)據(jù)庫中進(jìn)行文件讀寫操作,根本不需要 ROOT 這種最高等級的權(quán)限。

因此,“最小權(quán)限”原則在 Linux 系統(tǒng)中的應(yīng)用是非常重要的。那你可能會問了,Linux 系統(tǒng)中的操作那么多,每個(gè)操作都需要自己進(jìn)行權(quán)限配置嗎?當(dāng)然不是,我們常常會使用一些已知的工具,來實(shí)現(xiàn)“最小權(quán)限”啟動長駐進(jìn)程的功能,而你需要做的,就是正確地啟動或者配置這些工具。

比如說,我們可以通過 mysqld 啟動 MySQL 服務(wù),mysqld 會將 MySQL 的進(jìn)程分配到“mysql”這個(gè)用戶,并在 ROOT 下建立守護(hù)進(jìn)程。具體的效果如下:

root    2973530.00.01154321360?         S   Aug120:00/bin/sh/usr/mysql   29755331.34.3112827565729572?   Sl  Aug1222593:40/usr/local/

類似的,當(dāng)啟動 Nginx 時(shí),Nginx 會將 Worker 節(jié)點(diǎn)以 nobody 的用戶身份來執(zhí)行。具體的效果如下:

root    7083    0.0 0.0 610325324?  Ss  Aug12   0:01nginx:mastenobody  331122  0.0 0.0 9076831776? S   11:44   0:00nginx:workenobody  331123  0.0 0.0 9076832720? S   11:44   0:00nginx:workenobody  331124  0.0 0.0 9076831776? S   11:44   0:00nginx:worke

當(dāng)然,也有一些工具不提供這類最小權(quán)限切換的功能,比如,在直接執(zhí)行redis-server啟動 Redis 的時(shí)候,就需要我們自己來對用戶身份進(jìn)行切換。那用戶身份切換怎么做呢?

我們首先來看 Nginx 的例子,在啟動 Nginx 的時(shí)候,Linux 提供了 nobody 這么一個(gè)用戶的身份。實(shí)際上,任何人進(jìn)入 Linux 系統(tǒng)首先獲得的用戶身份就是 nobody,然后再從nobody 進(jìn)行登錄,切換到其他正常用戶身份上。

因此,nobody 通常擁有整個(gè)操作系統(tǒng)中最小的權(quán)限。所以,對于不提供最小權(quán)限切換功能的工具,我們就可以使用 nobody 的用戶身份,來進(jìn)行主動切換了。

在執(zhí)行redis-server啟動 Redis 的時(shí)候,我們就可以通過以下命令,以 nobody 的身份執(zhí)行redis-server了(前提是,我們需要對日志和 PID 等目錄進(jìn)行適當(dāng)配置,確保能夠以 nobody 身份寫入):

su-s/bin/redis-servernobody

這樣一來,我們就能通過“最小權(quán)限”原則,提升 Linux 系統(tǒng)授權(quán)的安全性了。

3.Linux中的審計(jì)機(jī)制

我們在前面的課程中說過,“黃金法則”中的審計(jì)主要就是日志記錄和分析。那么,Linux系統(tǒng)中的日志都有哪些呢?在 Linux 系統(tǒng)中,系統(tǒng)的日志信息通常存儲在 /var/log 目錄下,部分應(yīng)用程序也會把相關(guān)日志記錄到這個(gè)目錄中。系統(tǒng)日志主要分為 3 類,用戶登錄日志、特殊事件日志和進(jìn)程日志。

用戶登錄日志主要是/var/log/wtmp和/var/run/utmp,用來保存用戶登錄相關(guān)的信息。用戶登錄日志本身為二進(jìn)制文件,我們無法直接通過文本方式查看,但是可以配合who/users/ac/last/lastlog這樣的命令來獲取。

特殊事件日志主要包括/var/log/secure和/var/log/message。其
中,/var/log/secure主要記錄認(rèn)證和授權(quán)相關(guān)的記錄,如果有人試圖爆破 SSH,我們就可以從這個(gè)日志中觀察出來。/var/log/message由 syslogd 來維護(hù),syslogd 這個(gè)守

護(hù)進(jìn)程提供了一個(gè)記錄特殊事件和消息的標(biāo)準(zhǔn)機(jī)制,其他應(yīng)用可以通過這個(gè)守護(hù)進(jìn)程來報(bào)告特殊的事件。

進(jìn)程日志:當(dāng)通過 accton 來進(jìn)行系統(tǒng)進(jìn)程管理時(shí),會生成記錄用戶執(zhí)行命令的 pacct 文件。

默認(rèn)情況下,Linux 會通過 logrotate 對日志執(zhí)行相應(yīng)的保留策略(比如日志切割和舊日志刪除等)。通過配置/etc/logrotate.conf可以對不同日志的保留策略進(jìn)行修改。

那如何對日志進(jìn)行監(jiān)控呢?這里,我向你推薦 2 種常見的日志分析工具 ELK 和 Zabbix,你可以利用這些工具來監(jiān)控 Linux 的安全日志。也就是說,我們可以通過在這些分析平臺配置恰當(dāng)?shù)囊?guī)則(如 SSH 登錄嘗試失敗 3 次以上),來及時(shí)發(fā)現(xiàn)黑客的部分入侵嘗試,迅速產(chǎn)生報(bào)警。然后,我們就可以針對具體的問題,進(jìn)行人工復(fù)查了。

總結(jié)

Linux 系統(tǒng)安全可以說是“最小權(quán)限”原則的最佳實(shí)踐平臺,尤其是當(dāng)存在多用戶共同維護(hù)和使用一臺服務(wù)器的時(shí)候,正確的配置權(quán)限將是一件很有挑戰(zhàn)的工作。為此,我們必須嚴(yán)格限制 ROOT 權(quán)限的使用。同時(shí),為了避免進(jìn)程漏洞,適當(dāng)?shù)耐ㄟ^ iptables 進(jìn)行訪問限制,也能夠起到不錯的保護(hù)效果。

在 Linux 系統(tǒng)的自我保護(hù)基礎(chǔ)之上,也有一些安全工具能夠?yàn)橄到y(tǒng)提供額外的保護(hù)功能(如殺毒軟件、HIDS 等),在后續(xù)的內(nèi)容中,我們會深入講解這些工具。




】【打印關(guān)閉】 【返回頂部
分享到QQ空間
分享到: 
上一篇Microsoft宣布Office的Applicatio.. 下一篇黑產(chǎn)工具情報(bào)的分析方式淺析

立足首都,輻射全球,防御吧專注云防御及云計(jì)算服務(wù)15年!

聯(lián)系我們

服務(wù)熱線:13051179500 18910191973
企業(yè)QQ:1245940436
技術(shù)支持:010-56159998
E-Mail:xihedata.com
Copyright ? 2003-2016 fangyuba. 防御吧(完美解決防御與加速) 版權(quán)所有 增值許可:京B2-20140042號
售前咨詢
公司總機(jī):18910191973
24小時(shí)電話:010-56159998
投訴電話:18910191973
值班售后/技術(shù)支持
售后服務(wù)/財(cái)務(wù)
備案專員
緊急電話:18610088800