Linux系統基準

1.補丁安裝
1.1 系統補丁升級

編號

名稱

系統補丁

實施方案

#yum -y update
升級所有包,改變軟件設置和系統設置,系統版本內核都升級
#yum -y upgrade
升級所有包,不改變軟件設置和系統設置,系統版本升級,內核不改變

實施目的

可以使系統版本最新並解決安全問題。

實施要求

一般漏洞在三個月內完成修復,重大漏洞在一個月內完成修復,緊急漏洞當天完成修復。

實施風險

慎重對系統打補丁,補丁安裝先先在測試機上完成。補丁安裝可能導致

系統異常或無法啓動。

回退方案

驗證方法

2.升級openssl和openssh

編號

名稱

升級openssl和openssh

實施方案

1.安裝zlib

下載安裝包:wget http://www.zlib.net/zlib-1.2.11.tar.gz

(1)安裝zlib-1.2.11

sudo tar -zvxf zlib-1.2.11.tar.gz

cd zlib-1.2.11

sudo ./configure --prefix=/usr/local/zlib --shared

sudo make

sudo make install

(2)安裝zlib-devel

sudo yum -y install zlib-devel

2.升級openssl

注意:我們當前使用的是openssl1.0.2系列的版本,版本會隔一段時間升級一次,當前是openssl-1.0.2k版本,下次可能是更新的版本,升級時需要到openssl官網下載最新的版本來安裝。

下載安裝包:wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz

sudo tar -zvxf openssl-1.0.2k.tar.gz

sudo cd openssl-1.0.2k

sudo ./config shared --prefix=/usr/local/ssl_1.0.2k \

--openssldir=/usr/local/ssl_1.0.2k zlib-dynamic

sudo make

sudo make install

備份openssl舊版本的相關文件

sudo mv /usr/bin/openssl /usr/bin/openssl.bak

sudo mv /usr/include/openssl /usr/include/openssl.bak

鏈接新版本的文件

sudo ln -s /usr/local/ssl_1.0.2k/bin/openssl /usr/bin/openssl

sudo ln -s /usr/local/ssl_1.0.2k/include/openssl /usr/include/openssl

#設置庫文件路徑。

sudo vim /etc/ld.so.conf,在文件最後寫入/usr/local/ ssl_1.0.2k /lib

執行:

sudo ldconfig

注意,如果後面要部署nginx等使用到openssl可文件的程序,則需要引用openssl新版本的庫文件。

3.升級openssh

注意:openssh版本會隔一段時間升級一次,當前是openssh-7.4p1版本,下次可能是更新的版本,升級時需要到openssh官網下載最新的版本來安裝。

下載安裝包:

wget http://openbsd.hk/pub/OpenBSD/OpenSSH/portable/openssh-7.4p1.tar.gz

(1)卸載舊版openssh程序

rpm -e rpm -qa | grep openssh --allmatches –nodeps

備份原ssh配置

sudo mkdir /etc/sshbak

sudo mv /etc/ssh/* /etc/sshbak/

(2)安裝 pam-devel

sudo yum install -y pam-devel

(3)安裝openssh

sudo tar -zvxf openssh-7.4p1.tar.gz

cd openssh-7.4p1

sudo ./configure --prefix=/usr --sysconfdir=/etc/ssh --with-pam --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/ssl_1.0.2k/ --with-md5-passwords --mandir=/usr/share/man

sudo make

sudo make install

生成ssh服務管理腳本

sudo cp ./openssh-7.4p1/contrib/redhat/sshd.init /etc/init.d/sshd

sudo chmod +x /etc/init.d/sshd

sudo chkconfig --add sshd

sudo /etc/init.d/sshd start

Starting sshd: [ OK ]

sudo ssh -V

OpenSSH_7.4p1, OpenSSL 1.0.2k 1 Mar 2016

(3)配置ssh的pam認證文件

查看/etc/pam.d/目錄下是否有sshd文件,如果沒有,則執行

sudo mv /etc/pam.d/sshd.rpmsave /etc/pam.d/sshd

注意:升級openssh後,登記該主機時可能會出現

RSA host key has changed錯誤

解決方法:在源主機上編輯/home/用戶賬號/.ssh/known_hosts文件,將包含有目標主機(升級了openssh版本的那臺主機)的IP的所在行刪掉,保存退出編輯即可。

實施目的

解決openssl和openssh低版本存在安全漏洞問題

實施要求

實施風險

在升級過程中可能導致ssh會話中斷連接不上目標主機,如果是無法通過VMware vSphere Client進行終端管理的主機,建議先安裝啓用telnet服務,能通過telnet服務連接後再升級openssh,成功升級openssh服務後,再卸載telnet服務。

回退方案

通過備份的配置文件進行回退

驗證方法

執行ssh –V

如果顯示的是所安裝的版本,則說明升級成功。

3.賬號、口令策略
3.1賬號最小化

編號

名稱

賬號最小化

實施方案

Linux下多餘可關閉的用戶如下:

IP,news,uucp,games,ftp

#groupdel (ip news uucp,games)

#userdel(ip,news,uucp,games)

更改一些用戶shell

chmod -s /bin/nologin ftp

實施目的

去除不需要的賬號,更改危險賬號缺省的shell

實施要求

實施風險

應當明確系統的角色,避免誤刪除默認賬號

回退方案

恢復默認配置

驗證方法

cat /etc/passwd

3.2設置密碼過期策略

編號

名稱

設置密碼過期策略

實施方案

備份配置文件

sudo cp -a /etc/login.defs /etc/login.defs.bak

修改/etc/login.defs文件如下:

sudo vi /etc/login.defs

PASS_MAX_DAYS 90

PASS_MIN_DAYS 6

PASS_MIN_LEN 8

PASS_WARN_AGE 30

參數說明:

PASS_MAX_DAYS 密碼有效期

PASS_MIN_DAYS 修改密碼的最短期限

PASS_MIN_LEN 密碼最短長度

PASS_WARN_AGE 密碼過期前提前提醒時間

實施目的

定期更換密碼,保護口令安全

實施要求

90天需要更換密碼,密碼最小長度要求8位以上

實施風險

口令過期前應修改密碼,tomcat用戶可能不可用,導致堡壘機腳本失敗

回退方案

還原變更的參數值或者使用備份文件進行還原

驗證方法

#cat /etc/login.defs |grep PASS_MAX_DAYS

3.3超時自動註銷登錄

編號

名稱

超時自動註銷登錄

實施方案

如果用戶在離開系統前忘記註銷賬戶,將會帶來很大的安全隱患,應讓系統自動註銷。

#vi /etc/profile

增加或修改文件

export TMOUT=300

HISTFILESIZE=100

HISTSIZE=100

實施目的

避免用戶忘記註銷登錄,減少安全隱患

實施要求

登錄超時時間5分鐘,歷史命令記錄數100條

實施風險

回退方案

還原變更的參數值或者使用備份文件進行還原

驗證方法

#cat /etc/profile |grep TMOUT

3.4增強密碼加密算法

編號

名稱

增強密碼加密算法

實施方案

sudo authconfig --test |grep password

查看系統加密算法,如果爲MD5則需要改爲sha512

需要root用戶實施:

authconfig --passalgo=sha512 --enablenis –update

如果實施過程中NIS服務不能自動啓動,則需要手動重啓NIS服務:

service ypbind restart

實施目的

增強密碼加密算法,提升系統密碼安全性

實施要求

將密碼加密算法升級到sha512

實施風險

實施過程當中,會關閉NIS服務,NIS服務關閉後如未能再次成功啓動,此時用戶則不能同時NIS認證登錄系統,僅可以通過本地用戶登錄。

回退方案

還原回MD5

還原:authconfig --passalgo=md5 --enablenis --update

驗證方法

sudo authconfig --test |grep password

3.5密碼複雜度

編號

名稱

密碼複雜度

實施方案

sudo cp -a /etc/pam.d/system-auth /etc/pam.d/system-auth.bak

sudo vi /etc/pam.d/system-auth

針對centos或者redhat 6.X版本

password requisite pam_cracklib.so retry=3 minlen=8 difok=3 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1

改成

password requisite pam_cracklib.so minlen=8 difok=5 dcredit=-1 lcredit=-1 ocredit=-1 retry=1 type=

針對centos 7.X版本

password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=

改成

password requisite pam_pwquality.so try_first_pass local_users_only retry=1 dcredit=-1 lcredit=-1 ocredit=-1 minlen=8 difok=5 authtok_type=

備註:

minlen=8:最小長度8位

difok=5:新、舊密碼最少5個字符不同

dcredit=-1:最少1個數字

lcredit=-1:最少1個小寫字符,(ucredit=-1:最少1個大寫字符)

ocredit=-1:最少1個特殊字符

retry=1:1次錯誤後返回錯誤信息

type=xxx:此選項用來修改缺省的密碼提示文本

實施目的

防止系統弱口令和口令破解,減少安全隱患

實施要求

密碼最短要求8位,並必須至少同時含有1個數字,1個小寫字母,1個特殊符號。新、舊密碼最少5個字符不同。

實施風險

回退方案

還原變更的參數值或者使用備份文件進行還原

驗證方法

#cat /etc/pam.d/system-auth

3.6記住5個歷史密碼

編號

名稱

記住5個歷史密碼

實施方案

sudo vi /etc/pam.d/system-auth

在這行password sufficient pam_unix.so sha512 shadow nis nullok try_first_pass use_authtok

的後面添加remember=5

實施目的

防止系統弱口令和口令破解,減少安全隱患

實施要求

對密碼進行修改時,不允許設置與此前5個相同的密碼。

實施風險

回退方案

還原變更的參數值或者使用備份文件進行還原

驗證方法

#cat /etc/pam.d/system-auth

3.75次登陸失敗鎖定賬戶

編號

名稱

5次登陸失敗鎖定賬戶

實施方案

針對login進程登錄:

sudo vim /etc/pam.d/system-auth

在#%PAM-1.0的下面,即第二行,添加

auth required pam_tally2.so deny=5 unlock_time=1800 even_deny_root root_unlock_time=1800

針對SSH進程登錄:

sudo cp -a /etc/pam.d/sshd /etc/pam.d/sshd.bak

sudo vim /etc/pam.d/sshd

在#%PAM-1.0的下面,即第二行,添加

auth required pam_tally2.so deny=5 unlock_time=1800 even_deny_root root_unlock_time=1800

實施目的

防止系統弱口令和口令破解,減少安全隱患

實施要求

5次登錄失敗,鎖定賬號30分鐘。

實施風險

合法用戶忘記密碼多次輸入錯誤導致賬號被鎖

回退方案

還原變更的參數值或者使用備份文件進行還原

驗證方法

#cat /etc/pam.d/system-auth

#cat /etc/pam.d/sshd

3.8 使用PAM禁止不相關人員su爲root

編號

名稱

使用PAM禁止不相關人員su爲root

實施方案

#sudo cp -a /etc/pam.d/su /etc/pam.d/su.bak

#sudo vi /etc/pam.d/su

#%PAM-1.0

auth sufficient pam_rootok.so

Uncomment the following line to implicitly trust users in the "wheel" group.

auth sufficient pam_wheel.so trust use_uid

Uncomment the following line to require a user to be in the "wheel" group.

auth required pam_wheel.so use_uid

auth include system-auth

account sufficient pam_succeed_if.so uid = 0 use_uid quiet

account include system-auth

password include system-auth

session include system-auth

session optional pam_xauth.so

將這行的註釋去掉

#auth required pam_wheel.so use_uid

這表明只有wheel 組的成員可以使用su 命令成爲root 用戶

實施目的

避免無關人員可以su爲root,減少安全隱患。

實施要求

只有加入wheel組的人員才能su爲root。

實施風險

回退方案

還原變更的參數值或者使用備份文件進行還原

驗證方法

#cat /etc/pam.d/su

4.網絡與服務加固
4.1禁止不必要的服務

編號

名稱

禁止不必要的服務

實施方案

Telnet,rsh,ldp,lpd,krb5-telnet,pcmcia

1、#chkconfig --list

1、#service 服務名 stop

3、#chkconfig --level 35 服務名 off

實施目的

禁用系統開機時啓動不需要的服務,減少安全隱患。避免敏感信息泄露

實施要求

實施風險

該服務或與之相關的服務不可用

回退方案

驗證方法

4.2 SSH安全配置

編號

名稱

SSH安全配置

實施方案

sudo cp -a /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

sudo vi /etc/ssh/sshd_config

使用版本2

Protocol 2

禁止root通過ssh登錄

PermitRootLogin no

採用PAM模塊進行認證

UsePAM yes

允許密碼認證

PasswordAuthentication yes

使用密鑰進行身份驗證

PubkeyAuthentication yes

禁止空密碼登錄

PermitEmptyPasswords no

關閉ssh的tcp轉發

AllowTcpForwarding no

關閉S/KEY(質疑-應答)認證方式

ChallengeResponseAuthentication no

關閉基於GSSAPI 的用戶認證

將GSSAPIAuthentication yes參數,改成

GSSAPIAuthentication no

保存配置文件,並重啓ssh服務

sudo /etc/init.d/sshd restart

實施目的

使用加密協議登錄系統,避免密碼被監聽

實施要求

禁止root通過ssh遠程登錄系統,增強系統安全性

實施風險

回退方案

還原變更的參數值或者使用備份文件進行還原

驗證方法

4.3設置登錄警告語

編號

名稱

設置登錄警告語

實施方案

#vi /etc/ssh/sshd_conf

把Banner /some/path修改爲 Banner /etc/ssh/alert

建立alert 文件

sudo vim /etc/ssh/alert

增加內容如入:


Warning!!!Any Access Without Permission Is Forbidden!!!


sudo service sshd restart(重啓sshd 服務)

實施目的

設置登錄警告語,明確系統歸宿,同時對非法登錄用戶起到震懾作用。

實施要求

實施風險

回退方案

還原變更的參數值或者使用備份文件進行還原

驗證方法

5.安全性增強
5.1新建文件權限增強

編號

名稱

新建文件權限增強

實施方案

1.備份配置文件

sudo cp -a /etc/bashrc /etc/bashrc.default

2.編輯配置文件

sudo vim /etc/bashrc

在文件末尾增加參數

umask 027

3.保存配置文件

  1. 備份配置文件

sudo cp -a /etc/profile /etc/profile.default

5.編輯配置文件

sudo vim /etc/profile

在文件末尾增加參數

umask 027

6.保存配置文件

實施目的

設置新建文件權限,減少信息泄露風險

實施要求

實施風險

可能存在這樣的情況,web服務器使用非root啓動,但應用目錄的所有者爲root,web服務用戶將無法訪問在應用目錄下新建的文件。

回退方案

將變更參數還原或者使用備份文件恢復

驗證方法

5.2關鍵文件屬性增強

編號

名稱

關鍵文件屬性增強

實施方案

sudo chattr +a /var/log/messages

sudo chattr +a /var/log/secure

sudo chattr +a /var/log/wtmp

sudo chmod +t /tmp

sudo chmod 644 /var/log/wtmp

sudo chmod 644 /var/run/utmp

chmod -R 700 /etc/init.d/*

touch /root/.rhosts /root/.netrc /etc/hosts.equiv

chmod 0 /root/.rhosts /root/.netrc /etc/hosts.equiv

備註:

chattr +a

設定該參數後,只能向文件中添加數據,而不能刪除,多用於服務器日誌文件安全,只有root才能設定這個屬性。

chmod +t 設置粘着位,除文件所有者外,其他用戶不能刪除

實施目的

防止重要的日誌文件被篡改

實施要求

實施風險

實施chmod -R 700 /etc/init.d/*後,/etc/init.d目錄下的程序僅能通過root管理

回退方案

可通過chattr -a 取消a屬性

可通過chattr -i 取消i屬性

驗證方法

5.3賬號安全

編號

名稱

關鍵文件屬性增強

實施方案

chattr +i /etc/passwd

參數說明:

i:設定文件不能被刪除、改名、設定鏈接關係,同時不能寫入或新增內容。i參數對於文件 系統的安全設置有很大幫助。

實施目的

防止被非法創建系統賬號

實施要求

實施風險

不能創建系統賬號,如果在應用程序安裝時,要自動創建賬號,則需要將該屬性去掉。

回退方案

執行chattr -i /etc/passwd

驗證方法

5.4設置history 歷史命令時間戳

編號

名稱

設置history 歷史命令時間戳

實施方案

sudo cp -p /etc/profile /etc/profile.bak

sudo vim /etc/profile

在文件最後添加

export HISTTIMEFORMAT="%F %T whoami "

實施目的

便於日誌審計和事件追查。

實施要求

實施風險

回退方案

還原變更的參數值或者使用備份文件進行還原

驗證方法

5.5使PATH環境變更不包含當前目錄”.”

編號

名稱

使PATH環境變更不包含當前目錄”.”

實施方案

echo $PATH

修改環境變更,去除”.”部分

/bin:/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.6.0_45/bin:/usr/local/bin:/root/bin

實施目的

防止執行惡意特洛伊×××,減少安全隱患

實施要求

實施風險

回退方案

驗證方法

echo $PATH

5.6禁用control-alt-delete鍵盤關機命令

編號

名稱

禁用control-alt-delete鍵盤關機命令

實施方案

centos 6.x以上版本

修改/etc/init/control-alt-delete.conf文件

找到如下行在本行前面加“#”註釋掉命令功能

#exec /sbin/shutdown -r now "Control-Alt-Delete pressed"

centos 5.x:

vim /etc/inittab

找到:ca::ctrlaltdel:/sbin/shutdown -t3 -r now,在本行前面加“#”註釋掉命令功能

實施目的

增加系統安全性,降低安全隱患

實施要求

禁止ctl-alt-del使用在控制檯按ctl-alt-del不能重啓計算機

實施風險

回退方案

還原變更的參數值

驗證方法

5.7設置系統啓動時運行等級

編號

名稱

設置系統啓動時運行等級

實施方案

編輯/etc/inittab 文件:

id:5:initdefault:

改爲:

id:3:initdefault:

注:5 爲帶X-Windows 桌面系統的運行級別,3 爲多用戶運

行級別。

實施目的

最小化系統服務,降低安全隱患

實施要求

確保系統運行在級別3

實施風險

回退方案

還原變更的參數值

驗證方法

5.8隱藏系統提示信息

編號

名稱

隱藏系統提示信息

實施方案

隱藏Linux系統發行版的名稱、版本、內核版本、服務器的名稱

刪除/etc目錄下的isue.net和issue文件:

#rm -f /etc/issue

#rm -f /etc/issue.net

實施目的

減少系統提示信息,降低安全隱患。

實施要求

實施風險

回退方案

驗證方法

5.9NTP時間同步

編號

名稱

NTP時間同步

實施方案

0 /8 /usr/sbin/ntpdate 172.16.100.1; /sbin/hwclock –w

注意:實際的NTP服務器可能與這裏設置的不一樣,根據實際的NTP服務器IP來配置。

實施目的

統一時間,防止因時間不一致導致的審計和訂單錯誤

實施要求

每8小時同步一次時間

實施風險

回退方案

驗證方法

5.10設置grup密碼

編號

名稱

設置grup密碼(進入單用戶模式密碼)

實施方案

備份配置文件

sudo cp -p /boot/grub/menu.lst /boot/grub/menu.lst.bak

grup密碼使用MD5加密成密碼序列

sudo grub-md5-crypt

Password: ---此處輸入密碼

Retype password:

設置grup密碼

sudo vim /boot/grub/menu.lst

在splashimage=(hd0,0)下面添加

password --md5 xxxxxxxx (xxxxxxxx爲上面的密碼序列)

注意:如果設置了grup密碼,則需要做好記錄,以免關鍵時刻無法從單用戶模式進入系統。

實施目的

防止惡意用戶在本地通過單用戶模式登錄系統做非法操作

實施要求

實施風險

回退方案

還原變更的參數值或者使用備份文件進行還原

驗證方法

5.11日誌集中存儲

編號

名稱

日誌集中存儲

實施方案

#vi /etc/rsyslog.conf

增加一行:

. @172.16.200.5

注意:實際的日誌服務器的IP地址跟這裏配置的不一樣,根據實際的IP地址來配置。

實施目的

日誌集中發送到日誌服務器存儲,方便審計和日誌保留。

實施要求

實施風險

回退方案

驗證方法

5.12防惡意代碼軟件

編號

名稱

防惡意代碼軟件

實施方案

安裝ossec在/usr/local下

實施目的

文件一致性監控和報警

實施要求

監控系統重要文件的變更,如果是應用服務器,要監控應用服務器的目錄,

設置腳本,在diff目錄超過5G時,停止服務並刪除diff文件,防止因監控目錄過大導致的系統故障

實施風險

回退方案

驗證方法

5.13 DNS配置

編號

名稱

DNS配置

實施方案

#vi /etc/reslov.conf

nameserver 172.16.100.53

nameserver 114.114.114.114

nameserver 8.8.8.8

nameserver 58.60.188.178

search dinpay.com

options attempts:2

options timeout:2

實施目的

統一DNS解析,防止因修改DNS配置而導致的異常

實施要求

需要連接數據庫的主機,需要在第一行配置nameserver 172.16.100.53

實施風險

回退方案

驗證方法

5.14限制可使用sudo的用戶和命令

編號

名稱

限制可使用sudo的用戶和命令

實施方案

#vi /etc/sudoers

User_Alias ADMINS=fxg,cqs,hjt,bzy,wxl,pb

Cmnd_Alias CMD=/bin/vi,/bin/cat,/bin/more,/bin/ls

root ALL=(ALL) ALL

ADMINS ALL=(root) NOPASSWD: ALL,!/usr/bin/passwd

ADMINS ALL=(tomcat) NOPASSWD: ALL

實施目的

限制可使用sudo的用戶和命令,減少權限隱患

實施要求

實施風險

回退方案

驗證方法

5.15系統備份

編號

名稱

系統備份

實施方案

安裝bacula客戶端,設置備份目錄

實施目的

對裝有應用和系統配置文件進行備份,用於系統恢復。

實施要求

實施風險

回退方案

驗證方法

5.16系統監控

編號

名稱

系統監控

實施方案

安裝Zabbix客戶端

實施目的

對裝有應用和系統配置文件進行備份,用於系統恢復。

實施要求

監控系統本身和應用的端口

實施風險

回退方案

驗證方法

5.17腳本文件

編號

名稱

腳本文件

實施方案

實施目的

統一腳本放置目錄,方便管理

實施要求

腳本文件統一放在/usr/local/script目錄下,如果需要每日執行的,放在/etc/cron.daily目錄下

實施風險

回退方案

驗證方法

5.18日誌切割

編號

名稱

日誌切割

實施方案

例:

vim /etc/logrotate.d/nginx

/usr/local/nginx/logs/*.log{

daily

dateext

rotate 360

copytruncate

compress

notifempty

missingok

postrotate

      if [ -f /usr/local/nginx/logs/nginx.pid ];then

       kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

      fi

endscript

}

實施目的

對Nginx和Tomcat日誌進行壓縮切割,防止日誌無限增大

實施要求

日誌保留1年後轉移到離線硬盤。

實施風險

回退方案

驗證方法

5.19 /etc/hosts配置

編號

名稱

/etc/hosts

實施方案

實施目的

實施要求

爲避免出現IP域名不一致的情況,原則上除了200網段的主機其它網段或公網的域名一率通過dns進行解析,不允許通過/etc/hosts進行解析,如果有例外,記錄在本文檔最後例外記錄裏。

實施風險

回退方案

驗證方法

4.20 NIS集中身份認證

編號

名稱

NIS集中身份認證

實施方案

#vi /etc/yp.conf

domain dinpay.com server 172.16.200.3

#vi /etc/rc.d/rc.local

/bin/nisdomainname dinpay.com

vi /etc/nsswitch.conf

passwd: files nis

shadow: files nis

hosts: files nis dns

#chkconfig ypbind on

實施目的

統一系統賬號管理

實施要求

實施風險

回退方案

驗證方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章