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组 root

vim /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命令”。

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

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

相关文章

企业能源消耗监测管理系统是否可以做好能源计量与能耗分析?

能源消耗与分析是能源科学管理的基础,也可促进能源管理工作的改善,在企业中能源管理系统的作用也愈加重要。 首先,能源计量是能源管理的基础,通过能源精准计老化,容易出现测量设备不准确以及其他一些人为因素原因导致…

NC65中间件能启动,前端客户端启动失败,加载异常,卡住(org.owasp.esapi)

控制台输出错误 ESAPI.properties could not be loaded by any means. Fail.SecurityConfiguration class(org.owasp.esapi.reference.DefaultSecurityConfiguration) CTOR threw exception.效果图: 解决方案 添加如下参数: -Dorg.owasp.esapi.resou…

金融帝国实验室(Capitalism Lab)V10版本推出新招高管待命选项

金融帝国实验室(Capitalism Lab)V10版本推出新招高管待命选项 ————————————— 【全新V10版本开发播报】 即将发布的V10版本,在“分配管理器”菜单上将引入一个名为“暂时待命”的新功能。启用此选项后,分配给公司的高…

docker 网络及如何资源(CPU/内存/磁盘)控制

安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络)、 none 、host docker网络模式 Host 容器与宿主机共享网络namespace,即容器和宿主机使用同一个IP、端口范围(容器与宿主机或其他使…

Vulnhub靶场DC-6

攻击机192.168.223.128 靶机192.168.223.134 主机发现:nmap -sP 192.168.223.0/24 端口扫描 nmap -sV -p- -A 192.168.223.134 开启了22 80端口,80是apache 2.4.25 先进入web界面看一下 用ip进不去,应该被重定向到wordy.com vim /etc/hosts 加上 19…

【医学图像隐私保护】联邦学习:密码学 + 机器学习 + 分布式 实现隐私计算,破解医学界数据孤岛的长期难题

联邦学习:密码学 机器学习 分布式 提出背景:数据不出本地,又能合力干大事联邦学习的问题 分布式机器学习:解决大数据量处理的问题横向联邦学习:解决跨多个数据源学习的问题纵向联邦学习:解决数据分散在多…

某马头条——day11+day12

实时计算和定时计算 流式计算 kafkaStream 入门案例 导入依赖 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-streams</artifactId><exclusions><exclusion><artifactId>connect-json</artifactId&…

NOIP2003提高组T1:神经网络

题目链接 [NOIP2003 提高组] 神经网络 题目背景 人工神经网络&#xff08;Artificial Neural Network&#xff09;是一种新兴的具有自我学习能力的计算系统&#xff0c;在模式识别、函数逼近及贷款风险评估等诸多领域有广泛的应用。对神经网络的研究一直是当今的热门方向&am…

MSB30M-ASEMI小功率开关电源MSB30M

编辑&#xff1a;ll MSB30M-ASEMI小功率开关电源MSB30M 型号&#xff1a;MSB30M 品牌&#xff1a;ASEMI 正向电流&#xff08;Id&#xff09;&#xff1a;3A 反向耐压&#xff08;VRRM&#xff09;&#xff1a;1000V 正向浪涌电流&#xff1a;50A 正向电压&#xff08;…

电影《花千骨》成开年第一烂,新派系当家IP滑铁卢

2024电影市场“开年第一烂”落到了《花千骨》头上。 在整个行业都在为春节档蓄势的情况下&#xff0c;电影市场显得有些沉寂&#xff0c;票房表现也不太出彩&#xff0c;其中最大的输家莫过于新派系文化出品的电影版《花千骨》。 从1月20日上映至今&#xff0c;5天累计票房仅…

带头 + 双向 + 循环链表增删查改实现

目录 源码&#xff1a; List.c文件&#xff1a; List.h文件&#xff1a; 简单的测试&#xff1a; 很简单&#xff0c;没什么好说的&#xff0c;直接上源码。 源码&#xff1a; List.c文件&#xff1a; #include"DLList.h"ListNode* creadNode(LTDataType x) {L…

10.Elasticsearch应用(十)

Elasticsearch应用&#xff08;十&#xff09; 1.为什么需要聚合操作 聚合可以让我们极其方便的实现对数据的统计、分析、运算&#xff0c;例如&#xff1a; 什么品牌的手机最受欢迎&#xff1f;这些手机的平均价格、最高价格、最低价格&#xff1f;这些手机每月的销售情况如…

【Linux】Linux任务管理与守护进程

Linux任务管理与守护进程 一、任务管理1、进程组概念2、作业概念3、会话概念4、相关操作&#xff08;1&#xff09;前台进程&后台进程&#xff08;2&#xff09;jobs、fg、bg、kill 5、ps命令查看指定的选项 二、守护进程1、守护进程的概念2、守护进程的查看3、守护进程的创…

支付宝AES如何加密

继之前给大家介绍了 V3 加密解密的方法之后&#xff0c;今天给大家介绍下支付宝的 AES 加密。 注意&#xff1a;以下说明均在使用支付宝 SDK 集成的基础上&#xff0c;未使用支付宝 SDK 的小伙伴要使用的话老老实实从 AES 加密原理开始研究吧。 什么是AES密钥 AES 是一种高级加…

2.依附弹窗(AttachListPopup)

愿你出走半生,归来仍是少年&#xff01; 环境&#xff1a;.NET 7 基于基础的Popup对象实现的依附于某个控件的弹窗&#xff0c;弹窗可呈现数组对象&#xff0c;达到较好的选择交互效果。 1.布局 通过Border实现圆角边框轮廓&#xff0c;然后通过内部的ListView实现列表展示。…

Cesium数据加载

文章目录 0.引言1.影像加载1.1Bing地图1.2天地图1.3ArcGIS在线地图1.4高德地图1.5OSM影像1.6MapBox影像 2.OGC地图服务2.1WMS2.2WMTS2.3TMS 3.GeoJSON数据加载4.KML数据加载5.TIFF数据加载6.点云数据加载7.地形数据加载7.1在线地形数据加载7.2本地地形数据加载 8.倾斜摄影模型数…

xcode 设置 ios苹果图标,为Flutter应用程序配置iOS图标

图标设置 1,根据图片构建各类尺寸的图标2.xcode打开ios文件3.xcode设置图标4.打包提交审核,即可(打包教程可通过我的主页查找) 1,根据图片构建各类尺寸的图标 工具网址:https://icon.wuruihong.com/ 下载之后文件目录如下 拷贝到项目的ios\Runner\Assets.xcassets\AppIcon.ap…

没有外网Nginx如何配置如何开启https

判断是否支持open-ssl 在服务器执行如下命令 openssl version没有则安装open-ssl&#xff0c;由于服务器没有外网&#xff0c;可以离线安装openssl-3.0.1.tar.gz&#xff0c;我是在有网的服务器直接下载的&#xff0c;然后再上传到这台无网的服务器上 wget https://www.open…

HttpClient的使用与封装

HttpClient的使用与封装 配置 首先,我们要引入maven依赖 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version></dependency>这里可以单独引入,如果我…

linux操作系统网络编程套接字(实现一个udp通讯demo)

文章目录 理解源IP地址和目的IP地址认识端口号理解 "端口号" 和 "进程ID理解源端口号和目的端口号 认识TCP协议认识UDP协议什么是面向字节流和面向数据报流以及有无连接是什么意思 网络字节序socket编程接口socket 常见APIsockaddr结构sockaddr_in 结构in_addr结…