10、系统安全及应用

1、账号安全

用户的账号是计算机使用者的身份凭证或标识,每个要访问系统资源的人,必须凭借其用户账号才能进入计算机。

1.1 系统账号清理

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

  • 注:常见的非登录用户账户包括bin、daemon、adm、lp、mail等,为了确保系统安全,这些用户账号的登录Shell通常是/sbin/nologin——表示禁止终端登录,应确保不被人为改动。
  • 使用useradd去创建一个账户的时候,使用-s,可以指定用户的登录Shell。默认情况下在创建账户的时候为用户分配的是/bin/bash环境,使用-s可指定一个nologin的环境,命令是:useradd aaa -s /sbin/nologin。
  • (用nologin的环境创建出来的账号,这样的环境会使得该用户无法执行任何的指令,并且它连登系统都登不进去)

所以对于程序用户来讲,通常我们在创建用户的时候会给它指定一个nologin的环境。

  • 对于那些临时不用的账号,我们要使用usermod -L命令给它锁定起来,锁定之后该账号是不能登系统的,

在各种非登录用户账号中,还有相当一部分是很少用到的,如games。这些用户账户可以被视为冗余账号,直接删除即可。另外,还有一些随应用程序安装的用户账户,若卸载程序后未能自动删除,则需要管理员手动进行清理。

对于那些在Linux服务器中长期不用的用户账户,若无法确定是否应该删除,可以暂时将其锁定。例如,下图中是锁定、解锁名为zhangsan的用户账号(passwd、usermod命令都可以用来锁定、解锁账号):

如果服务器中的用户账号已经固定,不再进行更改,还可以采取锁定账号配置文件的方法。

使用chattr命令,分别结合+i、-i选项来锁定、解锁文件,使用lsattr命令可以查看文件的锁定情况,如下图:

注:

  • chattr命令是为文件添加特殊权限用的,i只是这些特殊权限中的一种。
  • chattr命令中有两个属性只能由root用户来给它设置,一个是i(锁定文件)的属性,另一个是a的属性。

当设置+a属性后,文件只能增加数据,既不能删除也不能修改数据,只有root才能设置这个属性。(用lsattr命令可以查看文件的属性)如下图是为text.txt添加一个a的属性:

chattr的属性:

  • 设置c属性后,会自动将文件压缩,在读取时自动解压缩。

lsattr命令可以查看文件的特殊属性,如下图,第二个文件就有特殊的属性:

lsattr(显示文件隐藏属性)命令的选项有:

注:用lsattr命令查看目录的属性时,会显示出该目录的一级子目录和子文件。

-a:将隐藏文件的属性也显示出来

-d:如果接的是目录,仅列出目录本身的属性而不是目录内的文件名

-R:连同子目录的数据也显示出来

补充:如下图,使用echo命令回显出aaa这个字符串,然后把他放置在test.txt这个文件里(单个大于号是覆盖的意思,即不管你现在的文件里有多少东西,我只要用覆盖的指令就会完全替代文件中的内容,即文件里现在就只剩aaa了):

系统会提示:不允许这样的操作。

如果还是用echo这个命令,后面使用两个大于号(双个大于号本身就是一种追加的操作,即在文件的末尾追加aaa的内容):

不要用vi编辑器打开去改内容,要用echo的命令去编辑文件内容。因为用vi编辑器那不是改,是编辑。

  • 在账号文件被锁定的情况下,其内容将不允许变更,因此无法添加、删除账号,也不能更改用户的密码、登录Shell、宿主目录等属性信息。如下图:

2、密码安全

为了降低密码被猜出或被暴力破解的风险,用户应养成定期更改密码的习惯,避免长期使用同一个密码。

注:所设置的密码策略,对root管理员是无效的。

chage命令用于设置密码时限,执行以下操作可将密码的有效期设为30天:

例如执行下图中的命令可强制要求用户zhangsan下次登陆时重设密码:

3、命令历史、自动注销

Shell环境的命令历史机制为用户提供了极大的便利,但另一方面也给用户带来了潜在的风险。只要获得用户的命令历史文件,该用户的命令操作过程将会一览无余,如果曾经在命令行输入明文的密码,则无意中服务器的安全壁垒又多了一个缺口。

在Bash终端环境中,历史命令的记录条数由变量HISTSIZE控制,默认为1000条。通过修改/etc/profile文件中的HISSIZE变量值,可以影响系统中的所有用户。如下图,可以设置最多只记录200条历史命令:

除此之外,还可以修改用户宿主目录中的~/.bash_logout文件,添加清空历史命令的操作语句。这样一来,当用户退出已登录Bash环境后,所记录的历史命令将自动清空:

注:在Bash终端环境中,还可以设置一个闲置超时时间,当超过指定的时间没有任何输入时即自动注销终端,这样可以避免当管理员不在时其他人员对服务器的误操作风险(限制超时由变量TMOUT来控制,默认单位为秒s):

4、用户切换与提权

Linux系统为我们提供了su、sudo两种命令,其中su命令主要用来切换用户,而sudo命令来提升执行权限。

4.1 su命令——切换用户

使用su命令,可以切换为指定的另一个用户,从而具有该用户的所有权限。(切换时需要对目标用户的密码进行验证,从root用户切换为其他用户时除外)。

例如当前登录的用户为jerry,若要切换为root用户,可执行下图中的命令:

注:在上图中的命令中,选项-等同于--login或-l——表示切换用户后进入目标用户的登录Shell环境(若缺少此选项,则仅切换身份,不切换用户环境)

对于切换为root用户的情况,“root”可以省略。

默认情况下,任何用户都可以使用su命令,从而有机会反复尝试其他用户的登陆密码,这样就带来了安全风险。可以借助于pam_wheel认证模块,加强对su命令的使用控制,只允许极个别用户使用su命令进行切换。如下图中,将授权使用su命令的用户添加到wheel组,修改/etc/pam.d/su认证配置以启用pam_wheel认证:

注:使用su命令切换用户的操作将会记录到安全日志/var/log/secure文件中,可以根据需要进行查看。

启用pam_wheel认证后,未加入到wheel组内的其他用户将无法使用su命令,尝试进行切换时将提示“拒绝权限”,从而将切换用户的权限控制在最小范围内。

4.2 PAM安全认证

PAM安全认证是当前Linux服务器普遍使用的认证方式,PAM认证一般遵循的顺序是:

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

注:PAM文件在/etc/pam.d,这里面放置的都是你的PAM认证文件,PAM认证文件其实就是用户在使用你系统里面的各种命令的时候,你在执行各种指令的时候是否有权限使用该指令。如下图列出的就是PAM文件:

上图中的system-auth——是系统的认证文件,用vim编辑器打开该文件之后,与操作系统登陆有关的这些密码相关的策略,就在这里头设置着的。

如果想查看某个程序是否支持PAM认证,可以用ls命令查看,例如执行以下命令可以查看su是否支持PAM模块认证:

4.3 sudo命令——提升执行权限

通过su命令可以非常方便地切换为另一个用户,但前提条件是必须知道root用户的密码。

使用sudo命令就可以提升执行权限,但要需要由管理员预先进行授权,指定允许哪些用户以超级用户地身份来执行哪些命令。

(1)在配置文件/etc/sudoers中添加授权

sudo机制的配置文件为/etc/sudoers,文件的默认权限是440,需要使用专门的visudo工具进行编辑。

注:虽然也可以使用vi进行编辑,但保存时必须使用:w!命令来强制操作,否则系统将提示为只读文件而拒绝保存。

(2)通过sudo执行特权命令

特权命令通常位于/sbin、/usr/sbin等目录下,普通用户执行时应使用绝对路径。对于已获得授权的用户,通过sudo方式执行特权命令时,只需要将正常的命令作为sudo命令的参数即可。

例如,执行下图中的命令可查看用户自己获得哪些sudo授权(其中未授权的用户将会得到may not run sudo的提示):

如果已经启用sudo日志,则可以从/var/log/sudo文件中看到用户的sudo操作记录:

5、系统引导和登录控制

5.1 限制更改GRUB引导参数

通过修改GRUB引导的参数,可以对一些系统问题进行修复。但是从安全的角度看,如果任何人都能够修改GRUB引导参数,对服务器本身显示是一个极大的威胁,那么为了加强对引导过程的安全控制,可以为GRUB菜单设置一个密码,只有提供正确的密码才被允许修改引导参数。

如下图所示命令中,可以为GRUB菜单设置密码,

生成密码后在/etc/grub.d/00_header配置文件中添加对应的用户、密码等配置:

然后使用grub2_mkconfig命令生成新的grub.cfg配置文件:

通过上述的配置,当重新开机进入GRUB菜单时,按E键将无法修改引导参数,若要获得编辑权限,必须根据提示输入正确的GRUB密码,如下图:

5.2 终端及登录控制

(1)进制root用户登录

在Linux服务器中,默认开启了6个tty终端,允许任何用户进行本地登录。

若要禁止root用户从指定的终端登录,只需要从该文件中删除或者注释掉对应的行即可。如下图,若要禁止root用户从tty5、tty登录,可以修改/etc/securetty文件,将tty、tty6行注释掉:

(2)禁止普通用户登录

如果当服务器正在进行备份或调试等维护工作时,可能不希望再有新的用户登陆系统。这时候只需要简单的建立/etc/nologin文件即可,login程序会检查/etc/nologin文件是否存在,如果存在,则拒绝普通用户登录系统(root用户不受限制),如下图:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java版本+企业电子招投标系统源代码+支持二开+Spring cloud +鸿鹄电子招投标系统

随着公司的迅速扩张,对内部采购管理的要求也随之提高。为了构建一个公平、透明、公正的采购体系,并有效降低采购成本,我们决定开发一款符合国家电子招投标法规的电子招标采购软件。该软件将提升招投标工作的公开性和透明度,通过电…

macOS Sequoia 开发者测试版下载和安装教程

macOS Sequoia 于 2024年6月10日在WWDC 2024 上发布,里面添加了AI、窗口排列、操控iPhone等功能,目前发布的为测试版本,可能很多人不知道怎么去下载安装,现在小编教一下大家怎么安装最新的 macOS Sequoia 开发者测试版。 下载 mac…

Qt系统相关

本文目录 1.Qt事件事件的处理标签事件鼠标事件滚轮事件按键事件定时器事件窗口事件事件派发器 2.Qt文件操作QFile的基本使用 3.Qt多线程使用线程线程锁connect的第五个参数 条件变量和信号量 4.Qt网络编程UDP SocketTCP SocketQTcpServerQTcpSocket HTTP的编写 5.QT多媒体播放音…

vivado HW_SIO_GT

描述 Xilinx的可定制LogiCORE™IP集成误码率测试仪(IBERT)核心 FPGA是为评估和监控千兆收发器(GTs)而设计的。IBERT core支持系统内串行I/O验证和调试,使您能够进行测量和优化 您的设计中的高速串行I/O链路。参考综合误…

【ARM Coresight Debug 系列 -- ARMv8/v9 软件实现断点地址设置】

请阅读【嵌入式开发学习必备专栏 】 文章目录 ARMv8/v8 软件设置段带你断点地址软件配置流程代码实现 ARMv8/v8 软件设置段带你 在ARMv8/9架构中,可以通过寄存器 DBGBVR0_EL1 设置断点。这个寄存器是一系列调试断点值寄存器中的第一个DBGBVRn_EL1,其中n…

Transformer结合U-Net登上Nature子刊!最新成果让精度和效率都很美丽

最近一种基于视觉Transformer改进的U-Net来检测多光谱卫星图像中甲烷排放的深度学习方法登上了Nature子刊。与传统方法相比,该方法可以识别更小的甲烷羽流,显著提高检测能力。 这类Transformer与U-Net结合的策略是一种创新的深度学习方法,它…

大模型生成短视频

最近看到一个开源项目可以通过AI生成短视频,然后尝试了下,感觉还不错,下面是具体步骤。 项目名叫moneyprinterTurbo,它本意是对接到Youtube,自动生成视频并上传到Youtube获取流量赚钱,所以项目名叫moneypri…

函数计时的方法

1. console 对象 可以调⽤ console 对象的 time 和 timeEnd ⽅法来对⼀段程序进⾏时间计算。例如: function fib(n) {if (n 0) return;let a arguments[1] || 1;let b arguments[2] || 1;[a, b] [b, a b];fib(--n, a, b); } console.time(); // 记时开始 fib…

纹理贴图必须要输入顶点坐标或纹理坐标吗

最近知识星球的一位同学,面试时被问到:纹理贴图必须要输入顶点坐标或纹理坐标吗? 他一下子被这个问题问蒙了,虽然他知道正确答案是否定的,但是说不上来理由。 这个就引出了文本提到的全屏三角形,它不需要顶点缓冲区,而是利用顶点着色器直接生成所需的顶点坐标和纹理坐标…

推荐一些企业热门的 DevOps 工具(非常详细)零基础入门到精通,收藏这一篇就够了

最近一段时间,我们见证了 DevOps 技术的飞速发展。当今流行且功能强大的工具可能会成为下一年度的过时工具,甚至可能很快被另一种工具取代。如前所述,作者的目的不是通过这篇文章来评判哪些工具最受欢迎或功能最全,而是让读者全面…

【每日一题】错误的集合

错误的集合 ✨审题:在一个1-n的数组中,会有一个元素重复,一个元素丢失;👉目标;找到重复的元素和丢失的元素并放入一个数组中返还回去 ✨有没有想到单身狗问题的进阶版那个思路,找2个单身狗,一个…

tcp协议的延迟应答(介绍+原则),拥塞控制(拥塞窗口,网络出现拥塞时,滑动窗口的大小如何确定,慢启动,阈值)

目录 延迟应答 引入 介绍 原则 拥塞控制 引入 网络出现拥塞 引入 介绍 介绍 拥塞窗口 介绍 决定滑动窗口的大小 慢启动 介绍 为什么要有慢启动 阈值 算法 总结 延迟应答 引入 发送方一次发送更多的数据,发送效率就越高 因为要写入网卡硬件的io速度很慢,尽量…

176.二叉树:从中序与后序遍历序列构造二叉树(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

神卓互联内网穿透:使用超简单,拿捏

神卓互联内网穿透技术是一种能够打破内网与外网之间壁垒的创新技术。它通过一系列智能的网络协议和算法,实现了将企业内部网络资源安全、稳定地暴露给外部网络访问。这使得无需进行复杂的网络配置和改造,就能轻松实现远程办公、跨地域协作等重要应用。 神…

【第1章】Vue环境搭建

文章目录 前言一、安装Node1. 下载2. 安装3. 验证3.1 npm版本与Node.js版本3.2 验证环境 4. npm4.1 安装npm4.2 安装包4.3 全局安装包4.4 更新包4.5 删除包4.6 查看已安装的包4.7 初始化package.json 5. 国内源 二、安装Visual Studio Code1.下载2.安装3.安装Vue - Official 三…

【品质】如何培养幽默感,如何幽默的沟通与应对生活(自卑vs自信,悲观vs乐观)

【品质】如何培养幽默感,如何幽默和正能量的沟通与应对生活(自卑vs自信,悲观vs乐观) 文章目录 一、性格底色(自我认知,世界观)1、从悲观的底色开始2、用摆烂、自嘲的方式与世界和解 二、沟通方法…

同余式,乘法逆元,费马小定理

同余式 同余式是 数论 的基本概念之一,设m是给定的一个正整数,a、b是整数,若满足m| (a-b),则称a与b对模m 同余 ,记为a≡b (mod m),或记为a≡b (m)。 这个式子称为模m的同余式,若m∤ (a-b)&…

express入门02静态资源托管

目录 1 搭建静态资源结构2 代码助手3 多目录托管4 服务器热启动总结 上一篇我们讲解了使用express搭建服务器的过程,服务器搭建好了之后,除了在地址栏里输入URL发起get请求或者post请求外,通常我们还需要访问静态资源,比如html、c…

LabVIEW程序内存泄漏分析与解决方案

维护他人编写的LabVIEW程序时,若发现程序运行时间越长,占用内存越大直至崩溃,通常是内存泄漏导致的。本文从多角度分析内存泄漏的可能原因,包括数组和字符串处理、未释放的资源、循环中的对象创建等,并提供具体的解决方…