linux系統安全加固--賬號相關


linux系統安全加固

一、賬號相關

1、禁用或刪除無用賬號

減少系統無用賬號,降低安全風險。

當我們的系統安裝完畢后,系統默認自帶了一些虛擬賬戶,比如bin、adm、lp、games、postfix等,這些賬號理論上是可以刪除的。但是因為它們的登錄shell都是/sbin/nologin,所以它們本身也是無法登錄的,不用刪也可以。我們要注意的是系統安裝完成后,自己手動創建的一些賬戶,比如這些登錄shell是/bin/bash,一定要控制好。

1.1、使用cat /etc/passwd 命令查看所有賬號

如下圖所示:

注:/etc/passwd是存放用戶的地方,簡單學習一下。各個字段描述如下:

用戶名: 密碼 : uid : gid :用戶描述:主目錄:登陸shell

image

把系統一些自帶的賬號注釋掉:

注意:不建議直接刪除,當你需要某個用戶時,自己重新添加會很麻煩。

刪除用戶主要包括:adm,lp,sync,shutdown,halt,news,uucp,operator,games,ftp,postfix,dovecot

[root@localhost ~]# cp /etc/passwd /etc/passwdbak
[root@localhost ~]# vim /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
#adm:x:3:4:adm:/var/adm:/sbin/nologin
#lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#sync:x:5:0:sync:/sbin:/bin/sync
#shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
#halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
#operator:x:11:0:operator:/root:/sbin/nologin
#games:x:12:100:games:/usr/games:/sbin/nologin
#ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:998:996:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
#postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
lulu:x:1000:1000::/home/lulu:/bin/bash
#dovecot:x:97:97:Dovecot IMAP server:/usr/libexec/dovecot:/sbin/nologin
#dovenull:x:997:995:Dovecot's unauthorized user:/usr/libexec/dovecot:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
dockerroot:x:996:993:Docker User:/var/lib/docker:/sbin/nologin
dd:x:1001:1001::/home/dd:/bin/bash
doubles:x:1002:1002::/home/doubles:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
d1:x:1003:1004::/home/d1:/bin/bash
d3:x:1004:1007::/home/d3:/bin/bash
[root@localhost ~]# id adm
id: adm: no such user
[root@localhost ~]# id lp
id: lp: no such user
[root@localhost ~]# 

注釋用戶組

刪除的用戶組包括:adm,lp,mail,games,ftp,audio

[root@localhost ~]# cp /etc/group /etc/groupbak
[root@localhost ~]# vim /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
#adm:x:4:
tty:x:5:
disk:x:6:
#lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:doubles
cdrom:x:11:
mail:x:12:postfix
man:x:15:
dialout:x:18:
floppy:x:19:
#games:x:20:
tape:x:30:
video:x:39:
#ftp:x:50:
lock:x:54:
#audio:x:63:
.....

1.2、userdel -r刪除不必要的賬號

如果是一些自己添加的賬戶,不用的話,建議直接刪除。

加上參數-r,將賬號相應的home目錄與mail目錄都一起刪掉。

[root@localhost ~]# userdel -r d2
userdel: d2 mail spool (/var/spool/mail/d2) not found
userdel: d2 home directory (/home/d2) not found
[root@localhost ~]# 

1.3、passwd -l禁用賬戶

使用passwd -l禁用賬戶dd,禁用后,root用戶仍然可以su,但是其他用戶無法su到dd,也無法通過xshell去ssh到dd了。

[root@localhost ~]# passwd -l dd
Locking password for user dd.
passwd: Success
[root@localhost ~]# su dd
[dd@localhost root]$ exit
exit
[root@localhost ~]# su - doubles
Last login: Sat Sep 8 20:24:52 HKT 2018 on pts/2
[doubles@localhost ~]$ su dd
Password: 
su: Authentication failure
[doubles@localhost ~]$ 

1.4、passwd -u解鎖賬戶

使用passwd -u解鎖后,賬戶可以正常登陸。

[doubles@localhost ~]$ exit
logout
[root@localhost ~]# passwd -u dd
Unlocking password for user dd.
passwd: Success
[root@localhost ~]# su doubles
[doubles@localhost root]$ su dd
Password: 
[dd@localhost root]$ 

2、檢查特殊賬號

檢查是否存在空口令和root權限的賬號。

2.1、檢測空口令賬戶

[root@localhost ~]# awk -F: '$2=="!!" {print $1}' /etc/shadow
systemd-bus-proxy
systemd-network
dbus
polkitd
tss
postfix
sshd
lulu
dovecot
dovenull
mysql
dockerroot
apache
d3

再去/etc/passwd查看哪些賬戶是可登錄的,如下:

image

2.2、加固空口令賬號

對無口令並且可登錄的賬戶,進行密碼設置:(注意密碼不能包含用戶名,也不能少於7位)

[root@localhost ~]# passwd lulu
Changing password for user lulu.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@localhost ~]# passwd d3
Changing password for user d3.
New password: 
BAD PASSWORD: The password is shorter than 7 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@localhost ~]# 
[root@localhost ~]# passwd d3
Changing password for user d3.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

2.3、檢測root權限賬號

使用命令 awk -F: '($3==0)' /etc/passwd 查看UID為零的賬號。

[root@localhost ~]# awk -F: '($3==0)' /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# 

確保uid為0的賬號只能是root賬號。

3、添加口令策略

3.1、密碼復雜度設置

加強口令的復雜度等,降低被猜解的可能性。

a、用戶密碼不能包含用戶名

b、用戶密碼不能少於10位

c、用戶密碼需要是特殊字符、數字、字母的組合

Linux對應的密碼策略模塊有:pam_passwdqc 和 pam_pwquality 。

pam_passwdqc模塊對應的是/etc/login.defs

pam_pwquality模塊對應的是/etc/security/pwquality.conf

(舊版是pam_cracklib.so)

3.1.1、修改/etc/login.defs

[root@localhost ~]# vim /etc/login.defs

PASS_MIN_LEN 10 #密碼最小長度,使用pam_cracklib module,該參數不再有效

3.1.2、修改/etc/pam.d/system-auth

修改前,我們先備份一下:

[root@localhost ~]# cp /etc/pam.d/system-auth /etc/pam.d/system-auth-backup
3.1.2.1禁止使用舊密碼

找到同時有 “password” 和 “pam_unix.so” 字段並且附加有 “remember=5” 的那行,它表示禁止使用最近用過的5個密碼(己使用過的密碼會被保存在 /etc/security/opasswd 下面)。

配置如下:

password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
3.1.2.2、設置密碼最小長度

找到同時有 “password” 和 “pam_cracklib.so” 字段並且附加有 “minlen=10” 的那行,它表示最小密碼長度為(10 - 類型數量)。這里的 “類型數量” 表示不同的字符類型數量。PAM 提供4種類型符號作為密碼(大寫字母、小寫字母、數字和標點符號)。如果你的密碼同時用上了這4種類型的符號,並且你的 minlen 設為10,那么最短的密碼長度允許是6個字符。

配置如下:

password requisite pam_cracklib.so retry=3 difok=3 minlen=10
3.1.2.3、其他復雜度設置

pam_cracklib.so比較重要和難於理解的是它的一些參數和計數方法,其常用參數包括:   

debug:將調試信息寫入日志;

type=xxx:當添加/修改密碼時,系統給出的缺省提示符是“New UNIX password:”以及“Retype UNIX

password:”,而使用該參數可以自定義輸入密碼的提示符,比如指定type=your own word;

retry=N:定義登錄/修改密碼失敗時,可以重試的次數;

difok=N:定義新密碼中必須有幾個字符要與舊密碼不同。但是如果新密碼中有1/2以上的字符與舊密碼不同時,該新密碼將被接受;

minlen=N:定義用戶密碼的最小長度;

dcredit=N:定義用戶密碼中必須包含多少個數字;

ucredit=N:定義用戶密碼中必須包含多少個大寫字母;

lcredit=N:定義用戶密碼中必須包含多少個小些字母;

ocredit=N:定義用戶密碼中必須包含多少個特殊字符(除數字、字母之外);

我的配置如下:

image

主要是兩行:

[root@localhost ~]# vim /etc/pam.d/system-auth
password requisite pam_pwquality.so try_first_pass local_users_only retry=3 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 difok=1 minlen=8 authtok_type="doubles type"
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5

(注)

a、*credit=-1表示至少有一個的意思。

b、舊版的系統用的pam_cracklib.so,只要把上面的pam_pwquality.so替換成pam_cracklib.so就可以了。

c、Centos7以后都用pam_pwquality了,pam_pwquality完全向下兼容pam_cracklib,並且還提供了/etc/security/pwquality.conf進行參數配置。

3.1.2.4、測試

以上設置對root用戶完全不起作用的。root是個bug般的存在

[root@localhost ~]# passwd doubles
Changing password for user doubles.
New "doubles password: (輸入的是dd)
BAD PASSWORD: The password is a palindrome
Retype new "doubles password: (輸入的是dd123)
Sorry, passwords do not match.
New "doubles password: (輸入的是dd123)
BAD PASSWORD: The password contains less than 1 uppercase letters
Retype new "doubles password: (再次輸入dd123)
passwd: all authentication tokens updated successfully.
[root@localhost ~]# 

以上root給doubles最終設置密碼為dd123,雖然不符合規則,但還是設置成功了,這就是root。

切換成普通用戶去更改自己的密碼:

[root@localhost ~]# su doubles
[doubles@localhost root]$ passwd doubles
passwd: Only root can specify a user name.
[doubles@localhost root]$ passwd
Changing password for user doubles.
Changing password for doubles.
(current) UNIX password: (輸入的是dd)
passwd: Authentication token manipulation error
[doubles@localhost root]$ passwd
Changing password for user doubles.
Changing password for doubles.
(current) UNIX password: 
New "doubles password: (輸入的是dd123,跟老密碼一樣了,remember起作用了。)
BAD PASSWORD: The password is the same as the old one
New "doubles password: (輸入的是doubles,沒有數字)
BAD PASSWORD: The password contains less than 1 digits
New "doubles password: (輸入的是doubles123,沒有大寫)
BAD PASSWORD: The password contains less than 1 uppercase letters
passwd: Have exhausted maximum number of retries for service
[doubles@localhost root]$ 

# 嘗試了最大次數,再試:
[doubles@localhost root]$ passwd
Changing password for user doubles.
Changing password for doubles.
(current) UNIX password: (當前密碼dd123)
New "doubles password: (Doubles123,沒有特殊字符)
BAD PASSWORD: The password contains less than 1 non-alphanumeric characters
New "doubles password: (doubles123!!,包含用戶名)
BAD PASSWORD: The password contains the user name in some form
New "doubles password: (dd123456!!!,沒有大寫)
BAD PASSWORD: The password contains less than 1 uppercase letters
passwd: Have exhausted maximum number of retries for service
[doubles@localhost root]$ passwd
Changing password for user doubles.
Changing password for doubles.
(current) UNIX password: (當前密碼dd123)
New "doubles password: (Dou12313456,沒有特殊字符)
BAD PASSWORD: The password contains less than 1 non-alphanumeric characters
New "doubles password: (dd123!!,少於8位了)
BAD PASSWORD: The password is shorter than 8 characters
New "doubles password: (Ddou123!!!)
Retype new "doubles password: (Ddou123!!!)
passwd: all authentication tokens updated successfully.
[doubles@localhost root]$ 

3.2、設置用戶密碼過期時間

3.2.1、修改 /etc/login.defs

通過修改配置文件  vi /etc/login.defs ,設置全體用戶的密碼過期時間等。

[root@localhost ~]# vim /etc/login.defs
PASS_MAX_DAYS 90 #新建用戶的密碼最長使用天數
PASS_MIN_DAYS 0 #新建用戶的密碼最短使用天數
PASS_WARN_AGE 7 #新建用戶的密碼到期提前提醒天數

3.2.2、使用命令chage

使用chage 命令單獨修改單用戶配置

chage   -m  (最短時間)  -M  (最長時間) -E (過期時間) -W (過期前X天提示) 用戶名

[root@localhost ~]# chage -m 0 -M 30 -E 2020-01-01 -W 7 doubles
[root@localhost ~]# 

表示將此用戶doubles的密碼最短使用天數設為0,最長使用天數設為30,密碼2020年1月1日過期,過期前七天警告用戶。

注意:當出現如下圖錯誤的時候,基本就是密碼過期了,可以使用上面的命令修改過期時間,即可重新登錄。

WARNING: Your password has expired.
You must change your password now and login again!

image

[root@localhost ~]# chage -m 0 -M 99999 -E 2020-01-01 -W 7 doubles
再重新連接即可不用修改密碼就能登錄了。
這里一般不建議把過期時間設為99999,之前30天,你設個60天就好了,延長30天。

3.3、密碼輸錯三次,鎖定用戶5分鍾

使用cat /etc/pam.d/sshd命令查看密碼策略:

設置連續輸錯三次密碼,賬號鎖定五分鍾,只能由root用戶解鎖。

3.3.1、修改配置

一定要寫在#%PAM-1.0下面,否則即使輸錯三次,只要繼續輸對了密碼,還是可以登錄,導致無法鎖定。

auth required  pam_tally2.so onerr=fail deny=3 unlock_time=300 

參數解釋:

pam_tally2.so:位於/usr/lib64/security/下。(注意:如果用pam_tally.so,是沒有自動解鎖的功能。只能進單用戶模式解鎖。)

deny:設置普通用戶和root用戶連續錯誤登陸的最大次數,超過最大次數,則鎖定該用戶;

unlock_time 設定普通用戶鎖定后,多少時間后解鎖,單位是秒;

no_magic_root 連root用戶也在限制范圍,不給root特殊權限。

even_deny_root 也限制root用戶;

root_unlock_time 設定root用戶鎖定后,多少時間后解鎖,單位是秒;

image

3.3.2、上面配置完畢后,我們在另一台機器用ssh試一下

這里故意輸錯三次密碼,

[doubles@localhost root]$ ssh dd1@192.168.188.129
dd1@192.168.188.129's password: 
Permission denied, please try again.
dd1@192.168.188.129's password: 
Permission denied, please try again.
dd1@192.168.188.129's password: 
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
[doubles@localhost root]$ 
[doubles@localhost root]$ 

輸錯三次后,再輸入正確密碼,發現也沒辦法登錄了。

[doubles@localhost root]$ ssh dd1@192.168.188.129
dd1@192.168.188.129's password: 
Permission denied, please try again.
dd1@192.168.188.129's password: 
[doubles@localhost root]$ 

3.3.3、我們在192.168.188.129上面查看/var/log/secure日志發現:

[root@localhost ~]# vim /var/log/secure
Sep 9 17:47:40 localhost unix_chkpwd[72389]: password check failed for user (dd1)
Sep 9 17:47:40 localhost sshd[72387]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.188.128 user=dd1
Sep 9 17:47:42 localhost sshd[72387]: Failed password for dd1 from 192.168.188.128 port 46584 ssh2
Sep 9 17:47:43 localhost unix_chkpwd[72390]: password check failed for user (dd1)
Sep 9 17:47:45 localhost sshd[72387]: Failed password for dd1 from 192.168.188.128 port 46584 ssh2
Sep 9 17:47:46 localhost sshd[72387]: pam_tally2(sshd:auth): user dd1 (1001) tally 3, deny 2
Sep 9 17:47:46 localhost unix_chkpwd[72391]: password check failed for user (dd1)
Sep 9 17:47:48 localhost sshd[72387]: Failed password for dd1 from 192.168.188.128 port 46584 ssh2
Sep 9 17:47:48 localhost sshd[72387]: Connection closed by 192.168.188.128 [preauth]
Sep 9 17:47:48 localhost sshd[72387]: PAM 2 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.188.128 user=dd1
Sep 9 17:47:59 localhost sshd[72393]: pam_tally2(sshd:auth): user dd1 (1001) tally 4, deny 2
Sep 9 17:48:01 localhost sshd[72393]: Failed password for dd1 from 192.168.188.128 port 46586 ssh2
Sep 9 17:48:07 localhost sshd[72393]: Connection closed by 192.168.188.128 [preauth]

查看錯誤登錄次數:

[root@localhost ~]# pam_tally2 --user dd1
Login Failures Latest failure From
dd1 4 09/09/18 17:47:59 192.168.188.128
[root@localhost ~]#

清空錯誤登錄次數:(解鎖)

[root@localhost ~]# pam_tally2 --user dd1 --reset
Login Failures Latest failure From
dd1 4 09/09/18 17:47:59 192.168.188.128
[root@localhost ~]# pam_tally2 --user dd1
Login Failures Latest failure From
dd1 0
[root@localhost ~]# 

3.3.4、其他設置

以上是針對遠程登錄的sshd,針對不同服務來限制不同登陸方式:

#只在本地文本終端tty上做限制,可以編輯如下文件,添加的內容和上方一樣。

vim /etc/pam.d/login

#只在遠程telnet、ssh登陸上做限制,可以編輯如下文件,添加的內容和上方也一樣。

vim /etc/pam.d/remote

vim /etc/pam.d/sshd

3.3.5、匯總更改

參考文檔:https://www.jb51.net/article/116935.htm

如果想要各個終端都限制,那么更改/etc/pam.d/password-auth。

加入下面兩行:

auth required pam_tally2.so deny=3 unlock_time=600
account required pam_tally2.so

image

注意:

很多教程里都說更改/etc/pam.d/system-auth文件,這是錯誤的,要看/etc/pam.d/sshd各終端調用的是哪個文件,像我這里就沒有調用這個文件,調用的是password-auth,如下圖:

這是/etc/pam.d/sshd:

image

再看/etc/pam.d/login:

image

通過上述兩個文件,你會發現sshd用了password-auth,而login用了system-auth,所以要看清楚再去設置相應的文件。

小編曾經就在這里折騰了好久,引以為鑒......

4、限制用戶su

禁止普通用戶su到root用戶,只允許指定的用戶su到root用戶。(需要root權限)

為禁止普通用戶su至root,需要分別修改/etc/pam.d/su和/etc/login.defs兩個配置文件。

4.1、只有wheel組用戶能夠su

4.1.1、配置

首先:將用戶加入到wheel組(后面會設置只有wheel組的用戶才能su到root)

[root@localhost ~]# usermod -G wheel doubles
[root@localhost ~]# id doubles
uid=1002(doubles) gid=1002(doubles) groups=1002(doubles),10(wheel)

去除/etc/pam.d/su文件中如下行的注釋:(表示要求用戶在wheel組下才能root)

[root@localhost ~]# vim /etc/pam.d/su
auth required pam_wheel.so use_uid

在/etc/login.defs文件中加入如下配置項:(表示只有wheel組能夠su到root)

[root@localhost ~]# vim /etc/login.defs 
SU_WHEEL_ONLY yes

4.1.2、測試

下面我們切換到普通用戶su試一下

[root@localhost shellscript]# su dd
[dd@localhost shellscript]$ id
uid=1001(dd) gid=1001(dd) groups=1001(dd)
[dd@localhost shellscript]$ su
Password: 
su: Permission denied
[dd@localhost shellscript]$ 

上面用戶dd沒有在wheel組下,所以即使輸入了正確的密碼也不能su,權限限制。而doubles是在wheel組下的,所以下面我們用doubles試一下

[root@localhost shellscript]# su doubles
[doubles@localhost shellscript]$ su
Password: 
[root@localhost shellscript]# 

doubles在wheel組下,成功su到root。

4.2、自定義用戶組能夠su

除了wheel組,也可以配置只有指定的組的用戶能夠su到root。

參考:https://access.redhat.com/solutions/64860

https://www.cnblogs.com/kevingrace/p/8671964.html

A、創建用戶組groupa

[root@localhost ~]# groupadd groupa

B、創建/etc/security/su-groupa-access文件,里面指定允許su到的用戶

[root@localhost ~]# vim /etc/security/su-groupa-access
doubles
root

這就表示groupa的用戶可以su到root和doubles

保證文件權限不是所有人都可以修改的。

[root@localhost ~]# ll /etc/security/su-groupa-access
-rw-r--r-- 1 root root 13 Sep 8 19:46 /etc/security/su-groupa-access

C、在/etc/pam.d/su下加入下面三行

[root@localhost ~]# vim /etc/pam.d/su
auth [success=2 default=ignore] pam_succeed_if.so use_uid user notingroup groupa
auth required pam_wheel.so use_uid group=groupa
auth required pam_listfile.so item=user sense=allow onerr=fail file=/etc/security/su-groupa-access

配置如下圖:

image

D、將用戶dd加入到groupa組中測試

[root@localhost ~]# gpasswd -a dd groupa
Adding user dd to group groupa
[root@localhost ~]# id dd
uid=1001(dd) gid=1001(dd) groups=1001(dd),1005(ddd),1006(groupa)
[root@localhost ~]# su dd
[dd@localhost root]$ su doubles
Password: 
[doubles@localhost root]$ 
[doubles@localhost root]$ exit
exit
[dd@localhost root]$ su
Password: 
[root@localhost ~]# 

發現此時dd已經可以su到doubles和root了。

(注意)這里自定義用戶組的話,按照網上很多教程說的這樣加:

[root@localhost ~]# vim /etc/pam.d/su
auth required pam_wheel.so group=test

是不起作用的,最后從redhat文檔里看到用創建 /etc/security/su-groupa-access的方式才真正成功。這里也是折騰了小編一下午呢,大家引以為鑒......

5、配置sudo權限

5.1、su與sudo簡介

5.1.1、su

su:就是switch user的意思,表示切換用戶。

普通用戶su到其他用戶需要輸入目標用戶的密碼。Root切換到其他用戶不需輸入密碼。

命令su后面什么都不接的時候表示切換到root用戶。

[doubles@localhost shellscript]$ su
Password: 
[root@localhost shellscript]# 

輸入su root(或者其他用戶名),表示不切換環境變量到當前用戶下。

[doubles@localhost root]$ su root
Password: 
[root@localhost ~]# 

輸入:su - root(或者其他用戶名)這里加了"-"后表示添加切換的當前的環境變量到新用戶的環境變量。

[doubles@localhost shellscript]$ su - root
Password: 
Last login: Sat Sep 8 01:22:45 HKT 2018 on pts/2
[root@localhost ~]#

5.1.2、sudo

sudo命令:superuser do,表示以root的身份來執行后面的命令。

想要使用sudo,必須在/etc/sudoers里面給自己添加root權限。

Visudo命令:就是vi /etc/sudoers。

[doubles@localhost ~]$ visudo
visudo: /etc/sudoers: Permission denied
visudo: /etc/sudoers: Permission denied
[doubles@localhost ~]$ sudo visudo
[sudo] password for doubles: 
visudo: /etc/sudoers.tmp unchanged
[doubles@localhost ~]$ 

5.2、指定用戶能夠sudo

配置普通用戶通過sudo繼承了root權限

在root用戶下,修改/etc/sudoers

[root@localhost ~]# ll /etc/sudoers
-r--r-----. 1 root root 3941 Sep 6 18:32 /etc/sudoers

/etc/sudoers默認是只讀的,需要給/etc/sudoers添加可寫權限:

[root@localhost ~]# chmod u+w /etc/sudoers
[root@localhost ~]# vim /etc/sudoers
## Allow root to run any commands anywhere 
root ALL=(ALL) ALL
doubles ALL=(root) NOPASSWD: ALL

這幾項意思分別為:

第一列:doubles為要添加sudo權限的用戶

第二列:ALL表示從哪里登錄,ALL表示不限制本地遠程,可以填寫ip段

第三列:(root)表示以root身份執行

第四列:NOPASSWD:表示執行sudo的時候不需要密碼,默認不填就表示要輸入密碼。

第五列:ALL表示允許以root身份執行所有命令,以,隔開。

[root@localhost ~]# chmod g-w /etc/sudoers

現在doubles就可以通過sudo來以root身份執行命令了。

[doubles@localhost ~]$ sudo chmod u-w /etc/sudoers
[doubles@localhost ~]$ ls
[doubles@localhost ~]$ sudo vim /etc/sudoers
[sudo] password for doubles: 
Sorry, try again.
[sudo] password for doubles: 

這個操作比較嚴格,所以可能會需要輸入密碼確認。

dd不在sudoers里,我們嘗試用dd進行sudo操作報錯。

[dd@localhost shellscript]$ sudo vim /etc/shadow
dd is not in the sudoers file. This incident will be reported.

5.3、wheel組用戶能夠sudo

/etc/sudoers里面還有一項:

[doubles@localhost ~]$ 
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL

這項表示允許wheel組的用戶執行所有用戶的所有命令,相當於wheel組的用戶都繼承了root權限。

比如,我們將dd加入到wheel組:

[root@localhost ~]# usermod -G wheel dd  # (用命令gpasswd -a dd wheel也行)

/doubles/shellscript目錄只有root用戶可寫,理論上dd是不能在shellscript里創建文件的。

[root@localhost ~]# ll /doubles/shellscript/ -d
drwxr-xr-x. 5 root root 4096 Sep 7 21:09 /doubles/shellscript/
[root@localhost ~]# cd /doubles/shellscript/
[root@localhost shellscript]# su dd
[dd@localhost shellscript]$ mkdir aa
mkdir: cannot create directory ‘aa’: Permission denied

普通用戶dd嘗試在root的目錄shellscript里創建目錄失敗,權限拒絕。

但是我們已經將dd加入到wheel組下了,所以用sudo試下

[dd@localhost shellscript]$ id dd
uid=1001(dd) gid=1001(dd) groups=1001(dd),10(wheel)
[dd@localhost shellscript]$ sudo mkdir aa
[sudo] password for dd: 
[dd@localhost shellscript]$ ll aa -d
drwxr-xr-x 2 root root 4096 Sep 7 21:09 aa

用sudo去創建目錄aa成功。所以wheel組下的dd也跟doubles用戶一樣可以通過sudo來以root身份執行所有的命令。

我們把dd從wheel組刪除:

[dd@localhost shellscript]$ sudo gpasswd -d dd wheel
Removing user dd from group wheel
[dd@localhost shellscript]$ id dd
uid=1001(dd) gid=1001(dd) groups=1001(dd)
也可以去/etc/group里刪除:
[dd@localhost shellscript]$ sudo vim /etc/group
# wheel:x:10:doubles,dd
wheel:x:10:doubles

5.4、自定義用戶組能夠sudo

編輯配置文件/etc/sudoers

[root@localhost ~]# vim /etc/sudoers
## Allows members of the users group to mount and unmount the 
## cdrom as root
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
## Allows members of the users group to shutdown this system
# %users localhost=/sbin/shutdown -h now
# customize group's user to sudo
%d1 ALL=(root) NOPASSWD: ALL

前面兩個注釋是教程實例,我們依樣自定義用戶組d1能夠通過sudo以root身份執行所有命令,而且不會詢問密碼。

測試如下:

[root@localhost ~]# su d1
[d1@localhost root]$ id d1
uid=1003(d1) gid=1004(d1) groups=1004(d1)
[d1@localhost root]$ sudo vim /etc/shadow
[d1@localhost root]$ sudo crontab -l
#0 0 * * * /bin/bash /doubles/shellscript/cut_log.sh >>cutlog.log 2>&1
[d1@localhost root]$ 

如上所示,d1已經可以通過sudo去做只有root能做的事了,比如查看/etc/shadow

5.5、sudo密碼過期處理

5.5.1、背景:

按照上面的設置之后,我們就可以用sudo以root身份執行命令了。但是我們發現每次用sudo的時候都會提示我們輸入用戶密碼,所以我們一般會配置NOPASSWD:,如下:

doubles ALL=(root) NOPASSWD: ALL

但是我們發現,即使配置了NOPASSWD:,后面仍然還是有時候會提示我們輸入密碼,這是因為sudo的NOPASSWD:是有時間限制的,默認為5分鍾。

5.5.2、配置

如果想以后每次使用sudo的時候不再驗證密碼,可以在剛剛的sudoers文件做如下操作:

image

參數解釋:

其中timestamp_timeout=-1只需驗證一次密碼,以后系統自動記憶,runaspw需要root密碼,如果不加默認是要輸入普通賬戶的密碼.

timestamp_timeout=2:表示將密碼的超時時間設置為2分鍾。

timestamp_timeout=0:為0表示永遠提示輸入密碼。

timestamp_timeout=-1:

設置為負數的話(譯注,原文是”-1“,但是手冊中寫明只要是負數就可以)只需要證明一次你知道密碼就可以(譯注:就是密碼永不過期)。

如果你指向給某個特定用戶應用默認值的話,這樣做:

Defaults:doubles timestamp_timeout=-1

多個用戶已逗號隔開。

小技巧:如果軟件升級, /etc/sudoers 可能會被覆蓋掉,所以好的習慣是在 /etc/sudoers.d 中添加

在 /etc/sudoers.d 目錄中增加一個文件,添加相同的內容

6、ssh登錄配置

對SSH服務進行安全加固,防止暴力破解成功。

6.1、配置密鑰登錄

所有服務器管理人員,與需要登錄服務器的人員,都要配置密鑰登錄,避免使用密碼登錄。

關於在windows上,怎么配置與服務器登錄的密鑰,請查看文檔:

https://www.cnblogs.com/doublexi/p/9564493.html

(注):配置密鑰登錄的時候,一定要對自己的密鑰進行口令設置,否則別人拿到了你的私鑰,你的服務器就是別人的了。

6.2、禁止用密碼登錄

前面,我們已經配置了使用密鑰登錄,每個用戶只要記住自己密鑰的口令就可以了,他們登錄服務器已經不需要密碼了,所以我們為了安全,禁止用密碼登錄。

[root@localhost ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup
[root@localhost ~]# vim /etc/ssh/sshd_config
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication no

把PasswordAuthentication yes改為no。

改配置之前一定要記得,先備份一下,方便以后回滾。

改完配置之后,接下來就是重啟服務了,在重啟之前一定要確保:

確保已經按照6.1配置了密鑰登錄。

確保已經按照6.1配置了密鑰登錄。

確保已經按照6.1配置了密鑰登錄。

重要事情說三遍,確保自己配置了密鑰登錄,並且能夠通過這個密鑰登錄到服務器,特別是root。不然就是把自己鎖在了門外。。。

重啟ssh服務

[root@localhost ~]# systemctl restart sshd

重啟服務后,再次登錄的用戶就只能通過密鑰登錄了,通過密碼登錄會提示錯誤。

[root@localhost ~]# ssh -p 2202 root@192.168.188.128
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
[root@localhost ~]# ssh -p 2202 doubles@192.168.188.128
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
[root@localhost ~]# 

image

通過xshell嘗試:

如圖所示,即使我們輸入了正確的用戶名和密碼,連接的時候會直接拒絕用密碼登錄。

image

拒絕密碼的,直接跳到密鑰登錄:

image

6.3、禁止root用戶直接登錄

為了加強服務器安全,我們應該

A、避免使用root賬戶直接登錄。

B、每個需要登錄服務器的操作人員都應該用自己的賬戶

C、管理員為這些賬戶分配不同的權限

D、部分人員(如管理員)需要執行特權操作時,通過su或者sudo去操作。

所以在上述4、5點的時候,我們必須要嚴格控制好各個用戶的su與sudo的權限。

接下來修改/etc/ssh/sshd_config來禁止root用戶直接登錄。

[root@localhost ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup
[root@localhost ~]# vim /etc/ssh/sshd_config
PermitRootLogin no

將PermitRootLogin的yes改為no。

改完配置,接下來自然是重啟服務了。重啟服務前,請確認:

A、確保自己已經配置了其他用戶可以登錄服務器

B、確保自己已經配置用戶可以su或者sudo(防止以后自己要改回來)

重啟服務:

[root@localhost ~]# systemctl restart sshd

重啟后,再用xshell登錄如圖所示:

image

在另一台服務器登錄也是一樣:

[root@localhost ~]# ssh -p 2202 root@192.168.188.128
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
[root@localhost ~]# 

6.4、SSH其他配置

我們登錄系統后,一般還會更改ssh的默認端口號,一般改為1024以上的。

[doubles@localhost ~]$ sudo vim /etc/ssh/sshd_config
Port 2202

修改允許密碼錯誤次數(默認6次)。

設置 MaxAuthTries 的值為 3。

最終ssh配置修改總結為:

[doubles@localhost ~]$ sudo vim /etc/ssh/sshd_config
Port 2202
PermitRootLogin no
MaxAuthTries 3
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication no

重啟服務:

[root@localhost ~]# systemctl restart sshd

6.5、登錄超時設置

讓用戶在登錄后,一段時間內不活動,自動登出。

6.5.1、修改環境變量TMOUT

$TMOUT = 30

參數說明:

# 用以下命令判斷是否是否設置了該參數

echo $TMOUT

# 如果輸出空或0表示不超時,大於0的數字n表示n秒沒有收入則超時

6.5.1.1、/etc/profile全局設置

查看/etc/profile之前是否有配置,有則修改,沒有則增加

[doubles@localhost ~]$ cat /etc/profile|grep TMOUT -n
[doubles@localhost ~]$ 
[doubles@localhost ~]$ echo $TMOUT
[doubles@localhost ~]$ 

上面$TMOUT變量為空,沒有設置

修改前先備份一下

[doubles@localhost ~]$ cp /etc/profile /etc/profile-backup

在/etc/profile最下面增加一行如下

[doubles@localhost ~]$ sudo vim /etc/profile
# ----------------------------
export TMOUT=900
# ----------------------------
# 900就是15分鍾,將以上900修改為0就是設置不超時

接下來,source一下,讓配置立即生效

[doubles@localhost ~]$ source /etc/profile
[doubles@localhost ~]$

測試:

配置完之后,不動終端,過了15分鍾之后自動退出如下:

[doubles@localhost ~]$ echo $TMOUT
[doubles@localhost ~]$ sudo vim /etc/profile
[doubles@localhost ~]$ source /etc/profile
[doubles@localhost ~]$ timed out waiting for input: auto-logout
Connection closing...Socket close.
Connection closed by foreign host.
Disconnected from remote host(192.168.188.128:2202) at 12:45:21.
Type `help' to learn how to use Xshell prompt.
[c:\~]$ 
6.5.1.2、個人超時配置

上面/etc/profile是對所有用戶都生效的,如果要只針對個別用戶配置登錄超時,可以通過修改個人home目錄下的.bashrc或.bash_profile文件來實現。

這兩個文件選擇其中一個在末尾加入如下一行,具體操作如下:

[doubles@localhost ~]$ pwd
/home/doubles
[doubles@localhost ~]$ vim .bash_profile
export TMOUT=900
[doubles@localhost ~]$ source .bash_profile

測試結果如下:

[doubles@localhost ~]$ timed out waiting for input: auto-logout
Connection closing...Socket close.
Connection closed by foreign host.
Disconnected from remote host(192.168.188.128:2202) at 14:59:19.
Type `help' to learn how to use Xshell prompt.
[c:\~]$ 

6.5.2、修改sshd_config

6.5.2.1、全局超時配置

通過修改ssh的配置文件 /etc/ssh/sshd_config我們同樣也可以實現超時自動登出功能,具體如下:

[doubles@localhost ~]$ sudo vim /etc/ssh/sshd_config

找到這兩行:

#ClientAliveInterval 0
#ClientAliveCountMax 3

修改如下:

ClientAliveInterval 300
ClientAliveCountMax 2

第一行表示每300秒檢測一次,默認為0表示不發送alive檢測

第二行表示檢測到2次(即2*300=600秒,即10分鍾)不活動就斷開連接。

上述配置,對除了root之外的用戶都生效。

保存退出,重啟服務:

[doubles@localhost ~]$ sudo systemctl restart sshd

關於這個配置,小編這里測試一直沒有生效,不知道為什么,用戶一直沒有被踢下線。。。。。。

從坑里爬出來的總結:

(啟發文:https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/296920

引用原文的一句話:To make it work ClientAliveCountMax should to be 0

所以,以上配置全部忘掉,接下來我們重新弄:

[doubles@localhost ~]$ sudo vim /etc/ssh/sshd_config
ClientAliveInterval 300
ClientAliveCountMax 0 # 這里必須是0

保存退出,重啟服務:

[doubles@localhost ~]$ sudo systemctl restart sshd

接下來,我們要退出登錄,讓整個shell連接都斷開,下次再重新進行ssh連接的時候,新的配置才會生效,否則你應用的還是上一次的配置。

一定要斷開連接

一定要斷開連接

一定要斷開連接

重要事情說三遍,

重點1:ClientAliveCountMax 0(必須是0)

重點2:必須退出整個ssh連接,重新登錄,配置才會生效。

6.5.2.2、個人不超時配置

在進行ssh連接的時候,加上參數:

法一:

[dd@localhost doubles]$ ssh -o ConnectTimeout=3 dd1@192.168.188.129
Enter passphrase for key '/home/dd/.ssh/id_rsa': 
Last login: Tue Sep 11 20:41:43 2018 from 192.168.188.128
[dd1@localhost ~]$ Connection to 192.168.188.129 closed by remote host.
Connection to 192.168.188.129 closed.
[dd@localhost doubles]$ 

法二:

[dd@localhost doubles]$ ssh -o ServerAliveInterval=5 -o ServerAliveCountMax=0 dd1@192.168.188.129
Enter passphrase for key '/home/dd/.ssh/id_rsa': 
Last login: Tue Sep 11 22:22:15 2018 from 192.168.188.128
[dd1@localhost ~]$ Timeout, server 192.168.188.129 not responding.
[dd@localhost doubles]$ 

這樣子只會在需要的連接中保持持久連接, 畢竟不是所有連接都要保持持久的

6.6、登錄日志配置

通過腳本代碼實現記錄所有用戶的登錄操作日志,防止出現安全事件后無據可查。

操作如下:(這里最好切換成root用戶來操作)

在profile最后一行追加:

[root@localhost ~]# vim /etc/profile
history
USER=`whoami`
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]; then
USER_IP=`hostname`
fi
if [ ! -d /var/log/history ]; then
mkdir /var/log/history
chmod 777 /var/log/history
fi
if [ ! -d /var/log/history/${LOGNAME} ]; then
mkdir /var/log/history/${LOGNAME}
chmod 300 /var/log/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +"%Y%m%d_%H:%M:%S"`
export HISTFILE=/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT
chmod 600 /var/log/history/${LOGNAME}/*history* 2>/dev/null
[root@localhost ~]#

Source讓配置生效

[root@localhost ~]# source /etc/profile

注意: /var/log/history 是記錄日志的存放位置,可以自定義。

通過上述步驟,可以在 /var/log/history 目錄下以每個用戶為名新建一個文件夾,每次用戶退出后都會產生以用戶名、登錄IP、時間的日志文件,包含此用戶本次的所有操作(root用戶除外)。

同時,建議您使用OSS服務收集存儲日志。

6.7、屏蔽ssh的Banner信息

banner的作用:你用ssh登陸的時候,會自動顯示系統版本信息之類的敏感信息

有些版本會存在一些固有的安全問題,很容易被黑客利用。所以我們需要屏蔽這些信息。

這一點看需要,很多系統默認是沒有顯示Banner的。

6.7.1、檢查

查看/etc/ssh/sshd_config文件中是否存在Banner字段

[root@localhost ~]# cat /etc/ssh/sshd_config |grep -i banner
# no default banner path
#Banner none

發現Banner是none,沒有設置Banner,ssh連接是沒有信息顯示的,

查看/etc/motd 文件內容,該處內容將作為banner信息顯示給登錄用戶

[root@localhost ~]# cat /etc/motd 
[root@localhost ~]#

發現設置都是空的,那么ssh連接信息將如下:

wps1CD3.tmp

通過xshell連接也是這樣:

wps1CD4.tmp

沒有顯示什么有用的信息,所以可以不用屏蔽,下面直接略過。

6.7.2、屏蔽

如果有設置,那么屏蔽只需要Banner改為none即可。

操作前先備份

[root@localhost ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup
[root@localhost ~]# cp -p /etc/motd /etc/motd_bak
[root@localhost ~]# vim /etc/ssh/sshd_config
Banner none
[root@localhost ~]# vim /etc/motd

6.7.3、自定義Banner信息

參考:https://blog.csdn.net/sdb5858874/article/details/80525992

新建Banner文件ssh_banner

[root@localhost doubles]# vim /etc/ssh_banner
Authorized only. All activity will be monitored and reported

將該文件歸為bin用戶和屬組

[root@localhost doubles]# chown bin:bin /etc/ssh_banner

設置權限為600

[root@localhost doubles]# chmod 644 /etc/ssh_banner

編輯登陸后的歡迎信息

[root@localhost doubles]# vim /etc/motd
login success. All activity will be monitored and reported

修改ssh配置

[root@localhost doubles]# vim /etc/ssh/sshd_config
Banner /etc/ssh_banner

wps1CD5.tmp

重啟服務

[root@localhost doubles]# systemctl restart sshd

測試:

在另一台機發起ssh登錄請求:

wps1CE6.tmp

終端登錄也是一樣:

wps1CE7.tmp

Banner信息設置完畢。

7、為grub設置密碼

可以為linux引導器grub設置密碼,防止別人通過grub引導進入單用戶模式進行非法操作。(當然此項不是必須,因為當別人能接觸到你的grub的時候,也就說明你的機器已經被別人掌握了,此刻服務器已經沒有安全性可言了。)

方法一:命令設置(推薦)

查看系統默認密碼:

[root@localhost doubles]# cat /etc/grub2.cfg | grep password
password_pbkdf2 root ${GRUB2_PASSWORD}

首先查看grub登錄用戶名:

[root@localhost doubles]# cat /etc/grub.d/01_users 
#!/bin/sh -e
cat << EOF
if [ -f \${prefix}/user.cfg ]; then
source \${prefix}/user.cfg
if [ -n "\${GRUB2_PASSWORD}" ]; then
set superusers="root"
export superusers
password_pbkdf2 root \${GRUB2_PASSWORD}
fi
fi
EOF
[root@localhost doubles]# 

通過上面發現用戶名是root,接下來通過grub2-setpassword命令修改密碼:

[root@localhost doubles]# grub2-setpassword 
Enter password: 
Confirm password: 
[root@localhost doubles]# 

改完密碼重啟:

[root@localhost doubles]# init 6

在選擇內核的時候,按e,如下圖:

image

此時它會提示你輸入用戶名和密碼:

image

輸入完用戶名和密碼之后,就進入了

image

在這里你就可以修改root密碼的,慎重。。。

注意:以上環境是centos7,7以下的系統環境略有所不同。這里不建議按照網上說的,通過修改/etc/grub2.cfg或者/etc/grub.d/00_header文件來明文指定密碼。

方法二:明文密碼

操作前,先備份一下文件

[root@localhost ~]# cp /etc/grub2.cfg /etc/grub2.cfg_backup

先查看之前是否有設置密碼:

[root@localhost ~]# cat /etc/grub2.cfg | grep password

在/etc/grub.d/01_users文件中指定超級用戶,其中root為超級用戶的用戶名,PassRoot+123為超級用戶root的密碼,清空該文件並添加以下幾行。(用戶名和密碼按實際情況設置)

[root@localhost ~]# cp /etc/grub.d/01_users /etc/grub.d/01_users_backup
[root@localhost ~]# vim /etc/grub.d/01_users
cat << EOF
set superusers="root"
password root DoublesRoot!!123
EOF

我把之前的注釋了,重新添加的,如下:

image

重新編譯配置文件:

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
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-ea399cee8fa94b1d9901ffd9d37bf7c6
Found initrd image: /boot/initramfs-0-rescue-ea399cee8fa94b1d9901ffd9d37bf7c6.img
done
[root@localhost ~]# 

此時重新查看配置文件,發現多了密碼,而且這個密碼是明文的,不安全。

[root@localhost ~]# cat /etc/grub2.cfg |grep password
password root DoublesRoot!!123
[root@localhost ~]# 

image

此時,grub密碼設置成功,重啟即可生效。

方法三:密文密碼

方法二是明文密碼,在/etc/grub2.cfg就可以看到,很不安全,接下來我們設置密文密碼。

使用grub2-mkpasswd-pbkdf2命令創建密文

[root@localhost ~]# grub2-mkpasswd-pbkdf2
Enter password: 
Reenter password: 
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.94A2F8EEA383CA6DDC6B432E9878FD12A02BF114A9B13FEAE0D2E834ADFF4B0A791DD1FDFF7A21E9CA3E277D567CDC12E2E99AEE7EF83E0D52B534B740B2117A.729B52B7BA281FF693EA3EA02FC7C22275A17DEEDF994BFAEC4B8ECC5046FC86FCDAB7B68D33DAC3A7419AA8C32B6F9AFE901BEBB4F4DFABC6213BE03FC1D711
[root@localhost ~]# 

上面會輸出一段密文,我們把它復制到/etc/grub.d/01_user里面,如下:

[root@localhost ~]# vim /etc/grub.d/01_users
cat << EOF
set superusers="root"
password_pbkdf2 root
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.94A2F8EEA383CA6DDC6B432E9878FD12A02BF114A9B13FEAE0D2E834ADFF4B0A791DD1FDFF7A21E9CA3E277D567CDC12E2E99AEE7EF83E0D52B534B740B2117A.729B52B7BA281FF693EA3EA02FC7C22275A17DEEDF994BFAEC4B8ECC5046FC86FCDAB7B68D33DAC3A7419AA8C32B6F9AFE901BEBB4F4DFABC6213BE03FC1D711
EOF

最后:重新編譯生成grub2.cfg文件

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg 
Generating grub configuration file ...
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-ea399cee8fa94b1d9901ffd9d37bf7c6
Found initrd image: /boot/initramfs-0-rescue-ea399cee8fa94b1d9901ffd9d37bf7c6.img
done
[root@localhost ~]# 

檢查/etc/grub2.cfg,發現多了一段密文

[root@localhost ~]# cat /etc/grub2.cfg | grep password
password_pbkdf2 root
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.94A2F8EEA383CA6DDC6B432E9878FD12A02BF114A9B13FEAE0D2E834ADFF4B0A791DD1FDFF7A21E9CA3E277D567CDC12E2E99AEE7EF83E0D52B534B740B2117A.729B52B7BA281FF693EA3EA02FC7C22275A17DEEDF994BFAEC4B8ECC5046FC86FCDAB7B68D33DAC3A7419AA8C32B6F9AFE901BEBB4F4DFABC6213BE03FC1D711
[root@localhost ~]# 

密鑰設置成功,重啟即生效。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM