系统安全与应用

news2024/11/23 7:29:25

目录

1. 系统账户清理

2. 密码安全性控制

2.1 密码复杂性

2.2 密码时限

3 命令历史查看限制

4. 终端自动注销

5. su权限以及sudo提权

5.1 su权限

5.2 sudo提权

6. 限制更改GRUB引导

7. 网络端口扫描


那天不知道为什么,心血来潮看了一下passwd配置文件,发现里面有巨多的用户名,也不知道是什么时候创建的,看了一下很多都已经不用了,甚至很多用户里面都是空的。刚好之前发现有人在问关于用户安全的一些问题,我想起来我好像写过关于用户管理的博客,貌似还没有将关于用户账号安全或者权限这方面的博客。所以今天索性来讲一讲系统安全方面的东西。

1. 系统账户清理

首先讲一下开头提到的,系统中有太多太多没人用,甚至创建了之后都没用登录过的账户,那么该如何将这些账户删除呢?

很简单粗暴的方法就是直接删除

userdel -r 用户名         直接将用户删除,这里加-r是要递归删除用户名下的目录

那假如,万一存在这种可能性,虽然一个账户很久没登了,但不确定这是谁的,万一是老板的怎么办,话有说回来,那万一是图谋不轨的人留下的怎么办,这时候我们需要用到

grep "/sbin/nologin$" /etc/passwd          检索出nologin 账户

usermod -s /sbin/nologin 用户名        将某些用户的shell设置为/sbin/nologin 可以防止他们登录到系统。

同样的,我们可以用

usermod -L 来锁定用户

关于usermod 的用法,在我之前的一篇博客中有写,这里就不再细说了

Linux命令基础(三(用户和组))-CSDN博客

我突然想起来,假如系统里没什么重要的东西,那也没必要禁止或者删除那些用户,又占不了多大空间,或者说怕误删误封,那我们可以把系统中为数不多的重要文件上锁就可以了

chattr +i /etc/passwd /etc/shadow     --锁定文件

lsattr /etc/passwd /etc/shadow          --查看为锁定的状态

锁定后我们切换用户对文件进行修改

可以看到最下方提示无法修改

注意:只是不能修改,不代表不能查看。如果想要只有创建者能看那就要用到 chmod 600

2. 密码安全性控制

2.1 密码复杂性

然后我们开始讲系统安全,首先从最基础也是最直白的用户密码说起,我们设置一个密码的时候,会涉及到密码的复杂性(就是由数字,大小写字母,符号,如果仅由数字构成那么复杂度就是1),长度。那么,如何强制用户设置密码的时候,必须要有大小写或者字符,如何必须要由多少位组成呢?

我们用vim编辑器,编辑文件 /etc/pam.d/system-auth

然后在 password    requisite 那一行的 type=后面添加如下内容

minlen=8 ucredit=-2 lcredit=-4 dcredit=-1 ocredit=-1

minlen=8     用户密码长度不得低于8位

ucredit=-1   用户密码中至少有1个大写字母 (数字为负数,表示至少有多少个大写字母;数字为正数,表示至多有多少个大写字母)

lcredit=-1    用户密码中最少有1个小写字母

dcredit=-1   用户密码中最少有1个数字

ocredit=-1   用户密码中最少有1个特殊字符

还有一个参数是remember,我没有加在上面,意思是防止旧密码
如 remember=5 修改用户密码时最近5次用过的旧密码就不能重用了

设置完成后我们保存退出,然后验证一下。

我输的是123456,可以看到,提示密码包含少于1的小写字母。

2.2 密码时限

密码本身自带的属性讲完后,还有密码的时限,这里的时限包括密码有效期;还有我们经常在一些app上遇到的,刚修改完密码需要隔多久才能再次修改密码;除此之外还能设置强制要求用户下次登录时修改密码等。

我们同样用文件编辑器  vim /etc/login.efs

PASS_MAX_DAYS  表示密码有效期多少天 默认99999天

PASS_MIN_DAYS   表示自上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值是 0

PASS_MIN_LEN     密码最小长度,对于root账户无效。现在这个设置不能生效了,因为已经被我们上面讲到的pam模块覆盖了。

PASS_WARN_AGE  表示  密码到期前多少天,系统开始通知用户“密码即将到期”,默认为7

这里做的修改只能适用于我们即将新建的用户,不适用于已经存在于系统中的用户,其实想一想也确实,生活中不乏那种需要重启才能启用功能的案例。

那么如何修改已经在系统中的用户的密码属性呢?

我们可以时chage命令 

比如修改zhangsan 用户的密码时限

chage -M 10 zhangsan       修改zhangsan用户的密码最大有效期为10天,相应的-m 就是修改最小有效期(最小有效期内用户不能更改密码,和上面的PASS_MIN_DAYS意思一样)

chage命令其他操作我也不多讲了,在我的另外一篇博客中有写

Linux命令基础(三(用户和组))-CSDN博客

3 命令历史查看限制

我们都知道Linux有一个命令叫 history 它可以查看你前面输过的1000条命令,1000条这个数字还是蛮大的,假如刚好你配置什么隐秘性的文件,把它放在哪里,那么 history 全都能看见。所以,我们需要对这条命令做一些限制。

我们可以用

export HISTSIZE=15

限制历史命令只显示15条(只针对当前用户,重启后失效)

或者可以history -c 全部清除 ,但同样也是重启后失效。

那么,该如何才能使设置永久生效呢?

我们先查看~目录下,有个隐藏文件叫 .bashrc ,用命令ls -a可以看到,进入文件编辑,在最后一行加上 export HISTSIZE=15 

然后保存退出,重启。可以看到,再次输入history 只显示15条了。同理,如果想要不显示的话,=0就可以了。

特别的,如果需要每个用户登出时都清除输入的命令历史记录,可以在/etc/skel/.bash_logout文件中添加

rm -f $HOME/.bash_history

这样,当用户每次注销时, .bash_history文件都会被删除

4. 终端自动注销

Windows系统中有静止时间长了之后电脑自带休眠或者注销,至于多久注销,注不注销,都可以根据自己的需求设置。Linux自然也有这种也可以进行相应的设置。

比如我需要闲置10秒后自动注销

export TMOUT=10

可以看到,十秒后自动登出了。

这个命令适用于当前用户,切换用户后就不适用了。

unset TMOUT          取消自动注销

5. su权限以及sudo提权

5.1 su权限

我们知道,su命令可以在用户之间进行切换,当一个用户设置了密码,我们再使用su进行切换时就需要输入密码,同样的,别的用户切换至root账户,也需要输入密码,那么这就涉及到一个问题,我普通用户是不是就可以一直su root  然后试密码,我甚至直接可以写一个脚本然后将密码字典导入进去,总会试出来的。所以我们要对系统或者用户进行一些限制。上面讲到密码复杂性中,图片里的那行代码  “type= ”前面有一个retry=3,不知道你们有没有注意看,它的意思就是输错密码后可以重试三次,如果再输错的话需要在文件里进行额外的配置。

我把上面那张图再拿来,方便大家观察。

例如,重输五此后锁定900秒,我们需要在上面的auth那一块 插入以下两行即可。

auth required pam_faillock.so preauth audit silent deny=5 unlock_time=900

auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=900

还有一种方法就是,我们对用户使用su命令进行限制,比如除了root用户外,其他用户都不准使用su命令,或者除了这几个用户外,其他用户都不允许使用su命令。

我们可以通过在/etc/pam.d/su文件里设置禁止用户使用su命令

主要观察框出来的这两行代码

为了方便解释,我们把第一个框直接称作1,第二个框2

1不注释:root用户使用 su 不需要输入密码

1注释:即使是root用户使用 su 命令也需要输入密码

2不注释:只有wheel组内的成员可以使用 su 命令

2注释:任何用户包括wheel 组内的成员使用 su 命令需要输入密码

这里简单做一下演示吧,我在配置文件里注释了 1 ,那么这也就应该意味着root用户使用 su 命令也需要输入密码,我们来切换看看,可以看到,需要输入密码了。其他我就不一一验证了。

5.2 sudo提权

其实通过很多地方都可以看出来了,root用户总是拥有特权,所以,在生产环境中的Linux服务器,它的root账户的密码就十分重要,我们上面进行的一些列操作,都是在保护root账户的安全性。但是有些时候,因为特殊原因,不得不让一些普通用户来登录root用户完成一些权限较高的任务,要知道,root账户的密码,多传播一次就多n份风险,那么我们该如何既不要告知对方root密码,又能让对方账户拥有相应的权限呢?

这里就涉及到了对用户提权,一般使用visudo来对文件进行编辑,完成相应的提权操作。

visudo编辑界面↑

这里提权的格式为

[用户名] [主机]=[需要提权的命令]

可能不太好理解,我们通过一个例子来解释,比如,我要让rose 用户能够执行用户的增删改

我们先切换到rose,试着新增一个用户,可以看到,直截了当地告诉你权限不够。

好,我们回到root账户,进入visudo编辑页面,在最底下加上

rose ALL=(ALL)/usr/sbin/useradd, /usr/sbin/userdel

rose是用户名不用多说了吧

ALL 表示可以在任何主机上执行这些命令

(ALL) 表示可以以任何用户的身份执行这些命令

后面是命令地绝对路径

配置完成了之后我们可以用切换到该用户 ,然后用  sudo -l   列出用户在主机上可用的和被禁止的命令。

可以看到,rose用户皇权特批

接下来useradd不用我多说了吧,指定能成功的,我就不进行演示了。但是强调一点,我们切换到提权后的用户,直接使用命令依然会提示权限不够,我们需要在前面加上sudo前缀

sudo useradd zhangsan    就可以了

不仅针对用户新增还是删除的提权,其他命令同样也能提权,照猫画虎就可以了。

6. 限制更改GRUB引导

我前面的博客也讲到过,假如系统开机后显示>grub,然后黑屏无法开机,可以通过修改GRUB菜单来进行修复。但是,细想那波操作,貌似人人都可以进入到那个操作进行修改,如果系统里存在比较重要的数据的话,那是相当不安全的。所以,我们可以为GRUB菜单设置一个密码

grub2-mkpasswd-pbkdf2    根据提示设置GRUB菜单的密码

我这里是123123,复制这一长段

cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak

cp /etc/grub.d/00_header /etc/grub.d/00_header.bak

vim /etc/grub.d/00_header

在四十多行的位置输入

grub2-mkconfig        生成新的 grub.cfg 配置文件

grub2-mkconfig -o /boot/grub2/grub.cfg      生成新的 grub.cfg 文件

然后我们重启机器,按e键进入grub菜单,可以看到,需要输入账户和密码才行了。

也可以更简单的,直接

grub2-setpassword

来设置密码

7. 网络端口扫描

络端口扫描是一种常见的网络安全测试方法,用于确定计算机或网络设备上哪些端口是开放的和可访问的。端口扫描可以帮助管理员发现潜在的安全漏洞或配置错误,从而及时采取措施加以修复。

我们常用的命令 nmap

首先用   rpm -qa |grep nmap    检测一下有没有下载nmap命令

如果没有下载的话用   yum install -y nmap   进行下载

接下来我们就可以使用nmap命令来进行扫描了

nmap命令常用的选项有

-p:分别用来指定扫描的端口

-sS:TCP SYN 扫描(半开扫描):只向目标发出 SYN 数据包,如果收到 SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。 tcp确定三次握手 -sT,TCP 连接扫描:这是完整的 TCP 扫描方式,用来建立一个 TCP 连接,如果 成功则认为目标端口正在监听服务,否则认为目标端口并未开放。

-sF:TCP FIN 扫描:开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙只对 SYN 数据包进行简单过滤,而忽略了其他形式的 TCP 攻 击包。这种类型的扫描可间接检测防火墙的健壮性。

-sU:UDP 扫描:探测目标主机提供哪些 UDP 服务,UDP扫描的速度会比较慢。

-sP:ICMP 扫描:类似于 ping 检测,快速判断目标主机是否存活,不做其他扫描。

-P0:跳过 ping 检测:这种方式认为所有的目标主机是存活的,当对方不响应 ICMP 请求时,使用这种方式可以避免因无法 ping 通而放弃扫描。

以上就是我能想到的比较基础的系统安全相关的操作,如有补偿或者讲错的地方恳请留言指正,谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1888208.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式锁的详细解析

分布式锁工具 一、背景 当前问题:项目中会使用到分布式锁用于定时任务、接口幂等性处理,但是分布式锁的实现较简单,会出现执行超时、加解锁失败等场景。分布式锁都有哪些实现,他们的优劣势是什么呢? 二、现有技术 分…

1:25万基础电子地图(西藏版)

我们为你分享过四川版、云南版、江西版、贵州版、重庆版和青海版的1比25万基础电子地图,现在再为你分享西藏版的电子地图。 如果你需要西藏版的1比25万基础电子地图,你可以在文末查看该数据的领取方法。 基础电子地图西藏版 西藏版1:25万基础电子地图…

vue3.0(十六)axios详解以及完整封装方法

文章目录 axios简介1. promise2. axios特性3. 安装4. 请求方法5. 请求方法别名6. 浏览器支持情况7. 并发请求 Axios的config的配置信息1.浏览器控制台相关的请求信息:2.配置方法3.默认配置4.配置的优先级5.axios请求响应结果 Axios的拦截器1.请求拦截2.响应拦截3.移…

让围绕数据库构建大模型应用更简单方便--DB-GPT

DB-GPT的目的是构建大模型领域的基础设施,通过开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单,更方便。 1 处理流程 DB-GPT系…

《涅朵奇卡:一个女人的一生》读后感

这周的计划是看完海明威的《丧钟为谁而鸣》,但是因为下班晚,而且书的体量大,所以只看了一半。本来以为这周的阅读计划完不成了,不料昨天加完班后拿起新到的《涅朵奇卡:一个女人的一生》,不自觉就陷进去了&a…

Zynq系列FPGA实现SDI视频编解码+图像缩放,基于GTX高速接口,提供4套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本博已有的FPGA图像缩放方案本方案的无缩放应用本方案在Xilinx--Kintex系列FPGA上的应用 3、详细设计方案设计原理框图SDI 输入设备Gv8601a 均衡器GTX 解串与串化SMPTE SD/HD/3G SDI IP核BT1120转RGB纯V…

音乐播放器小程序的设计

管理员账户功能包括:系统首页,个人中心,歌曲信息管理,会员优惠管理,用户管理,会员办理管理,歌曲分类管理,会员信息管理 微信端账号功能包括:系统首页,歌曲信息…

机器学习 C++ 的opencv实现SVM图像二分类的训练 (二)【附源码】

本节讲机器学习 C 的opencv实现SVM图像二分类的训练&#xff0c;下节讲测试&#xff1a; 数据集合data内容如下&#xff1a; 下载地址为&#xff1a;https://download.csdn.net/download/hgaohr1021/89506900 #include <stdio.h> #include <time.h> #include…

时钟切换的代码

目录 描述 输入描述&#xff1a; 输出描述&#xff1a; 参考代码 描述 题目描述&#xff1a; 存在两个同步的倍频时钟clk0 clk1,已知clk0是clk1的二倍频&#xff0c;现在要设计一个切换电路&#xff0c;sel选择时候进行切换&#xff0c;要求没有毛刺。 信号示意图&…

中控室监控台在水处理行业的作用

随着工业化和城市化的快速推进&#xff0c;水处理行业的重要性日益凸显。作为确保水质安全、提高水资源利用效率的关键环节&#xff0c;水处理厂需要高效、稳定地运行。在这个过程中&#xff0c;中控室监控台发挥着不可或缺的作用。本文将从以下几个方面&#xff0c;详细阐述中…

Go语言--运算符

算术运算符 关系运算符 不能写0<a<10&#xff0c;要判断必须0<a&&a<10。因为int和bool不兼容 逻辑运算符 位运算符 赋值运算符 其他 运算符的优先级

Elasticsearch基础(二):阿里云Elasticsearch快速入门

文章目录 阿里云Elasticsearch快速入门 一、资源领取 二、访问实例 三、创建索引 四、插入数据 五、搜索数据 1、全文搜索 2、按查询条件搜索 六、删除数据 阿里云Elasticsearch快速入门 一、资源领取 这里资源领取只针对新用户&#xff0c;如果是老用户按需购买&am…

AI生成模特图需要什么软件

&#x1f31f; AI生成模特图需要什么软件&#xff1a;触站AI&#x1f680; 触站AI&#xff0c;作为一家专注于企业AI图像领域的技术解决方案服务公司&#xff0c;以其卓越的AI绘画模型训练、AI绘图模型定制服务&#xff0c;引领着行业的新潮流。 ① AI绘画模型训练&#xff1a…

IDEA中使用Maven打包及碰到的问题

1. 项目打包 IDEA中&#xff0c;maven打包的方式有两种&#xff0c;分别是 install 和 package &#xff0c;他们的区别如下&#xff1a; install 方式 install 打包时做了两件事&#xff0c;① 将项目打包成 jar 或者 war&#xff0c;打包结果存放在项目的 target 目录下。…

Kamailio-SIP代理服务器单节点的安装与部署

使用背景&#xff1a;存在 Freeswitch 等语音网关应用服务&#xff0c;期望实现负载均衡、前置处理的功能&#xff0c;类似于Web应用服务的Nginx的角色 市场调研&#xff0c;发现了几家颇受欢迎的开源产品&#xff1a; KamailioOpenSIPSAsterisk Kamailio和OpenSIPS由于其灵…

vlan基础相关

7.2以太网交换基础 数据链路层也叫2层网络&#xff0c;用的是Mac地址&#xff0c;想到Mac地址就要想到交换机。 以太网协议&#xff08;LAN&#xff09;以太网是建立在CSMA/CD载波监听多路访问/冲突检测&#xff0c;机制上的广播型网络。CSMA工作原理是先监听&#xff0c;在介…

《C++20设计模式》适配器模式经验分享

文章目录 一、前言二、对于接口的讨论三、实现1、对象适配器1.1 UML类图1.2 实现 2、类适配器 四、最后 一、前言 从适配器模式开始就是类的组合聚合&#xff0c;类与类之间结构性的问题了。 适配器模式解决的问题&#xff1a; 适配器模式能够在不破坏现有系统结构的情况下&a…

震惊!张宇强化36讲1200页,暑期强化高效利用指南!

特别喜欢张宇老师的讲课风格 如果你打算跟张宇老师&#xff0c;那么基础——>强化——>冲刺&#xff0c;你应该这么买书&#xff01; 张宇老师25版课程大改版&#xff0c;其中&#xff0c;36讲的变动是最大的&#xff0c;张宇老师25版课程把以往的强化课程前移&#xff0…

Lumière:开创性的视频生成模型及其应用

视频内容创造领域迎来了突破性进展&#xff0c;但视频生成模型由于运动引入的复杂性而面临更多挑战。这些挑战主要源自运动的引入所带来的复杂性。时间连贯性是视频生成中的关键要素&#xff0c;模型必须确保视频中的运动在时间上是连贯和平滑的&#xff0c;避免出现不自然的跳…

法国工程师IMT联盟 密码学及其应用 2023年期末考试补考题

1 JAVA 安全 1.1 问题1 1.1.1 问题 用 2 或 3 句话解释 Java 执行模型&#xff08;Java 虚拟机machine virtuelle Java)&#xff09;中引入introduit沙箱bac sable机制 mcanisme d’excution par isolation的目的。 1.1.2 问题解释 在 Java 执行模型&#xff08;Java 虚拟机…