Linux系统安全

         作为一种开放源代码的操作系统,linux服务器以其安全、高效和稳定的显著优势而得以广泛应用。

账号安全控制

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

1.系统账号清理

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

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

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

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

[root@llcgc ~]# usermod -L llc            //锁定账号
[root@llcgc ~]# passwd -S llc             //查看账号状态
llc LK 1969-12-31 0 99999 7 -1 (密码已被锁定。)
[root@llcgc ~]# usermod -U llc            //解锁账号
[root@llcgc ~]# passwd -S llc
llc PS 1969-12-31 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)

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

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

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

[root@llcgc ~]# chattr +i /etc/passwd /etc/shadow
[root@llcgc ~]# useradd bill           //添加用户账号bill
useradd:无法打开 /etc/passwd

2.密码安全控制

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

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

[root@llcgc ~]# vim /etc/login.defs   //适用于新建的用户   
。。。。。。。
PASS_MAX_DAYS 30                      //编辑添加此条命令[root@llcgc ~]# chage -M 30 llc       //适用于已有的llc用户

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

执行以下操作可强制要求用户llc下次登录时重设密码。

[root@llcgc ~]# chage -d 0 llc

3.命令历史、自动注销        

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

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

[root@llcgc ~]# vim /etc/profile    //适用于新登录用户
。。。。。。
HISTSIZE=200                        //编辑添加此条命令[root@llcgc ~]# export HISTSIZE=200 //适用于当前用户

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

[root@llcgc ~]# vim ~/.bash_logout
histort -c
clear

        

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

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

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

用户切换与提权

1.su命令——切换用户

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

例如,当前登录的用户为llc。 若要切换为root用户,可以执行以下操作。

[llc@llcgc ~]$ su - root
密码:                //输入root密码
[root@llcgc ~]#      //验证成功后获得root权限

        

        上述命令操作中,选项“-等同于“--login”或“-I”.表示切换用户后进入目标用户的登录 Shell环境,若缺少此选项则仅切换身份,不切换用户环境。对于切换为root 用户的情况,root”可省略。

        默认情况下.任何用户都允许使用su命令,从而有机会反复尝试其他用户(如root)的登录密 码,这样带来了安全风险。为了加强su命令的使用控制,可以借助于pam_wheel认证模块,只允许 极个别用户使用su命令进行切换。

        实现过程如下:将授权使用su命令的用户添加到wheel组,修改 /etc/pam.d/su认证配置以启用pam_wheel 认证.

[root@llcgc ~]# gpasswd -a llc wheel                   //添加授权用户llc
正在将用户“llc”加入到“wheel”组中
[root@llcgc ~]# grep wheel /etc/group                  //确认wheel组成员
wheel:x:10:llc
[root@llcgc ~]# vim /etc/pam.d/su
。。。。。。
auth            required        pam_wheel.so use_uid   //去掉此行开头#号

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

[lgc@llcgc ~]$ su - root    //用账号lgc测试使用su命令切换root用户
密码:
su: 拒绝权限
[lgc@llcgc ~]$              //切换失败,仍为lgc用户

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

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

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

        那么,有没有一种折中的办法,既可以让普通用户拥有一部分管理权限,又不需要将root用户 的密码告诉他呢?答案是肯定的,使用sudo命令就可以提升执行权限,不过,需要由管理员预先进行授权,指定允许哪些用户以超级用户(或其他普通用户)的身份来执行哪些命令。

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

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

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

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

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

例如,若要授权用户llc能够执行ifconfig命令来修改IP地址,而wheel组的用户无需验证密码即可执行任何命令,可以执行 以下操作。

[root@llcgc ~]# visudo
。。。。。。
llc      localhost=/sbin/ifconfig     //添加编辑命令
%wheel   ALL=NOPASSWD: ALL

        当使用相同授权的用户较多,或者授权的命令较多时,可以采用集中定义的别名,用户、主机、 命令部分都可以定义为别名(必须为大写).分别通过关键字User_Alias,Host_Alias,Cmnd_Alias来 进行设置,

例如,以下操作通过别名方式来添加授权记录,允许用户llc、lgc在主机llcgc中执行rpm.yum命令。

[root@llcgc ~]# visudo
。。。。。。
User_Alias  OPERATORS=llc,lgc                //添加编辑命令
Host_Alias  MAILSVRS=llcgc
Cmnd_Alias  PKGTOOLS=/bin/rpm,/usr/bin/yum
OPERATORS   MATLSVRS=PKGTOOLS

        sudo配置记录的命令部分允许使用通配符"*"、取反符号"!"。当需要授权某个目录下的所有命令或取消其中个别命令时特别有用。

例如,若要授权用户 llc 可以执行/sbin/目录下除ifconfig. route 以外的其他所有命令程序.可以执行以下操作。

[root@llcgc ~]# visudo
。。。。。。
llc     localhost=/sbin/*,!/sbin/ifconfig,!/sbin/route    //添加编辑命令

        默认情况下,通过sudo方式执行的操作并不记录,若要启用sudo日志记录以备管理员查看,应在/etc/sudoers文件中增加“Defaults logfile”设置。

[root@llcgc ~]# visudo                //查找Defaults,在前面添加一行内容
。。。。。。
Defaults logfile = "/var/log/sudo"

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

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

[llc@llcgc ~]$ /sbin/ifconfig ens33:0 192.168.55.110/24   //未使用sudo的情况
SIOCSIFADDR: 不允许的操作
SIOCSIFFLAGS: 不允许的操作
SIOCSIFNETMASK: 不允许的操作
[llc@llcgc ~]$ sudo /sbin/ifconfig ens33:0 192.168.55.110/24

        在当前会话过程中,第一次通过sudo执行命令时,必须以用户自己的密码(不是root用户或其 他用户的密码)进行验证.此后再次通过sudo执行命令时,只要与前一次sudo操作的间隔时间不超 过5min(分),则不再重复验证.

        若要查看用户自己获得哪些sudo授权,可以执行‘sudo-l”命令.未授权的用户将会得到‘may not run sudo”的提示,已授权的用户则可以看到自己的sudo配置。

[llc@llcgc ~]$ sudo -l

       

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

[root@llcgc ~]# tail /var/log/sudo

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

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

相关文章

MIGO向成本中心发料,从成本中心收货

向成本中心发料,首先在MM03查看物料是否有库存,物料的计价标准和产成品的计价标准价是否同一种,S价或者V价 首先,“会计1”视图,查看物料库存 “成本2”视图查看标准成本发布 1、MIGO发货,选:A…

Solid Converter 10.1(PDF转换器)软件安装包下载及安装教程

Solid Converter 10.1下载链接:https://docs.qq.com/doc/DUkdMbXRpZ255dXFT 1、选中下载好的安装包右键解压到【Solid Converter 10.1.11102.4312】文件夹。 2、选中"solidconverter"右键以管理员身份运行 3、选择”自定义安装”,勾选”我已阅…

MySql 1170-BLOB/TEXT 错误

MySql 1170-BLOB/TEXT column idused in key specification without a key length 原因:由于将主键id设置为 text类型,所以导致主键 的长度,没有设置。 解决方案:方案1:将主键id设置为varchar 类型的,设置对应的长度…

如何通过Python将各种数据写入到Excel工作表

在数据处理和报告生成等工作中,Excel表格是一种常见且广泛使用的工具。然而,手动将大量数据输入到Excel表格中既费时又容易出错。为了提高效率并减少错误,使用Python编程语言来自动化数据写入Excel表格是一个明智的选择。Python作为一种简单易…

揭秘人工智能:探索智慧未来

🌈个人主页:聆风吟 🔥系列专栏:数据结构、网络奇遇记 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 什么是人工智能?二. 人工智能的关键技术2.1 机器学习2.2 深度学习2.1 计算机…

《系统架构设计师教程(第2版)》第3章-信息系统基础知识-05-专家系统(ES)

文章目录 1. 先了解人工智能2.1 人工智能的特点2.2 人工智能的主要分支2. ES概述2.1 概述2.2 和一般系统的区别1)第一遍说了5点(理解为主)2)第二遍说的3点(主要记这个)3. ES的特点4. ES的组成4.1 知识库4.2 综合数据库4.3 推理机4.4 知识获取模块4.5 解释程序4.6 人一机接…

linux泡妞大法之Nginx网站服务

技能目标 学会 Nginx 网站服务的基本构建 了解 Nginx 访问控制实现的方法 掌握 Nginx 部署虚拟主机的方法 学会 LNMP 架构部署及应用的方法 在各种网站服务器软件中,除了 Apache HTTP Server 外,还有一款轻量级…

授权策略(authorize方法)

authorize方法(授权策略的使用示例) $this->authorize(destroy, $status) 要实现这个功能,你需要执行以下步骤: 1、创建一个授权策略: 在Laravel中,授权策略是用于定义用户对特定操作的权限的类。你可…

我是一片骂声中成长起来的专家,RocketMQ消息中间件实战派上下册!!

曾几何,我的技术真的很烂,烂到技术主管每次都是点名要Review我的业务代码。 曾几何,我对技术沉淀没有一点自我意识,总是觉得临时抱一下佛脚就可以了。 曾几何,我也觉得技术无用,看看那些业务领导&#xf…

每日一道算法题day-two(备战蓝桥杯)

今天带来的题目是: 填充 有一个长度为 n的 0101 串,其中有一些位置标记为 ?,这些位置上可以任意填充 0 或者 1,请问如何填充这些位置使得这个 0101 串中出现互不重叠的 00 和 11 子串最多,输出子串个数。 输入格式…

【Kubernetes】Kubernetes ConfigMap 实战指南

ConfigMap 是 Kubernetes 中一种用于存储配置信息的资源对象,它允许您将配置与应用程序解耦,轻松管理和更新配置。在这个实战指南中,我们将涵盖创建、更新、删除 ConfigMap,并探讨其原理、优点、不足。最后,我们将通过一个实际案例演示如何在 Node.js 应用程序中使用 Conf…

Spring框架-Spring Bean管理

文章目录 Spring Bean管理Spring Bean配置方式:使用XML配置方式:User.javaapplicationContext.xmlUserTest.java 使用注解配置方式:ComponentServiceRepositoryConfigurationScopeValueQualifierPrimary Bean的作用域和生命周期:B…

2023年广东省网络安全A模块(笔记详解)

模块A 基础设施设置与安全加固 一、项目和任务描述: 假定你是某企业的网络安全工程师,对于企业的服务器系统,根据任务要求确保各服务正常运行,并通过综合运用登录和密码策略、流量完整性保护策略、事件监控策略、防火墙策略等多…

企业数据资源入表,对数商企业有什么变化?释放了什么信号?

不是必须的,二者没有必然联系。 数据资产入表的专业术语是数据资产会计核算。在《企业数据资源相关会计处理暂行规定》出台之前,很多企业的数据产品研究和开发阶段所产生的支出大都是费用化,直接计入损益表,但企业有一部分数据产…

Linux习题4

解析: 用二进制表示 rwx,r 代表可读,w 代表可写,x 代表可执行。如果可读,权限二进制为 100,十进制是4;如果可写,权限二进制为 010,十进制是2; 如果可执行&a…

如何在Linux上部署1Panel面板并远程访问内网Web端管理界面

文章目录 前言1. Linux 安装1Panel2. 安装cpolar内网穿透3. 配置1Panel公网访问地址4. 公网远程访问1Panel管理界面5. 固定1Panel公网地址 前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。高效管理,通过 Web 端轻松管理 Linux 服务器,包括主机监控、…

JAVA那些事(八)异常处理

异常处理机制 Java中的异常处理机制是Java程序设计中非常重要的一个特性,它允许程序在出现错误或意外情况时进行适当的响应,而不是直接导致程序崩溃。异常处理遵循“捕获或者声明”原则,这意味着程序员要么捕获并处理可能发生的异常&#xf…

ReactNative 常见问题及处理办法(加固混淆)

文章目录 摘要 引言 正文ScrollView内无法滑动RN热更新中的文件引用问题RN中获取高度的技巧RN强制横屏UI适配问题低版本RN(0.63以下)适配iOS14图片无法显示问题RN清理缓存RN navigation参数取值pod install 或者npm install 443问题处理 打开要处理的…

2023中国PostgreSQL数据库生态大会-核心PPT资料下载

一、峰会简介 大会以“极速进化融合新生”为主题,探讨了PostgreSQL数据库生态的发展趋势和未来方向。 在大会主论坛上,专家们就PostgreSQL数据库的技术创新、应用实践和生态发展进行了深入交流。同时,大会还设置了技术创新&云原生论坛、…

2023年后,AI 还有什么研究方向有前景?

什么是AI ​ AI代表人工智能,它是指通过计算机科学技术使机器能够执行需要智力的任务的一种技术。这些任务包括学习、推理、问题解决和感知等,通常是人类智能的表现。人工智能的目标是使计算机系统能够执行需要人类智力的任务,而不需要人类的…