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

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

2 用户切换和提权


2.1 用户切换——su命令

2.1.1 用户切换——su 命令介绍

su命令即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命令。

查看su操作记录:

系统安全日志/var/log/secure,是记录ssh登陆服务器的日志文件。

命令格式:

su [options...] [-] [user [args...]]
复制代码


切换用户的方式:

su UserName:非登录式切换,即不会读取目标用户的配置文件,不改变当前工作目录,即不完全切换。

su - UserName:登录式切换,会读取目标用户的配置文件,切换至自已的家目录,即完全切换。

即有 - 选项,切换用户身份更彻底;反之,只切换了一部分,这会导致某些命令运行出现问题或错误(例如无法使用 service 命令)。

密码验证:

  • root 切换到任意用户,不验证密码。
  • 普通用户切换到其他用户,需要验证目标用户的密码。

注意:

su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。

[root@localhost ~]# su nancy        //不加-,切换至nancy用户
 [nancy@localhost root]$ pwd         //不改变当前工作目录
 /root
 [nancy@localhost root]$ exit
 exit
 [root@localhost ~]# su - nancy      //加 - 切换至nancy用户
 上一次登录:一 3月  7 03:31:35 CST 2022pts/0 上
 [nancy@localhost ~]$ pwd           //会切换到自己的家目录
 /home/nancy
 [nancy@localhost ~]$ whoami        //确定当前用户
 nancy
复制代码


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


普通用户切换到其他用户,需要验证目标用户的密码。

[nancy@localhost ~]$ whoami
 nancy
 [nancy@localhost ~]$ su - yuji       
 密码:
 上一次登录:一 3月  7 03:41:41 CST 2022pts/0 上
复制代码


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


2.1.2 限制使用su命令的用户

su 命令的安全隐患

  • 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险。
  • 为了加强su 命令的使用控制,可借助于PAM认证模块,只允许极个别用户使用su 命令进行切换。

限制使用su命令的用户(通过修改/etc/pam.d/su 文件):

  • 将允许使用su命令的用户加入wheel组。
  • 启用pam_wheel认证模块。则只有wheel组内的用户可以使用su命令切换用户。

查看 /etc/pam.d/su 文件:

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


注意第二行和第六行:

  1. 以上两行现在是默认状态(即开启第二行,注释第六行),这种状态下是允许所有用户间使用su命令进行切换的。
  2. 两行都注释是允许所有用户都能使用su命令,但root使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码(pam rootok. so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码)。
  3. 如果开启第六行,表示只有root用户和wheel组内的用户才可以使用su命令。
  4. 如果注释第二行,开启第六行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令。

示例:

1)编辑 /etc/pam.d/su 文件,将第二行和第六行都开启,则只有root和wheel组内的用户才能使用 su 命令。

[root@localhost ~]# vim /etc/pam.d/su      //开启第二行和第六行
 .................................
 2 auth sufficient pam_ rootok.so
 6 auth required pam_ wheel.so use_ _uid
复制代码


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


2)nancy用户不在wheel组内,使用su命令时拒绝权限。

[nancy@localhost ~]$ whoami        //当前为nancy用户
 nancy
 [nancy@localhost ~]$ id nancy      //查看nancy用户,不在wheel组内 
 uid=1006(nancy) gid=1007(nancy) 组=1007(nancy)
 [nancy@localhost ~]$ su - yuji     //su命令拒绝权限
 密码:
 su: 拒绝权限
复制代码


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


3)将nancy用户加入wheel组内,则可以成功使用su 命令。

[root@localhost ~]# gpasswd -a nancy wheel   //将nancy加入wheel组内
 正在将用户“nancy”加入到“wheel”组中
 [root@localhost ~]# su - nancy
 上一次登录:一 3月  7 04:02:05 CST 2022pts/0 上
 [nancy@localhost ~]$ whoami
 nancy
 [nancy@localhost ~]$ su - yuji        //nancy成功使用su命令切换用户
 密码:
 上一次登录:一 3月  7 03:43:39 CST 2022pts/0 上
 最后一次失败的登录:一 3月  7 04:02:34 CST 2022pts/0 上
 最有一次成功登录后有 1 次失败的登录尝试。
复制代码


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


2.2 用户提权——sudo命令

2.2.1 sudo命令和/etc/sudoers配置文件

sudo 即superuser do,允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。在最早之前,一般用户管理系统的方式是利用su切换为超级用户。但是使用su的缺点之一在于必须要先告知超级用户的密码。

sudo于1980年前后推出,sudo使一般用户不需要知道超级用户的密码即可获得权限。首先超级用户将普通用户的名字、可以执行的特定命令、按照哪种用户或用户组的身份执行等信息,登记在特殊的文件中(通常是/etc/sudoers),即完成对该用户的授权(此时该用户称为“sudoer”);在一般用户需要取得特殊权限时,其可在命令前加上“sudo”,此时sudo将会询问该用户自己的密码(以确认终端机前的是该用户本人),回答后系统即会将该命令的进程以超级用户的权限运行。之后的一段时间内(默认为5分钟,可在/etc/sudoers自定义),使用sudo不需要再次输入密码。由于不需要超级用户的密码,部分Unix系统甚至利用sudo使一般用户取代超级用户作为管理帐号,例如Ubuntu、Mac OS X等。

查看sudo操作记录:

  • 需要启用 Default logfile 配置
  • 默认日志文件:/var/log/sudo.log

sudo特性:

  • sudo能够授权指定用户在指定主机上运行某些命令。如果未授权用户尝试使用 sudo,会提示联系管理员
  • sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器
  • sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票
  • sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,权限必须为0440。

使用visudo命令,可编辑配置文件/etc/sudoers:

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

字段说明:

#用户    登入主机 = (代表用户)     命令
 #user     host=(username)       command
   root       ALL=(ALL)          ALL
  %wheel      ALL=(ALL)         NOPASSWD:ALL
 #root表示允许哪个用户。%wheel表示wheel组。
 #第一个ALL表示通过哪些主机登入。
 #第二个ALL表示以哪个用户身份。
 #最后一个ALL表示允许运行哪些命令。
 #NOPASSWD表示使用sudo命令不需要验证密码。
 举例说明:
 1.nancy    ALL=(root)   /bin/mount
 #表示nancy用户通过任何主机登入系统后,可以以root的身份运行mount命令(命令前必须加sudo)。
 2.%wheel    ALL=(ALL)   ALL
 #表示wheel组内的成员通过任何主机登入系统后,可以以任何用户的身份运行所有命令(命令前必须加sudo)。
 字段填写说明:
 1.user:可以写用户名或UID。
 2.group:可以写组名或GID。
 3.host:可以写ip或hostname(IP地址或主机名)。
 4.command:
  command name  (命令)
  directory     (文件夹里的命令)
  sudoedit      (可以编辑sudoers这个文件,变相变成管理员)
  Cmnd_Alias    (命令别名)
 注:配置文件内支持使用通配符,例如"/sbin/*"表示/sbin/目录下的所有命令。
复制代码


sudo基本语法:

sudo  [-u username]  [command]     //-u:以哪个用户的身份运行命令
 sudo -V    //查看相关配置信息          
复制代码


示例:

1)允许 yuji 用户以任何用户的身份运行所有命令。

允许nancy用户以root用户的身份运行mount命令。

# 1.普通用户nancy不允许使用mount命令。
 [nancy@localhost ~]$ whoami
 nancy
 [nancy@localhost ~]$ mount /dev/sr0 /mnt
 mount: 只有 root 能执行该操作
 # 2.编辑配置文件,将yuji用户和nancy用户加入文件。
 [root@localhost ~]# visudo            //编辑配置文件/etc/sudoers
 ---------------------------
 yuji    ALL=(ALL)       ALL
 nancy   ALL=(root)      /bin/mount
 # 3.允许nancy用户以roo身份运行mount命令。
 [nancy@localhost ~]$ whoami
 nancy
 [nancy@localhost ~]$ sudo mount /dev/sr0 /mnt
 [sudo] nancy 的密码:
 mount: /dev/sr0 写保护,将以只读方式挂载
 # 4.yuji用户以root身份创建文件,文件属主是root。
 [yuji@localhost ~]$ whoami
 yuji
 [yuji@localhost ~]$ sudo touch 1.txt
 [sudo] yuji 的密码:
 [yuji@localhost ~]$ ll 1.txt
 -rw-r--r-- 1 root root 0 3月   7 16:52 1.txt
复制代码


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


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


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


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


2)将jack用户加入wheel后,之后可使用所有命令。

1.jack不在/etc/sudoers文件中,不允许使用sudo命令。
 [jack@localhost ~]$ sudo umount /mnt
 我们信任您已经从系统管理员那里了解了日常注意事项。
 总结起来无外乎这三点:
     #1) 尊重别人的隐私。
     #2) 输入前要先考虑(后果和风险)。
     #3) 权力越大,责任越大。
 [sudo] jack 的密码:
 jack 不在 sudoers 文件中。此事将被报告。
 2.将jack加入wheel组内。jack可以成功使用sudo命令。
 [root@localhost ~]# gpasswd -a jack wheel
 正在将用户“jack”加入到“wheel”组中
 [root@localhost ~]# su - jack
 上一次登录:一 3月  7 16:45:31 CST 2022pts/0 上
 [jack@localhost ~]$ whoami
 jack
 [jack@localhost ~]$ sudo umount /mnt
 [sudo] jack 的密码:
 [jack@localhost ~]$ 
复制代码


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


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


2.2.2 sudo别名

sudo别名有四种类型:

  • User_Alias(用户)
  • Runas_Alias(代表用户)
  • Host_Alias(登录主机)
  • Cmnd_Alias(命令)

示例:

创建用户别名MYUSERS=lucy,mike。允许这两个用户使用/sbin/下的所有命令,除了reboot、poweroff、init、rm这四个命令。 (! 表示取反。! /sbin/reboot 表示不允许使用reboot命令。)

[root@localhost ~]# visudo
 ----------------------------------
 User_Alias MYUSERS = lucy,mike
 Host_Alias MYHOSTS = localhost
 Cmnd_Alias MYCMNDS = /sbin/*,!/sbin/reboot,!/sbin/poweroff,!/sbin/init,!/usr/bin/rm
 MYUSERS  MYHOSTS=(root)  NOPASSWD:MYCMNDS
复制代码


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


注意:

如果配置文件内有语法错误,visudo命令会进行提示。

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

相关文章
|
19天前
|
网络协议 安全 Linux
linux系统安全及应用——端口扫描
linux系统安全及应用——端口扫描
43 0
|
19天前
|
监控 安全 Shell
【Shell 命令集合 系统管理 】Linux 查看系统上的失败登录记录 lastb命令 使用指南
【Shell 命令集合 系统管理 】Linux 查看系统上的失败登录记录 lastb命令 使用指南
68 0
|
19天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 显示当前登录到系统的用户信息 who命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示当前登录到系统的用户信息 who命令 使用指南
157 45
|
19天前
|
Unix Shell Linux
【Shell 命令集合 系统管理 】Linux 显示当前登录用户的登录名 logname命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示当前登录用户的登录名 logname命令 使用指南
31 0
|
19天前
|
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
36 1
|
19天前
|
监控 安全 Linux
【专栏】Linux SSH 的安全对于远程管理至关重要,这几个小妙招安排上!
【4月更文挑战第28天】在数字化时代,Linux SSH 的安全对于远程管理至关重要。增强 SSH 安全包括:使用强密码,调整 SSH 配置文件,尤其是端口号和认证方式;采用密钥认证代替密码;限制登录用户,禁止密码登录;使用防火墙限制访问;定期更新系统和软件。此外,通过日志监控、入侵检测系统及及时应对攻击来提升安全监控。保持对安全知识的学习和更新,结合最佳实践,是保障 SSH 安全的关键。记得安全是个持续过程,时刻保持警惕!
|
3天前
|
消息中间件 安全 Shell
系统安全及应用
系统安全及应用
|
19天前
|
Linux
Linux MBR扇区故障 引导修复
Linux MBR扇区故障 引导修复
|
19天前
|
安全 Linux 网络安全
【专栏】在 Linux 中,端口连接服务和应用,过多开放的端口可能带来安全隐患,教你一招找出所有开放的端口,然后直接干掉!
【4月更文挑战第28天】在 Linux 中,端口连接服务和应用,过多开放的端口可能带来安全隐患。要找出开放端口,可使用 `netstat -anp`、`lsof -i` 或 `nmap` 命令。关闭端口可通过停止相关服务、修改防火墙规则或禁用网络接口。注意不要随意关闭重要端口,操作前备份数据。保持端口安全对系统安全至关重要。
|
19天前
|
监控 安全 Linux
【专栏】在网络安全至关重要的今天,Linux系统中的SCP和SFTP成为安全文件传输的首选工具
【4月更文挑战第28天】在网络安全至关重要的今天,Linux系统中的SCP和SFTP成为安全文件传输的首选工具。SCP,一个基于SSH的轻量级工具,允许用户方便地在本地和远程主机间复制文件。要使用SCP,首先确保安装了OpenSSH,然后通过基本命令进行文件传输,如`scp source destination`。SFTP则提供了一个类似FTP的界面,通过`sftp`命令启动客户端,进行直观的文件操作。两者均基于SSH协议,保证数据加密。为确保安全,建议使用强密码、密钥对、禁用根用户直接登录,并配置防火墙及监控日志。了解和掌握这些工具能提升工作效率并保护数据安全。