服务器租用 > 服务器相关 > linux > → 正文内容

系统安全及应用(su命令切换用户、PAM认证、sudo授

发布时间:2022-12-25 11:35 整理发布:鸿网互联

一、账号安全基本措施

1、系统账号清理

usermod -S /sbin/nologin 用户名 usermod -L 用户名 passwd -l 用户名 passwd -S 用户名 userdel [-r] 用户名 chattr +i /etc/passwd /etc/shadow #锁定文件 lsattr /etc/passwd /etc/shadow #查看文件状态 chattr -i /etc/passwd /etc/shadow #解锁文件

Snipaste_20211129_172605.png ::: hljs-center

锁定文件、查看文件状态和解锁文件的操作

:::

2、密码安全控制

Snipaste_20211201_015752.png ::: hljs-center

创建新用户

:::

修改密码配置文件,一般用于新用户: vi /etc/login.defs PASS_MAX_DAYS n #进入vi编辑器,修改密码有效最大天数n。

Snipaste_20211201_011229.png

Snipaste_20211201_010402.png ::: hljs-center

新用户设置密码有效期

:::

直接修改密码有效期,适用于已有用户: chage -M 指定天数 用户名 cat /etc/shadow | grep 用户名

Snipaste_20211201_013515.png ::: hljs-center

已有用户,直接修改密码有效期

:::

强制在下次登陆时修改密码: chage -d 0 用户名 cat /etc/shadow | grep 用户名

Snipaste_20211201_022024.png ::: hljs-center

强制在下次登陆时修改密码

::: Snipaste_20211201_081858.png ::: hljs-center

重启后xiaoming用户使用原有密码无法登录,需修改密码

:::

3、命令历史限制

vi /etc/profile exporrt HISTSIZE=n

Snipaste_20211201_083350.png Snipaste_20211201_083010.png ::: hljs-center

记录的命令条数

:::

vi .bashrc echo " " > ~/.bash_history

Snipaste_20211201_085927.png Snipaste_20211201_093250.png

::: hljs-center

登录时自动清空命令历史

::: Snipaste_20211201_093945.png ::: hljs-center

查看一下历史命令Snipaste_20211201_104109.png

:::

4、终端自动注销

vi /etc/profile export TMOUT=n #进入vi编辑器设置限制n秒后自动注销 source /etc/profile #重新加载配置文件

Snipaste_20211201_104109.png Snipaste_20211201_104658.png ::: hljs-center

设置终端自动注销

:::

二、使用su命令切换用户

1、su命令用途及用法

2、密码验证

Snipaste_20211201_111112.png ::: hljs-center

su命令切换用户

:::

3、限制使用su命令的用户

●将允许使用su命令的用户加入wheel组 ●启用pam_wheel认证模块

gpasswd -a 用户名 wheel #将指定用户加入wheel组 vi /etc/pam.d/su #进入设置su使用命令

Snipaste_20211201_115413.png ::: hljs-center

将允许使用su命令的用户加入wheel组

:::

Snipaste_20211201_112409.png ::: hljs-center

启用pam wheel认证模块

:::

Snipaste_20211201_113400.png ::: hljs-center

限制使用su命令的用户

:::

4、查看su操作记录

Snipaste_20211201_120232.png ::: hljs-center

查看安全日志文件

:::

5、在/etc/ pam.d/su文件里设置禁正用户使用su命令

vim /etc/pam.d/su 2// auth sufficient pam_ rootok.so

6// #auth required pam_ wheel.so use_ uid

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

三、Linux的PAM认证

1、su命令的安全隐患

2、PAM可插拔式认证模块

3、PAM认证原理

Service(服务)→ PAM(配置文件)→ pam_*.so

4、PAM每一列名称的含义

Snipaste_20211201_122849.png ::: hljs-center

PAM列表

:::

(1)、PAM第一列 —— PAM认证模块类型

(2)、PAM第二列 —— PAM控制标记

(3)、PAM第三列 —— PAM模块

(3)、PAM第四列 —— PAM模块的参数

5、PAM安全认证流程

==控制类型也称做Control Flags,用于PAM验证类型的返回结果== (1)、required验证失败时仍然继续,但返回Fail。 (2)、requisite验证失败则立即结束整个验证过程,返回Fail。 (3)、sufficient验证成功则立即返回,不再继续,否则忽略结果并继续。 (4)、optional不用于验证,只显示信息 (通常用于session类型)。

Snipaste_20211130_135803.png ::: hljs-center

PAM安全认证流程图

:::

==required== : 表示该行以及所涉及模块的成功是用户通过鉴别的[必要条件]。也就是说,只有当对应于应用程序的所有带requi red标记的模块全部成功时,该程序才能通过鉴别。同时,如果任何带required标记的模块出现了错误,PAM并不立刻将错误消息返回给应用程序,而是在所有此类型模块都调用完毕后才将错误消息返回调用他的程序,即必须将所有的此类型模块都执行一次,其中任何一个模块验证出错,验证都会继续进行,并在执行完成之后才返回错误信息。这样做的目的就是不让用户知道自已被哪个模块拒绝,通过一种隐蔽的方式来保护系统服务。就像设置防火墙规则的时候将拒绝类的规则都设置为drop一样,以致于用户在访问网络不成功的时候无法准确判断到底是被拒绝还是目标网络不可达。 ==requisite==: 与required相仿, 只有带此标记的模块返回成功后,用户才能通过鉴别。不同之处在于其一旦失败就不再执行堆中后面的其他模块,并且鉴别过程到此结束,同时也会立即返回错误信息。与上面的required相比,似乎要显得更光明正大一些。 ==sufficient==: 表示该行以及所涉及模块验证成功是用户通过鉴别的[充分条件]。也就是说只要标记为sufficient的模块一旦验证成功,那么PAM便立即向应用程序返回成功结果而不必尝试任何其他模块。即便后面的层叠模块使用了requisite或者required控制标志也是一样。当标记为sufficient的模块失败时,sufficient模块会当做optional对待。因此拥有sufficient标志位的配置项在执行验证出错的时候并不会导致整个验证失败,但执行验证成功之时则大门敞开。所以该控制位的使用务必慎重。 ==optional==: 表示即便该行所涉及的模块验证失败用户仍能通过认证。在PAM体系中,带有该标记的模块失败后将继续处理下一模块。即不管本行指定的模块验证失成功还是失败,也允许用户享受应用程序提供的服务。使用该标志,PAM框架会忽略这个模块产生的验证错误,继续顺序执行下一个层叠模块。

四、sudo机制提升权限

1、sudo命令的用途及用法

用途:以其他用户身份(如root)执行授权的命令

用法:sudo 授权命令

2、配置sudo授权

Snipaste_20211201_131904.png Snipaste_20211201_131757.png ::: hljs-center

配置sudo授权

:::

==用户==: 直接授权指定的用户名,或采用“。组名"的形式(授权一个组的所有用户)。

==主机名==: 使用此规则的主机名。没配置过主机名时可localhost,有配过主机名则用实际的主机名,ALI则代表所有主机。

==(用户)==: 用户能够以何种身份来执行命令。此项可省略,缺省时以root用户的身份来运行命令。

==命令程序列表==: 允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“,”进行分隔。ALL则代表系统中的所有命令。

通配符“*”表示所有;“!”取反符号,表示排除。 %wheel ALL=NOPASSWD:ALL #表示wheel组成员无需验证密码即可使用sudo执行任何命令

4、查看sudo操作记录

==需启用 Defaults logfile 配置== 默认日志文件:/var/log/sudo ![Snipaste_20211130_154523.png]

5、查看授权的sudo操作

sudo -l

Snipaste_20211201_132553.png

::: hljs-center

查看授权的sudo操作

:::

五、开关机安全机制

1、调整BIOS引导设置

2、GRUB限制

六、终端登录安全控制

1、限制root只在安全终端登录

安全终端配置:/etc/securetty

vi /etc/securetty ······ #tty5 #tty6 #禁止root用户从tty5和tty6登录

2、禁止普通用户登录

touch /etc/nologin #禁止普通用户登录 rm -rf /etc/nologin #取消上述登录限制

七、网络端口扫描

==NMAP是一个强大的端1扫描类安全评测工具,支持ping扫描、多端口检测等多种技术==

安装NMAP软件包

rpm -qa | grep nmap yum install -y nmap

1、NMAP

namp 【扫描类型】【选项】<扫描目标>

? 一款强大的网络扫描、安全检测工具

? 官方下载网站: htp://nmap.org/

? CentOS 7.3光盘中安装包nmap-6.40-7.el7 .x86_ 64.rpm

2、NMAP常用的选项和扫描类型

选项 扫描类型 -p 指定扫描的端口 -n 禁用反向DNS 解析(以加快扫描速度) -sS TCP的SYN扫描(半开扫描),只向目标发出SYN数据包,如果收到SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放 -sT TCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放 -sF TCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对sYN数据包进行简单过滤,而忽略了其他形式的TCP攻击包。这种类型的扫描可间接检测防火墙的健壮性 -sU UDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢 -sP ICMP 扫描,类似于ping 检测,快速判断目标主机是否存活,不做其他扫描 -P0 跳过ping检测,这种方式认为所有的目标主机是存活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃扫描 netstat -natp #查看正在运行的使用TCP协议的网络状态信息 netstat -naup #查看正在运行的使用UDP协议的网络状态信息

3、natstat命令常用选项:

选项 作用 -a 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口) -n 以数字的形式显示相关的主机地址、端CI等信息 -t 查看TCP相关的信息 -u 显示UDP协议相关的信息 -P 显示与网络连接相关联的进程号、进程名称信息( 该选项需要root 权限) -r 显示路由表信息 -l 显示处于监听状态的网络连接及端口信息 netstat -natp #查看正在运行的使用TCP协议的网络状态信息 netstat -naup #查看正在运行的使用UDP协议的网络状态信息 nmap -sT 127.0.0.1 #查看本机开放的TCP端口 nmap -sU 127.0.0.1 #查看本机开放的UDP端口

您可能感兴趣的文章: