1. 程式人生 > >Linux下的Root許可權控制

Linux下的Root許可權控制

Linux是當前比較流行的網路伺服器作業系統,它繼承了UNIX系統安全、穩定、高效等優點。在Linux系統中Root擁有最高許可權,正因如此攻擊者往往以獲取Root許可權為目標。作為管理員如何有效地對Root進行有效管理呢?本文將從許可權控制的角度,提供幾個安全技巧。

  演示環境

  Red Hat Enterprise Linux 5

  1、遠端登入

  我們知道在RHEL系統中,預設是允許Root使用者直接遠端登入的。假若攻擊者獲取了Root的密碼,然後進行遠端登入,那整個伺服器就淪陷了。因此,我們要做好Root的許可權限制,拒絕其遠端登入。這樣,就算攻擊者獲取了Root密碼,也不能通過遠端登入控制伺服器。限制Root遠端登入的方法有很多種,筆者向大家推薦兩種。

  (1)SSH限制

  我們知道SSH是Linux系統中用於遠端維護管理的一個服務,類似於Windows系統中的Telnet或者遠端桌面3389。通過SSH限制Root遠端登入,我們需要做的就是修改SSH的配置檔案。找/etc/ssh/sshd_config檔案,在其中新增PermitRootLogin no。需要注意的是Linux系統是大小寫敏感的,不要輸錯。輸入完畢後,儲存並退出,然後輸入命令service sshd restart重啟SSH服務使修改生效。這樣當通過Root遠端連線Linux伺服器時,就會拒絕連線。(圖1)

SSH限制

  (2)PAM認證

  我們還可以使用PAM認證模組來拒絕Root使用者直接登入系統,可通過下面的操作來實現。開啟/etc/pam.d/sshd檔案,在第一行加入auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/sshduser onerr=succeed這條語句。其含義是,在登入時認證帳戶和密碼是否有效,只有認證通過才能登入系統,否則結束認證拒絕登入。它的認證模組是/lib/security/pam_listfile.so,認證的使用者是使用者(user),當然也可以是組(group),認證的方式是拒絕(deny),認證檔案是/etc/sshduser,檔名及目錄隨意,如果認證成功就返回(succeed)。(圖2)

PAM認證

  然後我們建立一個認證檔案,可以在終端中執行命令echo "root" > /etc/sshduser來建立,當然我們也可以使用vi開啟sshduser檔案來加入使用者。需要說明的是,當有多個使用者時,每個使用者佔用一行。新增完成後,再使用Root直接登入伺服器就可以看到登入被拒絕了。(圖3)

PAM認證

  2、su限制

  我們知道在Linux系統中有個su命令,利用該命令只要知道Root使用者的密碼,預設情況下任何人都可以切換到Root使用者中進行操作。例如,一個屬於users組的普通使用者gslw可以通過su命令切換到Root使用者中。(圖4)

su限制

  因此,我們需要對SU進行限制,只允許特定組的使用者才能SU到Root使用者。使用的方法還是通過PAM認證模組來實現。我們先前控制ssh服務,是使用/etc/pam.d/sshd檔案,當然控制使用者使用su命令就需要對

  /etc/pam.d/su檔案進行修改。直接開啟該檔案進行修改,或者在終端命令視窗輸入命令vi /etc/pam.d/su,然後去掉其中#auth required pam_wheel.so use_uid的註釋即可。(圖5)

su限制

  其含義是,使用pam_wheel.so檔案來檢查當前使用者的UID,如果不是whell組的使用者就直接拒絕。現在我們通過gslw使用者登入系統,然後su到Root可以看到被拒絕。當然,要使其可以su到Root需要將其加入了wheel組才可以。(圖6)

su限制

  3、Root分權

  大家知道,由於Root具有最高的許可權,經常用root使用者來管理系統,會給系統帶來一定的安全隱患。比如,一條無意識輸入的破壞性的命令有可能會給系統帶來毀滅性的打擊。另外,如果系統被植入了嗅探工具,如果用root登入會造成root口令被竊取。因此我們要消減Root的許可權,可以讓其它使用者來完成Root的一些工作,避免過多地使用Root使用者。

  如何為Root分權,要根據伺服器的性質來確定。比如一個Linux平臺的apache伺服器,作為管理員經常使用的命令應該是諸如/usr/local/apache2/bin/apachect1 start/stop/restart這樣的是啟動/重啟/停止伺服器的命令。我們可以為此建立一個使用者gslw來管理apache伺服器,我們知道普通使用者是沒有許可權來啟動apache伺服器的。這裡要用到sudo命令,通過它為gslw使用者加入擴充套件許可權使其可以管理apache伺服器。

  利用Vi或者直接進入/etc/pam.d開啟sudo檔案,然後在其中新增一行gslw ALL=(ALL) /usr/local/apache2/bin/apachectl命令就可以了。該命令分成四個欄位,依次為使用者名稱、作用物件、以誰的身份執行以及執行的命令。當然,我們也可以加入gslw localhost=(root) /usr/local/apache2/bin/apachectl start,這樣過濾更嚴格一些。最後儲存退出後,使用gslw使用者登入系統就可以執行/usr/local/apache2/bin/apachectl start命令了。上面只是舉例,大家可以根據自己的需要在sudo檔案中新增相應的命令列。不過,需要說明的是命令一定要嚴格過濾,不要賦權過大。(圖7)

Root分權

  總結:Linux下的許可權控制是非常嚴格的,但也非常靈活,我們可以根據自己的安全需求進行佈防。當然,關於Root許可權的控制策略和方法還有很多,希望本文提供的思路對大家有所幫助。