Linux之系统安全与应用

Linux系统提供了多种机制来确保用户账号的正当,安全使用。

系统安全措施

一. 清理系统账号

1.1 将用户设置为无法登录

Linux系统中除手动创建的各种账号外,还包括随系统或程序安装过程而生成的其他大量账号。除了超级用户root以外,其他的大量账号只是用来维护系统运作,启动或保存服务进程,一般不允许登录的,因此也被称为非登录用户。

常见的非登录用户,为了确保系统的安全,这些用户的登录shell通常设置是/sbin/nologin,表示禁止终端登录,确保不被人为改动。所谓 “禁止登录” 指的仅是这个用户无法使用bash或其他shell来登陆系统而已,并不是说这个账号就无法使用系统资源。

具体操作如下:

1.2 删除账户    

在这些非登录用户中,有一些很少用到的用户,这些被称为冗余账号,直接删除就可以了。当然,还有一些是随程序安装的用户账号,程序卸载不一定能完全自动删除,这时需要管理员手动进行清理。

具体操作如下:

1.3 锁定账户  

对于Linux服务器中长期不用的用户账号,无法确定是否删除,可以暂时锁定它,来确保安全。

具体操作如下:

方法一:

方法二:

1.4 锁定账户密码(本质锁定)

服务器中的用户账号已经固定,不能再进行修改,此时我们可以采取锁定账号的配置文件的方法。

chattr命令

i

无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件

a

仅允许补充(追加)内容,无法覆盖/删除内容(Append Only)

这里只参考选项 -i ,chattr命令lsattr命令具体详解可以参考https://blog.csdn.net/qq_66204767/article/details/135326223?spm=1001.2014.3001.5501

具体操作如下:

二. 控制密码安全

在不安全的网络环境中,为了降低密码被猜出与被暴力破解的风险,要养成定期更改密码的习惯,适当避免长期使用同一个密码。对于已有用户可以使用chage命令,用于设置密码时限,对于密码过期的用户,登录时将被要求重新设置密码,否则拒绝登录。

2.1 方法一:chage

chage 命令

格式:chage  [选项]  用户名

作用:用于设置密码时限

-m

密码可更改的最小天数。为零时代表任何时候都可以更改密码。

-M

密码保持有效的最大天数。

-w

用户密码到期前,提前收到警告信息的天数。

-E

帐号到期的日期。过了这天,此帐号将不可用。

-d

上一次更改的日期。

-i

停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。

-l

例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

具体操作如下:

2.2 方法二:/etc/login.defs

对于新建用户,可以修改 /etc/login.defs 文件中的内容来设置密码规则

具体操作如下:

vim /etc/login.defs   #编辑该文件

三. 注销历史命令

Shell 环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在 的风险。只要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在 命令行输入明文的密码,则无意之中服务器的安全壁垒又多了一个缺口。 Bash 终端环境中,历史命令的记录条数由变量 HISTSIZE 控制,默认为 1000 条。通过修改/etc/profile 文件中的 HISTSIZE 变量值,可以影响系统中的所有用户。

3.1 方法一:/etc/profile

修改/etc/profile 文件

具体操作如下:

vim  /etc/profile    #编辑该文件

3.2 方法二:~/.bash——logout

修改用户宿主目录中的 ~/.bash——logout 文件,添加清空历史命令的操作语句

具体操作如下:

vim  ~/.bash_logout         #在文件中添加清空历史命令的操作语句

注:还可以使用 history   -c  和  clear命令临时清除历史命令

3.3 方法三:超时时间

设置闲置超时时间,当超过指定的时间没有任何输入时即自动注销终端。如此可以避免管理员不在时其他人员对服务器的误操作风险。

具体操作如下:

vim  /etc/profile               #编辑该文件....................export  TMOUT=600               #将该字段加入 /etc/profile文件中

闲置超时由变量TMOUT来控制,默认单位为秒

注:当正在执行程序代码编译,修改系统配置等耗时较长的操作时,应避免设置TMOUT变量。必要时可以执行 “unset  TMOUT”命令取消TMOUT变量设置。

四. 切换用户和用户提权

大多数Linux服务器并不建议用户直接以root用户登录。这样的目的是为了减少因为误操作而导致的破坏,以及降低特权密码在不安全的网络中被泄露的风险。这时,需要为普通用户提供一种身份切换和权限提升机制,以便在必要的时候执行管理任务。

4.1 su命令

格式:su  [options...]    [-]    [user [args...]]

作用:主要用来切换用户,可以切换为指定的另外一个用户,从而具有该用户的权限。

注:切换时需要对目标用户的密码进行验证(root用户切换到其他用户时除外)。此外,su 切换新用户后,使用 exit 退回至旧的用户身份,而不要再用 su 切换至旧用户,否则会生成很多的bash子进程,环境可能会混乱。

su 和 su-  差异

su

仅仅切换身份,不切换用户环境,会导致某些命令运行出现问题或错误

su  -

- 选项,切换用户身份更彻底,表示进入到目标用户的登录shell环境

具体操作如下:

限制使用su命令的用户

默认情况下,任何用户都允许使用su命令,这样使得有机会可以反复尝试其他用户的登录密码,存在安全隐患。因此,我们需要借助pam_wheel认证模块,来规定只允许个别用户可以使用su命令进行切换。

具体操作如下:

gpasswd -a lisi wheel          #将lisi用户加入 wheel组 rootvim /etc/pam.d/su              #编辑认证配置文件//找到配置文件中的这两行,根据需求更改即可# auth sufficient pam_ rootok.so      //取消其注释,这种状态下是允许所有用户间使用su命令进行切换的。# auth required pam_ wheel.so use_uid   //取消其注释,表示只有root用户和wheel组内的用户才可以使用su命令1. 默认情况,开启第一行,注释第二行,这种状态下是允许所有用户间使用su命令进行切换的。2.如果开启第一,二行,表示只有root用户和wheel组内的用户才可以使用su命令3.如果注释第一行,开启第二行,表示只有whee1组内的用户才能使用su命令,root用户也被禁用su命令4.这两者都被注释的情况下,表示允许所有用户都能使用su命令。但root下使用su切换到其他普通用户需要输入密码;如果第一行不注释,则root使用su切换普通用户就不需要输入密码(pam rootok. so模块的主要作用是使uid为0的用户,即root用户能够直接通过认证而不用输入密码。)

4.2 sudo命令

格式: sudo   [参数]   命令名称

-h

列出帮助信息

-l

列出当前用户可执行的命令

-u用户名或者uid值

以指定的用户身份执行命令

-k

清空密码的有效时间,下次执行sudo时需要再次进行密码验证

-b

在后台执行指定的命令

-p

更改询问密码的提示语

作用:允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,提升普通用户的执行权限。

与su对比下的区别:su的缺点之一在于必须要先告知超级用户root的密码,而多一个人知道root用户的密码就多一份风险,而sudo可以使一般用户不需要知道超级用户的密码即可获得权限。

总结来说,sudo命令具有以下功能

1)限制用户执行指定的命令

2)记录用户执行的每一条命令

3)配置文件(/etc/sudoers)提供集中的用户管理,权限和主机等参数

4)验证密码的后5分钟内(默认值)无须让用户再次验证密码

具体操作如下:
1. /etc/sudoers

可以在配置文件/etc/sudoers中添加授权

sudo机制的配置文件为/etc/sudoers,文件中的默认权限为440,需要使用专门的visudo工具进行编辑,但是要注意只有root管理员才可以使用visduo命令编辑sudo的配置文件。

/etc/sudoers 文件

典型的sudo配置记录中,每一行对应一个用户或组的sudo授权配置

用户(user):授权的用户名,或采用 "%组名"的形式(授权一个组的所有用户)。

主机(MACHINE):使用此配置文件的主机名。这部分主要是方便在多个主机间共用同一份sudoers文件,一般设置成localhost或者实际的主机名就可以。

命令(COMMANDS):允许授权的用户通过sudo方式执行的特权命令,需要填写命令的完整路径,多个命令之间以 ","分隔。这一部分的配置记录允许使用通配符 “*”,取反符号 “  !”,当需要授权某个目录下的所有命令或取消其中个别命令时特别有用。

此外,如果使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名。用户,主机,命令部分都可以定义别名(必须大写)分别通过关键字User_Alias, Host_Alias ,Cmmd_Alias来进行设置。如图所示:

还值得注意的是,默认情况下,通过sudo方式执行的操作并不会记录。如果我们需要启用sudo日志来供管理员查看的话,可以在/etc/sudoers文件中增加 “Defaults  logfile”设置 ,如下图所示:

2. 通过sudo执行特权命令

已经获得授权的用户,可以通过sudo方式执行特权命令,只需要把正常的命令行作为sudo命令的参数即可(普通用户执行的时候需要使用绝对路径)。

如果要查看用户自己获得哪些sudo授权,可执行 “sudo  -l命令”。

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

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

相关文章

免费开源的微信小程序源码、小游戏源码精选70套!

微信小程序已经成为我们日常的一部分了,也基本是每个程序员都会涉及的内容,今天给大家分享从网络收集的70个小程序源码。其中这些源码包含:小游戏到商城小程序,再到实用的工具小程序,以及那些令人惊叹的防各大站点的小…

【Linux】文件描述符 | 重定向 | C文件指针与fd的关系 | 用户级缓冲区

文章目录 一、文件描述符1. 理解:Linux下一切皆文件2. 文件描述符(fd)的概念3. 文件描述符的分配规则4. 进程创建时默认打开的 0 & 1 & 2 号文件 二、重定向1. 重定向的本质2. 使用dup2系统调用函数3. bash下的三种重定向4. 三种重定…

全面理解“张量”概念

1. 多重视角看“张量” 张量(Tensor)是一个多维数组的概念,在不同的学科领域中有不同的应用和解释: 物理学中的张量: 在物理学中,张量是一个几何对象,用来表示在不同坐标系下变换具有特定规律的…

(N-141)基于springboot,vue网上拍卖平台

开发工具:IDEA 服务器:Tomcat9.0, jdk1.8 项目构建:maven 数据库:mysql5.7 系统分前后台,项目采用前后端分离 前端技术:vueelementUI 服务端技术:springbootmybatis-plusredi…

GNS3连接Vmware虚拟机

1 安装配置Gns3、Vmware 安装过程略,最终版本号: Gns3:2.2.44.1 Vmware:17.0 建议保持一致,特别是Gns3,功能虽然强大的,但bug问题感觉也不少 2 虚拟机配置 新建两台Ubuntu 22.04虚拟机&#…

【JavaScript权威指南第七版】读书笔记速度

JavaScript权威指南第七版 序正文前言:图中笔记重点知识第1章 JavaScript简介第一章总结 第2章 词法结构注释字面量标识符和保留字Unicode可选的分号第二章总结 第3章 类型、值和变量【重要】原始类型特殊类型第三章总结 第4章 表达式与操作符表达式操作符条件式调用…

【JAVA面试精选篇-初生牛犊不怕虎】

文章目录 🌽 简介🧺 线程池🌄 Redis⏰ JVM🚛 数据结构🍎 Mysql🍡 结语🌽 简介 海阔凭鱼跃,天高任鸟飞! 学习不要盲目,让大脑舒服的方式吸收知识!!! 本人马上离开济南,回泰安发展,为了积极准备面试,目前在梳理一些知识点,同时希望能够帮助到需要的人… …

Rabbitmq调用FeignClient接口失败

文章目录 一、框架及逻辑介绍1.背景服务介绍2.问题逻辑介绍 二、代码1.A服务2.B服务3.C服务 三、解决思路1.确认B调用C服务接口是否能正常调通2.确认B服务是否能正常调用A服务3.确认消息能否正常消费4.总结 四、修改代码验证1.B服务异步调用C服务接口——失败2.将消费消息放到C…

智能AI系统开发,专业软件硬件物联网开发公司,探索未来科技新纪元

在信息时代,人工智能(AI)、物联网等前沿技术日益受到人们的关注。智能AI系统、专业软件硬件物联网开发公司应运而生。今天,我们将向大家介绍一家位于XX城的专业公司,致力于智能AI系统开发和软件硬件物联网领域的创新研…

大数据安全 | 期末复习(下)

文章目录 📚安全策略和攻击🍋🐇安全协议🐇IPsee🐇SSL🐇SSH🐇S/MIME协议🐇公钥基础设施PKI🐇PGP🐇HTTPS🐇防火墙🐇防毒墙🐇…

解决:‘chromedriver’ executable needs to be in PATH

解决:chromedriver’ executable needs to be in PATH 文章目录 解决:chromedriver’ executable needs to be in PATH背景报错问题报错翻译报错位置代码报错原因解决方法方法一:检查python安装路径有没有添加到环境变量里面方法二&#xff1…

谷歌vue插件安装包

链接:https://pan.baidu.com/s/1wTCqn7ttc-rF_wZScfEgPw?pwde7k6 提取码:e7k6 修改D:\谷歌浏览器插件安装包\devtools-main\packages\shell-chrome下manifest.json文件 将里面这四个文件地址改为src下面,因为地址在src下,直接…

基于Guava布隆过滤器的海量字符串高效去重实践

在Java环境中处理海量字符串去重的问题时,布隆过滤器(BloomFilter)是一种非常高效的数据结构,尽管它有一定的误报率。布隆过滤器适用于那些可以接受一定误报率,并且希望节省空间和时间成本的场景。 布隆过滤器应用 使…

Fastjson代码审计实战

代码审计-漏洞复现 漏洞分析采用的是华夏ERP2.3, 查看pom.xml文件发现fastjson版本1.2.55,该版本存在漏洞,利用DNSlog进行验证。 fastjson涉及反序列化的方法有两种,JSON.parseObject()和JSON.parse(),在代码中直接搜…

MySQL 联合索引

文章目录 1.简介2.最左匹配3.最左匹配原理4.如何建立联合索引?5.覆盖索引参考文献 1.简介 联合索引指建立在多个列上的索引。 MySQL 可以创建联合索引(即多列上的索引)。一个索引最多可以包含 16 列。 联合索引可以测试包含索引中所有列的查询&#…

关于在Ubuntu20.04(ROS1 noetic)中使用catkin_make编译时发生的与pyhton版本不兼容的问题解决办法

今天在另外一台电脑上操作复现【ROS建模:一起从零手写URDF模型】这个博客时,发生了一些问题,特此记录下来 【ROS建模:一起从零手写URDF模型】链接:https://blog.csdn.net/qq_54900679/article/details/135726348?spm…

JasperReports渲染报表文件时候,读取图片报错:Byte data not found at:xxx.png.\r\n\tat

目录【知识星球】 1.1、错误描述 1.2、解决方案 1.1、错误描述 最近在工作中,使用JasperReports报表比较多一些,有次线上环境里面运行报错,查看报错日志,如下所示: net.sf.jasperreports.engine.JRException: Byte…

Spring Boot 启动错误【Kotlin】

目录 错误详情 错误原因 解决方法一 解决方法二 错误详情 Kotlin:     Module was compiled with an incompatible version of Kotlin.     The binary version of its metadata is 1.7.1, expected version is 1.1.16. 错误原因 编译器或构建工具的版本不匹配所造…

(免费领源码)python#Mysql苏州一日游之可视化分析69216-计算机毕业设计项目选题推荐

摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对旅游服务等问题,对旅游服务进行…

docker 构建应用

docker 应用程序开发手册 开发 docker 镜像 Dockerfile 非常容易定义镜像内容由一系列指令和参数构成的脚本文件每一条指令构建一层一个 Dockerfile 文件包含了构建镜像的一套完整指令指令不区分大小写,但是一般建议都是大写从头到尾按顺序执行指令必须以 FROM 指…