多方面來保證Linux服務器的基本系統安全

作爲一種開放源代碼的操作系統,Linux服務器以其安全,高效和穩定的顯著優勢而得以廣泛應用,但是,若不加以控制,也不見得安全到哪裏,這篇博文主要從賬號安全控制價、系統引導和登錄控制的角度,來進行Linux系統安全優化。並且使用輔助工具來查找安全隱患,以便我們運維人員及時採取相應的措施。

安全方面確實需要注意的比較多,這篇博文從各個方面寫了下來,比較瑣碎,還需要耐心些看,根據需要來配置服務器的安全性

一、基本安全措施:

1、 系統各種冗餘賬號,如“games”等,可直接刪除,包括一些程序賬號,若卸載程序後,賬號沒能被刪除,則需要我們手動進行刪除。

2、 當服務器中的用戶賬號已經固定,不再進行更改,可以直接鎖定賬號配置文件,鎖定以後,便不可以添加用戶及更改用戶密碼:

[root@localhost ~]# chattr +i /etc/passwd /etc/shadow             #鎖定文件
[root@localhost ~]# lsattr /etc/passwd /etc/shadow                  #查看是否鎖定
----i----------- /etc/passwd
----i----------- /etc/shadow
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow             #解鎖文件

3、密碼的有效期控制:爲了降低密碼被暴力破解或被猜出的風險,可以設置密碼有效期來限制密碼最大有效天數,對於密碼已過期的用戶,登錄時則必須重置密碼,否則將拒絕登錄。

[root@localhost ~]# vim /etc/login.defs                #適用於新建的用戶
                     ........................
PASS_MAX_DAYS   30             #將該配置項默認的值“99999”改爲所期望的值,如30天。
[root@localhost ~]# chage -M 30 lv             #適用於已經存在的用戶
[root@localhost ~]# chage -d 0 zhangsan               #張三下次登錄必須修改密碼

4、命令歷史、自動註銷:

#適用於新登錄用戶
[root@localhost ~]# vim /etc/profile                
                         ................
HISTSIZE=200                 #命令歷史記錄爲200條
export TMOUT=600                        #自動註銷時間爲600秒  

 #適用於當前用戶
[root@localhost ~]# export HISTSIZE=200       #命令歷史記錄爲200條
[root@localhost ~]# export TMOUT=600           #自動註銷時間爲600秒        

需要注意的是,當正在執行程序代碼編譯、修改系統配置等耗時較長的操作時,最好不要設置TMOUT變量。必要時可以執行“unset TMOUT”命令取消TMOUT變量設置。

二、用戶切換與提權該怎麼控制:

1、su命令——切換用戶

默認情況下,任何用戶都允許使用su命令,從而有機會反覆嘗試其他用戶(如root)的登錄密碼,這樣就有了安全隱患,爲了避免這種情況,可以藉助於pam_wheel認證模塊,只允許極個別用戶使用su命令進行切換。實現過程如下:將授權使用su命令的用戶添加到wheel組,修改/etc/pam.d/su認證配置以啓用pam_wheel認證:

[root@localhost ~]# gpasswd -a admin wheel                  #添加授權用戶admin
正在將用戶“admin”加入到“wheel”組中
[root@localhost ~]# grep wheel /etc/group             #確認wheel組成員
wheel:x:10:lv,admin
[root@localhost ~]# vim /etc/pam.d/su

#%PAM-1.0
auth            sufficient      pam_rootok.so
                        ...................
auth            required        pam_wheel.so use_uid          #去掉此行開頭的 # 號

至此,就只有wheel組中的用戶可以使用su命令了,使用su命令切換用戶的操作將會記錄到安全日誌/var/log/secure文件中,可以根據需要進行查看。

2、sudo命令——提升執行權限

使用su命令可以方便的切換爲另一個用戶,但前提條件是必須知道目標用戶的登錄密碼。若想要切換到root用戶,那麼必須知道root用戶的密碼,對於生產環境中的Linux服務器來說,每多一個人知道root密碼,其安全風險也就增加一分。所以sudo命令就由此而生了。

sudo命令的控制只需在/etc/sudoers配置文件中添加授權即可,需使用專門的visudo工具進行編輯,用vi也可以,但是保存時必須執行“ w!”命令來進行強制保存,否則系統將提示文件爲只讀文件而拒絕保存。

配置文件/etc/sudoers中,授權記錄的基本配置格式如下所示:

user MACHINE=COMMANDS

上述三個部分的具體含義如下:

  • user:直接授權指定的用戶名,或採用“%組名”的形式(授權一個組中的所有用戶)。
  • MACHINE:使用此配置文件的主機名稱,這個部分主要是方便在多個主機間共用同一份sudoers文件,一般設置爲localhost或實際的主機名即可。
  • COMMANDS:允許授權的用戶通過sudo方式執行的特權命令,需填寫命令的絕對路徑,多個命令之間以逗號“ ,”進行分隔。

若現在的需求是jerry用戶能夠執行ifconfig命令,而wheel組的用戶不需驗證密碼即可執行任何命令,可以進行以下修改:

[root@localhost ~]# visudo
                      .........................
jerry   localhost=/sbin/ifconfig
%wheel  ALL=NOPASSWD:ALL

當使用相同授權的用戶較多,或者授權的命令較多時,可以採用集中定義的別名。如:允許用戶user1、user2、user3在主機smtp、pop中執行rpm、yum命令:

[root@localhost ~]# visudo
                      .........................
User_Alias      OPERATORS=user1,user2,user3                 #定義用戶名列表
Host_Alias      MAILSVRS=smtp,pop                            #定義主機列表
Cmnd_Alias      PKGTOOLS=/bin/rpm,/usr/bin/yum               #定義命令列表
OPERATORS       MAILSVRS=PKGTOOLS                              #使定義的列表關聯起來

sudo配置記錄的命令部分可以使用通配符 “ * ” 、取反符號“ !”,也可以啓用sudo日誌記錄以備運維人員查看,當需要授權某個目錄下所有命令或取消其中個別命令時特別有用。例如:授權用戶zhangsan可以執行/sbin/目錄下除了ifconfig、route以外的其他命令,並且啓用日誌記錄:

[root@localhost ~]# visudo
                      .........................
zhangsan        localhost=/sbin/*,!/sbin/ifconfig,!/sbin/route             #通配符及取反符的應用。
Defaults logfile = "/var/log/sudo"                     #啓用日誌記錄

sudo命令使用中注意事項:

1、第一次通過sudo命令執行命令時,必須以用戶自己的密碼進行驗證,此後再次執行sudo命令,只要與前一次sudo操作的間隔時間不超過5分鐘,則不需重複驗證。
2、若想要查看用戶自己獲得哪些sudo授權,可以執行“ sudo -l”,若是某個用戶的sudo權限列表中出現了(ALL) ALL字樣,則表示授權有誤,此時,該用戶擁有所有命令的執行權限。若visudo命令編輯的授權列表沒有錯誤的話,就需要看看是否將該用戶添加到了wheel組中,並且啓用了pam_wheel認證。

三、終端及登錄控制:

1、禁止root用戶登錄:

login程序是通過讀取 /etc/securetty文件,以決定允許root用戶從哪些終端登錄的,若要禁止root用戶從tty5、tty6登錄,只需將文件中對應的行註釋掉即可

[root@localhost ~]# vim /etc/securetty
                               .........................
#tty5
#tty6

2、禁止普通用戶登錄:

當正在調試服務器,不希望再有新用戶登錄系統的話,可以建立/etc/nologin文件即可,login程序會檢查/etc/nologin文件是否存在,如果存在,則拒絕普通用戶登錄系統(root用戶不受限制)。這個方法只建議在服務器維護期間臨時使用,當手動刪除/etc/nologin文件或者重新啓動主機後,即可恢復正常,如下:

[root@localhost ~]# touch /etc/nologin

四、開關機安全控制

1、調整bios引導設置,給BIOS設置密碼,並啓用;
2、禁止Ctrl+Alt+Del快捷鍵重啓主機:

[root@localhost ~]# systemctl mask ctrl-alt-del.target                   #註銷ctrl-alt-del服務
Created symlink from /etc/systemd/system/ctrl-alt-del.target to /dev/null.
[root@localhost ~]# systemctl daemon-reload                #重載systemd配置

若要重新開啓ctrl-alt-del快捷鍵功能,只需執行以下即可:

[root@localhost ~]# systemctl unmask ctrl-alt-del.target 
Removed symlink /etc/systemd/system/ctrl-alt-del.target.
[root@localhost ~]# systemctl daemon-reload 

3、限制更改GRUB引導參數:

當Linux系統在啓動時,到了下面這個界面,按“e”就可以進入GRUB引導菜單,並且通過修改配置後,無須任何密碼就可以進入系統環境中,這個漏洞顯然對服務器是一個極大的威脅,那麼可以執行以下操作,爲grub菜單設置一個密碼,只有提供正確的密碼才被允許修改引導參數:

[root@localhost ~]# grub2-mkpasswd-pbkdf2                         #根據提示指定密碼
輸入口令:                      #設置密碼爲“111111”
Reenter password: 
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.F7169053E0A4C582D0D65D3181CBDF7306E56AAB4D5F6910A576FA42CAD66DE8A28019CC403E8A0A75C56B517325A10D63DF85BD018FEF345359677B403F9FE4.C1E18CA9FFB54BF3AAE7EC0A03B41DD384A5ECB38A42F651C9467442EB41F7319BF4B3C600EC8CC7562C3AF188DB77BDA5FDE4E978E72BD715A77F965CC9EFBD                       #經過加密的密碼字符串
#爲了防止更改grub菜單錯誤,所以先將相關文件進行備份
[root@localhost ~]# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
[root@localhost ~]# cp /etc/grub.d/00_header /etc/grub.d/00_header.bak
[root@localhost ~]# vim /etc/grub.d/00_header
#將以下內容添加到文件中的最後
cat << EOF
set superusers="change"
password_pbkdf2 change grub.pbkdf2.sha512.10000.F7169053E0A4C582D0D65D3181CBDF7306E56AAB4D5F6910A576FA42CAD66DE8A28019CC403E8A0A75C56B517325A10D63DF85BD018FEF345359677B403F9FE4.C1E18CA9FFB54BF3AAE7EC0A03B41DD384A5ECB38A42F651C9467442EB41F7319BF4B3C600EC8CC7562C3AF188DB77BDA5FDE4E978E72BD715A77F965CC9EFBD
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg             #生成新的grub.cfg文件
Generating grub configuration file ...
/etc/grub.d/00_header: line 361: warning: here-document at line 359 delimited by end-of-file (wanted `EOF')
Found linux image: /boot/vmlinuz-3.10.0-514.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-514.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-095dca7b09764ecf91e366075c160144
Found initrd image: /boot/initramfs-0-rescue-095dca7b09764ecf91e366075c160144.img
done

現在重啓服務器,進入grub菜單時,按e將無法修改引導參數,若要修改,還需輸入正確的grub用戶名及密碼(根據上面的操作,這裏需要輸入的用戶名爲“change”,密碼爲“111111”):

多方面來保證Linux服務器的基本系統安全

雜七雜八的寫了這麼多,還有兩個輔助工具沒寫,好了,這篇博文就此打住吧,兩個輔助工具是弱口令掃描和端口掃描,還是寫到另一篇博文裏吧!可以點擊下面的鏈接進行查看:
https://blog.51cto.com/14154700/2408106

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