PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   資安稽核要求service不能以root啟動.... (https://www.pcdvd.com.tw/showthread.php?t=1177256)

darkangel 2020-08-07 04:23 PM

引用:
作者pcwheat
印象中,不要用預設 root 是有其作用。(windows 則是 administrator)
因為,如果是 hacker ,最常 try 的就是 root ,這時候密碼若也設得很簡單,系統很容易被破解。
所以會要求不要用預設 root 這名稱帳號。
在資安領域中,隱藏資訊也是其中一種方法,縱使它不見得是很好的防護手段。


daemon (service) 不用 root 有其他原因,
並不是單純的使用 root login 之類的問題,
當 daemon 使用 root 時,會有幾點問題主要的大概是:

1. 透過類似 buffer overflow/stack underflow 的漏洞,
可以暫時跳到 shell 並擁有 root 權限,
細節我不說太多了,有興趣的人自己去查 CVE 研究,
固定更新可避免大多數的問題,
但是有些人會趁更新之前做壞事,
也就是所謂的 0-day 漏洞。
2. 可透過類似 SQL injection 方式來執行 shell,
這種方式與 daemon 是否有漏洞無關,
而是用戶程式沒寫好的問題,
即使沒有任何漏洞也有可能被入侵,
所以知名軟體如 nginx, mysql 多半不用 root 執行就是這個原因,

這些方式,與是否用防火牆擋掉啥 IP, port 都無關,
因為駭客就是光明正大的用慣用 port 入侵,
但這不表示防火牆無用,防火牆在某些方面還是有用的,
比如說次世代防火牆多半有阻擋 DOS, XSS 的功能,
另外,駭客如何知道你的伺服器執行甚麼 OS 跟 service?
一般駭客會用類似 nmap 之類的東西來掃描,
好一點的防火牆也可以擋掉 nmap 掃描,
當然不需要靠防火牆也有反制的方式。

而不使用 root login ,
第一個是防止 remote root login (brutal crack),
第二個是可防止 user 誤操作,
不過我都很懶直接 sshd 開 root login,
當然這樣做會布下手段防止 brutal crack,
反正自己懂得攻擊方式,自然知道怎樣防禦,
猴子有練過,叔叔阿姨不要學。

我不當駭客已經很久了,
憑印象簡單說大概就是這些了,
有興趣的話自己去找資源,
現在資訊這麼發達,連教學都有,
哪像以前我們都靠自己摸。

說個程式猿冷笑話,
有人知道為啥 unix 下的 service 要叫 daemon 嗎,
因為成為 daemon(demon) 的條件是 fork twice, kill parent~

月薪三萬的 ex-hacker/ex-cracker 程式猿路過~

:laugh: :laugh: :laugh: :laugh: :laugh:

cmwang 2020-08-07 04:32 PM

引用:
作者darkangel
daemon (service) 不用 root 有其他原因,
並不是單純的使用 root login 之類的問題,
當 daemon 使用 root 時,會有幾點問題主要的大概是:

1. 透過類似 buffer overflow/stack underflow 的漏洞,
可以暫時跳到 shell 並擁有 root 權限,
細節我不說太多了,有興趣的人自己去查 CVE 研究,
固定更新可避免大多數的問題,
但是有些人會趁更新之前做壞事,
也就是所謂的 0-day 漏洞。
2. 可透過類似 SQL injection 方式來執行 shell,
這種方式與 daemon 是否有漏洞無關,
而是用戶程式沒寫好的問題,
即使沒有任何漏洞也有可能被入侵,
所以知名軟體如 nginx, mysql 多半不用 root 執行就是這個原因,

snipped....


所以重點應該是盡可能提高提供service的程式的安全性,而不是service要不要以root啟動吧----鵝前面不也說了,提供service的程式在啟動完後就會drop privileges了,或是以普通user的身份fork出真正提供service的process了:think::think:....

lobben 2020-08-07 04:42 PM

資安也要求我們家的網頁報表系統只能"讀取"DB,因為不是交易系統。
害我們系統log只能寫成文字檔
稽核又說用文字檔很難抓壞人,不能寫到DB嗎
然後我就把資安的分機給稽核了:laugh: :laugh: :laugh:

darkangel 2020-08-07 04:43 PM

引用:
作者tbsky
的確稽核不懂這些,他們要的無非就是報表。譬如 ps aux 之類的。報表符合他的遊戲規則即可。
但相信其背後的目的就是這個八九不離十,畢竟這是常見的資安手段,是否不食人間煙火就是另一回事了。總之不能和稽核較真,合理的就機上做,不合理的就紙上做。


台灣很多資安稽核的確是照貓畫虎,但別因為這樣就以管窺天,
以為搞資安稽核的都是笨蛋,實際上高手還是有的,
但是很可惜我不曾在台灣公司看到。
國外某些大軟體公司,有專門檢測自家軟體漏洞的團隊,
這些團隊有些人真的很強,至少我見過連我都佩服不已的,
他們抓出漏洞後是真的會開 issue ticket 給你,
有的還會詳列 CVE 編號跟手法,然後你就會被老闆追殺。

:laugh: :laugh: :laugh: :laugh: :laugh:

darkangel 2020-08-07 04:54 PM

引用:
作者cmwang
所以重點應該是盡可能提高提供service的程式的安全性,而不是service要不要以root啟動吧----鵝前面不也說了,提供service的程式在啟動完後就會drop privileges了,或是以普通user的身份fork出真正提供service的process了:think::think:....


我不知道貴公司資安稽核的方式,
但一般來說,無論是不是 root 啟動都無所謂,
最終 daemon 執行時的 owner 不能是 root,
我想資安稽核主要也是針對在執行狀態的 owner。

最後 fork 成 daemon 時,才會 drop privileges。
這關係到 setuid, seteuid 等函式,
我們知道 id 分為 real id, effect id, saved id,
不表示在啟動時的 owner 必須是 root。
只要 effect id 是 root 即可。

tbsky 2020-08-07 07:45 PM

引用:
作者darkangel
台灣很多資安稽核的確是照貓畫虎,但別因為這樣就以管窺天,
以為搞資安稽核的都是笨蛋,實際上高手還是有的,
但是很可惜我不曾在台灣公司看到。
國外某些大軟體公司,有專門檢測自家軟體漏洞的團隊,
這些團隊有些人真的很強,至少我見過連我都佩服不已的,
他們抓出漏洞後是真的會開 issue ticket 給你,
有的還會詳列 CVE 編號跟手法,然後你就會被老闆追殺。


您可能把職務混在一起了。會來要報表的稽核都是做行政流程的,和抓漏洞定規範的技術人員不同。相信國外也會有人做這些行政流程。

tbsky 2020-08-07 07:59 PM

引用:
作者darkangel
說個程式猿冷笑話,
有人知道為啥 unix 下的 service 要叫 daemon 嗎,
因為成為 daemon(demon) 的條件是 fork twice, kill parent~


沒聽過這個笑話耶,不知道出處為何? double fork 是為了避免 zombie。一般只 fork 一次也可以成為 daemon 啊。駑頓了,一時之間搞不懂笑點在哪...

darkangel 2020-08-07 08:18 PM

引用:
作者tbsky
沒聽過這個笑話耶,不知道出處為何? double fork 是為了避免 zombie。一般只 fork 一次也可以成為 daemon 啊。駑頓了,一時之間搞不懂笑點在哪...


這個冷笑話我也忘了出處,記得是從國外論壇看到的,
既然是冷笑話,笑點當然只有程式猿懂,而且還很冷。
笑點就是:分身兩次又殺父母的不就是惡魔嗎?

回正題,double fork 不止是為了避免 zombie,
請詳閱 Richard Stevens 的 APUE 一書,
我是不知道其他人怎樣做,我自己寫 daemon 時的確是會 double fork。

順便幫你 google 一下 stackoverflow 也有相關討論:
https://stackoverflow.com/questions...eating-a-daemon

引用:
作者tbsky
您可能把職務混在一起了。會來要報表的稽核都是做行政流程的,和抓漏洞定規範的技術人員不同。相信國外也會有人做這些行政流程。


的確是不同的職務,我原本要表達的意思是搞資安也是有高手的啦,
可能跳針太多讓大大誤會了。

:laugh: :laugh: :laugh: :laugh: :laugh:

tbsky 2020-08-07 08:42 PM

引用:
作者darkangel
回正題,double fork 不止是為了避免 zombie,
請詳閱 Richard Stevens 的 APUE 一書,
我是不知道其他人怎樣做,我自己寫 daemon 時的確是會 double fork。

順便幫你 google 一下 stackoverflow 也有相關討論:
https://stackoverflow.com/questions...eating-a-daemon


看一下討論主要圍繞在處理 terminal 的問題,不過底下有人說近代的系統應該不用考慮這個問題了?除非可能有 zombie 的情況,我個人寫 daemon 都只 fork 一次。不過討論竟然有人提到,非常古老的系統可能強迫要 fork 兩次,不知道是否是真的。看來我還太菜了啊...

冬之炎陽 2020-08-07 08:46 PM

除了darkangel講的之外
有些自行開發的service, 如果有對外服務又用root執行
當自己開發的服務有嚴重漏洞時, 會造成駭客不需密碼即取得root權限
這也是最常見的漏洞
所以一般都會用盡量小且夠用的權限執行就好


所有的時間均為GMT +8。 現在的時間是04:42 AM.

vBulletin Version 3.0.1
powered_by_vbulletin 2026。