Linux 系统安全及应用(账号安全和引导登录控制)(1)

简介: 1 账号安全基本措施1.1 系统账号清理1.1.1 将非登录用户的Shell设为/sbin/nologin在我们使用Linux系统时,除了用户创建的账号之外,还会产生系统或程序安装过程中产生的许多其他账号,除了超级用户root外,其他账号都是用来维护系统运作的,一般不允许登录,常见的非登录用户有bin、adm、mail、lp、nobody、ftp等。查看/etc/passwd 文件,可以看到多个程序用户。

1 账号安全基本措施


1.1 系统账号清理

1.1.1 将非登录用户的Shell设为/sbin/nologin

在我们使用Linux系统时,除了用户创建的账号之外,还会产生系统或程序安装过程中产生的许多其他账号,除了超级用户root外,其他账号都是用来维护系统运作的,一般不允许登录,常见的非登录用户有bin、adm、mail、lp、nobody、ftp等。

查看/etc/passwd 文件,可以看到多个程序用户。

网络异常,图片无法展示
|


使用usermod命令修改登录shell:

usermod -s /sbin/nologin 用户名
复制代码


示例:

将user02的登录shell修改为/sbin/nologin,修改后user02无法登录系统。

[root@localhost ~]# grep "user02" /etc/passwd    //查看用户user02的登录shell,为bash
 user02:x:2001:2001::/tmp/test:/bin/bash
 [root@localhost ~]# usermod -s /sbin/nologin user02   //将user02的登录shell修改为/sbin/nologin
 [root@localhost ~]# grep "user02" /etc/passwd 
 user02:x:2001:2001::/tmp/test:/sbin/nologin
复制代码


网络异常,图片无法展示
|


1.1.2 锁定长期不使用的账号

命令:

方法一:
 passwd -l 用户名      //锁定用户
 passwd -u 用户名      //解锁用户
 方法二:
 usermod -L 用户名     //锁定用户
 usermod -U 用户名     //解锁用户
复制代码


示例:

1)passwd -l 用户名,锁定用户。锁定后用户无法登录。

[root@localhost ~]# passwd -l user03   //锁定用户user03的密码
 锁定用户 user03 的密码 。
 passwd: 操作成功
 [root@localhost ~]# passwd -S user03    //查看user03状态
 user03 LK 2022-03-05 0 99999 7 -1 (密码已被锁定。)
 [root@localhost ~]# passwd -u user03    //解锁用户user03的密码
 解锁用户 user03 的密码。
 passwd: 操作成功
复制代码


网络异常,图片无法展示
|


2)usermod -L 用户名,锁定用户。锁定后用户无法登录。

[root@localhost ~]# usermod -L user04   //锁定用户user04
 [root@localhost ~]# passwd -S user04    //查看用户user04的状态
 user04 LK 2022-03-05 0 99999 7 -1 (密码已被锁定。)
 [root@localhost ~]# usermod -U user04    //解锁用户user04
 [root@localhost ~]# passwd -S user04     //查看用户user04的状态
 user04 PS 2022-03-05 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
复制代码


网络异常,图片无法展示
|


1.1.3 删除无用的账号

命令:

userdel 用户名        //删除用户,但不删除用户的家目录
 userdel -r 用户名     //删除用户的同时,删除他的家目录
 #加上-r才能删除用户的家目录。如果不删除家目录,那么用户被删除后,他的家目录会变成无主文件,文件的属主和属组位显示的是原主人的UID和GID。
复制代码


命令:

1)userdel 用户名。删除用户,但不删除用户的家目录。

用户被删除后,他的家目录会变成无主文件,文件的属主和属组位显示的是原主人的UID和GID。

[root@localhost ~]# userdel user05
 [root@localhost ~]# ls /home
 alice  apache  jack   user01  user04  user07  zhangsan
 Amy    helen   nancy  user03  user05  yuji
 [root@localhost ~]# ls -dl /home/user05
 drwx------. 3 2004 2004 78 2月  21 20:29 /home/user05
复制代码


网络异常,图片无法展示
|


2)userdel -r 用户名。删除用户的同时删除他的家目录。

[root@localhost ~]# ls /home
 alice  apache  jack   user01  user04  user07  yuji
 Amy    helen   nancy  user03  user05  user08  zhangsan
 [root@localhost ~]# userdel -r user07  //删除用户的同时删除家目录
 [root@localhost ~]# ls /home
 alice  apache  jack   user01  user04  user08  zhangsan
 Amy    helen   nancy  user03  user05  yuji
复制代码


网络异常,图片无法展示
|


1.1.4 锁定账号文件passwd、shadow

chattr命令改变文件属性,lsattr命令查看文件底层属性。

命令格式:

chattr [-RV]  [+/-/=<属性>]  文件或目录   //改变文件属性
 lsattr  文件或目录     //查看文件底层属性
复制代码


选项说明:

-R:递归处理,将指定目录下的所有文件及子目录一并处理。

-V:显示指令执行过程。

属性:

属性 作用
a(append) 只允许对文件进行追加操作(适用于日志文件)
A 不允许更新文件的访问时间
c (compressed) 启用这个属性时,文件在磁盘上会自动压缩
d (dump) 不能使用dump命令备份文件
D 设置了目录的D属性时,更改会同步保存在磁盘上
e (extent for mat) 它表明,该文件使用磁盘上的块的映射扩散
i (immutable) 在文件上启用这个属性时,我们不能更改、重命名或删除这个文件
j (journaling) 设置了这个属性时,文件的数据首先保存在日志中,然后再写入文件
S (synchronous) 设置了这个属性时,变更或更改同步保存到磁盘上


常用属性:

chattr +a 文件或目录     //只允许对文件进行追加操作(适用于日志文件)
 chattr +i 文件或目录     //不能更改、重命名或删除这个文件
复制代码


示例:

使用”chattr +i“为文件增加i属性,之后不能更改、重命名或删除这个文件。

[root@localhost ~]# chattr +i /etc/passwd /etc/shadow   //为两个文件增加i属性
 [root@localhost ~]# lsattr /etc/passwd /etc/shadow      //查看文件底层属性
 ----i----------- /etc/passwd
 ----i----------- /etc/shadow
 [root@localhost ~]# useradd mike     //尝试创建用户,创建失败       
 useradd:无法打开 /etc/passwd
 [root@localhost ~]# chattr -i /etc/passwd /etc/shadow    //去掉两个文件的i属性
 [root@localhost ~]# lsattr /etc/passwd /etc/shadow
 ---------------- /etc/passwd
 ---------------- /etc/shadow
复制代码


示例:

网络异常,图片无法展示
|


网络异常,图片无法展示
|


1.2 密码安全控制——设置密码规则

一般通过设置密码规则来控制密码安全,主要设置以下两点:

  • 设置密码有效期
  • 要求用户下次登录时修改密码

1.2.1 对于新建用户——修改/etc/login.defs文件

对于新建用户,可以修改/etc/login.defs文件里的内容来设置密码规则。

查看/etc/login.defs文件:


网络异常,图片无法展示
|


参数说明:

PASS_MAX_DAYS #密码最大有效期 PASS_MIN_DAYS #两次修改密码的最小间隔时间 PASS_MIN_LEN #密码最小长度,对于root无效 PASS_WARN_AGE #密码过期前多少天开始提醒

示例:

修改/etc/login.defs文件,将密码最大有效期修改为30天。

[root@localhost ~]# vim /etc/login.defs    //修改配置文件
 ----------------------------
 PASS_MAX_DAYS   30    //将密码最大有效期修改为30天
 PASS_MIN_DAYS   0
 PASS_MIN_LEN    5
 PASS_WARN_AGE   7
 [root@localhost ~]# useradd lucy    //创建新用户lucy
 [root@localhost ~]# grep "lucy" /etc/shadow
 lucy:!!:19056:0:30:7:::         //密码有效期默认30天
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


1.2.1 对于现有用户——chage命令

命令格式:

chage  [选项]  用户名
复制代码


选项:

-m:密码可更改的最小天数。为0时代表任何时候都可以更改密码。

-M:密码保持有效的最大天数。

-W:用户密码到期前,提前收到警告信息的天数。

-E:帐号到期的日期。过了这天,此帐号将不可用。

-d:设置”最后一次修改密码的日期“。设置为 0 有特殊意思,表示用户应该在下次登录系统时更改密码。

-i:停滞时期。允许密码过期后多少天内仍能使用,如果一个密码已过期这些天,那么此帐号将不可用。

-l:例出当前的设置。

示例:

1)chage -M ,设置用户密码的有效期。

[root@localhost ~]# chage -M 50 zhangsan      //将zhangsan用户的密码有效期设置为50天
 [root@localhost ~]# grep zhangsan /etc/shadow
 zhangsan:!!:19030:0:50:7:::
 [root@localhost ~]# chage -l zhangsan        //查看当前设置
 最近一次密码修改时间                                    :2月 07, 2022
 密码过期时间                                    :3月 29, 2022
 密码失效时间                                    :从不
 帐户过期时间                                            :从不
 两次改变密码之间相距的最小天数          :0
 两次改变密码之间相距的最大天数          :50
 在密码过期之前警告的天数        :7
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


2)chage -d 0,强制要求用户下次登录时必须修改密码。

[root@localhost ~]# grep mike /etc/shadow
 mike:!!:19056:0:30:7:::
 [root@localhost ~]# chage -d 0 mike           //强制要求用户下次登录时修改密码
 [root@localhost ~]# grep mike /etc/shadow
 mike:!!:0:0:30:7:::
 [root@localhost ~]# chage -l mike
 最近一次密码修改时间                                    :密码必须更改
 密码过期时间                                    :密码必须更改
 密码失效时间                                    :密码必须更改
 帐户过期时间                                            :从不
 两次改变密码之间相距的最小天数          :0
 两次改变密码之间相距的最大天数          :30
 在密码过期之前警告的天数        :7
复制代码


网络异常,图片无法展示
|


网络异常,图片无法展示
|


网络异常,图片无法展示
|


1.3 命令历史限制

Shell 环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在 的风险。只要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在 命令行输入明文的密码,则无意之中服务器的安全壁垒又多了一个缺口。 Bash 终端环境中,历史命令的记录条数由变量 HISTSIZE 控制,默认为 1000 条。通过修改/etc/profile 文件中的 HISTSIZE 变量值,可以影响系统中的所有用户。例如,可以设 置最多只记录 200 条历史命令。

一般使用两种方式控制命令历史:

  • 减少记录的命令条数。
  • 注销时自动清空命令历史,或登录时自动清空命令历史。

家目录下有 .bash_history 文件,用于记录历史命令。清空该文件即清空了命令历史。

命令:

1. 临时修改历史命令条数。只针对当前用户,退出登录后失效。
 [root@localhost ~]# export HISTSIZE=200
 2. 永久修改历史命令条数。编辑配置文件,设置历史命令条数。
 [root@localhost ~]# vim /etc/profile        //设置历史命令条数记录为200条
     HISTSIZE=200 
 [root@localhost ~]# source /etc/profile     //刷新配置文件,使文件立即生效
 3. 注销时自动清空历史命令 
 [root@localhost ~]# vim ~/.bash_logout
 echo "" > ~/.bash_history
 4. 登录时自动清空历史命令
 [root@localhost ~]# vim ~/.bashrc
 echo "" > ~/.bash_history
复制代码


示例:

1)临时修改历史命令条数。注销后失效。

网络异常,图片无法展示
|


2)永久修改历史命令条数。编辑/etc/profile 文件,设置命令记录为200条。

网络异常,图片无法展示
|


网络异常,图片无法展示
|


3)编辑 ~/.bash_logout 文件,在注销时清空命令历史。

网络异常,图片无法展示
|


4)编辑 ~/.bashrc 文件,在登录时清空命令历史。

网络异常,图片无法展示
|


注:

在注销时清空命令历史,或在登录时清空命令历史,设置其中一种即可。

1.4 终端自动注销

编辑/etc/profile 文件,设置闲置600秒后自动注销。

[root@localhost ~]# vi /etc/profile
 .................................
 export  TMOUT=600
复制代码


网络异常,图片无法展示
|


相关文章
|
1月前
|
存储 缓存 固态存储
深度解析linux主机:从应用到硬盘,玩转系统I/O性能优化攻略!
深度解析linux主机:从应用到硬盘,玩转系统I/O性能优化攻略!
|
2月前
|
Linux
linux查看应用对应的端口
linux查看应用对应的端口
18 0
|
2月前
|
网络协议 安全 Linux
linux系统安全及应用——端口扫描
linux系统安全及应用——端口扫描
38 0
|
26天前
|
Cloud Native Linux 网络虚拟化
深入理解Linux veth虚拟网络设备:原理、应用与在容器化架构中的重要性
在Linux网络虚拟化领域,虚拟以太网设备(veth)扮演着至关重要的角色🌐。veth是一种特殊类型的网络设备,它在Linux内核中以成对的形式存在,允许两个网络命名空间之间的通信🔗。这篇文章将从多个维度深入分析veth的概念、作用、重要性,以及在容器和云原生环境中的应用📚。
深入理解Linux veth虚拟网络设备:原理、应用与在容器化架构中的重要性
|
26天前
|
Linux 网络安全
linux免密登录报错 Bad owner or permissions on /etc/ssh/ssh_config.d/05-redhat.conf
linux免密登录报错 Bad owner or permissions on /etc/ssh/ssh_config.d/05-redhat.conf
27 1
|
7天前
|
监控 安全 Linux
【专栏】害怕 Linux SSH 不安全?这几个小妙招安排上!
【4月更文挑战第28天】在数字化时代,Linux SSH 的安全对于远程管理至关重要。增强 SSH 安全包括:使用强密码,调整 SSH 配置文件,尤其是端口号和认证方式;采用密钥认证代替密码;限制登录用户,禁止密码登录;使用防火墙限制访问;定期更新系统和软件。此外,通过日志监控、入侵检测系统及及时应对攻击来提升安全监控。保持对安全知识的学习和更新,结合最佳实践,是保障 SSH 安全的关键。记得安全是个持续过程,时刻保持警惕!
|
4天前
|
Linux Shell 调度
【Linux系列】fork( )函数原理与应用详解——了解【父子进程及其特性】(代码演示,画图帮助理解,思维导图,精简)(11)
【Linux系列】fork( )函数原理与应用详解——了解【父子进程及其特性】(代码演示,画图帮助理解,思维导图,精简)(11)
|
6天前
|
存储 缓存 Linux
linux几种典型应用对系统资源使用的特点
【4月更文挑战第22天】几种典型应用对系统资源使用的特点
14 0
|
6天前
|
Linux Shell 应用服务中间件
LINUX的应用与实践
LINUX的应用与实践
13 0
|
12天前
|
安全 Unix Linux
基于MobaXterm工具的Linux远程SSH登录
本文介绍了如何使用 MobaXterm 进行 Linux 远程登录。首先,从官方网站下载并安装 MobaXterm。启动后,创建新的远程会话,选择 SSH 类型,输入服务器 IP、主机名和端口。接着,提供用户名和密码进行连接。成功后,即可使用远程终端执行命令。此外,文章还提到了其他常用的 Linux 远程登录工具,如 PuTTY、OpenSSH、SecureCRT 和 Xshell,强调了选择工具时应考虑个人偏好和安全需求。