Linux系统安全及应用

系统安全及应用


引言:在生产环境中,一般情况下我们都是普通用户的身份进行操作,本篇内容就是用一些操作提升普通用户的命令权限,并且为了保证root账户的安全性,采用多种方式进行保护。以及生产中需要对自己哪些网络端口可以使用,用怎样的方法去操作

一、账号安全基本措施

1.系统账号清理:

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

usermod -s 修改非登录用户的Shell,此账号就无法使用

usermod -U 用户名 解锁用户账户

usermod -L 用户名 锁定用户账户

在这里插入图片描述

passwd -l 用户名 锁定用户密码

passwd -u 用户名 解锁用户账户

passwd -S 用户名 查看用户状态在这里插入图片描述
补充:passwd和usermod命令可以相互解锁及锁定;

文件锁定命令:chattr +i
在这里插入图片描述

passwd和usermod可以互相解锁和锁定;passwd锁定密码前有两个"!“,而usermod 只有一个”!"
在这里插入图片描述

2.密码安全控制:

设置密码有效期

要求用户下次登录时修改密码

vi /etc/login.defs 使用于新建用户,更改新用户的默认值

chage -M 30 lisi 适用于已有用户;

cat /etc/shadow |grep 用户

chage -0 zhangsan 强制在下次登录时更改密码

新建用户两次改密码之间相距的最大天数
在这里插入图片描述
在这里插入图片描述
PASS-MAX_DAYS设置密码有效期30天(默认值99999),PASS-MIN-DAYS 更改用户默认值

PASS_MIN_LEN 密码最小长度,生产环境中最少18位; WARN_ACE:提前密码到期多少天提醒

3.命令历史限制

减少记录的命令条数: HISTSIZE=200 历史命令只记录两百条

注销时自动清空命令历史

环境变量的读取:用户登录>加载/.bash_profile–>bash_profile中的配置首先是使/.bashrc生效用户登出–>.bash_logout 运行logout配置文件

vim ~/.bash_logout

history -c(临时删除)

clear

设置完成后”source /etc/profile“刷新
在这里插入图片描述
在这里插入图片描述或者用用其它方法删除历史命令:

在这里插入图片描述

登录时自动清空历史命令在这里插入图片描述

4.终端自动注销

闲置600秒后自动注销

例:vi ~/.bash_profile

​ export TMOUT=300

在这里插入图片描述

二.切换用户

1.使用su命令切换用户

用途:Substitute User 切换用户

格式:su - 目标用户

密码验证:

  • root->任意用户,不需要验证密码
  • 普通用户->其它用户,需要验证目标用户的密码

在这里插入图片描述

2.限制使用su命令的用户:
  • 将允许使用su命令的用户加入到wheel组
  • 启用pam_wheel认证模块;

查看su操作记录:

​ 使用su命令切换用户的操作会记录到安全日志/var/log/secure

启用pam wheel 的用户可以使用su命令,只有加入“wheel”组的用户可以使用su命令,其它用户不允许使用

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

vim /etc/pam.d/su进入环境修改

先启用pam_wheel认证

在这里插入图片描述

gpasswd -a zhangsan wheel 把zhangsan用户加入到wheel组内,然后验证结果

在这里插入图片描述

在默认状态下,任何用户都可以使用su命令切换到其它用户,这样一来其它用户的密码被暴露,存在安全隐患;这时候就借助于pam_wheel认证模块,只允许个别用户使用su命令进行来回切换。

将授权使用su命令的用户添加到wheel组内,修改/etc/pam.d/su认证配置启用pam_wheel认证
在这里插入图片描述

以上两行时默认状态(即开启第一行,注释第二行),这种状态下是允许所用用户间使用su命令进行切换的

两行都注释也是允许所有用户都能使用su命令,但root下使用su切换到其它普通用户需要输入密码,如果第一行不注释,则root使用su切换普通用户就不需要输入密码(pamrootok. so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码

如果开启第二行,表示只有root用户和wheel组内的用户才可以使用su命令

如果注释第一行,开启第二行,表示只有wheel组内的用户才能使用su命令,root用户也被禁用su命令
在这里插入图片描述

三、Linux中的PAM安全认证

1.su命令的安全隐患
  • 默认情况下,任何用户都允许使用su命令,有机会反复尝试其他用户(如root)的登录密码,带来安全风险
  • 为了加强su命令的使用控制,可借助于PAM认证模块只允许个别用户使用su命令进行切换
2.PAM可插拔式认证模块
  • 是一种高效而且灵活便利的用户级别的认证方式
  • 也是当前Linux服务器普遍使用的认证方式

pam 配置文件可定制编辑

PAM使用/etc/pam.d/su下的配置文件,来管理对程序的认证方式,应用程序调用相应的PAM配置文件,从而调用本地的认证模块,模块放置在/lib64/security下,以加载动态库的形式进行认证,比如使用su命令时,系统会提示输入root用户的密码,这就是su命令通过调用PAM模块实现的

PAM认证原理:

1.PAM认证一般遵循的顺序:Service(服务)–>PAM(配置文件)–>pam_*.so;

2.PAM认证首先要确定哪一项应用服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证模块(唯一/lib64/security/下)进行安全认证

3.用户访问服务器的时候,服务器的某一个服务程序把用户的请求发送到PAM模块进行认证,不同程序所对应的PAM模块也是不同的

查看某个程序是否支持PAMR认证,可以用ls命令进行查看/etc/pam.d/

PAM的配置文件中每一行都是一个独立的认证过程,它们按从上往下的顺序一次由PAM模块调用

第一列代表PAM认证模块类型

auth:对用户身份进行识别,如提示输入密码,判断是否为root

account:对账号各项属性进行检查,如是否允许登录系统,账号是否过期,是否达到最大用户数等,

password:使用用户信息来更新数据,如修改用户密码

session:定义登录前以及退出后所要进行的会话操作管理,如登录连接信息,用户数据的打开和关闭,挂载文件系统

第二列代表PAM控制标记

required:表示需要返回一个成功值,如果返回失败,不会立刻将失败结果返回,而是继续进行同类型的下一验证,所有此类型的模块都执行完成后,再返回失败

requisite:与required类似,但如果此模块返回失败,则立刻返回失败并表示此类型失败。

sufficient:如果此模块返回成功,则直接向程序返回成功,表示此类成功,如果失败,也不影响这类型的返回值。‘’‘

optional:不进行成功与否的返回,一般不用于验证,只是显示信息(通常用于session类型)

include:表示在验证过程中调用其他的PAM配置文件,比如很多应用通过完整调用/etc/pam.d/system-auth(主要复杂用户登录系统的认证工作)来实现认证而不需要重新逐一去写配置项。

第三列代表PAM模块,默认是在/lib64/security/目录下,如果不在此默认路径下,要填写绝对路径

同一个模块,可以出现在不同的模块类型中,它在不同的类型中所执行的操作都不相同,这是由于每个模块针对不同的模块类型编制了不同的执行函数

第四列代表PAM模块的参数,这个需要根据所使用的模块来添加,传递给模块的参数,参数可以有多个,之间用空格分隔开

四、PAM认证的构成

1.查看某个程序是否支持PAM认证,可以用ls命令

示例:查看su是否支持PAM模块认证

ls /etc/pam.d | grep su

查看su的PAM配置文件:cat /etc/pam.d/su

每一行都是一个独立的认证过程

每一行可以区分为三个字段:认证类型

​ 控制类型

​ PAM模块及其参数

2.PAM安全认证流程:控制类型也称做Control Flags,用于PAM验证类型的返回结果

1.required验证失败时仍然继续,但返回Fail

2.requisite验证失败则立即结束整个验证过程,返回Fail

3.suffcient验证成功则立即返回,不再继续,否则忽略结果并继续

4.optional不用于验证,只显示信息(通常用于sessin类型)
在这里插入图片描述

五、sudo提升权限

su可以切换用户,前提需要输入密码;

生产环境中,每多一个人知道root密码,就存在一分风险

sudo授权;管理员分配 普通管理权限

1.配置sudo授权

visudo或者vi /etc/sudoers(用vi编辑需用w!强制保存)

默认权限440
在这里插入图片描述

语法格式:用户 主机名=命令程序列表

​ 用户 主机名=(用户)命令程序列表

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

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

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

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

实验

这里要用sudo useradd才可以创建用户,因为

在这里插入图片描述

visudo进入授权给boss用户,插入这行,boss用户创建用户不需要密码,修改用户属性需要输入密码

在这里插入图片描述
创建用户不用密码,修改需要密码

在这里插入图片描述
通配符:“*”表示所有、取反符号"!"表示排除

%wheel ALL=NOPASSWD :ALL

#表示wheel组成员无需验证密码即可使用sudo执行任何命令

Mike ALL=(root) NOPASSWD:/bin/kill,/usr/bin/killall

gpasswd -M lisi wheel 李四加入wheel组

sudo参数命令:

sudo -l :列出用户在主机上可用的和被禁止的命令,一般配置好/etc/sudoers后,要用这个命令来查看和测试是不是配置争取的

sudo -v :验证用户的时间;如果用户允许sudo后,输入用户的密码后,在短时间内不用输入口令来直接进行sudo操作;用-v可以跟踪最新的时间戳

sudo -u :指定以某个用户执行特定操作

sudo -k :删除时间戳,下一个sudo命令要求用户提供密码

在这里插入图片描述

2.别名创建

用户别名 User_Alias

主机别名 Host_Alias

命令别名 Cmnd_Alias

别名必须用大写;最后一行要用大写,否则命令不生效

在这里插入图片描述

!号的优先级更高;所有下面的passwd无法使用

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

3.查看sudo操作记录
  • 需启用Defaults logfile配置
  • 默认日志文件:/var/log/sudo

在启用日志配置后,sudo操作过程才会被记录

sudo日志记录以备管理员查看,应在/etc/studoers文件中增加“Defaults logfile”设置,如果已经启用sudo日志,则可以从/var/log.sudo文件中看到用户的sudo操作记录

注:启用日志:Defaults logfile=/var/log/sudo

另外一个方法时/var/log/secure日志可查看到sudo操作用户步骤

sudo -l 查看当前用户获得哪些sudo授权

启用sudo操作日志

在这里插入图片描述

查看sudo操作日志

在这里插入图片描述

六、开关机安全控制

1.调整BIOS引导设置
  • 将第一引导设备设为当前系统所在硬盘

  • 禁止从其他设备(光盘、U盘、网络)引导系统

  • 将安全级别设为setup,并设置管理员密码

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

grub2-mkpasswd-pbkdf2 根据提示设置GRUB菜单的密码
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

输入用户名和密码才能进入系统

在这里插入图片描述

ctrl+x进入系统

在这里插入图片描述

注:还有一种方法一步到位:grub2-setpassword

3.终端登录安全控制

限制root只在安全终端登录:安全终端配置:/etc/securetty

禁止普通用户登录:建立/etc/nologin文件

​ 删除nologin文件或重启后即恢复正常

在这里插入图片描述

想要不让在那个终端登录,在终端前面加上#(#号代表注释)

在这里插入图片描述

crtl+alt+f5输入用户密码无法进入
在这里插入图片描述

crtl+alt+f6输入用户密码后成功进入

在这里插入图片描述

七、系统弱口令检测

Joth the Ripper简称JR,是一款开源的密码分析工具,支持字典式的暴力破解,通过对shadow文件的口令分析,可以检测密码强度

官方网站:http://www.openwall.com/john/

解压工具包,安装编译软件

在这里插入图片描述

,切换到src子目录进行编译安装

在这里插入图片描述

准备破解的密码文件
在这里插入图片描述

切换到run子目录,执行暴力破解。并查看已破解的账户列表
在这里插入图片描述

八、网络端口扫描

网络端口扫描

NMAP:一款强大的网络扫描,安全检测工具

控制位

SYN 建立链接

ACK 确认

FIN 结束断开

PSH 传送0 数据缓存 上层应用协议

RST 重置

URG 紧急

1.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通而放弃扫描

2.安装nmap软件包

在这里插入图片描述

例:查看本机开放的TCP端口

在这里插入图片描述

查看本机开放的UDP端口:

在这里插入图片描述

总结

本文内容描述,可以大致了解账户的基本的安全措施,系统账号清理(将登陆用户Shell设为/sbin/nologin),锁定我们长期不使用的账号,密码安全控制,可以设置新用户的密码有效期,清除历史命令,修改日志中减少记录的历史命令条数;终端如何自动注销,系统闲置一段时间后,自动注销。普通用户切换其他用户会受到限制,需要密码验证。在生产环境中,为了保证root用户的安全性,就用sudo命令给其他用户授权可以使用的命令。开关机时也可以设定管理员密码,防止直接修改root密码;还有就是检测我们网络端口,有哪些端口可以使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E4tNUjql-1649592811660)(C:\Users\Hanxu\AppData\Roaming\Typora\typora-user-images\image-20220407173145572.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1FPf6Kof-1649592811661)(C:\Users\Hanxu\AppData\Roaming\Typora\typora-user-images\image-20220407173902107.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7aSkCM1I-1649592811661)(C:\Users\Hanxu\AppData\Roaming\Typora\typora-user-images\image-20220407170243187.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1A9MhFoG-1649592811661)(C:\Users\Hanxu\AppData\Roaming\Typora\typora-user-images\image-20220407170516240.png)]
.(img-k8lKMK67-1649592811658)]

查看本机开放的UDP端口:

[外链图片转存中…(img-BMRI0wtj-1649592811660)]

总结

本文内容描述,可以大致了解账户的基本的安全措施,系统账号清理(将登陆用户Shell设为/sbin/nologin),锁定我们长期不使用的账号,密码安全控制,可以设置新用户的密码有效期,清除历史命令,修改日志中减少记录的历史命令条数;终端如何自动注销,系统闲置一段时间后,自动注销。普通用户切换其他用户会受到限制,需要密码验证。在生产环境中,为了保证root用户的安全性,就用sudo命令给其他用户授权可以使用的命令。开关机时也可以设定管理员密码,防止直接修改root密码;还有就是检测我们网络端口,有哪些端口可以使用

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值