博文目錄
1、帳號安全控制
2、基本安全措施
3、用戶切換與提權
4、開關機安全控制
5、終端及登陸控制linux
用戶帳號是計算機使用者的身份憑證或標識,每一個要訪問系統資源的人,必須憑藉其用戶帳號才能進入計算機。在Linux操做系統中提供了多種機制來確保用戶帳號的正當、安全使用。算法
各類非登陸用戶帳號中,還有至關一部分是不多用到的,如「games」等,這些用戶帳號能夠視爲冗餘帳號,直接刪除便可,包括一些程序帳號,若卸載程序後,帳號沒能被刪除,則須要咱們手動進行刪除。shell
對於Linux服務器中長期不用的用戶帳號,若沒法肯定是否應該刪除,能夠暫時將其鎖定。示例以下:vim
[root@centos01 ~]# usermod -L zhangsan <!--鎖定帳戶--> [root@centos01 ~]# passwd -S zhangsan <!--查看帳戶狀態--> zhangsan LK 2019-11-22 0 99999 7 -1 (密碼已被鎖定。) [root@centos01 ~]# usermod -U zhangsan <!--解鎖zhangsan帳戶--> [root@centos01 ~]# passwd -S zhangsan <!--查看帳戶狀態--> zhangsan PS 2019-11-22 0 99999 7 -1 (密碼已設置,使用 SHA512 算法。)
[root@centos01 ~]# passwd -l zhangsan<!--鎖定zhangsan帳戶--> 鎖定用戶 zhangsan 的密碼 。 passwd: 操做成功 [root@centos01 ~]# passwd -S zhangsan <!--查看帳戶狀態--> zhangsan LK 2019-11-22 0 99999 7 -1 (密碼已被鎖定。) [root@centos01 ~]# usermod -U zhangsan <!--解鎖zhangsan帳戶--> [root@centos01 ~]# passwd -S zhangsan <!--查看帳戶狀態--> zhangsan PS 2019-11-22 0 99999 7 -1 (密碼已設置,使用 SHA512 算法。)
若是服務器中的用戶帳號已經固定,再也不進行更改,還能夠採起鎖定帳號配置文件的方法。使用chattr命令,分別結合「+i」 「-i」選項來鎖定、解鎖文件,使用lsattr命令能夠查看文件鎖定狀況。示例以下:centos
[root@centos01 ~]# chattr +i /etc/passwd /etc/shadow <!--禁用帳戶密碼配置文件--> [root@centos01 ~]# lsattr /etc/passwd /etc/shadow <!--查看鎖定的帳戶密碼配置文件--> ----i----------- /etc/passwd ----i----------- /etc/shadow [root@centos01 ~]# chattr -i /etc/passwd /etc/shadow <!--解鎖帳戶密碼配置文件--> [root@centos01 ~]# lsattr /etc/passwd /etc/shadow<!--查看鎖定的帳戶密碼配置文件--> ---------------- /etc/passwd ---------------- /etc/shadow
在帳號文件被鎖定的狀況下,其內容將不容許變動,所以沒法添加、刪除帳號,也不能更改用戶的密碼、登陸Shell、宿主目錄等屬性信息。安全
爲了下降密碼被第三方破解或被猜出的危險性,能夠設置密碼有效期來限制密碼最大有效天數,對於密碼已過時的用戶,登陸時則必須重置密碼,不然將拒絕登陸。bash
[root@centos01 ~]# vim /etc/login.defs <!--適用於新建的用戶--> ........................ <!--此處省略部分--> PASS_MAX_DAYS 10 <!--將該配置項默認的值「99999」改成所指望的值,如10天。--> [root@centos01 ~]# chage -d 5 zhangsan <!--設置密碼過時時間爲5天--> [root@centos01 ~]# cat /etc/shadow <!--查看密碼過時時間是否設置成功--> zhangsan:$6$cigVri.K$wME7C78i0uvZpCSBzpYdoKcuxX.QkiLw7/3bsEZz5/IZWm9jZtT6ExSzmiwa0eFqjGQuuSza8CX7TeITQQNYJ/:5:0:99999:7::: [root@centos01 ~]# chage -d 0 zhangsan <!--設置zhangsan用戶下次登陸修改密碼--> <!--從新登陸設置新密碼--> 更改用戶 zhangsan 的密碼 。 爲 zhangsan 更改 STRESS 密碼。 (當前)UNIX 密碼: <!--輸入當前密碼--> 新的 密碼:<!--設置新密碼(切記不能和此前的密碼類似)--> 從新輸入新的 密碼: <!--肯定新密碼--> passwd:全部的身份驗證令牌已經成功更新。 [zhangsan@centos01 ~]$
Shell環境的命令歷史機制爲用戶提供了極大的便利,但另外一方面也給用戶帶來了潛在的風險。只要得到用戶的命令歷史文件,該用戶的命令操做過程將會盡收眼底,若是曾經在命令行輸入明文的密碼,則無心之中服務器的安全壁壘又多了一個缺口。歷史命令的記錄條數由變量HISTSIZE控制,默認爲1000條。經過修改/etc/profile文件中的HISTSIZE變量值,能夠影響系統中的全部用戶。示例以下:服務器
[root@centos01 ~]# export HISTSIZE=5 <!--設置記錄5條歷史命令--> [root@centos01 ~]# history <!--驗證是否生效--> 6 chage -d 0 zhangsan 7 export HISTSIZE=10 8 history 9 export HISTSIZE=5 10 history [root@centos01 ~]# vim .bash_logout <!--設置重啓或者註銷清空歷史命令--> # ~/.bash_logout history -c clear [root@centos01 ~]# export TMOUT=500 <!--終端500秒無人操做自動註銷-->
須要注意的是,當正在執行程序代碼編譯、修改系統配置等時間較長的操做時,應避免設置TMOUT變量。必要時能夠執行「unset TMOUT」命令取消TMOUT變量設置。網絡
Linux系統爲咱們提供了su、sudo兩種命令。ide
- su命令:主要用來切換用戶;
- sudo命令:用來提高執行權限;
su命令可使用的選項以下:
-:單純使用-,如「su -」表明使用login-shell的變量文件讀取方式來登陸系統;若沒有指定用戶名,則表明切換爲root的身份。
-l:與「-」相似,但後面須要加想要切換的使用者帳號,也是login-shell的方式。
-m:表示使用目前的環境設置,而不讀取新使用者的環境變量的配置文件。
- -c:僅進行一次指令,因此-c後面須要加上指令,命令格式爲:su - -c "head -n 3 /etc/shadow",雙引號內的就是要執行的命令。
使用su命令,能夠切換爲指定的另外一個用戶,從而具備該用戶的全部權限。固然,切換時須要對目標用戶的密碼進行驗證(從root用戶切換爲其餘用戶時除外)。
默認狀況下,任何用戶都容許使用su命令,從而有機會反覆嘗試其餘用戶(如root)的登陸密碼,這樣帶來了安全風險。爲了增強su命令的使用控制,能夠藉助於pam_wheel認證模塊,只容許極個別用戶使用su命令進行切換。實現過程以下:將受權使用su命令的用戶添加到wheel組,修改/etc/pam.d/su認證配置以啓用pam_wheel認證。啓用pam_wheel認證之後,未加入到wheel組內的其餘用戶將沒法使用su命令,嘗試進行切換時將提示「拒絕權限」,從而將切換用戶的權限控制在最小範圍內。
示例以下:
[zhangsan@centos01 ~]$ su <!--普通用戶切換到管理員--> 密碼: [root@centos01 zhangsan]# cd [root@centos01 ~]# [zhangsan@centos01 ~]$ su --login<!--普通用戶切換到root用戶--> 密碼: 上一次登陸:六 11月 23 07:53:15 CST 2019pts/2 上 [root@centos01 ~]# [root@centos01 ~]# su zhangsan <!--管理員切換到普通用戶--> [zhangsan@centos01 root]$ cd [zhangsan@centos01 ~]$ [root@centos01 ~]# gpasswd -a zhangsan wheel <!--將zhangsan用戶加入到wheel組--> 正在將用戶「zhangsan」加入到「wheel」組中 [root@centos01 ~]# grep wheel /etc/group <!--驗證是否加入到wheel組--> wheel:x:10:test,radmin,zhangsan [root@centos01 ~]# vim /etc/pam.d/su <!--配置su的pam驗證--> #%PAM-1.0 auth sufficient pam_rootok.so auth required pam_wheel.so use_uidi [lisi@centos01 ~]#$su -root <!--嘗試切換爲root--> 密碼: su:拒絕權限 <!--切換失敗,仍爲原用戶-->
使用su命令切換用戶的操做將會記錄到安全日誌/var/log/secure文件中,能夠根據須要進行查看。
經過su命令能夠很是方便地切換爲另外一個用戶,但前提條件是必須知道目標用戶的登陸密碼。若要從普通用戶切換爲root用戶,必須知道root用戶的密碼。對於生產環境中的Linux服務器,每多一我的知道特權密碼,其安全風險也就增長一分。
sudo命令的控制只需在/etc/sudoers配置文件中添加受權便可,文件的默認權限爲440,須要使用專門的visudo工具進行編輯。雖然也能夠用vim進行編輯,但保存時必須執行「:wq!」命令來強制操做,不然系統將提示爲只讀文件而拒絕保持。
配置文件/etc/sudoers中,受權記錄的基本配置格式以下所示:
user MACHINE=COMMANDS
受權配置主要包括用戶、主機、命令三個部分,即受權哪些人在哪些主機上執行哪些命令,各部分的具體含義以下:
- 用戶(user):直接受權指定的用戶名,或採用「%組名」的形式(受權一個組的全部用戶)。
- 主機(MACHINE):使用此配置文件的主機名稱。此部分主要是方便在多個主機間共有同一份sudoers文件,通常設爲localhost或者時間的主機名便可。
- 命令(COMMANDS):容許受權的用戶經過sudo方式執行的特權命令,需填寫命令程序的完整路徑,多個命令之間以逗號「,」進行分隔。
典型的sudo配置記錄中,每行對應一個用戶或組的sudo受權配置。若要受權用戶zhangsan可以執行ifconfig命令來修改IP地址,而wheel組的用戶無需驗證密碼便可執行任何命令。示例以下:
[root@centos01 ~]# vim /etc/sudoers root ALL=(ALL) ALL zhangsan localhost=/sbin/ifconfig <!--針對用戶zhangsan設置命令的使用權限--> %wheel ALL=NOPASSWD:ALL<!--針對組wheel設置命令的使用權限--> :wq! [zhangsan@centos01 ~]$ sudo ifconfig ens32 192.168.100.20 255.255.255.0 <!--zhangsan帳戶修改IP地址--> [sudo] zhangsan 的密碼:
當使用相同受權的用戶較多,或者受權的命令較多時,能夠採用集中定義的別名。用戶、主機、命令部分均可以定義爲別名(必須爲大寫),分別經過關鍵字User_Alias、Host_Alias、Cmnd_Alias來進行設置。示例以下:
[root@centos01 ~]# vim /etc/sudoers ......................... <!--此處爲省略部分--> User_Alias OPERATORS=lisi,wangwu,zhaoliu <!--定義用戶名列表--> Host_Alias MAILSVRS=smtp,pop <!--定義主機列表--> Cmnd_Alias PKGTOOLS=/bin/rpm,/usr/bin/yum <!--定義命令列表--> OPERATORS MAILSVRS=PKGTOOLS <!--使定義的列表關聯起來-->
sudo配置記錄的命令部分可使用通配符 「 * 」 、取反符號「 !」,當須要受權某個目錄下的全部命令或取消其中個別命令時特別有用。。例如:受權用戶zhangsan能夠執行/sbin/目錄下除了ifconfig、route之外的其餘命令,而且啓用日誌記錄:
[root@centos01 ~]# vim /etc/sudoers ......................... zhangsan localhost=/sbin/*,!/sbin/ifconfig,!/sbin/route <!--通配符及取反符的應用--> Defaults logfile = "/var/log/sudo" <!--啓用日誌記錄-->
sudo命令使用中注意事項:
一、第一次經過sudo命令執行命令時,必須以用戶本身的密碼進行驗證,此後再次執行sudo命令,只要與前一次sudo操做的間隔時間不超過5分鐘,則不需重複驗證。
二、若想要查看用戶本身得到哪些sudo受權,能夠執行「 sudo -l」,如果某個用戶的sudo權限列表中出現了(ALL) ALL字樣,則表示受權有誤,此時,該用戶擁有全部命令的執行權限。若visudo命令編輯的受權列表沒有錯誤的話,就須要看看是否將該用戶添加到了wheel組中,而且啓用了pam_wheel認證。
一般大部分服務器是經過遠程登陸的方式來進行管理的,而本地引導和終端登陸過程每每容易被忽視,從而留下安全隱患。特別是當服務器所在的機房環境缺少嚴格、安全的管控制度時,如何防止其餘用戶的非受權介入就成爲必須重視的問題。
1)將第一優先引導設備(First Boot Device)設爲當前系統所在磁盤。
2)禁止從其餘設備(如光盤、U盤、網絡等)引導系統,對應的項爲「Disabled」。
3)將BIOS的安全級別改成「setup」,並設置好管理密碼,以防止未受權的修改。
[root@centos01 ~]# systemctl mask ctrl-alt-del.target<!--設置禁用ctrl+alt+del鍵--> [root@centos01 ~]# systemctl daemon-reload<!--從新加載服務-->
若要從新開啓ctrl-alt-del快捷鍵功能,示例以下:
[root@centos01 ~]# systemctl unmask ctrl-alt-del.target Removed symlink /etc/systemd/system/ctrl-alt-del.target. [root@centos01 ~]# systemctl daemon-reload
當Linux系統在啓動時,到了下面這個界面,按「e」就能夠進入GRUB引導菜單,而且經過修改配置後,無須任何密碼就能夠進入系統環境中,這個漏洞顯然對服務器是一個極大的漏洞,那麼能夠執行如下操做,爲grub菜單設置一個密碼,只有提供正確的密碼才被容許修改引導參數:
[root@centos01 ~]# grub2-mkpasswd-pbkdf2 <!--設置生成grub引導菜單密碼--> 輸入口令: Reenter password: PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.7CC8455D40E48C538EFD1A8541FD31AA47AE61F4F39BD9F6E54994208810EA376BFBB96C3DDC0890B9F5109F83D2C7DEDBEACFD82C50790663396800FB3A3D3B.ECEF6AB02079526822C2722ADC8E4427783F30C0CDA26BC930FA067F10C5D9A583DA5861D4546F2976FCEB037A3F3BEB0164C8748F1D40791656389DC72EC31B [root@centos01 ~]# cp /etc/grub.d/00_header <!--備份引導菜單--> /etc/grub.d/00_header.bak [root@centos01 ~]# cp /boot/grub2/grub.cfg<!--備份引導菜單--> /boot/grub2/grub.cfg.bak [root@centos01 ~]# vim /etc/grub.d/00_header <!--修改grub引導菜單加載密碼(末行)--> cat <<EOF set superusers="root" password_pbkdf2 root grub.pbkdf2.sha512.10000.7CC8455D40E48C538EFD1A8541FD31AA47AE61F4F39BD9F6E54994208810EA376BFBB96C3DDC0890B9F5109F83D2C7DEDBEACFD82C50790663396800FB3A3D3B.ECEF6AB02079526822C2722ADC8E4427783F30C0CDA26BC930FA067F10C5D9A583DA5861D4546F2976FCEB037A3F3BEB0164C8748F1D40791656389DC72EC31B EOF [root@centos01 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg <!--生成grub引導菜單--> Generating grub configuration file ... /etc/grub.d/00_header.bak: line 360: warning: here-document at line 359 delimited by end-of-file (wanted `EOF') Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-2b580d1a2e8348b8aa9f78be11137b41 Found initrd image: /boot/initramfs-0-rescue-2b580d1a2e8348b8aa9f78be11137b41.img done
如今重啓服務器,進入grub菜單時,按E鍵將沒法修改引導參數,若要修改,還需輸入正確的grub用戶名及密碼:
在Linux系統中,login程序會讀取/etc/securetty文件,以決定容許root用戶從哪些終端(安全終端)登陸系統。若要禁止root用戶從指定的終端登陸,只需從該文件中刪除或者註釋掉對應的行便可。例如,若要禁止root用戶從tty五、tty6登陸,能夠修改/etc/securetty文件,將tty五、tty6行註釋掉:
[root@centos01 ~]# vim /etc/securetty ......................... <!--此處省略部份內容--> #tty5 #tty6
當服務器正在進行備份或調試等維護工做時,可能不但願再有新用戶登陸系統的話,這時候,能夠創建/etc/nologin文件便可,login程序會檢查/etc/nologin文件是否存在,若是存在,則拒絕普通用戶登陸系統(root用戶不受限制)。這個方法只建議在服務器維護期間臨時使用,當手動刪除/etc/nologin文件或者從新啓動主機後,便可恢復正常,以下:
[root@centos01 ~]# touch /etc/nologin
—————— 本文至此結束,感謝閱讀 ——————