Bootstrap

安全及应用(更新)

一、账号安全

1.1系统帐号清理

#查看/sbin/nologin结尾的文件并统计
[root@root@localhost ~]# grep '/sbin/nologin$' /etc/passwd |wc -l
40

#查看apache登录的shell
[root@root@localhost ~]# grep 'apache' /etc/passwd
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

#改变apache的登录的shell
[root@root@localhost ~]# usermod -s /sbin/bash apache

#查看更改结果
[root@root@localhost ~]# grep '/sbin/bash$' /etc/passwd
apache:x:48:48:Apache:/usr/share/httpd:/sbin/bash

1.1.1锁定账户和解锁账户

1.usermod -Lusermod -U

#锁定xiewei账号
[root@root@localhost ~]# usermod -L xiewei

#查看谢伟账号
[root@root@localhost ~]# passwd -S xiewei
xiewei LK 1969-12-30 0 99999 7 -1 (Password locked.)

#解锁谢伟账号
[root@root@localhost ~]# usermod -U xiewei

#查看谢伟账号状态
[root@root@localhost ~]# passwd -S xiewei
xiewei PS 1969-12-30 0 99999 7 -1 (Password set, SHA512 crypt.)

2.passwd -lpasswd -u

#先查看状态
[root@root@localhost ~]# passwd -S xiewei
xiewei PS 1969-12-30 0 99999 7 -1 (Password set, SHA512 crypt.)

#锁账户
[root@root@localhost ~]# passwd -l xiewei
Locking password for user xiewei.
passwd: Success

#查看账户
[root@root@localhost ~]# passwd -S xiewei
xiewei LK 1969-12-30 0 99999 7 -1 (Password locked.)

#解锁账户
[root@root@localhost ~]# passwd -u xiewei
Unlocking password for user xiewei.
passwd: Success

#查看账户状态
[root@root@localhost ~]# passwd -S xiewei
xiewei PS 1969-12-30 0 99999 7 -1 (Password set, SHA512 crypt.)

3.usermodpasswd 两个锁账户的命令比较

①passwd -l

[root@root@localhost ~]# passwd -l xiewei
Locking password for user xiewei.
passwd: Success

#查看passwd -l结果
[root@root@localhost ~]# grep 'xiewei' /etc/passwd
xiewei:x:1000:1000:xiewei:/home/xiewei:/bin/bash
xiewei1:x:1005:1005::/home/xiewei1:/bin/bash
[root@root@localhost ~]# grep 'xiewei' /etc/shadow
xiewei:!!$6$cE/PcSfzNmXqILGt$3x7ix5gmYqeqwkvEuqVq6cllhN3sxZco4Ez1L5E6i0DjssRC9gBp/Ds/0YqOgzYLJdsdvlhAAaVY5EE2h1BAy.::0:99999:7:::
xiewei1:$6$Y0MLY/PCRfQ/BZUN$rjGc5tm9njGip2L5zAi8LYAyz5/pEgQzB6kr/0w41uhA3L1dpS.xsGrUtmJV05P7mnG816l/lZ1OcDkRKONtf0:19894:0:99999:7:::

②usermod -l

[root@root@localhost ~]# usermod -L xiewei
[root@root@localhost ~]# ls



[root@root@localhost ~]# grep 'xiewei' /etc/shadow
xiewei:!$6$cE/PcSfzNmXqILGt$3x7ix5gmYqeqwkvEuqVq6cllhN3sxZco4Ez1L5E6i0DjssRC9gBp/Ds/0YqOgzYLJdsdvlhAAaVY5EE2h1BAy.::0:99999:7:::
xiewei1:$6$Y0MLY/PCRfQ/BZUN$rjGc5tm9njGip2L5zAi8LYAyz5/pEgQzB6kr/0w41uhA3L1dpS.xsGrUtmJV05P7mnG816l/lZ1OcDkRKONtf0:19894:0:99999:7:::
[root@root@localhost ~]# grep 'xiewei' /etc/passwd
xiewei:x:1000:1000:xiewei:/home/xiewei:/bin/bash
xiewei1:x:1005:1005::/home/xiewei1:/bin/bash

         通过以上不难发现,/etcpasswd现实的结果都是一样的,在信息描述之间出现了一个xiewei,但是再shadow文件中。我们也不难看出,使用usermod命令后,passwd密码位前面只有一个“ !”号,而使用passwd命令后,passwd文件中密码位前面有两个"!!"。

        但是两者锁定的严密性和效果基本相同。而且两者的解锁命令不可互调。

 1.1.2删除账号

userdel -r 用户名

#查看并过滤有哪些xiewei账号
[root@root@localhost ~]# grep 'xiewei' /etc/passwd
xiewei:x:1000:1000:xiewei:/home/xiewei:/bin/bash
xiewei1:x:1005:1005::/home/xiewei1:/bin/bash
xiewei2:x:1006:1006::/home/xiewei2:/bin/bash
xiewei3:x:1007:1007::/home/xiewei3:/bin/bash
xiewei4:x:1008:1008::/home/xiewei4:/bin/bash
xiewei5:x:1009:1009::/home/xiewei5:/bin/bash
xiewei6:x:1010:1010::/home/xiewei6:/bin/bash
xiewei7:x:1011:1011::/home/xiewei7:/bin/bash
xiewei8:x:1012:1012::/home/xiewei8:/bin/bash
xiewei9:x:1013:1013::/home/xiewei9:/bin/bash
xiewei10:x:1014:1014::/home/xiewei10:/bin/bash
xiewei11:x:1016:1016::/xiewei11/:/bin/bash
xiewei12:x:1017:1017::/xiewei12:/bin/bash
xiewei13:x:1018:1018::/xiewei13:/bin/bash

#删除账号
[root@root@localhost ~]# userdel -r xiewei13

#查看并过滤有哪些xiewei账号
[root@root@localhost ~]# grep 'xiewei' /etc/passwd
xiewei:x:1000:1000:xiewei:/home/xiewei:/bin/bash
xiewei1:x:1005:1005::/home/xiewei1:/bin/bash
xiewei2:x:1006:1006::/home/xiewei2:/bin/bash
xiewei3:x:1007:1007::/home/xiewei3:/bin/bash
xiewei4:x:1008:1008::/home/xiewei4:/bin/bash
xiewei5:x:1009:1009::/home/xiewei5:/bin/bash
xiewei6:x:1010:1010::/home/xiewei6:/bin/bash
xiewei7:x:1011:1011::/home/xiewei7:/bin/bash
xiewei8:x:1012:1012::/home/xiewei8:/bin/bash
xiewei9:x:1013:1013::/home/xiewei9:/bin/bash
xiewei10:x:1014:1014::/home/xiewei10:/bin/bash
xiewei11:x:1016:1016::/xiewei11/:/bin/bash
xiewei12:x:1017:1017::/xiewei12:/bin/bash

 注意: 加-r选项和不加-r选项是有区别的

  • userdel 用户名:仅删除用户账户,保留用户的所有文件。
  • userdel -r 用户名:删除用户账户,并删除用户的主目录和邮件目录,连同所有内容一起删除。

且要注意用户在删除时候没有 正在运行的进行,否则可能会操作失败

1.2密码安全控制 

1.2.1修改密码配置文件

vim /etc/login.defs 

 

PASS_MAX_DAYS 99999      #设置密码有效期99999天。   默认99999天

PASS_MIN_DAYS   0            #表示自上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值是 0

PASS_MIN_LEN    5                #密码最小长度,对于root无效   18位包含密码复杂性 大写 、小写、字符、数字

注解:指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。

PASS_WARN_AGE   7            #指定在密码到期前多少天,系统就开始通过用户密码即将到期,默认为 7 天。

 1.2.2更改密码

[xiewei@root@localhost ~]$ passwd
Changing password for user xiewei.
Changing password for xiewei.
(current) UNIX password: 
New password: 
BAD PASSWORD: The password is too similar to the old one

①:不能太相似,这里设置的新密码是1234567,它则提示太相似(原密码123456)

New password: 
BAD PASSWORD: The password is shorter than 8 characters

 ②:不能低于8位(root不受限制),这里设置了abcde

[xiewei@root@localhost ~]$ passwd
Changing password for user xiewei.
Changing password for xiewei.
(current) UNIX password: 
passwd: Authentication token manipulation error

③:密码不能为空

[xiewei@root@localhost ~]$ passwd
Changing password for user xiewei.
Changing password for xiewei.
(current) UNIX password: 
passwd: Authentication token manipulation error

④:密码不能设置太简单

1.2.3 查看用户密码有效期

        用于查看指定用户账户的密码有效期信息。它显示了与用户密码相关的各种设置,包括密码上次更改的日期、密码过期的时间、密码最小/最大有效期等。

chage -l 用户名

[xiewei@root@localhost ~]$ chage -l xiewei
Last password change					: never
Password expires					: never
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7

1.Last password change

  • 说明:最后一次更改密码的日期。
  • never
  • 解释:密码从未更改过。这意味着自账户创建以来,用户从未修改过密码。

2.Password expires

  • 说明:密码过期的日期。
  • never
  • 解释:密码永不过期。用户可以一直使用当前密码,不需要定期更改。

3.Password inactive

  • 说明:密码失效的日期。
  • never
  • 解释:密码永不失效。即使用户长时间不登录,密码也不会被自动锁定。

4.Account expires

  • 说明:账户过期的日期。
  • never
  • 解释:账户永不过期。用户可以一直使用这个账户,不会因为过期而被锁定或禁用。

5.Minimum number of days between password change

  • 说明:两次密码更改之间的最小天数。
  • 0
  • 解释:用户可以随时更改密码,没有任何限制。用户可以在同一天内多次修改密码。

6.Maximum number of days between password change

  • 说明:两次密码更改之间的最大天数。
  • 99999
  • 解释:用户可以长达 99999 天(约 273 年)不更改密码。实际上,这意味着密码永不过期,因为这一期限极长。

7.Number of days of warning before password expires

  • 说明:密码过期前警告用户的天数。
  • 7
  • 解释:如果设置了密码过期日期,系统会在密码过期前 7 天警告用户需要更改密码。然而,由于上述设置显示密码永不过期,因此这一警告不会实际触发。

 1.3历史命令

历史命令可能会有隐私,比如密码什么的,所以我们要管理好我们的历史命令

history  查看历史命令

1.3.1临时清理历史命令

[root@root@localhost ~]# history -c
[root@root@localhost ~]# history
   35  history

 重启后可恢复,或者使用history -r

        我们的历史命令会保存在一个文件中,history -c只能临时清理,重启后还会将该文件中的内容加载到history命令中。history -r这个命令,则是将该文件中内容重新都取到history中。 

简单点说

  • 在当前 shell 会话中,命令历史记录保存在内存中。可以使用 history 命令查看这些历史记录。
  • 使用 history -w 命令可以强制将当前内存中的历史记录写入 ~/.bash_history 文件。

         history 命令展示的是当前 shell 会话中的命令历史记录,包括内存中的未写入文件的记录以及从 ~/.bash_history 文件中读取的记录。严格来说,这些内容不是缓存,而是内存中的记录和磁盘文件的结合。

 

 history -c && history -w

则会将shell 会话中的命令历史记录,还有文件中的命令历史记录清除

 拓展

关于环境变量的读取顺序:
用户登录 ->> 加载~/.bash_profile --> bash_profile中配置了首先是使~/.bashrc生效。.bash_profile”文件中的命令将在该用户每次登录时被执行。.bashrc”文件中的命令会在每次加载“/bin/bash。

# 清除历史命令
vim ~/.bashrc
# 添加以下内容
echo '' > ~/.bash_history

在~/.bash_profile~/.bashrc 中添加以上内容,就会开机自动删除历史命令

我们可以将history -c && history -w这个命令加入到配置文件中,使其开机加载时候自动生效。我们还可以在/etc/skel/.bash_logout文件中添加下面这行rm -f $HOME/.bash_history 。这样,当用户每次注销时,.bash_history文件都会被删除.

;