Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)

系统安全及应用

  • 一. 账号安全控制
    • 1.系统账号清理
    • 2.密码安全控制
    • 3.命令历史、自动销毁
  • 二. 用户切换与提权
    • 2.1 su命令
    • 2.1 sudo命令——提升权限
      • 2.1.1 su命令的缺点
      • 2.1.2 sudo命令的用途及用法
  • 三. Linux中的PAM安全认证
      • 3.1.1 su命令的安全隐患
      • 3.1.2 PAM认证原理
      • 3.1.3 PAM认证的构成
      • 3.1.4PAM安全认证流程
  • 四. 系统引导和登录控制
    • 4.1 开关机安全控制
      • 4.1.1 调整BIOS引导设置
      • 4.1.2 GRUB限制
    • 4.2 终端登录安全控制
      • 4.2.1:限制root只在安全终端登录
      • 4.2.2:禁止普通用户登录
  • 五. 弱口令检测、端口扫描
    • 5.1Joth the Ripper,简称为 JR
    • 5.2 弱口令实验:通过john工具查看自己的密码
  • 五. 端口扫描
    • 5.1 NMAP
    • 5.2:nmap实验

一. 账号安全控制

用户账号,时计算机使用者的身份凭证或标识,每一个要访问系统资源的人,必须凭借其用户账号才能进入计算机。在Linux系统中,提供了多种机制来确保用户账号的正当、安全使用。

1.系统账号清理

在Linux中,除用户手动创作账号外,还包括随系统或程序安装过程而生成的其他大量账号。除超级用户root,其他大量账号只是用来维护系统运作、启动或保持服务进程,一般是不允许登录的,因此也称为非登录用户。
常见的非登录用户包括bin,deamon,adm,lp,mail,nobody,apache,mysql,dbus,ftp,gdm,halddaemon等。为了确保安全,这些用户的登录shell通常是/sbin/nologin,表示禁止终端登录,应确保不被人为改动。

[root@localhost ~]# **grep /sbin/nologin$ /etc/passwd**   查看当前不可登陆账户
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
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-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
查看当前可登录账户
[root@localhost ~]# grep bash$ /etc/passwd
root:x:0:0:root:/root:/bin/bash
zhouwei:x:1000:1000:zhouwei:/home/zhouwei:/bin/bash

各种非登录用户中,还有相当一部分很少用到,如news,ucp,games,gopher.这些用户可以视为冗余用户,直接删除。
还有一些随应用程序安装的用户账户,若程序卸载以后未能自动删除,则需要管理员手动进行清理。
对Linux中长期不用的用户账户,若无法确定是否应该删除,可暂时将其锁定。
例:锁定解锁zhangsan用户账号
在这里插入图片描述在时
如果服务器中的用户账号已经固定,不再进行更改,还可以采取锁定账号配置文件的方法。
使用chattr命令,分别结合 +i ,-i选项来锁定、解锁文件
Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第1张图片
在账号文件被锁定的情况下,其内容不允许变更,因此无法添加、删除账号,也不能更改用户密码、登录shell、宿主目录等属性信息。Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第2张图片
使用lsattr命令可以查看文件锁定状况Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第3张图片

2.密码安全控制

在不安全的网络环境下,为了降低密码被猜出或被暴力破解的风险,用户应该养成定期更改密码的习惯,避免长期使用同一个密码。管理员可以在服务器端限制用户密码的最大有效天数,对于密码已经过期的用户,登录时将被要求重新设置密码,否则将拒绝登录。
chage命令用于设置密码时限
执行以下操作可将密码的有效期设置为30天
适用于新建的用户
在这里插入图片描述
Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第4张图片
适用于已有用户zhangsan
在这里插入图片描述
在某些特殊情况下,如要求批量创建的用户初次登录时必须自设密码,根据安全规划统一要求所有用户更新密码等,可以由管理员执行强制策略,以便用户在下次登录时必须改密码。
例:执行以下操作可强制要求zhangsan下次登录时重设密码在这里插入图片描述Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第5张图片

3.命令历史、自动销毁

只要活得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在命令行输入明文密码,则会产生安全风险。
bash终端环境中,历史命令的记录条数由变量HISTSIZE控制,默认为1000条。通过修改/etc/profile文件中的HISTSIZE变量值,可以影响系统中 的所有用户。
例:设置最多只记录200条历史命令

[root@localhost ~]# vi /etc/profile			'对于未创建的用户,使用此命令修改配置文件'
...省略部分内容
将其中的HISTSIZE=1000,修改为HISTSIZE=200
[root@localhost ~]# export HISTSIZE=200		'该命令适用于当前用户,及时成效'
'每当编辑完/etc/profile文件后,都需要使用命令source /etc/profile或者换重启使之生效'

新用户
在这里插入图片描述在这里插入图片描述在这里插入图片描述
当前用户

在这里插入图片描述
注销时自动清空命令历史:也可以修改用户宿主目录中的~/.bash_logout文件,添加清空历史命令的操作语句。这样当用户退出已登录的bash环境以后,所记录的历史命令将自动清空。
在这里插入图片描述Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第6张图片
终端自动注销:bash终端环境中,可以设置一个闲置超时时间,当超过指定时间没有任何输入时即自动注销终端,这样可以有效避免当管理员不在时其他人员对服务器的误操作风险。闲置时间有变量TMOUT来控制,默认单位为秒
适用于新登录用户

在这里插入图片描述
当前用户
在这里插入图片描述

二. 用户切换与提权

大多数Linux服务器并不建议用户直接以root用户进行登录。一方面可以大大减少因误操作而导致的破坏,另一方面也降低了特权密码在不安全的网络中被泄露的风险。su ,sudo 两种命令,su命令主要用来切换用户,sudo命令用来提升执行权限。

2.1 su命令

使用su命令,可以切换为指定的另一个用户,从而具有该用户的所有权限,切换时需要对目标用户的密码进行验证(从root用户切换为其他用户不需要)。
su命令基本格式(Substitute User,切换用户)
su - 目标用户su - 目标用户
[root@localhost ~]# su - zhangsan ‘从root切换到其他用户不需要输入密码’
[lisi@localhost ~]$ su - root ‘从其他用户切换到root用户需要输入密码’
密码: ‘输入用户root的密码’
上一次登录:日 7月 5 20:58:46 CST 2020从 192.168.220.6pts/0 上
[root@localhost ~]# ‘验证成功后获得root权限’
上述操作中,“-”等同于“–login”“-l”,表示切换后进入目标用户的登录shell环境。若缺少此选项则仅切换身份,不切换用户环境

[root@localhost ~]# su - zhangsan		  '从root切换到其他用户不需要输入密码'
[lisi@localhost ~]$ su - root			   '从其他用户切换到root用户需要输入密码'
密码:     							  '输入用户root的密码'
上一次登录:日 7月  5 20:58:46 CST 2020从 192.168.220.6pts/0 上
[root@localhost ~]#    				 '验证成功后获得root权限'
**上

默认情况下,任何用户都允许使用su命令,从而有机会反复在尝试其他用户的登录密码,带来安全风险。为了加强诉命令的使用控制,可以借助pam_wheel认证模块,只允许极个别用户使用su命令进行切换。
实现过程如下,将授权使用su命令的用户添加到wheel组,修改/etc/pam.d/su认证配置以启动pam_wheel认证。
限制使用su命令的用户
1.将允许使用su命令的用户加入wheel组
Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第7张图片
2.启用pam_wheel认证模块
Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第8张图片
验证
创建一个lisi账号,不加入wheel组,做对比实验
Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第9张图片Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第10张图片Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第11张图片Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第12张图片

2.1 sudo命令——提升权限

2.1.1 su命令的缺点

用过su命令可以非常方便的切换为另一个用户,但前提条件是必须知道目标用户的登录密码
对于生产环境中的Linux服务器,每多一个人知道特权密码,其安全风险也就增加一分

2.1.2 sudo命令的用途及用法

sudo既可以让普通用户拥有一部分管理权限,又不需要将root用户密码告知,使用sudo命令可以提升执行权限。需要管理员预先进行授权,指定允许哪些用户以超级用户的身份来执行哪些命令。

2.配置sudo授权
visudo 或者 vi /etc/sudoers
sudo机制的配置文件为/etc/sudoers,文件的默认权限是440,需要使用专门的visudo工具进行编辑。若使用vi编辑,保存时必须执行“:w!”命令强制操作,否则系统将提示为只读文件而拒绝保存.
*配置文件/etc/sudoers中,授权记录的基本配置格式
用户 主机名列表 = 命令程序列表
命令程序列表是绝对列表
:通配符号
!:取反符号
%:代表组

在这里插入图片描述

在这里插入图片描述Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第13张图片
sudo实验
在这里插入图片描述Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第14张图片
Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第15张图片
Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第16张图片

Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第17张图片总结:
zhangsan用户在wheel组中,而lisi用户不在,或者使用vi /etc/sudoers 命令进入sudo配置文件,发现root用户拥有所有权限,发现wheel组中的用户也拥有所有权限,因此,在wheel组中的zhangsan用户拥有修改IP地址的权限,不在wheel组中的lisi用户没有权限修改IP地址.
实现没有权限的lisi用户修改IP地址的方法
方法一、
将lisi用户添加到wheel组中
在sudo配置文件中给lisi用户提权
方法二、
在这里插入图片描述在这里插入图片描述
Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第18张图片
成功
查看sudo操作记录
查看sudo操作记录,需启用Defaults logfile 配置,默认日志文件:/var/log/sudo
在这里插入图片描述
在这里插入图片描述Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第19张图片
Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第20张图片

三. Linux中的PAM安全认证

3.1.1 su命令的安全隐患

默认情况下,任何用户都允许使用su命令,从而有机会反复尝试其他用户的登录密码,带来风险
借助pam_wheel认证模块,可以实现指定允许的用户使用su命令

3.1.2 PAM认证原理

  • PAM(Pluggable Authentication Modules)可插拔式认证模块,它是一种高效而且灵活便利的用户级别的认证方式,它也是当前Linux服务器普遍使用的认证方式
  • PAM认证一般遵循的顺序:Service(服务)→PAM(配置文件)→pam_*.so(.so 后缀代表模块文件)
  • PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证
  • 用户访问服务器的时候,服务器的某一个服务程序把用户的不同请求发送到PAM模块进行认证
  • 不同的应用程序所对应的PAM模块也是不同的

3.1.3 PAM认证的构成

查看某个程序是否支持PAM认证,可以用ls命令进行查看,例如查看su是否支持PAM模块认证
[root@localhost ~]# ls /etc/pam.d | grep su
Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第21张图片
查看su的PAM配置文件:cat /etc/pam.d/su
每一行都是一个独立的认证过程
每一行可以区分为三个字段(认证类型,控制类型,PAM模块及其参数)

3.1.4PAM安全认证流程

Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第22张图片
控制类型也可以称作Control Flags,用于PAM验证类型的返回结果
1.required验证失败时仍然继续,但返回Fail
2.requisite验证失败则立即结束整个验证过程,返回Fail
3.sufficient验证成功则立即返回,不在继续,否则忽略结果并继续
4.optional不用于验证,只显示信息(通常用于session(会话)类型)

四. 系统引导和登录控制

4.1 开关机安全控制

4.1.1 调整BIOS引导设置

将第一引导设备设为当前系统所在硬盘
禁止从其他设备(光盘,U盘,网络)引导系统
将安全级别设为setup,并设置管理员密码

4.1.2 GRUB限制

使用grub2-mkpasswd-pbkdf2生成秘钥
修改/etc/grub.d/00_header文件中,添加密码记录
生成新的grub.cfg配置文件

实验
平常开机按住e键能进入编辑模式且不需要密码,有一定的风险,我们可以通过更改grub菜单配置文件来增加安全性
Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第23张图片
在这里插入图片描述Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第24张图片
在这里插入图片描述
Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第25张图片
Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第26张图片
在这里插入图片描述
按e需要密码才能进入Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第27张图片

4.2 终端登录安全控制

4.2.1:限制root只在安全终端登录

安全终端配置:/etc/securetty

[root@localhost ~]# vim /etc/securetty		  '进入终端配置'
...省略部分内容

vc/10
vc/11
tty1
#tty2  '禁止终端tty2登录,在其前方输入#即可'
#tty3  '禁止终端tty3登录,在其前方输入#即可'
tty4
tty5
tty6
..省略部分内容

在这里插入图片描述Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第28张图片

4.2.2:禁止普通用户登录

建立/etc/nologin文件
删除nologin文件或重启后即恢复正常

[root@localhost ~]# touch /etc/nologin  '禁止普通用户登录'
[root@localhost ~]# rm -rf /etc/nologin  '取消上述登录限制'
'一般做维护的时候使用(只有root用户可以登录,其他用户不可登录)'    
例如
[root@localhost ~]# touch /etc/nologin
此时,再用其他用户登录,即便密码输入正确也会提示密码没有奏效,从而无法登录,只有root用户可以登录
[root@localhost ~]#rm -rf /etc/nologin
此时,将之前的登录限制取消之后,其他用户也可以正常登录了

Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第29张图片

五. 弱口令检测、端口扫描

5.1Joth the Ripper,简称为 JR

一款密码分析工具,支持字典式的暴力破解,通过对shadow文件的口令分析,可以检测密码强度

5.2 弱口令实验:通过john工具查看自己的密码

Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第30张图片Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第31张图片在这里插入图片描述
Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第32张图片
在这里插入图片描述
密码破解成功Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第33张图片

五. 端口扫描

5.1 NMAP

NMAP是一款强大的网络扫描,安全检测工具,可以探测局域网中那些主机在线,或者某台主机中开了那些端口。
NMAP的扫描语法—— nmap [扫描类型] [选项] <扫描目标…>
常用的扫描类型——-sS,-sT,-sF,-sU,-sP,-P0
-sS:tcp syn扫描
-sT:TCP端口
-sU:UDP端口
-sP:ping
-sF:tcp fin扫描
-P0:跳过ping检测

5.2:nmap实验

在这里插入图片描述
Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第34张图片
Linux基础——系统安全及应用(su切换用户PAM认证,sudo提权,grub加密,账号密码破解,端口扫描)(十)_第35张图片

你可能感兴趣的:(Linux基础)