1. 程式人生 > >Linux企業生產環境使用者許可權集中管理專案方案案例

Linux企業生產環境使用者許可權集中管理專案方案案例

企業生產環境使用者許可權集中管理專案方案案例:

1 問題現狀

當前我們公司裡伺服器上百臺,各個伺服器上的管理人員很多(開發+運維+架構+DBA+產品+市場),在大家登入使用Linux伺服器時,不同職能的員工水平不同,因此導致操作很不規範,root許可權氾濫(幾個所有員工都有root許可權),經常導致檔案等莫名其妙的丟失,老手和新手員工對伺服器的熟知度不同,這樣使得公司伺服器安全存在很大的不穩定性、及操作安全隱患,據調查企業伺服器環境,50%以上的安全問題都來源於內部,而不是外部。為了解決以上問題,單個使用者管理許可權過大現狀,現提出針對Linux伺服器使用者許可權集中管理的解決方案。

2 專案需求

我們希望超級使用者root密碼掌握在少數或唯一的管理員手中,又希望多個系統管理員或相關有許可權的員工,能夠完成更多更復雜的自身職能相關的工作,又不至於越權操作導致系統出現安全隱患。

最小化:1)安裝軟體最小化

2)目錄檔案許可權最小化

3)使用者許可權最小化

那麼,如何解決多個系統管理員都能管理系統而又不讓超級許可權氾濫呢?這就需要sudo管理來替代或者結合su命令來完成這樣的苛刻且必要的企業伺服器使用者管理需求。

3 具體實現

   針對公司不同部門,根據員工的具體工作職能(例如:開發,運維,資料庫管理員)等級、分層次的實現對linux伺服器的許可權最小化、規範化。這樣即減少了運維管理成本,消除了安全隱患,又提高了工作效率,實現了高質量的、快速化的完成專案進度,以及日常系統維護。

4 實施方案

   說明:實施方案一般都是由積極主動發現問題的運維員工提出的問題,然後寫好方案,在召集大家討論可行性,最後確定方案,實施部署,最後後期總結維護。

思想:在提出問題之前,一定要想到如何解決,一併發出來解決方案。

4.1 資訊採集(含整個方案流程)

  1.1 召集相關各部門領導通過會議討論或是與各組領導溝通許可權管理方案的可行性。需要支援的人員:運維經理或者總監、CTO支援、各個部門組的領導。我們做運維人員,拿著類似老師這個專案方案,給大家講解這個文件,通過會議形式做演講,慷慨激昻的演說,取得大佬們的支援和認可,才是專案能夠得以最終實施的前提,當然,即使不實施,那麼,你的能力也得到了鍛鍊,老大對你的積極主動思考網站架構問題也會另眼看待的。

  1.2確定方案可行性後,會議負責人彙總、提交、稽核所有相關員工對linx伺服器的許可權需求。

取得大佬們的支援後,通過發郵件或者相關人員取得需要的相關員工許可權資訊。比如說,請各個部門經理整理歸類部門需要登入Linxu許可權的人員名單、職位、及負責的業務及許可權,如果說不清楚許可權細節,就說負責的業務細節,這樣運維人員就可以確定需要啥許可權了。

 1.3 按照需要執行的linux命令程式及公司業務服務來規劃許可權和人員對應配置。主要是運維人員根據上面手機的人員名單,需要的業務及許可權角色,對應帳號配置許可權,實際就是配置sudo配置檔案。

 1.4 許可權方案一旦實施後,所有員工必須通過《員工Linux伺服器管理許可權申請表》來申請對應的許可權,確定審批流程,規範化管理。這裡實施後把為許可權申請流程很重要,否則,大家不聽話,方案實施完也會泡湯的。

 1.5 寫操作說明,對各部門人員進行操作講解。sudo執行命令後,涉及到path變數問題,運維提前處理好。

4.2收集員工職能和對應許可權

  此過程是召集大家開會確定,或者請各領導安排人員進行統計彙總,員工及對應的職責,交給運維人員,由運維人員優化職位所對應的系統許可權。

命令用全路徑,命令與命令之間用逗號隔開。

 

/usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig,/bin/netstat,/sbin/route

 

/usr/bin/free,/usr/bin/iostat,/usr/bin/top,/etc/rc.d/init.d/network,/bin/nice,/bin/kill,/usr/bin/killall,/bin/rpm,/usr/bin/yum,/sbin/fdisk,/sbin/parted,/sbin/partprobe,/bin/mount,/bin/umount

 

初級開發:/usr/bin/tail /app/log*,/bin/grep /app/log*,/bin/cat,/bin/ls

高階開發:/sbin/service,/sbin/chkconfig,/bin/tail /app/log*,/bin/grep /app/log*,/bin/cat,/bin/ls,/bin/sh  ~/scripts/deploy.sh

   開發經理:

 ALL,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwd root,!/usr/sbin/visudo,!/bin/vi,

!/usr/sbin/vim

 

 

ALL,/usr/bin/passwd [A-Za-z]* , !/usr/bin/passwd root , !/usr/sbin/visudo, !/usr/bin/vim,

!/bin/vi, !/bin/su , !/user/bin/sudo

 

/sbin/route,/sbin/ifconfig,/bin/ping,/sbin/dhclient,/usr/bin/net,/sbin/iptables,/usr/bin/rfcomm,/usr/bin/wvdial,/sbin/iwconfig,/sbin/mii-tool,/bin/cat,/var/log/*

5  模擬建立使用者角色

建立3個初級運維,一個高階運維,一個網路工程師,一個運維經理,密碼統一為111111。

批量建立使用者

 

 建立5個開發人員,屬於phpers組

 

 

##Cmnd_Alias by sdr##2018

Cmnd_Alias

CY_CMD_1=/usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig,/bin/netstat,/sbin/route

Cmnd_Alias

GY_CMD_1=/usr/bin/free,/usr/bin/iostat,/usr/bin/top,/bin/hostname,/sbin/ifconfig,/bin/netstat,/sbin/route,/sbin/iptables,/etc/init.d/network,/bin/nice,/bin/kill,/usr/bin/killall,/bin/rpm,/usr/bin/yum,/sbin/fdisk,/sbin/sfdiak,/sbin/parted,/sbin/partprobe,/bin/mount,/bin/umount

Cmnd_Alias

CK_CMD_1=/usr/bin/tail /app/log*,/bin/grep /app/log*,/bin/cat,/bin/ls

Cmnd_Alias

GK_CMD_1=/sbin/service,/sbin/chkconfig,/bin/tail /app/log*,/bin/grep /app/log*,/bin/cat,/bin/ls,/bin/sh  ~/scripts/deploy.sh

 

Cmnd_Alias

GW_CMD_1=/sbin/route,/sbin/ifconfig,/bin/ping,/sbin/dhclient,/usr/bin/net,/sbin/iptables,/usr/bin/rfcom,/usr/bin/wvdial,/sbin/iwconfig,/sbin/mii-tool,/bin/cat /var/log/*

通過visudo編輯/etc/sudoers,新增如下內容:

換行用“\”

##User_Alias by sdr##2018    (使用者別名首字母大寫)

User_Alias CHUJIADMINS =chuji001,chuji002,chuji003

User_Alias GWNETADMINS = net001

User_Alias CHUJI_KAIFA = %phpers   (phpers組)

 

##Runas_Alias by sdr ##2018

Runas_Alias OP=root   (用root的角色去做)

 

#pri config

senior001 ALL=(OP) GY_CMD_1

manager001 ALL=(ALL) NOPASSWD:ALL

kaifamanager001 ALL=(ALL) ALL,/usr/bin/passwd[A-Za-z]*,!/usr/bin/passwd root,!/usr/sbin/visudo,!/bin/vi,!/usr/sbin/vim

seniorphpers ALL=(OP) GK_CMD_1

CHUJIADMINS ALL=(OP) CY_CMD_1

GWNETADMINS ALL=(OP) GW_CMD_1

CHUJI_KAIFA ALL=(OP) CK_CMD_1

#注意:

1)別名首字母要大寫

2)路徑要全路徑

3)用“\”換行

6 實戰除錯測試

 

 

 

7 成功後發郵件周知所有人許可權配置生效,並附帶操作說明

有必要的話,培訓講解

 

8  制定許可權申請流程及申請表

見單獨文件

9 後期維護:不是特別緊急的需求,一律走申請流程

伺服器多了,可以通過分發軟體批量分發/etc/sudoers(注意許可權和語法檢查)。

除了許可權上的控制,在賬戶有效時間上也進行了限制,

讓線上使用者的許可權為永久許可權可以使用以下方式進行時間上的控制,這樣才能讓安全最大化:

提示:授權ALL在進行排除時會讓我們防不勝防,這種先開後關的策略並不是好的策略

10  sudo配置注意事項: