linux系统安全加固
一、账号相关
1、禁用或删除无用账号
减少系统无用账号,降低安全风险。
当我们的系统安装完毕后,系统默认自带了一些虚拟账户,比如bin、adm、lp、games、postfix等,这些账号理论上是可以删除的。但是因为它们的登录shell都是/sbin/nologin,所以它们本身也是无法登录的,不用删也可以。我们要注意的是系统安装完成后,自己手动创建的一些账户,比如这些登录shell是/bin/bash,一定要控制好。
1.1、使用cat /etc/passwd 命令查看所有账号
如下图所示:
注:/etc/passwd是存放用户的地方,简单学习一下。各个字段描述如下:
用户名: 密码 : uid : gid :用户描述:主目录:登陆shell
把系统一些自带的账号注释掉:
注意:不建议直接删除,当你需要某个用户时,自己重新添加会很麻烦。
删除用户主要包括:adm,lp,sync,shutdown,halt,news,uucp,operator,games,ftp,postfix,dovecot
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
[root@localhost ~]# cp /etc/passwd /etc/passwdbak[root@localhost ~]# vim /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon: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/haltmail: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/nologinnobody:x:99:99:Nobody:/:/sbin/nologinsystemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologinsystemd-network:x:192:192:systemd Network Management:/:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinpolkitd:x:998:996:User for polkitd:/:/sbin/nologintss: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/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinlulu: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/nologinmysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologindockerroot:x:996:993:Docker User:/var/lib/docker:/sbin/nologindd:x:1001:1001::/home/dd:/bin/bashdoubles:x:1002:1002::/home/doubles:/bin/bashapache:x:48:48:Apache:/usr/share/httpd:/sbin/nologind1:x:1003:1004::/home/d1:/bin/bashd3:x:1004:1007::/home/d3:/bin/bash[root@localhost ~]# id admid: adm: no such user[root@localhost ~]# id lpid: lp: no such user[root@localhost ~]# |
注释用户组
删除的用户组包括:adm,lp,mail,games,ftp,audio
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
[root@localhost ~]# cp /etc/group /etc/groupbak[root@localhost ~]# vim /etc/grouproot: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:doublescdrom:x:11:mail:x:12:postfixman: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目录都一起删掉。
|
01
02
03
04
|
[root@localhost ~]# userdel -r d2userdel: d2 mail spool (/var/spool/mail/d2) not founduserdel: d2 home directory (/home/d2) not found[root@localhost ~]# |
1.3、passwd -l禁用账户
使用passwd -l禁用账户dd,禁用后,root用户仍然可以su,但是其他用户无法su到dd,也无法通过xshell去ssh到dd了。
|
01
02
03
04
05
06
07
08
09
10
11
12
|
[root@localhost ~]# passwd -l ddLocking password for user dd.passwd: Success[root@localhost ~]# su dd[dd@localhost root]$ exitexit[root@localhost ~]# su - doublesLast login: Sat Sep 8 20:24:52 HKT 2018 on pts/2[doubles@localhost ~]$ su ddPassword: su: Authentication failure[doubles@localhost ~]$ |
1.4、passwd -u解锁账户
使用passwd -u解锁后,账户可以正常登陆。
|
01
02
03
04
05
06
07
08
09
|
[doubles@localhost ~]$ exitlogout[root@localhost ~]# passwd -u ddUnlocking password for user dd.passwd: Success[root@localhost ~]# su doubles[doubles@localhost root]$ su ddPassword: [dd@localhost root]$ |
2、检查特殊账号
检查是否存在空口令和root权限的账号。
2.1、检测空口令账户
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
[root@localhost ~]# awk -F: '$2=="!!" {print $1}' /etc/shadowsystemd-bus-proxysystemd-networkdbuspolkitdtsspostfixsshdluludovecotdovenullmysqldockerrootapached3 |
再去/etc/passwd查看哪些账户是可登录的,如下:
2.2、加固空口令账号
对无口令并且可登录的账户,进行密码设置:(注意密码不能包含用户名,也不能少于7位)
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
[root@localhost ~]# passwd luluChanging password for user lulu.New password: Retype new password: passwd: all authentication tokens updated successfully.[root@localhost ~]# passwd d3Changing password for user d3.New password: BAD PASSWORD: The password is shorter than 7 charactersRetype new password: passwd: all authentication tokens updated successfully.[root@localhost ~]# [root@localhost ~]# passwd d3Changing 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为零的账号。
|
01
02
03
|
[root@localhost ~]# awk -F: '($3==0)' /etc/passwdroot: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
|
01
|
[root@localhost ~]# vim /etc/login.defs |
PASS_MIN_LEN 10 #密码最小长度,使用pam_cracklib module,该参数不再有效
3.1.2、修改/etc/pam.d/system-auth
修改前,我们先备份一下:
|
01
|
[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 下面)。
配置如下:
|
01
|
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个字符。
配置如下:
|
01
|
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:定义用户密码中必须包含多少个特殊字符(除数字、字母之外);
我的配置如下:
主要是两行:
|
01
02
03
|
[root@localhost ~]# vim /etc/pam.d/system-authpassword 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般的存在
|
01
02
03
04
05
06
07
08
09
10
11
|
[root@localhost ~]# passwd doublesChanging password for user doubles.New "doubles password: (输入的是dd)BAD PASSWORD: The password is a palindromeRetype new "doubles password: (输入的是dd123)Sorry, passwords do not match.New "doubles password: (输入的是dd123)BAD PASSWORD: The password contains less than 1 uppercase lettersRetype new "doubles password: (再次输入dd123)passwd: all authentication tokens updated successfully.[root@localhost ~]# |
以上root给doubles最终设置密码为dd123,虽然不符合规则,但还是设置成功了,这就是root。
切换成普通用户去更改自己的密码:
3.2、设置用户密码过期时间
3.2.1、修改 /etc/login.defs
通过修改配置文件 vi /etc/login.defs ,设置全体用户的密码过期时间等。
|
01
02
03
04
|
[root@localhost ~]# vim /etc/login.defsPASS_MAX_DAYS 90 #新建用户的密码最长使用天数PASS_MIN_DAYS 0 #新建用户的密码最短使用天数PASS_WARN_AGE 7 #新建用户的密码到期提前提醒天数 |
3.2.2、使用命令chage
使用chage 命令单独修改单用户配置
chage -m (最短时间) -M (最长时间) -E (过期时间) -W (过期前X天提示) 用户名
|
01
02
|
[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!
|
01
|
[root@localhost ~]# chage -m 0 -M 99999 -E 2020-01-01 -W 7 doubles |
|
01
|
再重新连接即可不用修改密码就能登录了。 |
|
01
|
这里一般不建议把过期时间设为99999,之前30天,你设个60天就好了,延长30天。 |
3.3、密码输错三次,锁定用户5分钟
使用cat /etc/pam.d/sshd命令查看密码策略:
设置连续输错三次密码,账号锁定五分钟,只能由root用户解锁。
3.3.1、修改配置:
一定要写在#%PAM-1.0下面,否则即使输错三次,只要继续输对了密码,还是可以登录,导致无法锁定。
|
01
|
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用户锁定后,多少时间后解锁,单位是秒;
3.3.2、上面配置完毕后,我们在另一台机器用ssh试一下:
这里故意输错三次密码,
|
01
02
03
04
05
06
07
08
09
|
[doubles@localhost root]$ ssh <a href="mailto:dd1@192.168.188.129">dd1@192.168.188.129</a>dd1@192.168.188.129's password: Permission denied, please try again.<a href="mailto:dd1@192.168.188.129's">dd1@192.168.188.129's</a> 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]$ |
输错三次后,再输入正确密码,发现也没办法登录了。
|
01
02
03
04
05
|
[doubles@localhost root]$ ssh <a href="mailto:dd1@192.168.188.129">dd1@192.168.188.129</a>dd1@192.168.188.129's password: Permission denied, please try again.<a href="mailto:dd1@192.168.188.129's">dd1@192.168.188.129's</a> password: [doubles@localhost root]$ |
3.3.3、我们在192.168.188.129上面查看/var/log/secure日志发现:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
[root@localhost ~]# vim /var/log/secureSep 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=dd1Sep 9 17:47:42 localhost sshd[72387]: Failed password for dd1 from 192.168.188.128 port 46584 ssh2Sep 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 ssh2Sep 9 17:47:46 localhost sshd[72387]: pam_tally2(sshd:auth): user dd1 (1001) tally 3, deny 2Sep 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 ssh2Sep 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=dd1Sep 9 17:47:59 localhost sshd[72393]: pam_tally2(sshd:auth): user dd1 (1001) tally 4, deny 2Sep 9 17:48:01 localhost sshd[72393]: Failed password for dd1 from 192.168.188.128 port 46586 ssh2Sep 9 17:48:07 localhost sshd[72393]: Connection closed by 192.168.188.128 [preauth] |
查看错误登录次数:
|
01
02
03
04
|
[root@localhost ~]# pam_tally2 --user dd1Login Failures Latest failure Fromdd1 4 09/09/18 17:47:59 192.168.188.128[root@localhost ~]# |
清空错误登录次数:(解锁)
|
01
02
03
04
05
06
07
|
[root@localhost ~]# pam_tally2 --user dd1 --resetLogin Failures Latest failure Fromdd1 4 09/09/18 17:47:59 192.168.188.128[root@localhost ~]# pam_tally2 --user dd1Login Failures Latest failure Fromdd1 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。
加入下面两行:
|
01
02
|
auth required pam_tally2.so deny=3 unlock_time=600account required pam_tally2.so |
注意:
很多教程里都说更改/etc/pam.d/system-auth文件,这是错误的,要看/etc/pam.d/sshd各终端调用的是哪个文件,像我这里就没有调用这个文件,调用的是password-auth,如下图:
这是/etc/pam.d/sshd:
再看/etc/pam.d/login:
通过上述两个文件,你会发现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)
|
01
02
03
|
[root@localhost ~]# usermod -G wheel doubles[root@localhost ~]# id doublesuid=1002(doubles) gid=1002(doubles) groups=1002(doubles),10(wheel) |
去除/etc/pam.d/su文件中如下行的注释:(表示要求用户在wheel组下才能root)
|
01
02
|
[root@localhost ~]# vim /etc/pam.d/suauth required pam_wheel.so use_uid |
在/etc/login.defs文件中加入如下配置项:(表示只有wheel组能够su到root)
|
01
02
|
[root@localhost ~]# vim /etc/login.defs SU_WHEEL_ONLY yes |
4.1.2、测试
下面我们切换到普通用户su试一下
|
01
02
03
04
05
06
07
|
[root@localhost shellscript]# su dd[dd@localhost shellscript]$ iduid=1001(dd) gid=1001(dd) groups=1001(dd)[dd@localhost shellscript]$ suPassword: su: Permission denied[dd@localhost shellscript]$ |
上面用户dd没有在wheel组下,所以即使输入了正确的密码也不能su,权限限制。而doubles是在wheel组下的,所以下面我们用doubles试一下
|
01
02
03
04
|
[root@localhost shellscript]# su doubles[doubles@localhost shellscript]$ suPassword: [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
|
01
|
[root@localhost ~]# groupadd groupa |
B、创建/etc/security/su-groupa-access文件,里面指定允许su到的用户
|
01
02
03
|
[root@localhost ~]# vim /etc/security/su-groupa-accessdoublesroot |
这就表示groupa的用户可以su到root和doubles
保证文件权限不是所有人都可以修改的。
|
01
02
|
[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下加入下面三行
|
01
02
03
04
|
[root@localhost ~]# vim /etc/pam.d/suauth [success=2 default=ignore] pam_succeed_if.so use_uid user notingroup groupaauth required pam_wheel.so use_uid group=groupaauth required pam_listfile.so item=user sense=allow onerr=fail file=/etc/security/su-groupa-access |
配置如下图:
D、将用户dd加入到groupa组中测试
|
01
02
03
04
05
06
07
08
09
10
11
12
13
|
[root@localhost ~]# gpasswd -a dd groupaAdding user dd to group groupa[root@localhost ~]# id dduid=1001(dd) gid=1001(dd) groups=1001(dd),1005(ddd),1006(groupa)[root@localhost ~]# su dd[dd@localhost root]$ su doublesPassword: [doubles@localhost root]$ [doubles@localhost root]$ exitexit[dd@localhost root]$ suPassword: [root@localhost ~]# |
发现此时dd已经可以su到doubles和root了。
(注意)这里自定义用户组的话,按照网上很多教程说的这样加:
|
01
02
|
[root@localhost ~]# vim /etc/pam.d/suauth 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用户。
|
01
02
03
|
[doubles@localhost shellscript]$ suPassword: [root@localhost shellscript]# |
输入su root(或者其他用户名),表示不切换环境变量到当前用户下。
|
01
02
03
|
[doubles@localhost root]$ su rootPassword: [root@localhost ~]# |
输入:su - root(或者其他用户名)这里加了"-"后表示添加切换的当前的环境变量到新用户的环境变量。
|
01
02
03
04
|
[doubles@localhost shellscript]$ su - rootPassword: 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。
|
01
02
03
04
05
06
07
|
[doubles@localhost ~]$ visudovisudo: /etc/sudoers: Permission deniedvisudo: /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
|
01
02
|
[root@localhost ~]# ll /etc/sudoers-r--r-----. 1 root root 3941 Sep 6 18:32 /etc/sudoers |
/etc/sudoers默认是只读的,需要给/etc/sudoers添加可写权限:
|
01
02
03
04
05
|
[root@localhost ~]# chmod u+w /etc/sudoers[root@localhost ~]# vim /etc/sudoers## Allow root to run any commands anywhere root ALL=(ALL) ALLdoubles ALL=(root) NOPASSWD: ALL |
这几项意思分别为:
第一列:doubles为要添加sudo权限的用户
第二列:ALL表示从哪里登录,ALL表示不限制本地远程,可以填写ip段
第三列:(root)表示以root身份执行
第四列:NOPASSWD:表示执行sudo的时候不需要密码,默认不填就表示要输入密码。
第五列:ALL表示允许以root身份执行所有命令,以,隔开。
|
01
|
[root@localhost ~]# chmod g-w /etc/sudoers |
现在doubles就可以通过sudo来以root身份执行命令了。
|
01
02
03
04
05
06
|
[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操作报错。
|
01
02
|
[dd@localhost shellscript]$ sudo vim /etc/shadowdd is not in the sudoers file. This incident will be reported. |
5.3、wheel组用户能够sudo
/etc/sudoers里面还有一项:
|
01
02
03
04
05
|
[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组:
|
01
|
[root@localhost ~]# usermod -G wheel dd # (用命令gpasswd -a dd wheel也行) |
/doubles/shellscript目录只有root用户可写,理论上dd是不能在shellscript里创建文件的。
|
01
02
03
04
05
06
|
[root@localhost ~]# ll /doubles/shellscript/ -ddrwxr-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 aamkdir: cannot create directory ‘aa’: Permission denied |
普通用户dd尝试在root的目录shellscript里创建目录失败,权限拒绝。
但是我们已经将dd加入到wheel组下了,所以用sudo试下
|
01
02
03
04
05
06
|
[dd@localhost shellscript]$ id dduid=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 -ddrwxr-xr-x 2 root root 4096 Sep 7 21:09 aa |
用sudo去创建目录aa成功。所以wheel组下的dd也跟doubles用户一样可以通过sudo来以root身份执行所有的命令。
我们把dd从wheel组删除:
|
01
02
03
04
05
06
07
08
|
[dd@localhost shellscript]$ sudo gpasswd -d dd wheelRemoving user dd from group wheel[dd@localhost shellscript]$ id dduid=1001(dd) gid=1001(dd) groups=1001(dd)也可以去/etc/group里删除:[dd@localhost shellscript]$ sudo vim /etc/group# wheel:x:10:doubles,ddwheel:x:10:doubles |
5.4、自定义用户组能够sudo
编辑配置文件/etc/sudoers
|
01
02
03
04
05
06
07
08
|
[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身份执行所有命令,而且不会询问密码。
测试如下:
|
01
02
03
04
05
06
07
|
[root@localhost ~]# su d1[d1@localhost root]$ id d1uid=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:,如下:
|
01
|
doubles ALL=(root) NOPASSWD: ALL |
但是我们发现,即使配置了NOPASSWD:,后面仍然还是有时候会提示我们输入密码,这是因为sudo的NOPASSWD:是有时间限制的,默认为5分钟。
5.5.2、配置
如果想以后每次使用sudo的时候不再验证密码,可以在刚刚的sudoers文件做如下操作:
参数解释:
其中timestamp_timeout=-1只需验证一次密码,以后系统自动记忆,runaspw需要root密码,如果不加默认是要输入普通账户的密码.
timestamp_timeout=2:表示将密码的超时时间设置为2分钟。
timestamp_timeout=0:为0表示永远提示输入密码。
timestamp_timeout=-1:
设置为负数的话(译注,原文是”-1“,但是手册中写明只要是负数就可以)只需要证明一次你知道密码就可以(译注:就是密码永不过期)。
如果你指向给某个特定用户应用默认值的话,这样做:
|
01
|
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、禁止用密码登录
前面,我们已经配置了使用密钥登录,每个用户只要记住自己密钥的口令就可以了,他们登录服务器已经不需要密码了,所以我们为了安全,禁止用密码登录。
|
01
02
03
04
05
06
|
[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 noPasswordAuthentication no |
把PasswordAuthentication yes改为no。
改配置之前一定要记得,先备份一下,方便以后回滚。
改完配置之后,接下来就是重启服务了,在重启之前一定要确保:
确保已经按照6.1配置了密钥登录。
确保已经按照6.1配置了密钥登录。
确保已经按照6.1配置了密钥登录。
重要事情说三遍,确保自己配置了密钥登录,并且能够通过这个密钥登录到服务器,特别是root。不然就是把自己锁在了门外。。。
重启ssh服务
|
01
|
[root@localhost ~]# systemctl restart sshd |
重启服务后,再次登录的用户就只能通过密钥登录了,通过密码登录会提示错误。
|
01
02
03
04
05
|
[root@localhost ~]# ssh -p 2202 <a href="mailto:root@192.168.188.128">root@192.168.188.128</a>Permission denied (publickey,gssapi-keyex,gssapi-with-mic).[root@localhost ~]# ssh -p 2202 <a href="mailto:doubles@192.168.188.128">doubles@192.168.188.128</a>Permission denied (publickey,gssapi-keyex,gssapi-with-mic).[root@localhost ~]# |
通过xshell尝试:
如图所示,即使我们输入了正确的用户名和密码,连接的时候会直接拒绝用密码登录。
拒绝密码的,直接跳到密钥登录:
6.3、禁止root用户直接登录
为了加强服务器安全,我们应该
A、避免使用root账户直接登录。
B、每个需要登录服务器的操作人员都应该用自己的账户
C、管理员为这些账户分配不同的权限
D、部分人员(如管理员)需要执行特权操作时,通过su或者sudo去操作。
所以在上述4、5点的时候,我们必须要严格控制好各个用户的su与sudo的权限。
接下来修改/etc/ssh/sshd_config来禁止root用户直接登录。
|
01
02
03
|
[root@localhost ~]# cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup[root@localhost ~]# vim /etc/ssh/sshd_configPermitRootLogin no |
将PermitRootLogin的yes改为no。
改完配置,接下来自然是重启服务了。重启服务前,请确认:
A、确保自己已经配置了其他用户可以登录服务器
B、确保自己已经配置用户可以su或者sudo(防止以后自己要改回来)
重启服务:
|
01
|
[root@localhost ~]# systemctl restart sshd |
重启后,再用xshell登录如图所示:
在另一台服务器登录也是一样:
|
01
02
03
|
[root@localhost ~]# ssh -p 2202 <a href="mailto:root@192.168.188.128">root@192.168.188.128</a>Permission denied (publickey,gssapi-keyex,gssapi-with-mic).[root@localhost ~]# |
6.4、SSH其他配置
我们登录系统后,一般还会更改ssh的默认端口号,一般改为1024以上的。
|
01
02
|
[doubles@localhost ~]$ sudo vim /etc/ssh/sshd_configPort 2202 |
修改允许密码错误次数(默认6次)。
设置 MaxAuthTries 的值为 3。
最终ssh配置修改总结为:
|
01
02
03
04
05
06
07
08
09
10
11
|
[doubles@localhost ~]$ sudo vim /etc/ssh/sshd_configPort 2202PermitRootLogin noMaxAuthTries 3RSAAuthentication yesPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys# To disable tunneled clear text passwords, change to no here!#PasswordAuthentication yes#PermitEmptyPasswords noPasswordAuthentication no |
重启服务:
|
01
|
[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之前是否有配置,有则修改,没有则增加
|
01
02
03
04
|
[doubles@localhost ~]$ cat /etc/profile|grep TMOUT -n[doubles@localhost ~]$ [doubles@localhost ~]$ echo $TMOUT[doubles@localhost ~]$ |
上面$TMOUT变量为空,没有设置
修改前先备份一下
|
01
|
[doubles@localhost ~]$ cp /etc/profile /etc/profile-backup |
在/etc/profile最下面增加一行如下
|
01
02
03
04
05
|
[doubles@localhost ~]$ sudo vim /etc/profile# ----------------------------export TMOUT=900# ----------------------------# 900就是15分钟,将以上900修改为0就是设置不超时 |
接下来,source一下,让配置立即生效
|
01
02
|
[doubles@localhost ~]$ source /etc/profile[doubles@localhost ~]$ |
测试:
配置完之后,不动终端,过了15分钟之后自动退出如下:
|
01
02
03
04
05
06
07
08
09
|
[doubles@localhost ~]$ echo $TMOUT[doubles@localhost ~]$ sudo vim /etc/profile[doubles@localhost ~]$ source /etc/profile[doubles@localhost ~]$ timed out waiting for input: auto-logoutConnection 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文件来实现。
这两个文件选择其中一个在末尾加入如下一行,具体操作如下:
|
01
02
03
04
05
|
[doubles@localhost ~]$ pwd/home/doubles[doubles@localhost ~]$ vim .bash_profileexport TMOUT=900[doubles@localhost ~]$ source .bash_profile |
测试结果如下:
|
01
02
03
04
05
06
|
[doubles@localhost ~]$ timed out waiting for input: auto-logoutConnection 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我们同样也可以实现超时自动登出功能,具体如下:
|
01
|
[doubles@localhost ~]$ sudo vim /etc/ssh/sshd_config |
找到这两行:
|
01
02
|
#ClientAliveInterval 0#ClientAliveCountMax 3 |
修改如下:
|
01
02
|
ClientAliveInterval 300ClientAliveCountMax 2 |
第一行表示每300秒检测一次,默认为0表示不发送alive检测
第二行表示检测到2次(即2*300=600秒,即10分钟)不活动就断开连接。
上述配置,对除了root之外的用户都生效。
保存退出,重启服务:
|
01
|
[doubles@localhost ~]$ sudo systemctl restart sshd |
关于这个配置,小编这里测试一直没有生效,不知道为什么,用户一直没有被踢下线。。。。。。
从坑里爬出来的总结:
(启发文:https://bugs.launchpad.net/ubuntu/+source/openssh/+bug/296920)
引用原文的一句话:To make it work ClientAliveCountMax should to be 0
所以,以上配置全部忘掉,接下来我们重新弄:
|
01
02
03
|
[doubles@localhost ~]$ sudo vim /etc/ssh/sshd_configClientAliveInterval 300ClientAliveCountMax 0 # 这里必须是0 |
保存退出,重启服务:
|
01
|
[doubles@localhost ~]$ sudo systemctl restart sshd |
接下来,我们要退出登录,让整个shell连接都断开,下次再重新进行ssh连接的时候,新的配置才会生效,否则你应用的还是上一次的配置。
一定要断开连接
一定要断开连接
一定要断开连接
重要事情说三遍,
重点1:ClientAliveCountMax 0(必须是0)
重点2:必须退出整个ssh连接,重新登录,配置才会生效。
6.5.2.2、个人不超时配置
在进行ssh连接的时候,加上参数:
法一:
|
01
02
03
04
05
06
|
[dd@localhost doubles]$ ssh -o ConnectTimeout=3 <a href="mailto:dd1@192.168.188.129">dd1@192.168.188.129</a>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]$ |
法二:
|
01
02
03
04
05
|
[dd@localhost doubles]$ ssh -o ServerAliveInterval=5 -o ServerAliveCountMax=0 <a href="mailto:dd1@192.168.188.129">dd1@192.168.188.129</a>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最后一行追加:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
|
[root@localhost ~]# vim /etc/profilehistoryUSER=`whoami`USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`if [ "$USER_IP" = "" ]; thenUSER_IP=`hostname`fiif [ ! -d /var/log/history ]; thenmkdir /var/log/historychmod 777 /var/log/historyfiif [ ! -d /var/log/history/${LOGNAME} ]; thenmkdir /var/log/history/${LOGNAME}chmod 300 /var/log/history/${LOGNAME}fiexport HISTSIZE=4096DT=`date +"%Y%m%d_%H:%M:%S"`export HISTFILE=<a>/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT</a>chmod 600 /var/log/history/${LOGNAME}/*history* 2>/dev/null[root@localhost ~]# |
Source让配置生效
|
01
|
[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字段
|
01
02
03
|
[root@localhost ~]# cat /etc/ssh/sshd_config |grep -i banner# no default banner path#Banner none |
发现Banner是none,没有设置Banner,ssh连接是没有信息显示的,
查看/etc/motd 文件内容,该处内容将作为banner信息显示给登录用户
|
01
02
|
[root@localhost ~]# cat /etc/motd [root@localhost ~]# |
发现设置都是空的,那么ssh连接信息将如下:
通过xshell连接也是这样:
没有显示什么有用的信息,所以可以不用屏蔽,下面直接略过。
6.7.2、屏蔽
如果有设置,那么屏蔽只需要Banner改为none即可。
操作前先备份
|
01
02
03
04
05
|
[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_configBanner none[root@localhost ~]# vim /etc/motd |
6.7.3、自定义Banner信息
参考:https://blog.csdn.net/sdb5858874/article/details/80525992
新建Banner文件ssh_banner
|
01
02
|
[root@localhost doubles]# vim /etc/ssh_bannerAuthorized only. All activity will be monitored and reported |
将该文件归为bin用户和属组
|
01
|
[root@localhost doubles]# chown bin:bin /etc/ssh_banner |
设置权限为600
|
01
|
[root@localhost doubles]# chmod 644 /etc/ssh_banner |
编辑登陆后的欢迎信息
|
01
02
|
[root@localhost doubles]# vim /etc/motdlogin success. All activity will be monitored and reported |
修改ssh配置
|
01
02
|
[root@localhost doubles]# vim /etc/ssh/sshd_configBanner /etc/ssh_banner |
重启服务
|
01
|
[root@localhost doubles]# systemctl restart sshd |
测试:
在另一台机发起ssh登录请求:
终端登录也是一样:
Banner信息设置完毕。
7、为grub设置密码
可以为linux引导器grub设置密码,防止别人通过grub引导进入单用户模式进行非法操作。(当然此项不是必须,因为当别人能接触到你的grub的时候,也就说明你的机器已经被别人掌握了,此刻服务器已经没有安全性可言了。)
方法一:命令设置(推荐)
查看系统默认密码:
|
01
02
|
[root@localhost doubles]# cat /etc/grub2.cfg | grep passwordpassword_pbkdf2 root ${GRUB2_PASSWORD} |
首先查看grub登录用户名:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
|
[root@localhost doubles]# cat /etc/grub.d/01_users #!/bin/sh -ecat << EOFif [ -f ${prefix}/user.cfg ]; thensource ${prefix}/user.cfgif [ -n "${GRUB2_PASSWORD}" ]; thenset superusers="root"export superuserspassword_pbkdf2 root ${GRUB2_PASSWORD}fifiEOF[root@localhost doubles]# |
通过上面发现用户名是root,接下来通过grub2-setpassword命令修改密码:
|
01
02
03
04
|
[root@localhost doubles]# grub2-setpassword Enter password: Confirm password: [root@localhost doubles]# |
改完密码重启:
|
01
|
[root@localhost doubles]# init 6 |
在选择内核的时候,按e,如下图:
此时它会提示你输入用户名和密码:
输入完用户名和密码之后,就进入了
在这里你就可以修改root密码的,慎重。。。
注意:以上环境是centos7,7以下的系统环境略有所不同。这里不建议按照网上说的,通过修改/etc/grub2.cfg或者/etc/grub.d/00_header文件来明文指定密码。
方法二:明文密码
操作前,先备份一下文件
|
01
|
[root@localhost ~]# cp /etc/grub2.cfg /etc/grub2.cfg_backup |
先查看之前是否有设置密码:
|
01
|
[root@localhost ~]# cat /etc/grub2.cfg | grep password |
在/etc/grub.d/01_users文件中指定超级用户,其中root为超级用户的用户名,PassRoot+123为超级用户root的密码,清空该文件并添加以下几行。(用户名和密码按实际情况设置)
|
01
02
03
04
05
06
|
[root@localhost ~]# cp /etc/grub.d/01_users /etc/grub.d/01_users_backup[root@localhost ~]# vim /etc/grub.d/01_userscat << EOFset superusers="root"password root DoublesRoot!!123EOF |
我把之前的注释了,重新添加的,如下:
重新编译配置文件:
|
01
02
03
04
05
06
07
08
|
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfgGenerating grub configuration file ...Found linux image: /boot/vmlinuz-3.10.0-514.el7.x86_64Found initrd image: /boot/initramfs-3.10.0-514.el7.x86_64.imgFound linux image: /boot/vmlinuz-0-rescue-ea399cee8fa94b1d9901ffd9d37bf7c6Found initrd image: /boot/initramfs-0-rescue-ea399cee8fa94b1d9901ffd9d37bf7c6.imgdone[root@localhost ~]# |
此时重新查看配置文件,发现多了密码,而且这个密码是明文的,不安全。
|
01
02
03
|
[root@localhost ~]# cat /etc/grub2.cfg |grep passwordpassword root DoublesRoot!!123[root@localhost ~]# |
此时,grub密码设置成功,重启即可生效。
方法三:密文密码
方法二是明文密码,在/etc/grub2.cfg就可以看到,很不安全,接下来我们设置密文密码。
使用grub2-mkpasswd-pbkdf2命令创建密文
|
01
02
03
04
05
|
[root@localhost ~]# grub2-mkpasswd-pbkdf2Enter password: Reenter password: PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.94A2F8EEA383CA6DDC6B432E9878FD12A02BF114A9B13FEAE0D2E834ADFF4B0A791DD1FDFF7A21E9CA3E277D567CDC12E2E99AEE7EF83E0D52B534B740B2117A.729B52B7BA281FF693EA3EA02FC7C22275A17DEEDF994BFAEC4B8ECC5046FC86FCDAB7B68D33DAC3A7419AA8C32B6F9AFE901BEBB4F4DFABC6213BE03FC1D711[root@localhost ~]# |
上面会输出一段密文,我们把它复制到/etc/grub.d/01_user里面,如下:
|
01
02
03
04
05
06
|
[root@localhost ~]# vim /etc/grub.d/01_userscat << EOFset superusers="root"password_pbkdf2 rootPBKDF2 hash of your password is grub.pbkdf2.sha512.10000.94A2F8EEA383CA6DDC6B432E9878FD12A02BF114A9B13FEAE0D2E834ADFF4B0A791DD1FDFF7A21E9CA3E277D567CDC12E2E99AEE7EF83E0D52B534B740B2117A.729B52B7BA281FF693EA3EA02FC7C22275A17DEEDF994BFAEC4B8ECC5046FC86FCDAB7B68D33DAC3A7419AA8C32B6F9AFE901BEBB4F4DFABC6213BE03FC1D711EOF |
最后:重新编译生成grub2.cfg文件
|
01
02
03
04
05
06
07
08
|
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg Generating grub configuration file ...Found linux image: /boot/vmlinuz-3.10.0-514.el7.x86_64Found initrd image: /boot/initramfs-3.10.0-514.el7.x86_64.imgFound linux image: /boot/vmlinuz-0-rescue-ea399cee8fa94b1d9901ffd9d37bf7c6Found initrd image: /boot/initramfs-0-rescue-ea399cee8fa94b1d9901ffd9d37bf7c6.imgdone[root@localhost ~]# |
检查/etc/grub2.cfg,发现多了一段密文
|
01
02
03
04
|
[root@localhost ~]# cat /etc/grub2.cfg | grep passwordpassword_pbkdf2 rootPBKDF2 hash of your password is grub.pbkdf2.sha512.10000.94A2F8EEA383CA6DDC6B432E9878FD12A02BF114A9B13FEAE0D2E834ADFF4B0A791DD1FDFF7A21E9CA3E277D567CDC12E2E99AEE7EF83E0D52B534B740B2117A.729B52B7BA281FF693EA3EA02FC7C22275A17DEEDF994BFAEC4B8ECC5046FC86FCDAB7B68D33DAC3A7419AA8C32B6F9AFE901BEBB4F4DFABC6213BE03FC1D711[root@localhost ~]# |
密钥设置成功,重启即生效。























