ABCDEFGHIJKLMNOPQRSTUVWXYZ
1
TWGCB-ID類別原則設定名稱說明設定方法GCB設定值
2
1TWGCB-01-008-0001磁碟與檔案系統cramfs檔案系統  這項原則設定決定是否支援cramfs檔案系統
▪  cramfs (compressed ROM file system,壓縮唯讀閃存檔案系統)檔案系統是一開放式之Linux檔案系統,目的是更簡單更有效率
▪  cramfs檔案系統以zlib壓縮資料,不需載入到記憶體中,因此可節省許多記憶體空間,可直接使用cramfs映像檔案無須先解壓,使用於某些舊系統或對記憶體有限制之地方
▪  停止支援cramfs檔案系統,以降低系統被攻擊面
  開啟終端機,執行vim指令,在/etc/modprobe.d目錄新增或編輯「cramfs.conf」檔案,範例如下:
#vim /etc/modprobe.d/cramfs.conf
並在檔案中加入以下內容:
install cramfs /bin/true
blacklist cramfs
▪  開啟終端機,執行下列指令,移除cramfs模組:
#rmmod cramfs
▪  完成後,請重新開機
停用
3
2TWGCB-01-008-0002磁碟與檔案系統squashfs檔案系統  這項原則設定決定是否支援squashfs檔案系統
▪  squashfs是一個即時解壓縮之檔案系統,專門為唯讀壓縮檔案系統之使用而設計,常見於各Linux發行版之LiveCD
▪  停止支援squashfs檔案系統,以降低系統被攻擊面
▪  停止支援squashfs檔案系統,將可能導致Snap套件無法正常運作
  開啟終端機,執行vim指令,在/etc/modprobe.d目錄,新增或編輯「squashfs.conf」檔案,範例如下:
#vim /etc/modprobe.d/squashfs.conf
並在檔案中加入以下內容:
install squashfs /bin/true
blacklist squashfs
▪  開啟終端機,執行下列指令,移除squashfs模組:
#rmmod squashfs
▪  完成後,請重新開機
停用
4
3TWGCB-01-008-0003磁碟與檔案系統udf檔案系統  這項原則設定決定是否支援udf檔案系統
▪  udf(Universal disk format,通用磁碟格式)是根據ISO/IEC 13346與ECMA-167標準所實作之檔案系統,由光學儲存技術協會(OSTA)開發與維護,廣泛應用在如CD-R/RW與DVD-R/RW等可寫光學儲存媒體
▪  停止支援udf檔案系統,以降低系統被攻擊面
▪  系統若運行在Microsoft Azure平台上,將可能影響系統正常運作
  開啟終端機,執行vim指令,在/etc/modprobe.d目錄,新增或編輯「udf.conf」檔案,範例如下:
#vim /etc/modprobe.d/udf.conf
並在檔案中加入以下內容:
install udf /bin/true
blacklist udf
▪  開啟終端機,執行下列指令,移除udf模組:
#rmmod udf
▪  完成後,請重新開機
停用
5
4TWGCB-01-008-0004磁碟與檔案系統設定/tmp目錄之檔案系統  這項原則設定決定/tmp目錄是否使用tmpfs檔案系統
▪  /tmp是具有全域寫入權限之目錄,所有使用者與某些應用程式都將其用於暫存檔案
▪  tmpfs是一個不存在於實體硬碟上,而是駐存在記憶體的特殊檔案系統,可提供優於傳統機械硬碟的存取速度
▪  將/tmp目錄掛載到tmpfs,可於掛載選項上使用noexec選項,指定/tmp目錄不能啟動可執行二進制檔案,使攻擊者不能安裝執行惡意程式以降低風險
執行以下任一操作以設定/tmp目錄之檔案系統:
(1)  開啟終端機,執行下列指令,編輯/etc/fstab
#vim /etc/fstab
/tmp的掛載設定範例如下:
tmpfs /tmp tmpfs defaults,rw,nosuid,nodev,noexec,relatime 0 0
(2)  開啟終端機,執行下列指令,運用systemd掛載/tmp:
#systemctl unmask tmp.mount
#systemctl enable tmp.mount
編輯/etc/systemd/system/local-fs.target.wants/tmp.mount以掛載/tmp:
[Mount]
What=tmpfs
Where=/tmp
Type=tmpfs
Options=mode=1777,strictatime,noexec,nodev,nosuid
tmpfs
6
5TWGCB-01-008-0005磁碟與檔案系統設定/tmp目錄之nodev選項  這項原則設定決定/tmp目錄是否啟用nodev選項,以禁止在/tmp目錄中建立裝置檔案
▪  由於/tmp目錄用途不在於支援裝置,設定nodev選項以確保使用者無法在/tmp目錄建立裝置檔案或存取隨機硬體裝置,降低惡意程式感染風險
▪  可設定之參數如下:
(1) dev:允許建立裝置檔案
(2) nodev:禁止建立裝置檔案
執行以下任一操作以設定/tmp目錄之nodev選項:
(1)  編輯/etc/fstab檔案,在掛載點為/tmp列,於第4欄加入「,nodev」
開啟終端機,執行下列指令,重新掛載/tmp:
#mount -o remount,nodev /tmp
(2)  編輯/etc/systemd/system/local-fs.target.wants/tmp.mount,將nodev添加到/tmp掛載選項:
[Mount]
Options=mode=1777,strictatime,noexec,nodev,nosuid
開啟終端機,執行下列指令,重新掛載/tmp:
#mount -o remount,nodev /tmp
啟用
7
6TWGCB-01-008-0006磁碟與檔案系統設定/tmp目錄之nosuid選項  這項原則設定決定/tmp目錄是否啟用nosuid選項,以禁止/tmp目錄存在具有SUID屬性的檔案
▪  SUID(Set User ID)是針對可執行二進制檔案(Binary file)設計的一項功能,任何使用者執行該程式時,會以該程式之擁有者的身分執行,藉由短暫提權讓一般使用者存取未被授權之檔案
▪  可設定之參數如下:
(1) suid:允許存在具有SUID屬性的檔案
(2) nosuid:禁止存在具有SUID屬性的檔案
執行以下任一操作以設定/tmp目錄之nosuid選項:
(1)  編輯/etc/fstab檔案,在掛載點為/tmp列,於第4欄加入「,nosuid」
開啟終端機,執行下列指令,重新掛載/tmp:
#mount -o remount,nosuid /tmp
(2)  編輯/etc/systemd/system/local-fs.target.wants/tmp.mount,將nosuid添加到/tmp掛載選項:
[Mount]
Options=mode=1777,strictatime,noexec,nodev,nosuid
開啟終端機,執行下列指令,重新掛載/tmp:
# mount -o remount,nosuid /tmp
啟用
8
7TWGCB-01-008-0007磁碟與檔案系統設定/tmp目錄之noexec選項  這項原則設定決定/tmp目錄是否啟用noexec選項,以禁止在/tmp目錄中啟動可執行二進制檔案
▪  /tmp目錄主要做為暫時存放檔案之用,禁止使用者啟動可執行二進制檔案,以避免感染惡意程式
▪  可設定之參數如下:
(1) exec:允許啟動可執行二進制檔案
(2) noexec:禁止啟動可執行二進制檔案
執行以下任一操作以設定/tmp目錄之noexec選項:
(1)  編輯/etc/fstab檔案,在掛載點為/tmp列,於第4欄加入「,noexec」
開啟終端機,執行下列指令,重新掛載/tmp:
#mount -o remount,noexec /tmp
(2)  編輯/etc/systemd/system/local-fs.target.wants/tmp.mount將noexec添加到/tmp掛載選項:
[Mount]
Options=mode=1777,strictatime,noexec,nodev,nosuid
開啟終端機,執行下列指令,重新掛載/tmp:
# mount -o remount,noexec /tmp
啟用
9
8TWGCB-01-008-0008磁碟與檔案系統設定/var目錄之檔案系統  這項原則設定決定是否為/var目錄建立獨立之分割磁區或邏輯磁區
▪  /var目錄主要供守護程序(daemon)與其他系統服務用來儲存經常性變動的資料
▪  /var目錄有時會包含其他軟體套件所建立的全域寫入目錄,若未設為獨立的分割磁區或邏輯磁區,將可能造成系統儲存空間耗盡
▪  由於yum套件管理工具或其他程式可能暫存較大之檔案於/var目錄中,可依實務需求設定適當磁區容量
  對於新安裝的系統,在系統安裝過程中建立自定義磁區,為/var指定一個獨立磁區
▪  對於已安裝的系統,請先完成全系統備份後始進行磁區分割作業,使用邏輯磁區管理員(Logical volume manager, LVM)建立獨立的/var磁區之範例如下:
情境說明:系統擁有1顆20GB的SCSI硬碟,目前已建立2個主要磁區,合計已使用5GB空間。針對剩餘硬碟空間使用LVM建立1個256MB的/var邏輯磁區操作順序如下:
#gdisk /dev/sda
#n(新增磁區)
#3(建立磁區編號)
#enter(在First sector輸入)
#+256M(在Last sector輸入)
#8e00(變更Hex code,LVM磁區代碼)
#w(寫入磁區分割表格)
#partprobe(強制重新抓磁區分割表格)
#pvcreate /dev/sda3(對/dev/sda3建立PV)
#vgcreate -s 16M varvg /dev/sda3(對/dev/sda3建立1個VG,VG名稱varvg,且指定1個PE大小16MB)
#vgdisplay(顯示目前系統VG狀態,本範例的Total PE數顯示15)
#lvcreate -l 15 -n varlv varvg (從varvg分割出1個LV,LV名稱varlv,並將15個PE配置給varlv)
#mkfs.xfs /dev/varvg/varlv(對/dev/varvg/varlv進行格式化)
接著,編輯/etc/fstab檔案,新增或修改成以下內容:
/dev/varvg/varlv /var xfs defaults 0 0
使用獨立之分割磁區或邏輯磁區
10
9TWGCB-01-008-0009磁碟與檔案系統設定/var/tmp目錄之檔案系統  這項原則設定決定是否為/var/tmp目錄建立獨立之分割磁區或邏輯磁區
▪  /var/tmp是具有全域寫入權限之目錄,所有使用者與某些應用程式都將其用於暫存檔案,若未設為獨立之分割磁區或邏輯磁區,將可能造成系統儲存空間耗盡
▪  將/var/tmp目錄掛載到獨立之分割磁區或邏輯磁區,可於掛載選項上使用noexec選項,指定/var/tmp目錄不能啟動可執行二進制檔案,使攻擊者不能安裝執行惡意程式
  對於新安裝的系統,在系統安裝過程中建立自定義磁區,為/var/tmp指定一個獨立磁區
▪  對於已安裝的系統,請先完成全系統備份後始進行磁區分割作業,使用邏輯磁區管理員建立獨立的/var/tmp磁區之範例如下:
▪  情境說明:系統擁有1顆20GB的SCSI硬碟,目前已建立2個主要磁區,合計已使用5GB空間。針對剩餘硬碟空間使用LVM建立1個256MB的/var/tmp邏輯磁區操作順序如下:
#gdisk /dev/sda
#n(新增磁區)
#3(建立磁區編號)
#enter(在First sector輸入)
#+256M(在Last sector輸入)
#8e00(變更Hex code,LVM磁區代碼)
#w(寫入磁區分割表格)
#partprobe(強制重新抓磁區分割表格)
#pvcreate /dev/sda3(對/dev/sda3建立PV)
#vgcreate -s 16M vartmpvg /dev/sda3(對/dev/sda3建立1個VG,VG名稱vartmpvg,且指定1個PE大小16MB)
#vgdisplay(顯示目前系統VG狀態,本範例的Total PE數顯示15)
#lvcreate -l 15 -n vartmplv vartmpvg (從vartmpvg分割出1個LV,LV名稱vartmplv,並將15個PE配置給vartmplv)
#mkfs.xfs /dev/vartmpvg/vartmplv(對/dev/vartmpvg/vartmplv進行格式化)
▪  接著,編輯/etc/fstab檔案,新增或修改成以下內容:
/dev/vartmpvg/vartmplv /var/tmp xfs defaults 0 0
使用獨立之分割磁區或邏輯磁區
11
10TWGCB-01-008-0010磁碟與檔案系統設定/var/tmp目錄之nodev選項  這項原則設定決定/var/tmp目錄是否啟用nodev選項,以禁止在/var/tmp目錄中建立裝置檔案
▪  由於/var/tmp目錄用途不在於支援裝置,設定nodev選項以確保使用者無法在/var/tmp目錄建立裝置檔案或存取隨機硬體裝置,降低惡意程式感染風險
▪  可設定之參數如下:
(1) dev:允許建立裝置檔案
(2) nodev:禁止建立裝置檔案
  編輯/etc/fstab檔案,在掛載點為/var/tmp列,於第4欄加入「,nodev
▪  開啟終端機,執行下列指令,重新掛載/var/tmp:
#mount -o remount,nodev /var/tmp
啟用
12
11TWGCB-01-008-0011磁碟與檔案系統設定/var/tmp目錄之nosuid選項  這項原則設定決定/var/tmp目錄是否啟用nosuid選項,以禁止/var/tmp目錄存在具有SUID屬性的檔案
▪  SUID(Set User ID)是針對可執行二進制檔案(Binary file)設計的一項功能,任何使用者執行該程式時,會以該程式之擁有者的身分執行,藉由短暫提權讓一般使用者存取未被授權之檔案
▪  可設定之參數如下:
(1) suid:允許存在具有SUID屬性的檔案
(2) nosuid:禁止存在具有SUID屬性的檔案
  編輯/etc/fstab檔案,在掛載點為/var/tmp列,於第4欄加入「, nosuid
▪  開啟終端機,執行下列指令,重新掛載/var/tmp:
#mount -o remount,nosuid /var/tmp
啟用
13
12TWGCB-01-008-0012磁碟與檔案系統設定/var/tmp目錄之noexec選項  這項原則設定決定/var/tmp目錄是否啟用noexec選項,以禁止在/var/tmp目錄中啟動可執行二進制檔案
▪  /var/tmp目錄主要做為暫時存放檔案之用,禁止使用者啟動可執行二進制檔案,以避免感染惡意程式
▪  可設定之參數如下:
(1) exec:允許啟動可執行二進制檔案
(2) noexec:禁止啟動可執行二進制檔案
  編輯/etc/fstab檔案,在掛載點為/var/tmp列,於第4欄加入「,noexec
▪  開啟終端機,執行下列指令,重新掛載/var/tmp:
#mount -o remount,noexec /var/tmp
啟用
14
13TWGCB-01-008-0013磁碟與檔案系統設定/var/log目錄之檔案系統  這項原則設定決定是否為/var/log目錄建立獨立之分割磁區或邏輯磁區
▪  /var/log目錄用來存放系統日誌(System log),可依實務需求設定適當磁區容量,以確保所有系統日誌皆可順利儲存
▪  由於系統日誌檔容量可能會過於巨大,為/var/log目錄建立獨立之分割磁區或邏輯磁區,可避免系統儲存空間耗盡,同時可保護稽核紀錄
  對於新安裝的系統,在系統安裝過程中建立自定義磁區,為/var/log指定一個獨立磁區
▪  對於已安裝的系統,請先完成全系統備份後始進行磁區分割作業,使用邏輯磁區管理員建立獨立的/var/log磁區之範例如下:
情境說明:系統擁有1顆20GB的SCSI硬碟,目前已建立2個主要磁區,合計已使用5GB空間。針對剩餘硬碟空間使用LVM建立1個256MB的/var/log邏輯磁區操作順序如下:
#gdisk /dev/sda
#n(新增磁區)
#3(建立磁區編號)
#enter(在First sector輸入)
#+256M(在Last sector輸入)
#8e00(變更Hex code,LVM磁區代碼)
#w(寫入磁區分割表格)
#partprobe(強制重新抓磁區分割表格)
#pvcreate /dev/sda3(對/dev/sda3建立PV)
#vgcreate -s 16M varlogvg /dev/sda3(對/dev/sda3建立1個VG,VG名稱varlogvg,且指定1個PE大小16MB)
#vgdisplay(顯示目前系統VG狀態,本範例的Total PE數顯示15)
#lvcreate -l 15 -n varloglv varlogvg (從varlogvg分割出1個LV,LV名稱varloglv,並將15個PE配置給varloglv)
#mkfs.xfs /dev/varlogvg/varloglv(對/dev/varlogvg/varloglv進行格式化)
接著,編輯/etc/fstab檔案,新增或修改成以下內容:
/dev/varlogvg/varloglv /var/log xfs defaults 0 0
使用獨立之分割磁區或邏輯磁區
15
14TWGCB-01-008-0014磁碟與檔案系統設定/var/log/audit目錄之檔案系統  這項原則設定決定是否為/var/log/audit目錄建立獨立之分割磁區或邏輯磁區
▪  /var/log/audit目錄用來存放稽核日誌(Audit log),可依實務需求設定適當磁區容量,以確保所有由auditd服務程序所產生之稽核日誌皆可順利儲存
▪  由於稽核日誌檔容量可能會過於巨大,為/var/log/audit目錄建立獨立之分割磁區或邏輯磁區,可避免系統儲存空間耗盡,同時可保護稽核紀錄
  對於新安裝的系統,在系統安裝過程中建立自定義磁區,為/var/log/audit指定一個獨立磁區
▪  對於已安裝的系統,請先完成全系統備份後始進行磁區分割作業,使用邏輯磁區管理員建立獨立的/var/log/audit磁區之範例如下:
情境說明:系統擁有1顆20GB的SCSI硬碟,目前已建立2個主要磁區,合計已使用5GB空間。針對剩餘硬碟空間使用LVM建立1個256MB的/var/log/audit邏輯磁區操作順序如下:
#gdisk /dev/sda
#n(新增磁區)
#3(建立磁區編號)
#enter(在First sector輸入)
#+256M(在Last sector輸入)
#8e00(變更Hex code,LVM磁區代碼)
#w(寫入磁區分割表格)
#partprobe(強制重新抓磁區分割表格)
#pvcreate /dev/sda3(對/dev/sda3建立PV)
#vgcreate -s 16M varlogadvg /dev/sda3(對/dev/sda3建立1個VG,VG名稱varlogadvg,且指定1個PE大小16MB)
#vgdisplay(顯示目前系統VG狀態,本範例的Total PE數顯示15)
#lvcreate -l 15 -n varlogadlv varlogadvg (從varlogadvg分割出1個LV,LV名稱varlogadlv,並將15個PE配置給varlogadlv)
#mkfs.xfs /dev/varlogadvg/varlogadlv(對/dev/varlogadvg/varlogadlv進行格式化)
接著,編輯/etc/fstab檔案,新增或修改成以下內容:
/dev/varlogadvg/varlogadlv /var/log/audit xfs defaults 0 0
使用獨立之分割磁區或邏輯磁區
16
15TWGCB-01-008-0015磁碟與檔案系統設定/home目錄之檔案系統  這項原則設定決定是否為/home目錄建立獨立之分割磁區或邏輯磁區
▪  /home目錄是系統預設的使用者家目錄(Home directory)。每當新增1個一般使用者帳號時,預設的使用者家目錄都會建立在/home目錄下
▪  為/home目錄建立獨立之分割磁區或邏輯磁區,可避免系統儲存空間耗盡,同時可限制欲存放的檔案類型
  對於新安裝的系統,在系統安裝過程中建立自定義磁區,為/home指定一個獨立磁區
▪  對於已安裝的系統,請先完成全系統備份後始進行磁區分割作業,使用邏輯磁區管理員建立獨立的/home磁區之範例如下:
情境說明:系統擁有1顆20GB的SCSI硬碟,目前已建立2個主要磁區,合計已使用5GB空間。針對剩餘硬碟空間使用LVM建立1個256MB的/home邏輯磁區操作順序如下:
#gdisk /dev/sda
#n(新增磁區)
#3(建立磁區編號)
#enter(在First sector輸入)
#+256M(在Last sector輸入)
#8e00(變更Hex code,LVM磁區代碼)
#w(寫入磁區分割表格)
#partprobe(強制重新抓磁區分割表格)
#pvcreate /dev/sda3(對/dev/sda3建立PV)
#vgcreate -s 16M homevg /dev/sda3(對/dev/sda3建立1個VG,VG名稱homevg,且指定1個PE大小16MB)
#vgdisplay(顯示目前系統VG狀態,本範例的Total PE數顯示15)
#lvcreate -l 15 -n homelv homevg (從homevg分割出1個LV,LV名稱homelv,並將15個PE配置給homelv)
#mkfs.xfs /dev/homevg/homelv(對/dev/homevg/homelv進行格式化)
接著,編輯/etc/fstab檔案,新增或修改成以下內容:
/dev/homevg/homelv /home xfs defaults 0 0
使用獨立之分割磁區或邏輯磁區
17
16TWGCB-01-008-0016磁碟與檔案系統設定/home目錄之nodev選項  這項原則設定決定/home目錄是否啟用nodev選項,以禁止在/home目錄中建立裝置檔案
▪  /home目錄是系統預設的使用者家目錄(Home directory)。每當新增1個一般使用者帳號時,預設的使用者家目錄都會建立在/home目錄下
▪  由於/home目錄用途不在於支援裝置,設定nodev選項以確保使用者無法在/home目錄建立裝置檔案或存取隨機硬體裝置,降低惡意程式感染風險
▪  可設定之參數如下:
(1) dev:允許建立裝置檔案
(2) nodev:禁止建立裝置檔案
  編輯/etc/fstab檔案,在掛載點為/home列,於第4欄加入「,nodev
▪  開啟終端機,執行下列指令,重新掛載/home:
#mount -o remount,nodev /home
啟用
18
17TWGCB-01-008-0017磁碟與檔案系統設定/dev/shm目錄之nodev選項  這項原則設定決定/dev/shm目錄是否啟用nodev選項,以禁止在/dev/shm目錄中建立裝置檔案
▪  /dev/shm目錄是系統利用記憶體建立的虛擬磁碟空間,用以存放暫存檔案,一方面存取速度比硬碟快,另一方面可依實際檔案大小動態分配空間
▪  由於/dev/shm目錄用途不在於支援裝置,設定nodev選項以確保使用者無法在/dev/shm目錄建立裝置檔案或存取隨機硬體裝置,降低惡意程式感染風險
▪  可設定之參數如下:
(1) dev:允許建立裝置檔案
(2) nodev:禁止建立裝置檔案
  編輯/etc/fstab檔案,在掛載點為/dev/shm列,於第4欄加入「,nodev
▪  若掛載點不存在,請於/etc/fstab檔案新增掛載點,並於第4欄加入「,nodev」,範例如下:
/dev/shm tmpfs rw, nodev,seclabel 0 0
▪  開啟終端機,執行下列指令,重新掛載/dev/shm:
#mount -o remount,nodev /dev/shm
啟用
19
18TWGCB-01-008-0018磁碟與檔案系統設定/dev/shm目錄之nosuid選項  這項原則設定決定/dev/shm目錄是否啟用nosuid選項,以禁止/dev/shm目錄存在具有SUID屬性的檔案
▪  /dev/shm目錄是系統利用記憶體建立的虛擬磁碟空間,用以存放暫存檔案,一方面存取速度比硬碟快,另一方面可依實際檔案大小動態分配空間
▪  SUID(Set User ID)是針對可執行二進制檔案(Binary file)設計的一項功能,任何使用者執行該程式時,會以該程式之擁有者的身分執行,藉由短暫提權讓一般使用者存取未被授權之檔案
▪  可設定之參數如下:
(1) suid:允許存在具有SUID屬性的檔案
(2) nosuid:禁止存在具有SUID屬性的檔案
  編輯/etc/fstab檔案,在掛載點為/dev/shm列,於第4欄加入「,nosuid
▪  若掛載點不存在,請於/etc/fstab檔案新增掛載點,並於第4欄加入「,nosuid」,範例如下:
/dev/shm tmpfs rw, nosuid,seclabel 0 0
▪  開啟終端機,執行下列指令,重新掛載/dev/shm:
#mount -o remount,nosuid /dev/shm
啟用
20
19TWGCB-01-008-0019磁碟與檔案系統設定/dev/shm目錄之noexec選項  這項原則設定決定/dev/shm目錄是否啟用noexec選項,以禁止在/dev/shm目錄中啟動可執行二進制檔案
▪  /dev/shm目錄是系統利用記憶體建立的虛擬磁碟空間,用以存放暫存檔案,一方面存取速度比硬碟快,另一方面可依實際檔案大小動態分配空間
▪  設定noexec選項,禁止使用者啟動可執行二進制檔案,以避免感染惡意程式
▪  可設定之參數如下:
(1) exec:允許啟動可執行二進制檔案
(2) noexec:禁止啟動可執行二進制檔案
  編輯/etc/fstab檔案,在掛載點為/dev/shm列,於第4欄加入「,noexec
▪  若掛載點不存在,請於/etc/fstab檔案新增掛載點,並於第4欄加入「,noexec」,範例如下:
/dev/shm tmpfs rw, noexec,seclabel 0 0
▪  開啟終端機,執行下列指令,重新掛載/dev/shm:
#mount -o remount,noexec /dev/shm
啟用
21
20TWGCB-01-008-0020磁碟與檔案系統設定可攜式儲存裝置之nodev選項  這項原則設定決定可攜式儲存裝置是否啟用nodev選項,以禁止在可攜式儲存裝置中建立裝置檔案
▪  設定nodev選項以確保使用者無法在/home目錄建立裝置檔案或存取隨機硬體裝置,降低惡意程式感染風險
▪  可設定之參數如下:
(1) dev:允許建立裝置檔案
(2) nodev:禁止建立裝置檔案
  開啟終端機,執行以下指令,檢查是否有掛載可攜式儲存裝置:
#mount
▪  若發現有掛載可攜式儲存裝置,則編輯/etc/fstab檔案,在掛載點為「可攜式儲存裝置」列,於第4欄加入「,nodev」
啟用
22
21TWGCB-01-008-0021磁碟與檔案系統設定可攜式儲存裝置之nosuid選項  這項原則設定決定可攜式儲存裝置是否啟用nosuid選項,以禁止可攜式儲存裝置存在具有SUID屬性的檔案
▪  SUID(Set User ID)是針對可執行二進制檔案(Binary file)設計的一項功能,任何使用者執行該程式時,會以該程式之擁有者的身分執行,藉由短暫提權讓一般使用者存取未被授權之檔案
▪  可設定之參數如下:
(1) suid:允許存在具有SUID屬性的檔案
(2) nosuid:禁止存在具有SUID屬性的檔案
  開啟終端機,執行以下指令,檢查是否有掛載可攜式儲存裝置:
#mount
▪  若發現有掛載可攜式儲存裝置,則編輯/etc/fstab檔案,在掛載點為「可攜式儲存裝置」列,於第4欄加入「,nosuid」
啟用
23
22TWGCB-01-008-0022磁碟與檔案系統設定可攜式儲存裝置之noexec選項  這項原則設定決定可攜式儲存裝置是否啟用noexec選項,以禁止在可攜式儲存裝置中啟動可執行二進制檔案
▪  設定noexec選項,禁止使用者啟動可執行二進制檔案,以避免感染惡意程式
▪  可設定之參數如下:
(1) exec:允許啟動可執行二進制檔案
(2) noexec:禁止啟動可執行二進制檔案
  開啟終端機,執行以下指令,檢查是否有掛載可攜式儲存裝置:
#mount
▪  若發現有掛載可攜式儲存裝置,則編輯/etc/fstab檔案,在掛載點為「可攜式儲存裝置」列,於第4欄加入「,noexec」
啟用
24
23TWGCB-01-008-0023磁碟與檔案系統設定使用者家目錄之nodev選項  這項原則設定決定使用者家目錄是否啟用nodev選項,以禁止在使用者家目錄中建立裝置檔案
▪  使用者家目錄是系統預設的使用者主目錄,目錄下存放使用者的環境設定與個人檔案
▪  由於使用者家目錄用途不在於支援裝置,設定nodev選項以確保使用者無法在/home目錄建立裝置檔案或存取隨機硬體裝置,降低惡意程式感染風險
▪  可設定之參數如下:
(1) dev:允許建立裝置檔案
(2) nodev:禁止建立裝置檔案
  開啟終端機,執行下列指令,尋找使用者家目錄(/home/使用者帳號)
#awk -F: '($3>=1000)&&($1!="nobody"){print $1,$3,$6}' /etc/passwd
▪  執行下列指令,檢查/etc/fstab檔案,確認系統開機時掛載的檔案系統:
#more /etc/fstab
▪  若發現使用者家目錄掛載在獨立檔案系統,則編輯/etc/fstab檔案,在掛載點為「使用者家目錄」列,於第4欄加入「,nodev」
啟用
25
24TWGCB-01-008-0024磁碟與檔案系統設定使用者家目錄之nosuid選項  這項原則設定決定使用者家目錄是否啟用nosuid選項,以禁止使用者家目錄存在具有SUID屬性的檔案
▪  使用者家目錄是系統預設的使用者主目錄,目錄下存放使用者的環境設定與個人檔案
▪  SUID(Set User ID)是針對可執行二進制檔案(Binary file)設計的一項功能,任何使用者執行該程式時,會以該程式之擁有者的身分執行,藉由短暫提權讓一般使用者存取未被授權之檔案
▪  可設定之參數如下:
(1) suid:允許存在具有SUID屬性的檔案
(2) nosuid:禁止存在具有SUID屬性的檔案
  開啟終端機,執行下列指令,尋找使用者家目錄(/home/使用者帳號)
#awk -F: '($3>=1000)&&($1!="nobody"){print $1,$3,$6}' /etc/passwd
▪  執行下列指令,檢查/etc/fstab檔案,確認系統開機時掛載的檔案系統:
#more /etc/fstab
▪  若發現使用者家目錄掛載在獨立檔案系統,則編輯/etc/fstab檔案,在掛載點為「使用者家目錄」列,於第4欄加入「,nosuid」
啟用
26
25TWGCB-01-008-0025磁碟與檔案系統設定使用者家目錄之noexec選項  這項原則設定決定使用者家目錄是否啟用noexec選項,以禁止在使用者家目錄中啟動可執行二進制檔案
▪  使用者家目錄是系統預設的使用者主目錄,目錄下存放使用者的環境設定與個人檔案
▪  設定noexec選項,禁止使用者啟動可執行二進制檔案,以避免感染惡意程式
▪  可設定之參數如下:
(1) exec:允許啟動可執行二進制檔案
(2) noexec:禁止啟動可執行二進制檔案
  開啟終端機,執行下列指令,尋找使用者家目錄(/home/使用者帳號)
#awk -F: '($3>=1000)&&($1!="nobody"){print $1,$3,$6}' /etc/passwd
▪  執行下列指令,檢查/etc/fstab檔案,確認系統開機時掛載的檔案系統:
#more /etc/fstab
▪  若發現使用者家目錄掛載在獨立檔案系統,則編輯/etc/fstab檔案,在掛載點為「使用者家目錄」列,於第4欄加入「,noexec」
啟用
27
26TWGCB-01-008-0026磁碟與檔案系統設定NFS檔案系統之nodev選項  這項原則設定決定NFS檔案系統是否啟用nodev選項,以禁止在NFS檔案系統中建立裝置檔案
▪  設定nodev選項以確保使用者無法在NFS檔案系統中建立裝置檔案或存取隨機硬體裝置,降低惡意程式感染風險
▪  可設定之參數如下:
(1) dev:允許建立裝置檔案
(2) nodev:禁止建立裝置檔案
  開啟終端機,執行下列指令,檢查/etc/fstab檔案,確認系統開機時是否有掛載NFS檔案系統:
#grep nfs /etc/fstab
▪  若發現有掛載NFS檔案系統,則編輯/etc/fstab檔案,在掛載點為「NFS檔案系統」列,於第4欄加入「,nodev」
啟用
28
27TWGCB-01-008-0027磁碟與檔案系統設定NFS檔案系統之nosuid選項  這項原則設定決定NFS檔案系統是否啟用nosuid選項,以禁止NFS檔案系統存在具有SUID屬性的檔案
▪  SUID(Set User ID)是針對可執行二進制檔案(Binary file)設計的一項功能,任何使用者執行該程式時,會以該程式之擁有者的身分執行,藉由短暫提權讓一般使用者存取未被授權之檔案
▪  可設定之參數如下:
(1) suid:允許存在具有SUID屬性的檔案
(2) nosuid:禁止存在具有SUID屬性的檔案
  開啟終端機,執行下列指令,檢查/etc/fstab檔案,確認系統開機時是否有掛載NFS檔案系統:
#grep nfs /etc/fstab
▪  若發現有掛載NFS檔案系統,則編輯/etc/fstab檔案,在掛載點為「NFS檔案系統」列,於第4欄加入「,nosuid」
啟用
29
28TWGCB-01-008-0028磁碟與檔案系統設定NFS檔案系統之noexec選項  這項原則設定決定NFS檔案系統是否啟用noexec選項,以禁止在NFS檔案系統中啟動可執行二進制檔案
▪  設定noexec選項,禁止使用者啟動可執行二進制檔案,以避免感染惡意程式
▪  可設定之參數如下:
(1) exec:允許啟動可執行二進制檔案
(2) noexec:禁止啟動可執行二進制檔案
  開啟終端機,執行下列指令,檢查/etc/fstab檔案,確認系統開機時是否有掛載NFS檔案系統:
#grep nfs /etc/fstab
▪  若發現有掛載NFS檔案系統,則編輯/etc/fstab檔案,在掛載點為「NFS檔案系統」列,於第4欄加入「,noexec」
啟用
30
29TWGCB-01-008-0029磁碟與檔案系統設定全域寫入權限目錄之粘滯位  這項原則設定決定所有具有全域寫入(World-writable)權限之目錄是否設定粘滯位(Sticky bit)
▪  設定粘滯位(Sticky bit)確保只有擁有者才能刪除或更名自己建立的檔案,以防止其他使用者任意刪除或更名其他使用者的檔案
開啟終端機,執行下列指令,在所有具有全域寫入(World-writable)權限之目錄設定粘滯位:
#df --local -P | awk '{if (NR!=1) print $6}' | xargs -I '{}' find '{}' -xdev -type d \( -perm -0002 -a ! -perm -1000 \) 2>/dev/null | xargs -I '{}' chmod o+t '{}'
設定粘滯位
31
30TWGCB-01-008-0030磁碟與檔案系統autofs服務  這項原則設定決定是否使用autofs服務
▪  autofs服務可自動掛載或卸載光碟機、USB裝置及NFS檔案系統的掛載點,讓任何使用者都可以使用autofs服務掛載裝置與檔案系統
▪  當系統不需自動掛載NFS檔案系統或可攜式儲存裝置時,建議停用此服務。如有掛載需求,建議透過設定/etc/fstab檔案方式進行掛載
開啟終端機,執行下列指令停用autofs服務
#systemctl --now disable autofs
停用
32
31TWGCB-01-008-0031磁碟與檔案系統USB儲存裝置  這項原則設定決定是否使用USB儲存裝置
▪  USB儲存裝置提供檔案傳輸與儲存方式,USB儲存裝置的廣泛使用,致使USB惡意程式成為滲透入侵的常見手段
▪  停用USB儲存裝置將減少系統實體攻擊面,以及降低引入惡意程式之風險
  開啟終端機,執行vim指令,在/etc/modprobe.d目錄新增或編輯「usb-storage.conf」檔案,範例如下:
#vim /etc/modprobe.d/usb-storage.conf
並在檔案中加入以下內容:
install usb-storage /bin/true
blacklist usb-storage
▪  開啟終端機,執行下列指令,移除usb-storage模組:
rmmod usb-storage
▪  完成後,請重新開機
停用
33
32TWGCB-01-008-0032系統設定與維護GPG簽章驗證  這項原則設定決定是否啟用GPG簽章驗證功能
▪  gpgcheck決定在安裝套件前,是否先進行RPM套件簽章檢查,可用以確保欲安裝之RPM套件來自可信賴來源,避免安裝已被竄改之檔案
▪  gpgcheck選項存在於/etc/yum.conf設定檔與/etc/yum/repos.d/目錄下的所有設定檔
▪  gpgcheck選項可設定參數如下:
(1) 1:啟用,先進行RPM套件簽章檢查,通過後才能安裝套件
(2) 0:停用,安裝前不進行RPM套件簽章檢查
  編輯/etc/yum.conf檔案,在「main」段落新增或修改成以下內容:
gpgcheck=1
localpkg_gpgcheck=1
▪  編輯/etc/yum.repos.d目錄下的所有檔案,將全部的「gpgcheck」設定,修改成以下內容:
gpgcheck=1
localpkg_gpgcheck=1
1
34
33TWGCB-01-008-0033系統設定與維護sudo套件  這項原則設定決定是否安裝sudo套件,sudo允許合法使用者按照所授予之帳號權限,以管理員身分(superuser)或其他使用者身分執行指令
▪  sudo預設設定檔為/etc/sudoers,將一般使用者帳號與所授予之權限設定在/etc/sudoers設定檔,一般使用者在需要取得特殊權限時,則可於指令前加上「sudo」並輸入使用者自己的密碼,即可用管理員身分執行指令
▪  注意:建議可依系統維運與管理需求,適當賦予使用者執行sudo之權限,並可考量將各使用者之設定存放於不同設定檔中
開啟終端機,執行下列指令安裝sudo套件:
#dnf install sudo
安裝
35
34TWGCB-01-008-0034系統設定與維護設定sudo指令使用pty  這項原則設定決定sudo指令是否使用pty(pseudo terminal,虛擬終端)
▪  pty是一對提供雙向通訊的虛擬終端設備,分別為主要(master)與從屬(slave)設備,從屬設備提供模擬硬體終端機設備,主要設備提供模擬終端機程序以操作控制從屬設備
▪  攻擊者在使用sudo執行惡意程序時,在主程序完成後可能會衍生另一個背景程序保留在終端設備上,sudo設定為使用pty時可避免此情況
開啟終端機,執行「visudo -f」指令編輯/etc/sudoers檔案或 /etc/sudoers.d/目錄下的檔案,新增以下內容:
Defaults use_pty
Defaults use_pty
36
35TWGCB-01-008-0035系統設定與維護sudo自定義日誌檔案  這項原則設定決定是否設定sudo自定義日誌檔案
▪  預設情況下sudo藉由syslog記錄日誌,但sudo可在設定檔(預設為/etc/sudoers)中自定義日誌檔案,有助於簡化sudo指令的稽核工作
  開啟終端機,執行「visudo -f」指令編輯/etc/sudoers檔案或 /etc/sudoers.d/目錄下的檔案,新增以下內容:
Defaults logfile="(日誌檔案路徑)"
▪  日誌檔案路徑使用「/var/log/sudo.log」之範例如下:
Defaults logfile="/var/log/sudo.log"
啟用
37
36TWGCB-01-008-0036系統設定與維護AIDE套件  這項原則設定決定是否安裝AIDE(Advanced Intrusion Detection Environment,先進入侵偵測環境)套件
▪  AIDE截取檔案系統狀態的快照,包括修改時間、權限及檔案雜湊,藉由將快照與檔案系統的當前狀態進行比較,以檢測系統變更情況,找出被修改或損毀的檔案
▪  AIDE可藉由檔案完整性檢查,協助系統管理者早期發現系統入侵跡象
▪  注意:建議可依系統維運與管理需求新增或調整AIDE規則
  開啟終端機,執行以下指令安裝AIDE套件:
#dnf install aide
▪  執行以下指令初始化AIDE:
#aide --init
#mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
安裝
38
37TWGCB-01-008-0037系統設定與維護定期檢查檔案系統完整性  這項原則設定決定是否使用AIDE工具定期檢查檔案系統完整性
▪  AIDE截取檔案系統狀態的快照,包括修改時間、權限及檔案雜湊,藉由將快照與檔案系統的當前狀態進行比較,以檢測系統變更情況,找出被修改或損毀的檔案
▪  定期檢查檔案系統完整性,可協助系統管理者定期確認是否有重要檔案在未經授權的情況下被修改
  開啟終端機,執行以下指令,編輯crontab
#crontab -u root -e
▪  在crontab新增以下內容,設定每天5點進行檔案系統完整性檢查:
0 5 * * * /usr/sbin/aide --check
每天
39
38TWGCB-01-008-0038系統設定與維護開機載入程式設定檔之所有權  這項原則設定決定是否設定開機載入程式(GNU GRUBGRUB)設定檔之擁有者與群組
▪  GRUB設定檔主要功能是用來記錄載入作業系統核心所使用之參數
▪  將GRUB設定檔之擁有者與擁有群組設為root,以防止非root使用者變更檔案內容
▪  備註:如果使用其他開機載入程式(如LILO或EFI GRUB),請比照上述原則進行設定
  若是基於BIOS的系統,開啟終端機,執行以下指令,設定GRUB設定檔之擁有者與群組:
#chown root:root /boot/grub2/grub.cfg
#chown root:root /boot/grub2/grubenv
#[ -f /boot/grub2/user.cfg ] && chown root:root /boot/grub2/user.cfg
▪  若是基於UEFI的系統,編輯/etc/fstab檔案,在掛載點為「/boot/efi」列,於第4欄加入「uid=0, and gid=0」,設定GRUB設定檔之擁有者與群組,範例如下:
<device> /boot/efi vfat umask=0027,shortname=winnt, uid=0,gid=0 0 2
root:root
40
39TWGCB-01-008-0039系統設定與維護開機載入程式設定檔之權限  這項原則設定決定是否設定開機載入程式(GNU GRUBGRUB)設定檔之權限
▪  GRUB設定檔主要功能是用來記錄載入作業系統核心所使用之參數
▪  禁止群組與其他身分讀取、寫入及執行GRUB設定檔,以防止非root使用者取得或修改開機參數,進而危及系統安全
▪  備註:如果使用其他開機載入程式(如LILO或EFI GRUB),請比照上述原則進行設定
  若是基於BIOS的系統,開啟終端機,執行以下指令,設定GRUB設定檔之權限為600或更低權限:
#chmod 600 /boot/grub2/grub.cfg
#chmod 600 /boot/grub2/grubenv
#[ -f /boot/grub2/user.cfg ] && chmod 600 /boot/grub2/user.cfg
▪  若是基於UEFI的系統,編輯/etc/fstab檔案,在掛載點為「/boot/efi」列,於第4欄加入「fmask=0177」,設定GRUB設定檔之權限,範例如下:
<device> /boot/efi vfat umask=0027,shortname=winnt,fmask=0177 0 2
600或更低權限
41
40TWGCB-01-008-0040系統設定與維護開機載入程式之密碼  這項原則設定決定是否設定開機載入程式之密碼,以限制需通過密碼驗證後,才能設定開機載入程式之參數
▪  設定密碼保護開機載入程式,可避免攻擊者開機進入單一使用者或維護模式,不需驗證root身分,即可取得系統上所有檔案的存取權限
  開啟終端機,執行以下指令,使用grub2-setpassword建立一組密碼:
#grub2-setpassword
Enter password: (輸入密碼)
Confirm password: (再次輸入密碼)
▪  執行以下指令更新grub2設定檔:
#grub2-mkconfig -o "$(dirname "$(find /boot -type f \( -name 'grubenv' -o -name 'grub.conf' -o -name 'grub.cfg' \) -exec grep -Pl '^\h*(kernelopts=|linux|kernel)' {} \;)")/grub.cfg"
設定密碼
42
41TWGCB-01-008-0041系統設定與維護單一使用者模式身分驗證  這項原則設定決定單一使用者模式(Single user mode)是否啟用身分驗證功能
▪  當系統在開機載入過程發生問題時,將使用單一使用者模式(或稱為救援模式)進行還原
▪  設定單一使用者模式需使用身分驗證,可防止攻擊者將系統重新開機後,不需身分驗證即可進入單一使用者模式,進而危害系統安全
  編輯/usr/lib/systemd/system/rescue.service檔案,新增或修改成以下內容:
ExecStart=-/usr/lib/systemd/systemd-sulogin-shell rescue
▪  編輯/usr/lib/systemd/system/emergency.service檔案,新增或修改成以下內容:
ExecStart=-/usr/lib/systemd/systemd-sulogin-shell emergency
啟用
43
42TWGCB-01-008-0042系統設定與維護核心傾印功能  這項原則設定決定是否啟用核心傾印(Core dump)功能
▪  核心傾印檔案是程式異常終止時,系統將當時記憶體內容以檔案方式記錄下來所產生的記憶體映像檔案,可供程式除錯之用
▪  禁止使用者與SUID程式產生核心傾印檔案,避免核心傾印檔案洩露如記憶體位址或空間配置等敏感資訊
  編輯/etc/security/limits.conf檔案或/etc/security/limits.d/目錄下的檔案,新增以下內容:
* hard core 0
▪  編輯/etc/sysctl.conf或/etc/sysctl.d/目錄下的檔案,設定參數如下:
fs.suid_dumpable = 0
kernel.core_pattern = |/bin/false
▪  開啟終端機,執行以下指令,設定核心參數:
#sysctl -w fs.suid_dumpable=0
#sysctl -w kernel.core_pattern=|/bin/false
▪  如果已安裝coredump服務,編輯/etc/systemd/coredump.conf檔案,新增或修改成以下內容:
Storage=none
ProcessSizeMax=0
▪  開啟終端機,執行以下指令重新載入systemd:
#systemctl daemon-reload
▪  如果已安裝coredump服務,開啟終端機,執行以下指令,遮蔽coredump服務:
#systemctl mask systemd-coredump.socket
停用
44
43TWGCB-01-008-0043系統設定與維護記憶體位址空間配置隨機載入  這項原則設定決定系統開機時是否立即啟用記憶體位址空間配置隨機載入(Address space layout randomization, ASLR)功能
▪  ASLR利用隨機方式配置資料位址,使得敏感資料(例如作業系統核心程式)能配置到一個惡意程式未能事先得知的位址
▪  啟用記憶體位址空間配置隨機載入,提高攻擊的難度,以降低緩衝區溢位攻擊的威脅
▪  可設定參數如下:
(1) 0:停用ASLR功能
(2) 1:隨機配置堆疊(Stack)、記憶體映射函數(mmap)及vDSO(Virtual Dynamically-linked Shared Object,虛擬動態連結共享物件)頁面
(3) 2:隨機配置堆疊(Stack)、記憶體映射函數(mmap)、vDSO頁面及堆積(Heap)
  編輯/etc/sysctl.conf檔案或/etc/sysctl.d/目錄下的檔案,設定參數如下:
kernel.randomize_va_space = 2
▪  開啟終端機,執行以下指令,設定核心參數:
#sysctl -w kernel.randomize_va_space=2
2
45
44TWGCB-01-008-0044系統設定與維護設定全系統加密原則  這項原則設定決定採取何種全系統加密原則
▪  全系統加密原則(System-wide crypto-policies)與加密核心元件,允許在全系統範圍使用一致性的加密原則
▪  可設定原則如下:
(1) DEFAULT:預設全系統加密原則。允許使用TLSv1.2與1.3協定,以及IKEv2與SSH2協定,要求RSA密鑰與Diffie-Hellman金鑰至少為2,048位元
(2) LEGACY:此原則可確保與Red Hat Enterprise Linux 5與更舊版本的最大兼容性,比DEFAULT原則多支援TLSv1.0與1.1協定,並允許使用DSA、3DES及RC4演算法,要求RSA密鑰與Diffie-Hellman金鑰至少為1,024位元
(3) FUTURE:採取保守的安全原則,可承受近期相關攻擊,不允許使用SHA-1演算法,要求RSA密鑰與Diffie-Hellman金鑰至少為3,072位元
(4) FIPS:符合FIPS140-2要求的原則,使用內建的fips-mode-setup工具,將作業系統切換到FIPS模式
▪  設定全系統加密原則使用FUTURE或FIPS原則,避免使用較舊且易被攻擊之加密演算法
  開啟終端機,執行以下指令,確認全系統加密原則是否為FUTUREFIPS
#grep -E -i '^\s*(FUTURE|FIPS)\s*(\s+#.*)?$' /etc/crypto-policies/config
▪  若不是使用FUTURE或FIPS原則,請執行以下任一操作,變更全系統加密原則:
(1) 執行以下指令,將系統設定為「FUTURE」原則:
#update-crypto-policies --set FUTURE
接續執行以下指令,以套用更新後之全系統加密原則:
#update-crypto-policies
(2) 執行以下指令,將系統設定為「FIPS」原則,並重新開機,以使生效:
#fips-mode-setup --enable
FUTUREFIPS
46
45TWGCB-01-008-0045系統設定與維護/etc/passwd檔案所有權  這項原則設定決定/etc/passwd檔案擁有者與群組
▪  /etc/passwd記錄每位使用者的名稱、密碼、使用者ID、群組ID及家目錄等資訊
▪  設定/etc/passwd檔案擁有者與群組為root,避免/etc/passwd檔案遭未授權使用者修改,降低檔案被竄改後進一步利用於其他惡意攻擊之風險
開啟終端機,執行以下指令,設定/etc/passwd檔案所有權:
#chown root:root /etc/passwd
root:root
47
46TWGCB-01-008-0046系統設定與維護/etc/passwd檔案權限  這項原則設定決定/etc/passwd檔案權限
▪  /etc/passwd記錄每位使用者的名稱、密碼、使用者ID、群組ID及家目錄等資訊
▪  將/etc/passwd檔案權限設為僅root擁有讀取與寫入權限,其餘所有使用者僅可讀取,避免/etc/passwd檔案遭未授權使用者修改,降低檔案被竄改後進一步利用於其他惡意攻擊之風險
開啟終端機,執行以下指令,設定/etc/passwd檔案權限為644或更低權限:
#chmod 644 /etc/passwd
644或更低權限
48
47TWGCB-01-008-0047系統設定與維護/etc/shadow檔案所有權  這項原則設定決定/etc/shadow檔案擁有者與群組
▪  /etc/shadow記錄每個使用者帳號加密過後的密碼、最後變更密碼的日期及下次可變更密碼前的經過天數等資訊
▪  若攻擊者取得/etc/shadow檔案後,可嘗試透過密碼破解程式取得密碼後進行攻擊
▪  設定/etc/shadow檔案擁有者與群組,以保護帳號密碼資訊,降低檔案被竄改後進一步利用於其他惡意攻擊之風險
開啟終端機,執行以下任一指令,設定/etc/shadow檔案的所有權:
#chown root:root /etc/shadow

#chown root:shadow /etc/shadow
root:rootroot:shadow
49
48TWGCB-01-008-0048系統設定與維護/etc/shadow檔案權限  這項原則設定決定/etc/shadow檔案權限
▪  /etc/shadow記錄每個使用者帳號加密過後的密碼、最後變更密碼的日期及下次可變更密碼前的經過天數等資訊
▪  若攻擊者取得/etc/shadow檔案後,可嘗試透過密碼破解程式取得密碼後進行攻擊
▪  將/etc/shadow檔案權限設為000(所有使用者不具有讀取、寫入及執行權限),以保護帳號密碼資訊,降低檔案被竄改後進一步利用於其他惡意攻擊之風險
開啟終端機,執行以下指令,設定/etc/shadow檔案的權限為000
#chmod 000 /etc/shadow
0
50
49TWGCB-01-008-0049系統設定與維護/etc/group檔案所有權  這項原則設定決定/etc/group檔案擁有者與群組
▪  /etc/group記錄每個群組的名稱、密碼、ID及屬於該群組的使用者清單
▪  設定/etc/group檔案擁有者與群組為root,避免/etc/group檔案遭未授權使用者修改
開啟終端機,執行以下指令,設定/etc/group檔案所有權:
#chown root:root /etc/group
root:root
51
50TWGCB-01-008-0050系統設定與維護/etc/group檔案權限  這項原則設定決定/etc/group檔案權限
▪  /etc/group記錄每個群組的名稱、密碼、ID及屬於該群組的使用者清單
▪  設定/etc/group檔案權限,僅root擁有讀寫權限,其餘所有使用者僅可讀取,避免/etc/group檔案遭未授權使用者修改
開啟終端機,執行以下指令,設定/etc/group檔案權限為644或更低權限:
#chmod 644 /etc/group
644或更低權限
52
51TWGCB-01-008-0051系統設定與維護/etc/gshadow檔案所有權  這項原則設定決定/etc/gshadow檔案擁有者與群組
▪  /etc/gshadow記錄每個群組加密過後的密碼,以及使用者與管理者資訊,攻擊者讀取/etc/gshadow檔案後,可嘗試透過密碼破解程式取得密碼後進行攻擊
▪  設定/etc/gshadow檔案擁有者與群組,以保護群組帳號密碼資訊,降低檔案被竄改後進一步利用於其他惡意攻擊之風險
開啟終端機,執行以下任一指令,設定/etc/gshadow檔案所有權:
#chown root:root /etc/gshadow

#chown root:shadow /etc/gshadow
root:rootroot:shadow
53
52TWGCB-01-008-0052系統設定與維護/etc/gshadow檔案權限  這項原則設定決定/etc/gshadow檔案權限
▪  /etc/gshadow記錄每個群組加密過後的密碼,以及使用者與管理者資訊,攻擊者讀取/etc/gshadow檔案後,可嘗試透過密碼破解程式取得密碼後進行攻擊
▪  設定/etc/gshadow檔案權限為000(所有使用者不具有讀取、寫入及執行權限),以保護群組帳號密碼資訊,降低檔案被竄改後進一步利用於其他惡意攻擊之風險
開啟終端機,執行以下指令,設定/etc/gshadow檔案權限為000
#chmod 000 /etc/gshadow
0
54
53TWGCB-01-008-0053系統設定與維護/etc/passwd-檔案所有權  這項原則設定決定/etc/passwd-檔案擁有者與群組
▪  /etc/passwd-備份每位使用者的名稱、密碼、使用者ID、群組ID及家目錄等資訊
▪  設定/etc/passwd-檔案擁有者與群組為root,避免/etc/passwd-檔案遭未授權使用者修改,降低檔案被竄改後進一步利用於其他惡意攻擊之風險
開啟終端機,執行以下指令,設定/etc/passwd-檔案的所有權:
#chown root:root /etc/passwd-
root:root
55
54TWGCB-01-008-0054系統設定與維護/etc/passwd-檔案權限  這項原則設定決定/etc/passwd-檔案權限
▪  /etc/passwd-備份每位使用者的名稱、密碼、使用者ID、群組ID及家目錄等資訊
▪  設定/etc/passwd-檔案權限,僅root擁有讀取與寫入權限,避免/etc/passwd-檔案遭未授權使用者修改,降低檔案被竄改後進一步利用於其他惡意攻擊之風險
開啟終端機,執行以下指令,設定/etc/passwd-檔案的權限為600或更低權限:
#chmod 600 /etc/passwd-
600或更低權限
56
55TWGCB-01-008-0055系統設定與維護/etc/shadow-檔案所有權  這項原則設定決定/etc/shadow-檔案擁有者與群組
▪  /etc/shadow-備份每個使用者帳號加密過後的密碼、最後變更密碼的日期及下次可變更密碼前的經過天數等資訊
▪  若攻擊者取得/etc/shadow-檔案,可嘗試透過密碼破解程式取得密碼後進行攻擊
▪  設定/etc/shadow-檔案所有權,以保護帳號密碼資訊,降低檔案被竄改後進一步利用於其他惡意攻擊之風險
開啟終端機,執行以下任一指令,設定/etc/shadow-檔案的所有權:
#chown root:root /etc/shadow-

#chown root:shadow /etc/shadow-
root:rootroot:shadow
57
56TWGCB-01-008-0056系統設定與維護/etc/shadow-檔案權限  這項原則設定決定/etc/shadow-檔案權限
▪  /etc/shadow-備份每個使用者帳號加密過後的密碼、最後變更密碼的日期及下次可變更密碼前的經過天數等資訊
▪  若攻擊者取得/etc/shadow-檔案,可嘗試透過密碼破解程式取得密碼後進行攻擊
▪  設定/etc/shadow-檔案權限為000(所有使用者不具有讀取、寫入及執行權限),以保護帳號密碼資訊,降低檔案被竄改後進一步利用於其他惡意攻擊之風險
開啟終端機,執行以下指令,設定/etc/shadow-檔案的權限為000
# chmod 000 /etc/shadow-
0
58
57TWGCB-01-008-0057系統設定與維護/etc/group-檔案所有權  這項原則設定決定/etc/group-檔案擁有者與群組
▪  /etc/group-備份每個群組的名稱、密碼、ID及屬於該群組的使用者清單
▪  設定/etc/group-檔案擁有者與群組為root,避免/etc/group-檔案遭未授權使用者修改
開啟終端機,執行以下指令,設定/etc/group-檔案所有權:
#chown root:root /etc/group-
root:root
59
58TWGCB-01-008-0058系統設定與維護/etc/group-檔案權限  這項原則設定決定/etc/group-檔案權限
▪  /etc/group-備份每個群組的名稱、密碼、ID及屬於該群組的使用者清單
▪  設定/etc/group-檔案權限,僅root擁有讀取與寫入權限,其餘所有使用者僅可讀取,避免/etc/group-檔案遭未授權使用者修改
開啟終端機,執行以下指令,設定/etc/group-檔案權限為644或更低權限:
#chmod 644 /etc/group-
644或更低權限
60
59TWGCB-01-008-0059系統設定與維護/etc/gshadow-檔案所有權  這項原則設定決定/etc/gshadow-檔案擁有者與群組
▪  /etc/gshadow-備份每個群組加密過後的密碼,以及使用者與管理者資訊,攻擊者讀取/etc/gshadow-檔案後,可嘗試透過密碼破解程式取得密碼後進行攻擊
▪  設定/etc/gshadow-檔案所有權,以保護群組帳號密碼資訊,降低檔案被竄改後進一步利用於其他惡意攻擊之風險
開啟終端機,執行以下任一指令,設定/etc/gshadow-檔案的所有權:
#chown root:root /etc/gshadow-

#chown root:shadow /etc/gshadow-
root:rootroot:shadow
61
60TWGCB-01-008-0060系統設定與維護/etc/gshadow-檔案權限  這項原則設定決定/etc/gshadow-檔案權限
▪  /etc/gshadow-備份每個群組加密過後的密碼,以及使用者與管理者資訊,若攻擊者讀取/etc/gshadow-檔案後,可嘗試透過密碼破解程式取得密碼後進行攻擊
▪  設定/etc/gshadow-檔案權限為000(所有使用者不具有讀取、寫入及執行權限),以保護群組帳號密碼資訊,降低檔案被竄改後進一步利用於其他惡意攻擊之風險
開啟終端機,執行以下指令,設定/etc/gshadow-檔案的權限為000
#chmod 000 /etc/gshadow-
0
62
61TWGCB-01-008-0061系統設定與維護其他使用者寫入具有全域寫入權限的檔案  這項原則設定決定其他使用者是否允許寫入具有全域寫入(World-writable)權限的檔案
▪  具有全域寫入權限的檔案可被任何使用者修改,錯誤或不完整的程式碼將可能影響系統運作或危害系統安全
▪  設定其他使用者不能寫入具有全域寫入權限的檔案,以避免系統重要檔案被未經授權竄改
  開啟終端機,執行以下指令,在系統上所有磁區(partition),逐一檢查磁區所掛載之檔案目錄(如根目錄),找出具有全域寫入權限(World-writable)的檔案:
#find (partition) -xdev -type f -perm -0002
▪  針對所找到的檔案,執行下列指令,以移除其他身分寫入權限:
#chmod o-w (檔案名稱)
禁止寫入
TWGCB-01-012-0061: 其他使用者寫入具有全域寫入權限之檔案
63
62TWGCB-01-008-0062系統設定與維護檢查所有檔案與目錄之擁有者  這項原則設定決定是否所有檔案與目錄擁有者皆為合法使用者
▪  不屬於合法使用者的檔案可能是由入侵者植入、不正確的軟體安裝、不完整的軟體移除或已遭刪除使用者所遺留的檔案
▪  確認所有檔案與目錄擁有者皆為合法使用者,以避免新使用者帳號與已被刪除使用者帳號相同時,可以存取前任使用者所建立之檔案,將可能存取未被授權之檔案
  開啟終端機,執行以下指令,在系統上所有磁區(partition),逐一檢查磁區所掛載之檔案目錄(如根目錄),找出擁有者不是合法使用者之檔案或目錄:
#find (partition) -xdev -nouser
▪  針對所找到的檔案與目錄指定合法使用者或移除:
#chown (使用者) (檔案名稱或目錄名稱)

#rm (檔案名稱或目錄名稱)
所有檔案與目錄擁有者皆為合法使用者
64
63TWGCB-01-008-0063系統設定與維護檢查所有檔案與目錄之擁有群組  這項原則設定決定是否所有檔案與目錄擁有群組皆為合法群組
▪  不屬於合法群組的檔案可能是由入侵者植入、不正確的軟體安裝、不完整的軟體移除或已遭刪除使用者所遺留的檔案
▪  確認所有檔案與目錄擁有群組皆為合法群組,以避免新使用者帳號與已被刪除使用者帳號相同時,可以存取前任使用者所屬群組之檔案,將可能存取未被授權之檔案
  開啟終端機,執行以下指令,在系統上所有磁區(partition),逐一檢查磁區所掛載之檔案目錄(如根目錄),找出擁有群組不是合法群組之檔案或目錄:
#find (partition) -xdev -nogroup
▪  針對所找到的檔案與目錄指定合法群組或移除:
#chgrp (群組) (檔案名稱或目錄名稱)

#rm (檔案名稱或目錄名稱)
所有檔案與目錄擁有群組皆為合法群組
65
64TWGCB-01-008-0064系統設定與維護所有具有全域寫入權限目錄之擁有者  這項原則設定決定是否所有具有全域寫入權限的目錄擁有者為root或其他系統帳號
▪  若具有全域寫入權限之目錄的擁有者為一般使用者,該使用者將可刪除或置換其他使用者所建立之檔案
▪  設定所有具有全域寫入權限的目錄擁有者為root或其他系統帳號,避免系統資源遭未經授權存取
  開啟終端機,執行以下指令,在系統上所有磁區(partition),逐一檢查磁區所掛載之檔案目錄(如根目錄),找出一般使用者(UID大於999)具有全域寫入(World-writable)權限的目錄
#find (partition) -xdev -type d -perm -0002 -uid +999 -print
▪  針對所找到的目錄,執行以下指令,設定目錄擁有者為root或其他系統帳號
#chown root (目錄名稱)
root或其他系統帳號
66
65TWGCB-01-008-0065系統設定與維護所有具有全域寫入權限目錄之擁有群組  這項原則設定決定是否所有具有全域寫入權限的目錄擁有群組為root或其他系統群組(sysbin或應用程式群組)
▪  若具有全域寫入權限之目錄的擁有群組為一般使用者群組,該群組使用者將可刪除或置換其他使用者所建立之檔案
  開啟終端機,執行以下指令,在系統上所有磁區(partition),逐一檢查磁區所掛載之檔案目錄(如根目錄),找出一般使用者群組(GID大於999)具有全域寫入(World-writable)權限的目錄
#find (partition) -xdev -type d -perm -0002 -gid +999 -print
▪  針對所找到的目錄,執行以下指令,設定目錄擁有群組為root或其他系統群組(sys、bin或應用程式群組):
#chgrp root (目錄名稱)
root或其他系統群組
67
66TWGCB-01-008-0066系統設定與維護系統命令檔案權限  這項原則決定是否設定系統命令檔案權限,使系統命令檔案具有755或更低權限
▪  系統命令檔案包含儲存在作業系統預設可執行檔案目錄的檔案,以及存在於系統預設可執行檔案搜索路徑目錄的檔案
▪  限制權限以保護系統命令檔案,避免被未經授權竄改,使管理者與系統服務可正常執行指令
  開啟終端機,執行以下指令,檢查系統命令檔案之權限:
#find -L /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin -perm /0022 -exec ls -l {}\;
▪  若找到系統命令檔案權限高於755,執行以下指令,設定系統命令檔案之權限為755或更低權限:
#chmod 755 (系統命令檔案名稱)
755或更低權限
68
67TWGCB-01-008-0067系統設定與維護系統命令檔案擁有者  這項原則決定是否設定系統命令檔案擁有者
▪  系統命令檔案包含儲存在作業系統預設可執行檔案目錄的檔案,以及存在於系統預設可執行檔案搜索路徑目錄的檔案
▪  設定root擁有,以保護系統命令檔案,避免被未經授權竄改,使管理者與系統服務可正常執行指令
  開啟終端機,執行以下指令,檢查系統命令檔案擁有者:
#find -L /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin ! -user root -exec ls -l {}\;
▪  若找到系統命令檔案擁有者非root,執行以下指令,設定系統命令檔案擁有者為root:
#chown root (系統命令檔案名稱)
root
69
68TWGCB-01-008-0068系統設定與維護系統命令檔案擁有群組  這項原則決定是否設定系統命令檔案擁有群組
▪  系統命令檔案包含儲存在作業系統預設可執行檔案目錄的檔案,以及存在於系統預設可執行檔案搜索路徑目錄的檔案
▪  設定root群組擁有,以保護系統命令檔案,避免被未經授權竄改,使管理者與系統服務可正常執行指令
  開啟終端機,執行以下指令,檢查系統命令檔案擁有群組:
#find -L /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin ! -group root ! -group tty ! -group slocate ! -group lock -exec ls -l {}\;
▪  若找到系統命令檔案擁有群組非root,執行以下指令,設定系統命令檔案擁有群組為root:
#chgrp root (系統命令檔案名稱)
root
70
69TWGCB-01-008-0069系統設定與維護程式庫檔案權限  這項原則決定是否設定程式庫檔案權限,使程式庫檔案具有755或更低權限
▪  系統程序在啟動或運行時會連結到程式庫檔案,將程式庫檔案載入到系統核心的記憶體空間,程式庫檔案還包含用以升級特權執行的特權程序
▪  限制權限以保護程式庫檔案,避免被未經授權竄改,維持系統完整性
  開啟終端機,執行以下指令,檢查程式庫檔案之權限:
#find -L /lib /lib64 /usr/lib /usr/lib64 -perm /0022 -type f -exec ls -l {}\;
▪  若找到程式庫檔案權限高於755,執行以下指令,設定程式庫檔案之權限為755或更低權限:
#chmod 755 (程式庫檔案名稱)
755或更低權限
71
70TWGCB-01-008-0070系統設定與維護程式庫檔案擁有者  這項原則決定是否設定程式庫檔案擁有者
▪  系統程序在啟動或運行時會連結到程式庫檔案,將程式庫檔案載入到系統核心的記憶體空間,程式庫檔案還包含用以升級特權執行的特權程序
▪  設定root擁有,以保護程式庫檔案,避免被未經授權竄改,維持系統完整性
  開啟終端機,執行以下指令,檢查程式庫檔案擁有者:
#find -L /lib /lib64 /usr/lib /usr/lib64 ! -user root -exec ls -l {}\;
▪  若找到程式庫檔案擁有者非root,執行以下指令,設定程式庫檔案擁有者為root:
#chown root (程式庫檔案名稱)
root
72
71TWGCB-01-008-0071系統設定與維護程式庫檔案擁有群組  這項原則決定是否設定程式庫檔案擁有群組
▪  系統程序在啟動或運行時會連結到程式庫檔案,將程式庫檔案載入到系統核心的記憶體空間,程式庫檔案還包含用以升級特權執行的特權程序
▪  設定root群組擁有,以保護程式庫檔案避免被未經授權竄改,維持系統完整性
  開啟終端機,執行以下指令,檢查程式庫檔案擁有群組:
#find -L /lib /lib64 /usr/lib /usr/lib64 ! -group root -exec ls -l {}\;
▪  若找到程式庫檔案擁有群組非root,執行以下指令,設定程式庫檔案擁有群組為root:
#chgrp root (程式庫檔案名稱)
root
73
72TWGCB-01-008-0072系統設定與維護帳號不使用空白密碼  這項原則設定決定是否允許存在使用空白密碼之帳號
▪  使用空白密碼意謂著任何人皆可以此帳號登入系統,並以該帳號之權限執行相關指令,將可能危害系統安全
▪  設定帳號都必須具有密碼或被鎖定,以防止未經授權的使用者登入該帳號
  開啟終端機,執行以下指令,列出使用空白密碼之帳號:
#awk -F: '($2 == "" ) { print $1 " does not have a password "}' /etc/shadow
▪  若有使用空白密碼之帳號,則執行下列指令以設定密碼:
#passwd (帳號名稱)
或執行下列指令以鎖定帳號:
#passwd -l (帳號名稱)
帳號必須具有密碼或被鎖定
74
73TWGCB-01-008-0073系統設定與維護root帳號的路徑變數  這項原則設定決定是否允許root帳號的路徑(PATH)變數存在相對路徑或空目錄(例如:「.」、「..」、路徑開頭不是「/」及空元素)
▪  root帳號可以執行系統上所有指令,若PATH設定錯誤,root將可能執行到偽裝的程式檔案,危害系統安全
.:目前目錄
..:上一層目錄
  開啟終端機,執行以下指令,顯示PATH變數內容:
#echo $PATH
▪  如出現「.」、「..」、路徑開頭不是「/」及空元素等內容,請編輯/etc/profile檔案進行修改
不允許「.」、「..」、路徑開頭不是「/」及空元素
75
74TWGCB-01-008-0074系統設定與維護root帳號的路徑變數不包含world-writablegroup-writable目錄  這項原則設定決定是否允許root帳號的路徑(PATH)變數存在具有world-writable權限或group-writable權限之目錄
▪  root可以執行系統上所有指令,若PATH變數包含world-writable(全域寫入)權限或group-writable(群組身分寫入)權限之目錄,將可能導致root執行到惡意程式,危害系統安全
  開啟終端機,執行以下指令,顯示PATH變數內容:
#echo $PATH
▪  如出現具有world-writable權限或group-writable權限之目錄,請編輯/etc/profile檔案進行修改,或執行下列指令變更目錄權限:
#chmod o-w (目錄名稱)

#chmod g-w (目錄名稱)
不包含world-writablegroup-writable目錄
76
75TWGCB-01-008-0075系統設定與維護/etc/passwd檔案行首的「+」符號  這項原則設定決定/etc/passwd檔案行首是否允許存在「+」符號
▪  「+」符號代表不需輸入密碼即可從網路資訊服務(NIS)主機取得帳號、密碼、主機名稱或群組等資訊
▪  當NIS沒有啟動或NIS設定錯誤時,/etc/passwd檔案行首若存在「+」符號,攻擊者可使用帳號「+」與空白密碼登入,提供攻擊者一個獲得系統權限的途徑
  開啟終端機,執行以下指令,確認/etc/passwd檔案行首是否存在「+」符號:
#grep '^\+:' /etc/passwd
▪  如果有,則編輯/etc/passwd檔案,將行首為「+」符號之列移除
禁止
77
76TWGCB-01-008-0076系統設定與維護/etc/shadow檔案行首的「+」符號  這項原則設定決定/etc/shadow檔案行首是否允許存在「+」符號
▪  「+」符號代表不需輸入密碼即可從網路資訊服務(NIS)主機取得帳號、密碼、主機名稱或群組等資訊
▪  當NIS沒有啟動或NIS設定錯誤時,/etc/shadow檔案行首若存在「+」符號,攻擊者可使用帳號「+」與空白密碼登入,提供攻擊者一個獲得系統權限的途徑
  開啟終端機,執行以下指令,確認/etc/shadow檔案行首是否存在「+」符號:
#grep '^\+:' /etc/shadow
▪  如果有,則編輯/etc/shadow檔案,將行首為「+」符號之列移除
禁止
78
77TWGCB-01-008-0077系統設定與維護/etc/group檔案行首的「+」符號  這項原則設定決定/etc/group檔案行首是否允許存在「+」符號
▪  「+」符號代表不需輸入密碼即可從網路資訊服務(NIS)主機取得帳號、密碼、主機名稱或群組等資訊
▪  當NIS沒有啟動或NIS設定錯誤時,/etc/group檔案行首若存在「+」符號,攻擊者可使用帳號「+」與空白密碼登入,提供攻擊者一個獲得系統權限的途徑
  開啟終端機,執行以下指令,確認/etc/group檔案行首是否存在「+」符號:
#grep '^\+:' /etc/group
▪  如果有,則編輯/etc/group檔案,將行首為「+」符號之列移除
禁止
79
78TWGCB-01-008-0078系統設定與維護UID=0之帳號  這項原則設定決定系統除了root帳號外,其他帳號之UID是否允許設為0
▪  UID=0之帳號具有系統管理權限
  開啟終端機,執行以下指令,列出UID=0之帳號:
#awk -F: '($3 == 0) { print $1 }' /etc/passwd
▪  若存在非root帳號,則執行以下指令,移除帳號或重新設定UID:
#userdel (帳號名稱)

#usermod -u (UID) (帳號名稱)
root帳號之UID0
80
79TWGCB-01-008-0079系統設定與維護使用者家目錄權限  這項原則設定決定使用者家目錄權限
▪  使用者家目錄是系統預設的使用者主目錄,目錄下存放使用者的環境設定與個人檔案,因此任何使用者皆不應具有可寫入其他使用者家目錄的權限
▪  使用者家目錄應限制群組不具寫入(g-w)權限,其他使用者不具讀取、寫入及執行(o-rwx)權限,避免遭未經授權存取與竊取資料
  開啟終端機,執行以下腳本,檢查每個使用者家目錄權限:
#!/bin/bash
grep -E -v '^(halt|sync|shutdown)' /etc/passwd | awk -F: '($7 != "/sbin/nologin" && $7 != "/bin/false") { print $1 " " $6 }' | while read user dir; do
if [ ! -d "$dir" ]; then
echo "The home directory ($dir) of user $user does not exist."
else
dirperm=$(ls -ld $dir | cut -f1 -d" ")
if [ $(echo $dirperm | cut -c5) != "-" ]; then
echo "Group Read permission set on the home directory ($dir) of user $user"
fi
if [ $(echo $dirperm | cut -c6) != "-" ]; then
echo "Group Write permission set on the home directory ($dir) of user $user"
fi
if [ $(echo $dirperm | cut -c7) != "-" ]; then
echo "Group Execute permission set on the home directory ($dir) of user $user"
fi
if [ $(echo $dirperm | cut -c8) != "-" ]; then
echo "Other Read permission set on the home directory ($dir) of user $user"
fi
if [ $(echo $dirperm | cut -c9) != "-" ]; then
echo "Other Write permission set on the home directory ($dir) of user $user"
fi
if [ $(echo $dirperm | cut -c10) != "-" ]; then
echo "Other Execute permission set on the home directory ($dir) of user $user"
fi
fi
done
▪  若出現群組具寫入權限,其他使用者具讀取、寫入及執行權限之家目錄,則可執行以下指令,變更目錄權限為700或更低權限:
#chmod 700 /home/(使用者帳號名稱)
▪  注意:請先通知使用者再變更家目錄相關設定,以避免影響使用者作業
700或更低權限
81
80TWGCB-01-008-0080系統設定與維護使用者家目錄擁有者  這項原則設定決定使用者家目錄擁有者是否為使用者
▪  使用者家目錄是系統預設的使用者主目錄,目錄下存放使用者的環境設定與個人檔案
▪  設定使用者家目錄為使用者擁有,以確保使用者個人資料安全
  開啟終端機,執行以下腳本,檢查每個使用者家目錄擁有者:
#!/bin/bash
grep -E -v '^(halt|sync|shutdown)' /etc/passwd | awk -F: '($7 != "/sbin/nologin" && $7 != "/bin/false") { print $1 " " $6 }' | while read user dir; do
if [ ! -d "$dir" ]; then
echo "The home directory ($dir) of user $user does not exist."
else
owner=$(stat -L -c "%U" "$dir")
if [ "$owner" != "$user" ]; then
echo "The home directory ($dir) of user $user is owned by $owner."
fi
fi
done
▪  若出現使用者的家目錄非使用者擁有,則可執行以下指令,變更家目錄擁有者為使用者:
▪  #chown (使用者帳號名稱) /home/(使用者帳號名稱)
▪  注意:請先通知使用者再變更家目錄相關設定,以避免影響使用者作業
使用者擁有
82
81TWGCB-01-008-0081系統設定與維護使用者家目錄擁有群組  這項原則設定決定使用者家目錄擁有群組是否為使用者群組
▪  使用者家目錄是系統預設的使用者主目錄,目錄下存放使用者的環境設定與個人檔案
▪  若使用者家目錄擁有群組GID與使用者群組GID不同,將導致其他使用者可存取該使用者的檔案
▪  設定使用者家目錄為使用者群組擁有,以確保使用者個人資料安全
  開啟終端機,執行以下腳本,檢查每個使用者家目錄的擁有群組GID
#!/bin/bash
grep -E -v '^(halt|sync|shutdown)' /etc/passwd | awk -F: '($7 != "/sbin/nologin" && $7 != "/bin/false") { print $1 " " $4 " " $6 }' | while read user gid dir; do
if [ ! -d "$dir" ]; then
echo "The home directory ($dir) of user $user does not exist."
else
owner=$(stat -L -c "%g" "$dir")
if [ "$owner" != "$gid" ]; then
echo "The home directory ($dir) of group $gid is owned by group $owner."
fi
fi
done
▪  若出現使用者家目錄非使用者群組所擁有,則可執行以下指令,變更家目錄擁有者為使用者群組:
#chgrp (使用者群組名稱或GID) /home/(使用者帳號名稱)
▪  注意:請先通知使用者再變更家目錄相關設定,以避免影響使用者作業
使用者群組擁有
83
82TWGCB-01-008-0082系統設定與維護使用者家目錄的「.」檔案權限  這項原則設定決定是否設定使用者家目錄的「.」檔案權限,使用者家目錄的「.」檔案包含使用者的初始化檔案與其他設定檔
▪  限制使用者家目錄的「.」檔案寫入權限,以避免惡意人士藉由竊取或修改使用者資料,進而取得該使用者之系統權限
  開啟終端機,執行以下腳本,檢查每個使用者家目錄的「.」檔案權限:
#!/bin/bash
grep -E -v '^(halt|sync|shutdown)' /etc/passwd | awk -F: '($7 != "/sbin/nologin" && $7 != "/bin/false") { print $1 " " $6 }' | while read user dir; do
if [ ! -d "$dir" ]; then
echo "The home directory ($dir) of user $user does not exist."
else
for file in $dir/.[A-Za-z0-9]*; do
if [ ! -h "$file" -a -f "$file" ]; then
fileperm=$(ls -ld $file | cut -f1 -d" ")
if [ $(echo $fileperm | cut -c6) != "-" ]; then
echo "Group Write permission set on file $file"
fi
if [ $(echo $fileperm | cut -c9) != "-" ]; then
echo "Other Write permission set on file $file"
fi
fi
done
fi
done
▪  若出現具有world-writable或group-writable權限之「.」檔案,則可執行以下指令,移除群組與其他身分之寫入權限或更低權限:
#chmod go-w (檔案名稱)
▪  注意:請先通知使用者再變更家目錄相關設定,以避免影響使用者作業
go-w或更低權限
84
83TWGCB-01-008-0083系統設定與維護使用者家目錄的「.forward」檔案  這項原則設定決定是否移除使用者家目錄的「.forward」檔案
▪  「.forward」檔案用於設定將使用者郵件轉發到指定的電子郵件信箱
▪  移除「.forward」檔案以停用郵件轉發功能,避免機敏資料洩漏
  開啟終端機,執行以下腳本,檢查每個使用者家目錄是否存在「.forward」檔案:
#!/bin/bash
grep -E -v '^(root|halt|sync|shutdown)' /etc/passwd | awk -F: '($7 != "/sbin/nologin" && $7 != "/bin/false") { print $1 " " $6 }' | while read user dir; do
if [ ! -d "$dir" ]; then
echo "The home directory ($dir) of user $user does not exist."
else
if [ ! -h "$dir/.forward" -a -f "$dir/.forward" ]; then
echo ".forward file $dir/.forward exists"
fi
fi
done
▪  若存在「.forward」檔案,則可執行以下指令移除檔案:
#rm (檔案名稱)
▪  注意:請先通知使用者再變更家目錄相關設定,以避免影響使用者作業
移除
85
84TWGCB-01-008-0084系統設定與維護使用者家目錄的「.netrc」檔案  這項原則設定決定是否移除使用者家目錄的「.netrc」檔案
▪  「.netrc」檔案包含用於登入遠端FTP主機進行檔案傳輸之帳號與明文密碼,移除「.netrc」檔案以避免對遠端FTP主機造成之風險
  開啟終端機,執行以下腳本,檢查每個使用者家目錄是否存在「.netrc」檔案:
#!/bin/bash
grep -E -v '^(root|halt|sync|shutdown)' /etc/passwd | awk -F: '($7 != "/sbin/nologin" && $7 != "/bin/false") { print $1 " " $6 }' | while read user dir; do
if [ ! -d "$dir" ]; then
echo "The home directory ($dir) of user $user does not exist."
else
if [ ! -h "$dir/.netrc" -a -f "$dir/.netrc" ]; then
echo ".netrc file $dir/.netrc exists"
fi
fi
done
▪  若存在「.netrc」檔案,則可執行以下指令移除檔案:
#rm (檔案名稱)
▪  注意:請先通知使用者再變更家目錄相關設定,以避免影響使用者作業
移除
86
85TWGCB-01-008-0085系統設定與維護使用者家目錄的「.rhosts」檔案  這項原則設定決定是否移除使用者家目錄的「.rhosts」檔案
▪  「.rhosts」檔案用於指定那個使用者可以不需要輸入密碼即可執行rsh遠端連線,移除「.rhosts」檔案以避免遭惡意人士取得可攻擊其他遠端主機之資訊
  開啟終端機,執行以下腳本,檢查每個使用者家目錄是否存在「.rhosts」檔案:
#!/bin/bash
grep -E -v '^(root|halt|sync|shutdown)' /etc/passwd | awk -F: '($7 != "/sbin/nologin" && $7 != "/bin/false") { print $1 " " $6 }' | while read user dir; do
if [ ! -d "$dir" ]; then
echo "The home directory ($dir) of user $user does not exist."
else
for file in $dir/.rhosts; do
if [ ! -h "$file" -a -f "$file" ]; then
echo ".rhosts file in $dir"
fi
done
fi
done
▪  若存在「.rhosts」檔案,則可執行以下指令移除檔案:
#rm (檔案名稱)
▪  注意:請先通知使用者再變更家目錄相關設定,以避免影響使用者作業
移除
87
86TWGCB-01-008-0086系統設定與維護檢查/etc/passwd檔案設定的群組  這項原則設定決定是否檢查/etc/passwd檔案設定的群組,是否都存在於/etc/group檔案中
▪  在/etc/passwd檔案中,使用者帳號設定的群組,若不存在於/etc/group檔案中,代表群組權限管理不恰當,將可能對系統安全構成威脅
  開啟終端機,執行以下腳本,檢查/etc/passwd檔案中帳號的群組是否都存在於/etc/group檔案中:
#!/bin/bash
for i in $(cut -s -d: -f4 /etc/passwd | sort -u ); do
grep -q -P "^.*?:[^:]*:$i:" /etc/group
if [ $? -ne 0 ]; then
echo "Group $i is referenced by /etc/passwd but does not exist in /etc/group"
fi
done
▪  若有帳號的群組不存在於/etc/group檔案中,則編輯/etc/passwd檔案,或執行以下指令,修改帳號的群組(GID):
#usermod -g (群組名稱或GID) (帳號名稱)
/etc/passwd檔案中帳號的群組皆須存在於/etc/group檔案中
88
87TWGCB-01-008-0087系統設定與維護唯一的UID  這項原則設定決定是否檢查/etc/passwd檔案的使用者帳號UID(User Identifier,使用者識別碼)皆不相同
▪  儘管透過useradd指令新增使用者帳號時,不允許建立重複的UID,但系統管理者可手動編輯/etc/passwd檔案並更改UID,造成UID重複之情形
▪  為每個使用者帳號設定唯一的UID,以提供適當的存取防護
  開啟終端機,執行以下腳本,尋找是否有不同帳號使用相同的UID
#!/bin/bash
cut -f3 -d":" /etc/passwd | sort -n | uniq -c | while read x ; do
[ -z "$x" ] && break
set - $x
if [ $1 -gt 1 ]; then
users=$(awk -F: '($3 == n) { print $1 }' n=$2 /etc/passwd | xargs)
echo "Duplicate UID ($2): $users"
fi
done
▪  若有不同帳號使用相同的UID,則編輯/etc/passwd檔案,或執行以下指令,為帳號設定唯一的UID:
#usermod -u (UID) (帳號名稱)
為每個帳號設定唯一的UID
89
88TWGCB-01-008-0088系統設定與維護唯一的GID  這項原則設定決定是否檢查/etc/group檔案的群組GID(Group Identifier,群組識別碼)皆不相同
▪  儘管透過groupadd指令新增群組時,不允許建立重複的GID,但系統管理者可手動編輯/etc/group檔案並更改GID,造成GID重複之情形
▪  為每個群組設定唯一的GID,以提供適當的存取防護
  開啟終端機,執行以下腳本,尋找是否有群組使用相同的GID
#!/bin/bash
cut -d: -f3 /etc/group | sort | uniq -d | while read x ; do
echo "Duplicate GID ($x) in /etc/group"
done
▪  若有不同群組使用相同GID,則編輯/etc/group檔案,或執行以下指令,為群組設定唯一的GID:
#groupmod -g (GID) (群組名稱)
為每個群組設定唯一的GID
90
89TWGCB-01-008-0089系統設定與維護唯一的使用者帳號名稱  這項原則設定決定是否檢查/etc/passwd檔案的使用者帳號名稱,並確認每個使用者帳號名稱皆不相同
▪  儘管透過useradd指令新增使用者帳號時,不允許建立重複的帳號名稱,但系統管理者可手動編輯/etc/passwd檔案並更改帳號名稱,造成帳號名稱重複之情形
▪  為每個使用者帳號設定唯一的名稱,以提供適當的存取防護
  開啟終端機,執行以下腳本,尋找是否有帳號使用重複的帳號名稱:
#!/bin/bash
cut -d: -f1 /etc/passwd | sort | uniq -d | while read x
do echo "Duplicate login name ${x} in /etc/passwd"
done
▪  若有帳號使用重複的帳號名稱,則編輯/etc/passwd檔案,為帳號設定唯一不重複的帳號名稱
為每個使用者帳號設定唯一的名稱
91
90TWGCB-01-008-0090系統設定與維護唯一的群組名稱  這項原則設定決定是否檢查/etc/group檔案的群組名稱,並確認每個群組名稱皆不相同
▪  儘管透過groupadd指令新增群組時,不允許建立重複的群組名稱,但系統管理者可手動編輯/etc/group檔案並更改群組名稱,造成群組名稱重複之情形
▪  為每個群組設定唯一的群組名稱,以提供適當的存取防護
  開啟終端機,執行以下腳本,尋找是否有不同群組使用相同的群組名稱:
#!/bin/bash
cut -d: -f1 /etc/group | sort | uniq -d | while read x
do echo "Duplicate group name ${x} in /etc/group"
done
▪  若有群組使用相同的群組名稱,則編輯/etc/group檔案,為每個群組設定唯一的群組名稱
為每個群組設定唯一的群組名稱
92
91TWGCB-01-008-0091系統設定與維護shadow群組成員  這項原則設定決定shadow群組成員是否無使用者
▪  隸屬於shadow群組的使用者具有可讀取/etc/shadow檔案的權限,若攻擊者可讀取/etc/shadow檔案,使用者密碼與其他安全資訊將可能被攻擊者破解並執行進一步攻擊
▪  設定shadow群組不包含任何使用者,以降低系統風險
  開啟終端機,執行以下指令,列舉shadow群組中的使用者帳號:
#awk -F: '($1=="shadow") {print $NF}' /etc/group
▪  如shadow群組有使用者帳號,請針對每個帳號執行下列步驟:
(1) 執行以下指令,從shadow群組移除使用者帳號:
#sed -ri 's/(^shadow:[^:]*:[^:]*:)([^:]+$)/\1/' /etc/group
(2) 執行以下指令,將使用者帳號之主要群組,從shadow修改為預設群組:
#usermod -g (預設群組名稱) (帳號名稱)
shadow群組不包含任何使用者
93
92TWGCB-01-008-0092系統服務xinetd套件  這項原則設定決定是否移除xinetd套件
▪  xinetd(Extended Internet daemon)套件取代原有的inetd守護程序,負責管理網路相關服務
▪  xinetd監聽來自網路之請求,進而啟動相應服務,可以用來啟動使用特權埠與非特權埠的服務
▪  移除xinetd套件可降低系統被攻擊面
開啟終端機,執行以下指令移除xinetd套件:
#dnf remove xinetd
移除
94
93TWGCB-01-008-0093系統服務chrony校時設定  這項原則設定決定是否設定chrony守護程序之校時來源
▪  chrony是一個守護程序,藉由實作網路時間協定(NTP),以於各系統之間同步系統時間,並可使用高準確之校時來源
▪  設定chrony校時來源,以確保系統時間正確
編輯/etc/chrony.conf檔案,新增或修改NTP伺服器設定,範例如下:
server (NTP伺服器名稱)

pool (NTP池名稱)
設定1個以上校時來源
95
94TWGCB-01-008-0094系統服務rsyncd服務  這項原則設定決定是否啟用rsyncd服務
▪  rsyncd服務用於透過網路連接在兩台電腦之間同步檔案與目錄,並可利用差分編碼以減少資料傳輸量
▪  由於rsyncd服務使用未加密協議進行資料傳輸,停用rsyncd服務可降低資安風險
開啟終端機,執行以下指令停用rsyncd服務:
#systemctl --now mask rsyncd
停用
96
95TWGCB-01-008-0095系統服務avahi-daemon服務  這項原則設定決定是否啟用avahi-daemon服務,以運行Avahi伺服器
▪  Avahi實作零配置網路服務規範(zeroconf),使用者無需進行手動設定,系統即可自動連線區域網路中之各種網路裝置與服務(如印表機、DNS)
▪  停用avahi-daemon服務可降低系統被攻擊面
開啟終端機,執行以下指令停用avahi-daemon服務:
#systemctl --now mask avahi-daemon.service
#systemctl --now mask avahi-daemon.socket
停用
97
96TWGCB-01-008-0096系統服務SNMP服務  這項原則設定決定是否啟用SNMP服務
▪  SNMP(Simple Network Management Protocol,簡單網路管理協定)服務用於監聽來自SNMP管理系統的SNMP命令,執行命令或蒐集資訊,然後將結果送回請求系統
▪  SNMP伺服器可以使用SNMPv1與SNMPv2進行通訊,因SNMPv1與SNMPv2使用不安全的明文傳輸設計,停用SNMP服務可降低系統被攻擊面
執行以下任一操作設定SNMP服務:
(1)  停用SNMP服務
開啟終端機,執行以下指令停用SNMP服務:
#systemctl --now mask snmpd
(2)  僅啟用SNMPv3功能
使用「net-snmp-create-v3-user」工具設定啟用SNMPv3功能之範例如下:
▪  開啟終端機,執行以下指令停止SNMP服務:
#systemctl stop snmpd
▪  執行以下指令設定SNMPv3並建立SNMPv3使用者,設定為僅允許讀取、身分驗證使用SHA及傳輸加密使用AES:
#net-snmp-create-v3-user -ro -A (使用者密碼) -a SHA -X (傳輸加密用密碼) -x AES (使用者名稱)
▪  執行以下指令編輯/etc/snmp/snmpd.conf檔案:
#vim /etc/snmp/snmpd.conf
▪  將包含com2sec、group、view及access參數之行內容註解(新增#符號於行首),以停用SNMPv1與SNMPv2,範例如下:
#com2sec notConfigUser default public
#group notConfigGroup v1 notConfigUser
#group notConfigGroup v2c notConfigUser
#view systemview included .1.3.6.1.2.1.1
#view systemview included .1.3.6.1.2.1.25.1.1
#access notConfigGroup "" any noauth exact systemview none none
▪  執行以下指令重新啟動SNMP服務,令設定生效僅啟用SNMPv3:
#systemctl start snmpd
停用SNMP服務或僅啟用SNMPv3功能
98
97TWGCB-01-008-0097系統服務Squid服務  這項原則設定決定是否啟用squid服務,以運行代理伺服器功能
▪  攻擊者透過代理伺服器攻擊其他伺服器時,可以藉此隱匿身分,甚至進而進入到其他受保護的網段中
▪  停用Squid服務可降低系統被攻擊面
開啟終端機,執行以下指令停用Squid服務:
#systemctl --now mask squid
停用
99
98TWGCB-01-008-0098系統服務Samba服務  這項原則設定決定是否啟用Samba服務
▪  Samba運用SMB ( Server message block)協定分享目錄與檔案予微軟Windows作業系統
▪  停用Samba服務可降低系統被攻擊面
開啟終端機,執行以下指令停用Samba服務:
#systemctl --now mask smb
停用
100
99TWGCB-01-008-0099系統服務FTP伺服器  這項原則設定決定是否啟用FTP伺服器服務
▪  FTP(File Transfer Protocol,檔案傳輸協定)可透過網路連接在兩台電腦之間傳輸檔案,因使用明文傳輸方式,故有資料洩露風險
▪  停用FTP伺服器服務可降低系統被攻擊面
▪  如有FTP使用需求,建議改採SFTP,以保護資料傳輸安全
開啟終端機,執行以下指令停用FTP伺服器服務(vsftpd)
#systemctl --now mask vsftpd
停用