溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

多方面保證Linux服務(wù)器的基本系統(tǒng)安全?

發(fā)布時(shí)間:2020-08-22 10:06:56 來(lái)源:網(wǎng)絡(luò) 閱讀:449 作者:俊偉祺i 欄目:系統(tǒng)運(yùn)維

博文目錄
一、賬號(hào)安全控制
二、基本安全措施
三、用戶切換與提權(quán)
四、開關(guān)機(jī)安全控制
五、終端及登錄控制

一、賬號(hào)安全控制

用戶賬號(hào)是計(jì)算機(jī)使用者的身份憑證或標(biāo)識(shí),每個(gè)要訪問(wèn)系統(tǒng)資源的人,必須憑借其用戶賬號(hào)才能進(jìn)入計(jì)算機(jī)。在Linux操作系統(tǒng)中提供了多種機(jī)制來(lái)確保用戶賬號(hào)的正當(dāng)、安全使用。

二、基本安全措施

1、系統(tǒng)賬號(hào)

各種非登錄用戶賬號(hào)中,還有相當(dāng)一部分是很少用到的,如“games”等,這些用戶賬號(hào)可以視為冗余賬號(hào),直接刪除即可,包括一些程序賬號(hào),若卸載程序后,賬號(hào)沒(méi)能被刪除,則需要我們手動(dòng)進(jìn)行刪除。

對(duì)于Linux服務(wù)器中長(zhǎng)期不用的用戶賬號(hào),若無(wú)法確定是否應(yīng)該刪除,可以暫時(shí)將其鎖定。示例如下:

1)usermod命令鎖定賬戶:

[root@centos01 ~]# usermod -L zhangsan   <!--鎖定賬戶-->
[root@centos01 ~]# passwd -S zhangsan   <!--查看賬戶狀態(tài)-->
zhangsan LK 2019-11-22 0 99999 7 -1 (密碼已被鎖定。)
[root@centos01 ~]# usermod -U zhangsan   <!--解鎖zhangsan賬戶-->
[root@centos01 ~]# passwd -S zhangsan     <!--查看賬戶狀態(tài)-->
zhangsan PS 2019-11-22 0 99999 7 -1 (密碼已設(shè)置,使用 SHA512 算法。)

2)passwd命令鎖定賬戶:

[root@centos01 ~]# passwd -l zhangsan<!--鎖定zhangsan賬戶-->
鎖定用戶 zhangsan 的密碼 。
passwd: 操作成功
[root@centos01 ~]# passwd -S zhangsan   <!--查看賬戶狀態(tài)-->
zhangsan LK 2019-11-22 0 99999 7 -1 (密碼已被鎖定。)
[root@centos01 ~]# usermod -U zhangsan <!--解鎖zhangsan賬戶-->
[root@centos01 ~]# passwd -S zhangsan    <!--查看賬戶狀態(tài)-->
zhangsan PS 2019-11-22 0 99999 7 -1 (密碼已設(shè)置,使用 SHA512 算法。)

2、鎖定賬戶配置文件

如果服務(wù)器中的用戶賬號(hào)已經(jīng)固定,不再進(jìn)行更改,還可以采取鎖定賬號(hào)配置文件的方法。使用chattr命令,分別結(jié)合“+i” “-i”選項(xiàng)來(lá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

在賬號(hào)文件被鎖定的情況下,其內(nèi)容將不允許變更,因此無(wú)法添加、刪除賬號(hào),也不能更改用戶的密碼、登錄Shell、宿主目錄等屬性信息。

3、密碼安裝控制

為了降低密碼被第三方破解或被猜出的危險(xiǎn)性,可以設(shè)置密碼有效期來(lái)限制密碼最大有效天數(shù),對(duì)于密碼已過(guò)期的用戶,登錄時(shí)則必須重置密碼,否則將拒絕登錄。

[root@centos01 ~]# vim /etc/login.defs  <!--適用于新建的用戶-->
 ........................   <!--此處省略部分-->
PASS_MAX_DAYS   10    <!--將該配置項(xiàng)默認(rèn)的值“99999”改為所期望的值,如10天。-->
[root@centos01 ~]# chage -d 5 zhangsan  <!--設(shè)置密碼過(guò)期時(shí)間為5天-->
[root@centos01 ~]# cat /etc/shadow <!--查看密碼過(guò)期時(shí)間是否設(shè)置成功-->
zhangsan:$6$cigVri.K$wME7C78i0uvZpCSBzpYdoKcuxX.QkiLw7/3bsEZz5/IZWm9jZtT6ExSzmiwa0eFqjGQuuSza8CX7TeITQQNYJ/:5:0:99999:7:::
[root@centos01 ~]# chage -d 0 zhangsan   <!--設(shè)置zhangsan用戶下次登錄修改密碼-->
<!--重新登錄設(shè)置新密碼-->
更改用戶 zhangsan 的密碼 。
為 zhangsan 更改 STRESS 密碼。
(當(dāng)前)UNIX 密碼:   <!--輸入當(dāng)前密碼-->
新的 密碼:<!--設(shè)置新密碼(切記不能和此前的密碼相似)-->
重新輸入新的 密碼:      <!--確定新密碼-->
passwd:所有的身份驗(yàn)證令牌已經(jīng)成功更新。
[zhangsan@centos01 ~]$

4、命令歷史、自動(dòng)注銷

Shell環(huán)境的命令歷史機(jī)制為用戶提供了極大的便利,但另一方面也給用戶帶來(lái)了潛在的風(fēng)險(xiǎn)。只要獲得用戶的命令歷史文件,該用戶的命令操作過(guò)程將會(huì)一覽無(wú)余,如果曾經(jīng)在命令行輸入明文的密碼,則無(wú)意之中服務(wù)器的安全壁壘又多了一個(gè)缺口。歷史命令的記錄條數(shù)由變量HISTSIZE控制,默認(rèn)為1000條。通過(guò)修改/etc/profile文件中的HISTSIZE變量值,可以影響系統(tǒng)中的所有用戶。示例如下:

[root@centos01 ~]# export HISTSIZE=5  <!--設(shè)置記錄5條歷史命令-->
[root@centos01 ~]# history   <!--驗(yàn)證是否生效-->
    6  chage -d 0 zhangsan
    7  export HISTSIZE=10
    8  history 
    9  export HISTSIZE=5
   10  history
[root@centos01 ~]# vim .bash_logout   <!--設(shè)置重啟或者注銷清空歷史命令-->
# ~/.bash_logout
history -c
clear
[root@centos01 ~]# export TMOUT=500  <!--終端500秒無(wú)人操作自動(dòng)注銷-->

需要注意的是,當(dāng)正在執(zhí)行程序代碼編譯、修改系統(tǒng)配置等時(shí)間較長(zhǎng)的操作時(shí),應(yīng)避免設(shè)置TMOUT變量。必要時(shí)可以執(zhí)行“unset TMOUT”命令取消TMOUT變量設(shè)置。

三、用戶切換與提權(quán)

Linux系統(tǒng)為我們提供了su、sudo兩種命令。

  • su命令:主要用來(lái)切換用戶;
  • sudo命令:用來(lái)提升執(zhí)行權(quán)限;

1、su命令——切換用戶

su命令可以使用的選項(xiàng)如下:

  • -:?jiǎn)渭兪褂?,如“su -”代表使用login-shell的變量文件讀取方式來(lái)登錄系統(tǒng);若沒(méi)有指定用戶名,則代表切換為root的身份。

  • -l:與“-”類似,但后面需要加想要切換的使用者賬號(hào),也是login-shell的方式。

  • -m:表示使用目前的環(huán)境設(shè)置,而不讀取新使用者的環(huán)境變量的配置文件。

  • -c:僅進(jìn)行一次指令,所以-c后面需要加上指令,命令格式為:su - -c "head -n 3 /etc/shadow",雙引號(hào)內(nèi)的就是要執(zhí)行的命令。

使用su命令,可以切換為指定的另一個(gè)用戶,從而具有該用戶的所有權(quán)限。當(dāng)然,切換時(shí)需要對(duì)目標(biāo)用戶的密碼進(jìn)行驗(yàn)證(從root用戶切換為其他用戶時(shí)除外)。
默認(rèn)情況下,任何用戶都允許使用su命令,從而有機(jī)會(huì)反復(fù)嘗試其他用戶(如root)的登錄密碼,這樣帶來(lái)了安全風(fēng)險(xiǎn)。為了加強(qiáng)su命令的使用控制,可以借助于pam_wheel認(rèn)證模塊,只允許極個(gè)別用戶使用su命令進(jìn)行切換。實(shí)現(xiàn)過(guò)程如下:將授權(quán)使用su命令的用戶添加到wheel組,修改/etc/pam.d/su認(rèn)證配置以啟用pam_wheel認(rèn)證。啟用pam_wheel認(rèn)證以后,未加入到wheel組內(nèi)的其他用戶將無(wú)法使用su命令,嘗試進(jìn)行切換時(shí)將提示“拒絕權(quán)限”,從而將切換用戶的權(quán)限控制在最小范圍內(nèi)。

示例如下:

[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    <!--驗(yàn)證是否加入到wheel組-->
wheel:x:10:test,radmin,zhangsan
[root@centos01 ~]# vim /etc/pam.d/su    <!--配置su的pam驗(yàn)證-->
#%PAM-1.0
auth            sufficient      pam_rootok.so
auth            required        pam_wheel.so use_uidi
[lisi@centos01 ~]#$su -root        <!--嘗試切換為root-->
密碼:
su:拒絕權(quán)限                 <!--切換失敗,仍為原用戶-->

使用su命令切換用戶的操作將會(huì)記錄到安全日志/var/log/secure文件中,可以根據(jù)需要進(jìn)行查看。

2、sudo命令——提升執(zhí)行權(quán)限

通過(guò)su命令可以非常方便地切換為另一個(gè)用戶,但前提條件是必須知道目標(biāo)用戶的登錄密碼。若要從普通用戶切換為root用戶,必須知道root用戶的密碼。對(duì)于生產(chǎn)環(huán)境中的Linux服務(wù)器,每多一個(gè)人知道特權(quán)密碼,其安全風(fēng)險(xiǎn)也就增加一分。

sudo命令的控制只需在/etc/sudoers配置文件中添加授權(quán)即可,文件的默認(rèn)權(quán)限為440,需要使用專門的visudo工具進(jìn)行編輯。雖然也可以用vim進(jìn)行編輯,但保存時(shí)必須執(zhí)行“:wq!”命令來(lái)強(qiáng)制操作,否則系統(tǒng)將提示為只讀文件而拒絕保持。

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

user MACHINE=COMMANDS

授權(quán)配置主要包括用戶、主機(jī)、命令三個(gè)部分,即授權(quán)哪些人在哪些主機(jī)上執(zhí)行哪些命令,各部分的具體含義如下:

  • 用戶(user):直接授權(quán)指定的用戶名,或采用“%組名”的形式(授權(quán)一個(gè)組的所有用戶)。
  • 主機(jī)(MACHINE):使用此配置文件的主機(jī)名稱。此部分主要是方便在多個(gè)主機(jī)間共有同一份sudoers文件,一般設(shè)為localhost或者時(shí)間的主機(jī)名即可。
  • 命令(COMMANDS):允許授權(quán)的用戶通過(guò)sudo方式執(zhí)行的特權(quán)命令,需填寫命令程序的完整路徑,多個(gè)命令之間以逗號(hào)“,”進(jìn)行分隔。

典型的sudo配置記錄中,每行對(duì)應(yīng)一個(gè)用戶或組的sudo授權(quán)配置。若要授權(quán)用戶zhangsan能夠執(zhí)行ifconfig命令來(lái)修改IP地址,而wheel組的用戶無(wú)需驗(yàn)證密碼即可執(zhí)行任何命令。示例如下:

[root@centos01 ~]# vim /etc/sudoers  
root    ALL=(ALL)       ALL
zhangsan localhost=/sbin/ifconfig <!--針對(duì)用戶zhangsan設(shè)置命令的使用權(quán)限-->
%wheel  ALL=NOPASSWD:ALL<!--針對(duì)組wheel設(shè)置命令的使用權(quán)限-->
:wq!
[zhangsan@centos01 ~]$ sudo ifconfig ens32 192.168.100.20 255.255.255.0   <!--zhangsan賬戶修改IP地址-->
[sudo] zhangsan 的密碼:

當(dāng)使用相同授權(quán)的用戶較多,或者授權(quán)的命令較多時(shí),可以采用集中定義的別名。用戶、主機(jī)、命令部分都可以定義為別名(必須為大寫),分別通過(guò)關(guān)鍵字User_Alias、Host_Alias、Cmnd_Alias來(lái)進(jìn)行設(shè)置。示例如下:

[root@centos01 ~]# vim /etc/sudoers  
.........................    <!--此處為省略部分-->
User_Alias      OPERATORS=lisi,wangwu,zhaoliu    <!--定義用戶名列表-->
Host_Alias      MAILSVRS=smtp,pop            <!--定義主機(jī)列表-->
Cmnd_Alias      PKGTOOLS=/bin/rpm,/usr/bin/yum   <!--定義命令列表-->
OPERATORS       MAILSVRS=PKGTOOLS    <!--使定義的列表關(guān)聯(lián)起來(lái)-->

sudo配置記錄的命令部分可以使用通配符 “ * ” 、取反符號(hào)“ !”,當(dāng)需要授權(quán)某個(gè)目錄下的所有命令或取消其中個(gè)別命令時(shí)特別有用。。例如:授權(quán)用戶zhangsan可以執(zhí)行/sbin/目錄下除了ifconfig、route以外的其他命令,并且啟用日志記錄:

[root@centos01 ~]# vim /etc/sudoers  
 .........................
zhangsan        localhost=/sbin/*,!/sbin/ifconfig,!/sbin/route <!--通配符及取反符的應(yīng)用-->
Defaults logfile = "/var/log/sudo"    <!--啟用日志記錄-->

sudo命令使用中注意事項(xiàng):

1、第一次通過(guò)sudo命令執(zhí)行命令時(shí),必須以用戶自己的密碼進(jìn)行驗(yàn)證,此后再次執(zhí)行sudo命令,只要與前一次sudo操作的間隔時(shí)間不超過(guò)5分鐘,則不需重復(fù)驗(yàn)證。

2、若想要查看用戶自己獲得哪些sudo授權(quán),可以執(zhí)行“ sudo -l”,若是某個(gè)用戶的sudo權(quán)限列表中出現(xiàn)了(ALL) ALL字樣,則表示授權(quán)有誤,此時(shí),該用戶擁有所有命令的執(zhí)行權(quán)限。若visudo命令編輯的授權(quán)列表沒(méi)有錯(cuò)誤的話,就需要看看是否將該用戶添加到了wheel組中,并且啟用了pam_wheel認(rèn)證。

四、開關(guān)機(jī)安全控制

通常大部分服務(wù)器是通過(guò)遠(yuǎn)程登錄的方式來(lái)進(jìn)行管理的,而本地引導(dǎo)和終端登錄過(guò)程往往容易被忽視,從而留下安全隱患。特別是當(dāng)服務(wù)器所在的機(jī)房環(huán)境缺乏嚴(yán)格、安全的管控制度時(shí),如何防止其他用戶的非授權(quán)介入就成為必須重視的問(wèn)題。

1、調(diào)整BIOS引導(dǎo)設(shè)置

1)將第一優(yōu)先引導(dǎo)設(shè)備(First Boot Device)設(shè)為當(dāng)前系統(tǒng)所在磁盤。
2)禁止從其他設(shè)備(如光盤、U盤、網(wǎng)絡(luò)等)引導(dǎo)系統(tǒng),對(duì)應(yīng)的項(xiàng)為“Disabled”。
3)將BIOS的安全級(jí)別改為“setup”,并設(shè)置好管理密碼,以防止未授權(quán)的修改。

2、禁止ctrl+alt+del快捷鍵重啟

[root@centos01 ~]# systemctl mask ctrl-alt-del.target<!--設(shè)置禁用ctrl+alt+del鍵-->
[root@centos01 ~]# systemctl daemon-reload<!--重新加載服務(wù)-->

若要重新開啟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 

3、限制更改GRUB引導(dǎo)參數(shù)

當(dāng)Linux系統(tǒng)在啟動(dòng)時(shí),到了下面這個(gè)界面,按“e”就可以進(jìn)入GRUB引導(dǎo)菜單,并且通過(guò)修改配置后,無(wú)須任何密碼就可以進(jìn)入系統(tǒng)環(huán)境中,這個(gè)漏洞顯然對(duì)服務(wù)器是一個(gè)極大的漏洞,那么可以執(zhí)行以下操作,為grub菜單設(shè)置一個(gè)密碼,只有提供正確的密碼才被允許修改引導(dǎo)參數(shù):

[root@centos01 ~]# grub2-mkpasswd-pbkdf2   <!--設(shè)置生成grub引導(dǎo)菜單密碼-->
輸入口令:
Reenter password: 
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.7CC8455D40E48C538EFD1A8541FD31AA47AE61F4F39BD9F6E54994208810EA376BFBB96C3DDC0890B9F5109F83D2C7DEDBEACFD82C50790663396800FB3A3D3B.ECEF6AB02079526822C2722ADC8E4427783F30C0CDA26BC930FA067F10C5D9A583DA5861D4546F2976FCEB037A3F3BEB0164C8748F1D40791656389DC72EC31B
[root@centos01 ~]# cp /etc/grub.d/00_header  <!--備份引導(dǎo)菜單--> /etc/grub.d/00_header.bak
[root@centos01 ~]# cp /boot/grub2/grub.cfg<!--備份引導(dǎo)菜單--> /boot/grub2/grub.cfg.bak
[root@centos01 ~]# vim /etc/grub.d/00_header   <!--修改grub引導(dǎo)菜單加載密碼(末行)-->
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引導(dǎo)菜單-->
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

現(xiàn)在重啟服務(wù)器,進(jìn)入grub菜單時(shí),按E鍵將無(wú)法修改引導(dǎo)參數(shù),若要修改,還需輸入正確的grub用戶名及密碼:
多方面保證Linux服務(wù)器的基本系統(tǒng)安全?

五、終端及登錄控制

1、禁止root用戶登錄

在Linux系統(tǒng)中,login程序會(huì)讀取/etc/securetty文件,以決定允許root用戶從哪些終端(安全終端)登錄系統(tǒng)。若要禁止root用戶從指定的終端登錄,只需從該文件中刪除或者注釋掉對(duì)應(yīng)的行即可。例如,若要禁止root用戶從tty5、tty6登錄,可以修改/etc/securetty文件,將tty5、tty6行注釋掉:

[root@centos01 ~]# vim /etc/securetty  
.........................  <!--此處省略部分內(nèi)容-->
#tty5
#tty6

2、禁止普通用戶登錄

當(dāng)服務(wù)器正在進(jìn)行備份或調(diào)試等維護(hù)工作時(shí),可能不希望再有新用戶登錄系統(tǒng)的話,這時(shí)候,可以建立/etc/nologin文件即可,login程序會(huì)檢查/etc/nologin文件是否存在,如果存在,則拒絕普通用戶登錄系統(tǒng)(root用戶不受限制)。這個(gè)方法只建議在服務(wù)器維護(hù)期間臨時(shí)使用,當(dāng)手動(dòng)刪除/etc/nologin文件或者重新啟動(dòng)主機(jī)后,即可恢復(fù)正常,如下:

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

—————— 本文至此結(jié)束,感謝閱讀 ——————

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI