Linux--系统安全及应用

1.1账号安全控制

        用户账号是计算机使用者的身份凭证或标识,每个要访问系统资源的人,必须凭借其用户账号才能进入计算机。在Linux系统中,提供了多种机制来确保用户账号的正当、安全使用。

1.系统账号清理

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

      常见的非登录用户账号包括bin、daemon、adm、lp、mail等。为了确保系统安全,这些用户账号的登录Shell通常是/sbin/nologin,表示禁止终端登录,应确保不被人为改动,如下所示。

[root@node01 ~]# grep "/sbin/nologin" /etc/passwd

 

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

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

[root@node01 ~]# useradd bdqn
[root@node01 ~]# passwd bdqn

[root@node01 ~]# usermod -L bdqn  //锁定账号
[root@node01 ~]# passwd -S bdqn   //查看账号状态
[root@node01 ~]# usermod -U bdqn  //解锁账号
[root@node01 ~]# passwd -S bdqn 

 

      如果服务器中的用户账号已经固定,不再进行更改,还可以采取锁定账号配置文件的方法。使用 chattr 命令,分别结合“+i” “-i”选项来锁定、解锁文件,使用Isattr 命令可以查看文件锁定情况。

[root@node01 ~]# chattr +i /etc/passwd /etc/shadow  //锁定文件
[root@node01 ~]# lsattr /etc/passwd /etc/shadow     //查看为锁定的状态[root@node01 ~]# chattr -i /etc/passwd /etc/shadow  //解锁文件
[root@node01 ~]# lsattr /etc/passwd /etc/shadow

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

[root@node01 ~]# chattr +i /etc/passwd /etc/shadow
[root@node01 ~]# useradd zhangsan

2.密码安全控制

       在不安全的网络环境中,为了降低密码被猜出或被暴力破解的风险,用户应养成定期更改密码 的习惯,避免长期使用同一个密码.管理员可以在服务器端限制用户密码的最大有效天数,对于密 码已过期的用户,登录时将被要求重新设置密码,否则将拒绝登录。

      执行以下操作可将密码的有效期设为30天(chege命令用于设置密码时限)。

[root@node01 ~]# vim /etc/login.defs  //适用于新建的用户[root@node01 ~]# chage -M 30 bdqn     //适用于已有的bdqn用户

       在某些特殊情况下,如要求批量创建的用户初次登录时必须自设密码,根据安全规划统一要求 所有用户更新密码等,可以由管理员执行强制策略,以便用户在下次登录时必须更改密码。例如, 执行以下操作可强制要求用户zhangsan 下次登录时重设密码。

[root@node01 ~]# chage -d 0 bdqn

3.命令历史、自动注销

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

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

[root@node01 ~]# vim /etc/profile      //适用于新登录的用户[root@node01 ~]# export HISTSIZE=200   //适用于当前用户[root@node01 ~]# history               //查看历史输入过的命令

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

[root@node01 ~]# vim ./.bash_logout 

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

[root@node01 ~]# vim /etc/profile  //适用于新登录用户export TMOUT=600[root@node01 ~]# export TMOUT=600  //适用于当前用户

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

1.1.2用户切换与提权

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

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

1.su命令——切换用户

       使用su命令,可以切换为指定的另一个用户,从而具有该用户的所有权限,当然,切换时需要 对目标用户的密码进行验证(从root 用户切换为其他用户时除外)。例如,当前登录的用户为bdqn,若要切换为root用户,可以执行以下操作。

[bdqn@node01 ~]$ su - root
密码:                       //输入用户root的密码

      上述命令操作中,选项“-”等同于“--login”或“-I”,表示切换用户后进入目标用户的登录 Shell环境,若缺少此选项则仅切换身份,不切换用户环境.对于切换为root 用户的情况,root可以省略。          默认情况下,任何用户都允许使用su命令.从而有机会反复尝试其他用户(如root)的登录密 码,这样带来了安全风险。为了加强su命令的使用控制,可以借助于pam_wheel认证模块,只允许极个别用户使用su命令进行切换。实现过程如下:将授权使用su命令的用户添加到wheel组,修改 /etc/pam.d/su认证配置以启用pam_wheel认证。

[root@node01 ~]# gpasswd -a bdqn wheel  //添加授权用户bdqn
[root@node01 ~]# grep wheel /etc/group  //确认wheel组成员
[root@node01 ~]# vim /etc/pam.d/su

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

[zhangsan@node01 ~]$ su - root

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

2.sudo命令——提升执行权限

      通过su命令可以非常方便地切换为另一个用户,但前提条件是必须知道目标用户的登录密码。 例如,若要从jerry用户切换为root用户,必须知道root 用户的密码,对于生产环境中的Linux服务 器,每多一个人知道特权密码,其安全风险也就增加一分。  

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

       sudo机制的配置文件为/etc/sudoers.文件的默认权限为440.需使用专门的visudo工具进行编 辑。虽然也可以用vi进行编辑,但保存时必须执行“:w!”命令来强制操作,否则系统将提示为只 读文件而拒绝保存。

      配置文件/etc/sudoers中,授权记录的基本配置格式如下所示。

       授权配置主要包括用户,主机,命令三个部分,即授权哪些人在哪些主机上执行哪些命令,各部分的具体含义如下。

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

> 主机(MACHNE):使用此配置文件的主机名称。此部分主要是方便在多个主机间共用同一 份sudoers文件,一般设为localhgmy或者实际的主机名即可。

>命令(COMMANOS):允许授权的用户通过sudo方式执行的特权命令,需填写命令程序的完整路径,多个命令之间以逗号“”进行分隔。

      典型的 sudo配置记录中,每行对应一个用户或组的sudo授权配置。例如,若要授权用户zhangsan 能够执行ifconfig命令来修改IP地址,而wheel组的用户无需验证密码即可执行任何命令,可以执行以下操作。

[root@node01 ~]# visudozhangsan node01=/sbin/ifconfig
%wheel   node01=NOPASSWD: ALL

        当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名、用户、主机、命令部分都可以定义为别名(必须为大写),分别通过关键字User_Alias、Host_Alias、Cmnd_Alias来 进行设置。例如,以下操作通过别名方式来添加授权记录,允许用户jerry、tom、tsengyia在主机smtp、 pop中执行rpm、yum命令.

[root@node01 ~]# visudo

1.2系统引导和登录控制

1.2.1开关机安全控制

       对于服务器主机,其物理环境的安全防护是非常重要的,不仅要保持机箱完好、机柜锁闭,还 要严格控制机房的人员进出、硬件设备的现场接触等过程,在开关机安全控制方面,除了要做好物 理安全防护以外,还要做好系统本身的一些安全措施。

1.调整BIOS引导设置

(1)将第一优先引导设备(First Boot Device)设为当前系统所在磁盘。

(2)禁止从其他设备(如光盘、U盘、网络等)引导系统,对应的项设为“Disabled”。

(3)将BIOS的安全级别改为“setup”,并设置好管理密码,以防止未授权的修改。

2.禁止 Ctrl+Alt +Del 快捷键重启

       快捷键重启功能为服务器的本地维护提供了方便,但对于多终端登录的Linux服务器,禁用此功能是比较安全的选择。在CentOS7中,执行cat/etc/inittab命令可以得知Ctrl+Alt+Del快捷键功 能由/usr/lib/systemd/system/ctrl-alt-del,target文件进行设置。查看/usr/lib/systemd/system/ ctrl-alt-del.target文件发现,ctrl-alt-del.target是reboot.target文件的软链接文件。

[root@node01 ~]# cat /etc/inittab

[root@node01 ~]# ll /usr/lib/systemd/system/ctrl-alt-del.target

在不影响reboot.target文件的前提下执行以下命令即可禁用Ctrl+Alt+Del快捷键功能。

[root@node01 ~]# systemctl mask ctrl-alt-del.target  //注销ctrl-alt-del服务[root@node01 ~]# systemctl daemon-reload             //重新加载systemd配置

       systemctl mask 命令是用于注销指定服务的,例如 systemctl mask cpu.service 命令用于注销cpu 服务,取消注销则使用sxstemctl umask命令,因此若想重新开启Curl+Alt+Del快捷键功能,只需执行systemctl unmesk ctrl-alt-del.target命令,然后刷新配置即可。

1.2.2终端及登录控制

      在Linux服务器中,默认开启了六个tty终端,允许任何用户进行本地登录,关于本地登录的安 全控制,可以从以下几个方面着手。

1.禁止root用户登录

        在Linux系统中,login程序会读取/etc/securetty文件,以决定允许root用户从哪些终端(安全 终端)登录系统。若要禁止root用户从指定的终端登录,只需从该文件中删除或者注释掉对应的行 即可。例如,若要禁止root用户从tty5,tty6登录,可以修改/etc/securetty文件,将tty5、tty6行注 释掉。

[root@node01 ~]# vim /etc/securetty 

2.禁止普通用户登录

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

[root@node01 ~]# touch /etc/nologin

       此方法实际上是利用了shutdown延迟关机的限制机制,只建议在服务器维护期间临时使用。当 手动删除/etc/nologin文件或者重新启动主机以后,即可恢复正常。

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

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

相关文章

ChatGPT绘制全球植被类型分布图、生物量图、土壤概念图、处理遥感数据并绘图、病毒、植物、动物细胞结构图

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

2024年华为hcie方向有哪些?hcie 考点在哪里?

华为作为全球领先的ICT解决方案供应商,其认证体系在业内具有极高的权威性和认可度。其中,华为认证体系中的最高级别认证——HCIE,已经成为无数技术爱好者追求的目标。下面将探讨华为HCIE的方向及其考点,希望能对那些有志于获取HCI…

redis安装与配置

目录 1. 切换到 root 用户 2. 搜索安装包 3. 安装 redis 4. 查看 redis 是否正常存在 5. 修改ip 6. 重新启动服务器 7. 连接服务器 1. 切换到 root 用户 通过 su 命令切换到 root 用户。 2. 搜索安装包 apt search redis 这里安装的是下面的版本: 3. 安装 …

【MIT 6.S081】2020, 实验记录(1),Lab: Xv6 and Unix utilities

目录 实验准备TasksTask 1: Boot xv6Task 2: sleepTask 3: pingpongTask 4: primesTask 5: find 实验准备 这个 lab 用来学习尝试如何通过 system call 来实现常见的 shell 命令行程序,比如 ls、sleep、xargs 等。 实验官网 可以使用 docker 搭建实验环境&#x…

低代码UI构件程序设计基础实训一

步骤一 低代码在线调试工具 网址 低代码在线调试工具 步骤二 D盘建一个文件夹,文件夹下建两个文件夹ico和js 网上找一些图片,后缀.png,编号从0开始,图片另存到ico文件夹下 下载(右键另存为)以下四个页面…

数据结构和算法-数据结构的基本概念和三要素和数据类型和抽象数据类型

文章目录 总览数据结构的基本概念总览数据早期和现代的计算机处理的数据数据元素-描述一个个体数据对象-一类数据元素什么是数据结构小结 数据结构的三要素总览逻辑结构-集合结构逻辑结构-线性结构逻辑结构-树形结构逻辑结构-图形结构逻辑结构-小结数据的运算物理结构&#xff…

整除判断-判断正整数a能否被b整除,如果不能整除,输出商和余数 C语言xdoj42

问题描述 判断正整数a能否被b整除&#xff0c;如果不能整除&#xff0c;输出商和余数 输入说明 输入两个正整数a和b&#xff08;0<a, b<10000&#xff09;&#xff0c;a和b之间用空格分隔。 输出说明 如果a能被b整除&#xff0c;输出yes&#xff0c;否则在同…

python封装接口自动化测试套件

在Python中&#xff0c;我们可以使用requests库来实现接口自动化测试&#xff0c;并使用unittest或pytest等测试框架来组织和运行测试套件。以下是一个基本的接口自动化测试套件封装示例&#xff1a; 首先&#xff0c;我们需要安装所需的库&#xff1a; pip install requests …

《MySQL系列-InnoDB引擎04》MySQL表相关介绍

文章目录 第四章 表1 索引组织表2 InnoDB逻辑存储结构2.1 表空间2.2 段2.3 区2.4 页2.5 行2.6 拓展&#xff1a;MySQL的varchar(n)能存储几个字符&#xff1f;占多少字节&#xff1f; 3 InnoDB行记录格式4 文件格式5 约束5.1 数据完整性5.2 约束的创建和查找5.3 约束和索引的区…

2023-2024学年上学期算法设计与分析题期末考试模拟卷

2023-2024学年上学期算法设计与分析题期末考试模拟卷 文章目录 2023-2024学年上学期算法设计与分析题期末考试模拟卷单选题程序填空题输入格式:输出格式:输入样例1:输出样例1: 主观题 注意&#xff1a;该题集非标准答案&#xff0c;仅供参考&#xff0c;如果异议&#xff0c;请…

鸿蒙学习笔记

DevEco Studio, ArkTS, ArkUI, ArkCompiler, DevEco Testing是啥 DevEco Studio是华为开发的一款集成开发环境&#xff08;IDE&#xff09;&#xff0c;用于开发基于华为鸿蒙操作系统&#xff08;HarmonyOS&#xff09;的应用程序。它提供了丰富的开发工具和功能&#xff0c;包…

vue3 实现关于 el-table 表格组件的封装以及调用

一、示例图&#xff1a; 二、组件 <template><div class"sn-table" :class"props.colorType 1 ? : bg-scroll"><el-table :data"tableData" :row-class-name"tableRowClassName" height"500" style"…

DevOps(8)

目录 36.当发出的命令与上次使用时产生的结果不同时&#xff0c;会出现什么问题&#xff1f; 37./usr /local的内容是什么&#xff1f; 38.你如何终止正在进行的流程&#xff1f; 39.如何在命令行提示符中插入注释&#xff1f; 40.什么是命令分组以及他是如何工作的&…

云卷云舒:【实战篇】Redis迁移

1. 简介 Remote Dictionary Server(Redis)是一个由Salvatore Sanfilippo写的key-value存储系统&#xff0c;是一个开源的使用ANSIC语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;并提供多种语言的API。 2. 迁移原理 redis-sh…

什么是 RFID 及其工作原理?

一、自动识别技术 自1999年麻省理工学院研究人员的首创开始&#xff0c;自动识别技术&#xff08;简称auto-ID&#xff09;的领域不断扩大。自动识别技术形成了多种技术路线&#xff0c;使我们能够自动、精确地捕获、识别和存储与物体、物品或个人相关的数据&#xff0c;从而减…

Selenium-java 定位元素时切换iFrame时的方法

具体方法如下图所示&#xff0c;如果iFrame中嵌套多层iFrame需要逐层定位到需要的那一层iFrame,完成操作后&#xff0c;执行该代码&#xff1a;driver.switchTo() .defaultContent() ; 是返回最顶部的frame

理解二叉树的遍历(算法村第七关白银挑战)

二叉树的前序遍历 144. 二叉树的前序遍历 - 力扣&#xff08;LeetCode&#xff09; 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3]解 LeetCode以及面试中提供的方法可能…

科普:嵌入式多核并行仿真

自信息技术革命以来&#xff0c;计算机一直被应用在各种复杂的数据处理中&#xff0c;如火箭弹道&#xff0c;高能物理和生物学数据等。随着嵌入式领域的多样化需求的不断丰富&#xff0c;多核CPU的应用也越来越广泛&#xff1a;嵌入式系统通常需要同时处理多个任务和实时数据&…

ChatGPT是什么,海鲸AI软件功能有哪些

ChatGPT是一种基于人工智能的对话生成技术&#xff0c;它利用深度学习模型来理解和生成自然语言对话。ChatGPT的核心是一种称为生成式预训练模型(GPT)的技术&#xff0c;它能够根据输入的对话内容生成连贯、自然的回答&#xff0c;实现智能对话的目的。这种技术的出现&#xff…

【JAVA】实验二 类与对象

实验名称 实验二 类与对象 实验目的 1. 深刻理解类的封装与继承&#xff1b; 2. 熟练掌握类的定义、包与路径、对象的创建、方法的调用、类的继承、方法的重写、运行时多态、访问权限修饰符的使用等&#xff1b; 3. 熟练运用JDK提供的常用类及API。 实验内容&…