您好,登錄后才能下訂單哦!
博文目錄
一、賬號安全控制
二、基本安全措施
三、用戶切換與提權
四、開關機安全控制
五、終端及登錄控制
用戶賬號是計算機使用者的身份憑證或標識,每個要訪問系統資源的人,必須憑借其用戶賬號才能進入計算機。在Linux操作系統中提供了多種機制來確保用戶賬號的正當、安全使用。
各種非登錄用戶賬號中,還有相當一部分是很少用到的,如“games”等,這些用戶賬號可以視為冗余賬號,直接刪除即可,包括一些程序賬號,若卸載程序后,賬號沒能被刪除,則需要我們手動進行刪除。
對于Linux服務器中長期不用的用戶賬號,若無法確定是否應該刪除,可以暫時將其鎖定。示例如下:
[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命令可以查看文件鎖定情況。示例如下:
[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、宿主目錄等屬性信息。
為了降低密碼被第三方破解或被猜出的危險性,可以設置密碼有效期來限制密碼最大有效天數,對于密碼已過期的用戶,登錄時則必須重置密碼,否則將拒絕登錄。
[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兩種命令。
- 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命令使用中注意事項:
1、第一次通過sudo命令執行命令時,必須以用戶自己的密碼進行驗證,此后再次執行sudo命令,只要與前一次sudo操作的間隔時間不超過5分鐘,則不需重復驗證。
2、若想要查看用戶自己獲得哪些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用戶從tty5、tty6登錄,可以修改/etc/securetty文件,將tty5、tty6行注釋掉:
[root@centos01 ~]# vim /etc/securetty
......................... <!--此處省略部分內容-->
#tty5
#tty6
當服務器正在進行備份或調試等維護工作時,可能不希望再有新用戶登錄系統的話,這時候,可以建立/etc/nologin文件即可,login程序會檢查/etc/nologin文件是否存在,如果存在,則拒絕普通用戶登錄系統(root用戶不受限制)。這個方法只建議在服務器維護期間臨時使用,當手動刪除/etc/nologin文件或者重新啟動主機后,即可恢復正常,如下:
[root@centos01 ~]# touch /etc/nologin
—————— 本文至此結束,感謝閱讀 ——————
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。