0x00 簡介
安全加固是企業安全中及其重要的一環,其主要內容包括賬號安全、認證授權、協議安全、審計安全四項,今天首先學習Linux下的系統加固(CentOS)。
0x01 賬號安全
這一部分主要是對Linux賬號進行加固。
與賬號相關的文件
/etc/passwd -- 記錄了系統中各用戶的一些基本屬性,root可寫,所有用戶可讀 /etc/shadow -- 記錄了所有用戶的密碼 /etc/group -- 記錄了用戶組屬性
修改密碼策略
vim /etc/login.defs
PASS_MAX_DAYS 90 密碼最長有效期 PASS_MIN_DAYS 10 密碼修改之間最小的天數 PASS_MIN_LEN 8 密碼長度 PASS_WARN_AGE 7 口令失效前多少天開始通知用戶修改密碼
設置密碼強度
vim /etc/pam.d/system-auth,將
password requisite pam_cracklib.so
修改為至少包含一個數字、一個小寫字母、一個大寫字母、一個特殊字符、且密碼長度>=8:
password requisite pam_cracklib.so try_first_pass retry=3 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 minlen=8
Ubuntu中vi /etc/pam.d/common-password。
限制用戶登陸
vim /etc/hosts.deny,若禁止192.168.0.1對服務器進行ssh的登陸,添加如下內容
sshd : 192.168.0.1
限制登陸次數
應對暴力破解,我們可以限制登陸次數為5,超過5次登陸失敗就鎖定。vim /etc/pam.d/sshd,在 #%PAM-1.0 的下面,加入下面的內容,表示當密碼輸入錯誤達到3次,就鎖定用戶150秒,如果root用戶輸入密碼錯誤達到3次,鎖定300秒。
auth required pam_tally2.so deny=3 unlock_time=150 even_deny_root root_unlock_time300
鎖定用戶的管理:
pam_tally2 查看被鎖定的用戶
pam_tally2 --reset -u username 將被鎖定的用戶解鎖
0x02 認證授權
認證授權主要是驗證你是誰,你能夠做什么。
文件目錄權限
在用戶登陸中非常重要的三個文件
/etc/passwd 必須所有用戶都可讀,root用戶可寫 –rw-r—r— 權限值為644
/etc/shadow 只有root可讀 –r-------- 權限值為400
/etc/group 必須所有用戶都可讀,root用戶可寫 –rw-r—r— 權限值為644
chmod 644 /etc/passwd chmod 400 /etc/shadow chmod 644 /etc/group
檢查是否存在除root之外UID為0的用戶:
awk -F ':' '($3==0){print $1)' /etc/passwd
檢索出來的非root用戶用userdel命令全部刪除。
檢查是否使用PAM認證模塊禁止wheel組之外的用戶su為root
[root@centos ~]# #vim /etc/pam.d/su # 新添加以下兩行 auth sufficient pam_rootok.so auth required pam_wheel.so use_uid
注意:auth與sufficient之間由兩個tab建隔開,sufficient與動態庫路徑之間使用一個tab建隔開
然后,:usermod -G wheel username #username為需要添加至wheel組的用戶名稱,將用戶添加到wheel組。注意,第一步加固表明只有wheel組中的用戶才能使用su命令切換到root用戶,因此必須將需要切換到root的用戶添加到wheel組,以使它可以使用su命令成為root用戶,如果系統不存在wheel組,則新增,新增方法:groupadd wheel。
PAM(Pluggable Authentication Module)是一個可插入式認證模塊,在Linux系統中,各種不同的應用程序都需要完成認證功能,為了實現統一調配,把所有需要認證的功能做成一個模塊(認證機制特別復雜的除外,如:https),當特定的程序需要完成認證功能的時候,就去調用PMA的認證模塊。
文件與目錄缺省權限控制
[root@centos ~]#cp /etc/profile /etc/profile.bak [root@centos ~]# vim /etc/profile umask 027 [root@centos ~]#source /etc/profile
0x03 協議安全
協議加固主要阻止入侵者遠程獲取服務器的權限。
SSH安全
SSH是一個協議,利用它可以登錄到一個遠程系統或遠程執行系統命令,默認允許root登錄,並且sshv1存在缺陷,我們應該在sshd_config禁止root訪問和使用sshv2來讓ssh更加安全。vim /etc/ssh/sshd_config 修改為:
PermitRootLogin no
telnet安全
早期的Linux默認開啟telnet服務,telnet,ftp,rlogin都是明文傳輸的協議,如果必須使用telnet,則需要進行安全配置:
/etc/xinetd.d/telnet
disable=yes
禁止匿名ftp
[root@wenzhiyi ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO #如果存在anonymous_enable則修改,如果不存在則手動增加
預防Flood攻擊
[root@centos ~]# vim /etc/sysctl.conf [root@centos ~]# net.ipv4.tcp_syncookies = 1 [root@centos ~]# sysctl -p #讓命令生效
禁止ping
# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 開啟 # echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all 關閉
0x04 審計安全
日志就是計算機系統、設備、軟件等在某種情況下記錄的信息。具體的內容取決於日志的來源
檢查是否記錄安全事件日志
[root@wenzhiyi ~]# vim /etc/syslog.conf 或者 /etc/rsyslog.conf,在文件中加入如下內容: *.err;kern.debug;daemon.notice /var/log/messages [root@wenzhiyi ~]# chmod 640 /var/log/messages [root@wenzhiyi ~]# service rsyslog restart
建立日志服務器
日志服務器的好處在於,每個工作服務器將自己的日志信息發送給日志服務器進行集中管理,即使有人入侵了服務器並將自己的登錄信息悄悄刪除,但由於日志信息實時與日志服務器同步,保證了日志的完整性。以備工作人員根據日志服務器信息對服務器安全進行評測。
在客戶端修改配置文件/etc/rsyslog.conf

想把哪種類型的日志文件發送給服務端,你就把他原來的對應的目錄改成: @日志服務器ip
然后重啟rsyslog服務:
systemctl restart rsyslog
在服務器端打開 /etc/rsyslog.conf 配置文件,將后兩行注釋給去掉

然后重啟rsyslog服務,開啟防火牆,這樣就完成了日志服務器的搭建。
systemctl restart rsyslog firewall-cmd --add-port=514/tcp
