GCB-Ansible-2.0是依據「政府組態基準(GCB) - 國家資通安全研究院」 作業系統說明文件: TWGCB-01-008_Red Hat Enterprise Linux 8政府組態基準說明文件v1.0_1100924.pdf 撰寫 。
- OS: Debian11
- ansible version: ansible 2.10.8
- OS: Oracle-Linux-9, CentOS-7
tee /etc/sudoers.d/pollo-develop<<EOF
ansible ALL=(ALL) NOPASSWD: ALL
EOF
sudo groupadd ansible
sudo useradd -g ansible -d /home/ansible -s /bin/bash ansible
sudo usermod -aG wheel ansible
sudo passwd ansible
- 新增存放目的資料夾
mkdir -p /home/jameschang/Documents/gitContent/jameschang/GCB-Ansible/.ssh
- 產生ssh key,並放置在專案目錄中
ssh-keygen # /home/jameschang/Documents/gitContent/jameschang/GCB-Ansible/.ssh/id_rsa
- 將公鑰設定放到伺服器上
ssh-copy-id -i .ssh/id_rsa [email protected]
- 連接測試
ssh -i .ssh/id_rsa [email protected]
mkdir -p logs
touch logs/ansible.log
ansible-playbook check-os-version.yml -i inventorys/develop
- 獨立磁區(安裝時處理)
- TWGCB-01-008-0008: /var
- TWGCB-01-008-0009: /var/tmp
- TWGCB-01-008-0013: /var/log
- TWGCB-01-008-0014: /var/log/audit
- TWGCB-01-008-0015: /home
以下是通用項目
- /etc/fstab
tmpfs /tmp tmpfs defaults,rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs defaults,nodev,nosuid,noexec 0 0
systemctl unmask tmp.mount
systemctl enable tmp.mount
mount -o remount,nodev,nosuid,noexec /dev/shm
- /etc/systemd/system/local-fs.target.wants/tmp.mount
[Mount]
What=tmpfs
Where=/tmp
Type=tmpfs
Options=mode=1777,strictatime,noexec,nodev,nosuid
- TWGCB-01-008-0004: 設定/tmp目錄之檔案系統
- TWGCB-01-008-0005: 設定/tmp目錄之nodev選項
- TWGCB-01-008-0006: 設定/tmp目錄之nosuid選項
- TWGCB-01-008-0007: 設定/tmp目錄之noexec選項
- 這項原則設定決定/tmp目錄是否使用tmpfs檔案系統
- /tmp是具有全域寫入權限之目錄,所有使用者與某些應用程式都將其用於暫存檔案
- tmpfs是一個不存在於實體硬碟上,而是駐存在記憶體的特殊檔案系統,可提供優於傳統機械硬碟的存取速度
- 將/tmp目錄掛載到tmpfs,可於掛載選項上使用noexec選項,指定/tmp目錄不能啟動可執行二進制檔案,使攻擊者不能安裝執行惡意程式以降低風險
- 這項原則設定決定/tmp目錄是否啟用nodev選項,以禁止在/tmp目錄中建立裝置檔案
- 由於/tmp目錄用途不在於支援裝置,設定nodev選項以確保使用者無法在/tmp目錄建立裝置檔案或存取隨機硬體裝置,降低惡意程式感染風險
- 可設定之參數如下:
- dev:允許建立裝置檔案
- nodev:禁止建立裝置檔案
- 這項原則設定決定/tmp目錄是否啟用nosuid選項,以禁止/tmp目錄存在具有SUID屬性的檔案
- SUID(Set User ID)是針對可執行二進制檔案(Binary file)設計的一項功能,任何使用者執行該程式時,會以該程式之擁有者的身分執行,藉由短暫提權讓一般使用者存取未被授權之檔案
- 可設定之參數如下:
- suid:允許存在具有SUID屬性的檔案
- nosuid:禁止存在具有SUID屬性的檔案
- 這項原則設定決定/tmp目錄是否啟用noexec選項,以禁止在/tmp目錄中啟動可執行二進制檔案
- /tmp目錄主要做為暫時存放檔案之用,禁止使用者啟動可執行二進制檔案,以避免感染惡意程式
- 可設定之參數如下:
- exec:允許啟動可執行二進制檔案
- noexec:禁止啟動可執行二進制檔案
執行以下任一操作以設定/tmp目錄之檔案系統:
- 開啟終端機,執行下列指令,編輯/etc/fstab
vim /etc/fstab
/tmp的掛載設定範例如下:
# TWGCB-01-008-0004
tmpfs /tmp tmpfs defaults,rw,nosuid,nodev,noexec,relatime 0 0
- 開啟終端機,執行下列指令,運用systemd掛載/tmp:
systemctl unmask tmp.mount
systemctl enable tmp.mount
編輯/etc/systemd/system/local-fs.target.wants/tmp.mount
以掛載/tmp:
sudo mkdir -p /etc/systemd/system/local-fs.target.wants/
vim /etc/systemd/system/local-fs.target.wants/tmp.mount
[Mount]
What=tmpfs
Where=/tmp
Type=tmpfs
Options=mode=1777,strictatime,noexec,nodev,nosuid
- TWGCB-01-008-0011: 設定/var/tmp目錄之nosuid選項
- TWGCB-01-008-0012: 設定/var/tmp目錄之noexec選項
▪ 這項原則設定決定/var/tmp目錄是否啟用nosuid選項,以禁止/var/tmp目錄存在具有SUID屬性的檔案 ▪ SUID(Set User ID)是針對可執行二進制檔案(Binary file)設計的一項功能,任何使用者執行該程式時,會以該程式之擁有者的身分執行,藉由短暫提權讓一般使用者存取未被授權之檔案 ▪ 可設定之參數如下: (1) suid:允許存在具有SUID屬性的檔案 (2) nosuid:禁止存在具有SUID屬性的檔案
▪ 這項原則設定決定/var/tmp目錄是否啟用noexec選項,以禁止在/var/tmp目錄中啟動可執行二進制檔案 ▪ /var/tmp目錄主要做為暫時存放檔案之用,禁止使用者啟動可執行二進制檔案,以避免感染惡意程式 ▪ 可設定之參數如下: (1) exec:允許啟動可執行二進制檔案 (2) noexec:禁止啟動可執行二進制檔案
- 編輯
/etc/fstab
檔案,在掛載點為/var/tmp列,於第4欄加入「,noexec,nosuid」
# TWGCB-01-008-0012
/dev/mapper/ol-var_tmp /var/tmp xfs defaults,noexec,nosuid 0 0
- 開啟終端機,執行下列指令,重新掛載/var/tmp:
systemctl daemon-reload
mount -o remount,noexec,nosuid /var/tmp
- TWGCB-01-012-0016: 設定/home目錄之nodev選項
- 這項原則設定決定/home目錄是否啟用nodev選項,以禁止在/home目錄中建立裝置檔案
- /home目錄是系統預設的使用者家目錄(Home directory)。每當新增1個一般使用者帳號時,預設的使用者家目錄都會建立在/home目錄下
- 由於/home目錄用途不在於支援裝置,設定nodev選項以確保使用者無法在/home目錄建立裝置檔案或存取隨機硬體裝置,降低惡意程式感染風險
- 可設定之參數如下:
- dev:允許建立裝置檔案
- nodev:禁止建立裝置檔案
- 編輯
/etc/fstab
檔案,在掛載點為/home列,於第4欄加入「,nodev」
/dev/mapper/ol-home /home xfs defaults,nodev 0 0
- 開啟終端機,執行下列指令,重新掛載/home:
systemctl daemon-reload
mount -o remount,nodev /home
- TWGCB-01-012-0017: 設定/dev/shm目錄之nodev選項
- TWGCB-01-012-0018: 設定/dev/shm目錄之nosuid選項
- TWGCB-01-012-0019: 設定/dev/shm目錄之noexec選項
- 這項原則設定決定/dev/shm目錄是否啟用nodev選項,以禁止在/dev/shm目錄中建立裝置檔案
- /dev/shm目錄是系統利用記憶體建立的虛擬磁碟空間,用以存放暫存檔案,一方面存取速度比硬碟快,另一方面可依實際檔案大小動態分配空間
- 由於/dev/shm目錄用途不在於支援裝置,設定nodev選項以確保使用者無法在/dev/shm目錄建立裝置檔案或存取隨機硬體裝置,降低惡意程式感染風險
- 可設定之參數如下:
- dev:允許建立裝置檔案
- nodev:禁止建立裝置檔案
- 這項原則設定決定/dev/shm目錄是否啟用nosuid選項,以禁止/dev/shm目錄存在具有SUID屬性的檔案
- /dev/shm目錄是系統利用記憶體建立的虛擬磁碟空間,用以存放暫存檔案,一方面存取速度比硬碟快,另一方面可依實際檔案大小動態分配空間
- SUID(Set User ID)是針對可執行二進制檔案(Binary file)設計的一項功能,任何使用者執行該程式時,會以該程式之擁有者的身分執行,藉由短暫提權讓一般使用者存取未被授權之檔案
- 可設定之參數如下:
- suid:允許存在具有SUID屬性的檔案
- nosuid:禁止存在具有SUID屬性的檔案
- 這項原則設定決定/dev/shm目錄是否啟用noexec選項,以禁止在/dev/shm目錄中啟動可執行二進制檔案
- /dev/shm目錄是系統利用記憶體建立的虛擬磁碟空間,用以存放暫存檔案,一方面存取速度比硬碟快,另一方面可依實際檔案大小動態分配空間
- 設定noexec選項,禁止使用者啟動可執行二進制檔案,以避免感染惡意程式
- 可設定之參數如下:
- exec:允許啟動可執行二進制檔案
- noexec:禁止啟動可執行二進制檔案
- 編輯/etc/fstab檔案,在掛載點為/dev/shm列,於第4欄加入「,nodev」
# TWGCB-01-012-0019
tmpfs /dev/shm tmpfs defaults,nodev,nosuid,noexec 0 0
systemctl daemon-reload
mount -o remount,nodev,nosuid,noexec /dev/shm
如果有插入可攜式儲存裝置,請設定下列項目
- TWGCB-01-008-0020: 設定可攜式儲存裝置之nodev選項
- TWGCB-01-008-0021: 設定可攜式儲存裝置之nosuid選項
- TWGCB-01-008-0022: 設定可攜式儲存裝置之noexec選項
-
TWGCB-01-008-0034: 設定sudo指令使用pty
-
TWGCB-01-008-0035: sudo自定義日誌檔案
-
/etc/sudoers.d/gcb
visudo -f /etc/sudoers.d/gcb
Defaults use_pty
Defaults logfile="/var/log/sudo.log"
啟用限制存取SSH功能,有助於確保只有授權使用者才能透過SSH遠端存取系統
/etc/ssh/sshd_config
檔案可設定以下參數,以限制可透過SSH存取系統的使用者與群組:
- AllowUsers:由空格分隔的使用者名稱組成,設定允許登入的使用者
- AllowGroups:由空格分隔的群組名稱組成,設定允許登入的群組
- DenyUsers:由空格分隔的使用者名稱組成,設定拒絕登入的使用者
- DenyGroups:由空格分隔的群組名稱組成,設定拒絕登入的群組
設定完成後執行以下指令,重新啟動SSH服務使其生效
systemctl restart sshd
dnf install net-snmp net-snmp-utils net-snmp-libs net-snmp-devel
systemctl stop snmpd
net-snmp-create-v3-user -ro -A snmp@PWD1 -a SHA -X snmp@PWD1 -x AES snmpAdmin
- /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
- 開啟終端機,執行以下指令,尋找稽核日誌檔案
grep -iw log_file /etc/audit/auditd.conf
- 執行以下指令,設定稽核日誌檔案擁有者與群組, 設定稽核日誌檔案權限為600或更低權限
chown root:root (稽核日誌檔案名稱)
chmod 600 (稽核日誌檔案名稱)
- TWGCB-01-008-0225
- TWGCB-01-008-0226
- TWGCB-01-008-0227
- TWGCB-01-008-0228
- TWGCB-01-012-0234
- TWGCB-01-008-0235
- TWGCB-01-008-0236
- TWGCB-01-008-0239
- TWGCB-01-008-0061
- TWGCB-01-008-0062
- TWGCB-01-008-0063
- TWGCB-01-008-0064
- TWGCB-01-008-0065
find (partition) -xdev -type f -perm -0002
find (partition) -xdev -nouser
find (partition) -xdev -nogroup
find (partition) -xdev -type d -perm -0002 -uid +999 -print
- /etc/default/grub
- 新增「,audit=1, audit_backlog_limit=8192」
- 移除所有「selinux=0」與「enforcing=0」內容
GRUB_CMDLINE_LINUX="audit=1 audit_backlog_limit=8192"
grub2-mkconfig -o /boot/grub2/grub.cfg
- 設定完 playbook-base.yml 需要重新開機