10 - Linux系统安全及应用

news2024/11/23 12:04:24

目录

一、账号安全控制

1.系统账号清理

2.密码安全控制

3.命令历史限制

4.终端自动注销

二、用户切换和用户提权

1. su 命令 - 切换用户

1.1 su 命令的用途及用法

1.2 限制使用su 命令的用户

1.3 查看su操作记录

2. sudo 命令 - 用户提权

2.1 sudo 命令的用途及用法

2.2 配置sudo授权

2.3 查看sudo操作日志

3.终端登录安全控制

3.1 限制root只在安全终端登录

3.2 禁止普通用户登录

三、Linux中的PAM安全认证

1.什么是PAM

2. su 命令的安全隐患

3. PAM认证原理

4. PAM认证的构成

四、网络端口扫描 - nmap


一、账号安全控制

1.系统账号清理

  • 设置非登录用户
usermod -s /sbin/nologin
  • 锁定长期不使用的账号
#方法一:
usermod -L "用户名"     #锁定指定用户
usermod -U "用户名"     #解锁指定用户

#方法二:
passwd -l "用户名"     #锁定指定用户
passwd -u "用户名"     #解锁指定用户
  • 删除无用的账号
userdel "用户名"     #删除用户
userdel -r "用户名"     #删除用户及其家目录
  • 锁定账号文件
chattr +i /etc/passwd /etc/shadow     #锁定passwd、shadow文件
lsattr /etc/passwd /etc/shadow     #查看passwd、shadow文件状态
chattr -i /etc/passwd /etc/shadow     #解锁指passwd、shadow文件

2.密码安全控制

  • 对于新建用户设置密码规则
vi /etc/login.defs
......
PASS_MAX_DAYS   99999     #用户密码最长有效天数
PASS_MIN_DAYS   0     #用户可修改密码的最小间隔天数
PASS_MIN_LEN    5     #用户密码的最小长度
PASS_WARN_AGE   7     #指定在密码过期前几天向用户发出警告
  • 对于已有用户设置密码规则
chage "选项" "用户名"
例:chage -M 30 lisi     #设置lisi用户的密码有效期为30天
选项解释
-m设置修改密码的最小间隔天数,m=0时任何时间都可以更改密码
-M设置密码有效天数
-w设置用户密码到期前,收到警告信息的天数
-E设置帐号到期的日期
-i设置密码可以过期的天数,超过此限制此帐号将不可用
-l列出当前设置
-d上一次更改密码的日期
chage -d 0 zhangsan     #强制zhangsan用户在下次登陆时修改密码

3.命令历史限制

  • 减少记录的命令条数
vi /etc/profile
......
export HISTSIZE=20     #使用histor命令时,可查询到的历史命令为20条
......


source /etc/profile     #重新加载配置文件
  • 登陆时自动清空命令历史记录
vi ~/.bashrc     #登录时会自动运行此配置文件内的操作
......
echo " " > ~/.bashrc_history     #将空行替换入.bashrc_history中
......
#即登录时会自动运行上述命令,即登陆时自动清除命令的历史记录

4.终端自动注销

vi /etc/profile
......
export TMOUT=600     #设置终端闲置600秒后自动注销
......


source /etc/profile     #重新加载配置文件

二、用户切换和用户提权

1. su 命令 - 切换用户

1.1 su 命令的用途及用法

su - "目标用户"     #切换目标用户

whoami     #显示当前登录用户

1.2 限制使用su 命令的用户

  • 将允许使用su命令的用户加入wheel组内
gpasswd -a lisi wheel     #将lisi用户加入到wheel组内
  • 启用pam_wheel认证模块
vi /etc/pam.d/su
#%PAM-1.0
auth sufficient pam_rootok.so     #将开头的"#"删除
auth required pam_wheel.so use_uid     #将开头的"#"删除
......
wq  #保存退出

启用pam_wheel认证模块后没有加入wheel组的用户将无法使用su命令

1.3 查看su操作记录

安全日志文件位于:/var/log/secure

2. sudo 命令 - 用户提权

2.1 sudo 命令的用途及用法

用途:以其他身份(如root)执行授权的命令

sudo "授权命令"

2.2 配置sudo授权

vi sudo 或 vi /etc/sudoers     #此文件默认权限为440,保存退出时必须使用"wq!"命令强制执行
#语法格式: 用户 主机名=命令程序列表
#          %组名 主机名=(用户)命令程序列表
#用户\%组名:直接授权的用户、组
#(用户);以何种身份执行命令,缺省时默认以root用户身份运行命令
#主机名:使用此规则的主机名,ALL代表所有主机
#命令程序列表:允许执行的命令,需填写命令的绝对路径,多个命令之间以","分隔,ALL代表所有命令

#例:
Tom ALL=/sbin/ifconfig     #授权TOM使用ifconfig命令
%wheel ALL=NOPASSWD:ALL     #wheel组内成员无需验证密码即可使用所有命令

User_Alias USERS=Tom,lisi,zhangsan     #为指定用户设置别名
Host_Alias HOSTS=localhost,bogon     #为指定主机名设置别名
Cmnd_Alias CMNDS=/sbin/ifconfig,/usr/useradd,/usr/bin/userdel     #为指定命令设置别名

2.3 查看sudo操作日志

  • 需先启用sudo操作日志
visudo
......
Defaults logfile = "/var/log/sudo"
  • 查看sudo操作日志
tail /ver/log/sudo

3.终端登录安全控制

3.1 限制root只在安全终端登录

vi /etc/securetty
......
vc/9
vc/10
vc/11
tty1
#tty2     #禁止终端tty2登录,在其前方输入#
#tty3     #禁止终端tty3登录,在其前方输入
tty4
tty5
tty6
tty7

3.2 禁止普通用户登录

需建立/etc/nologin文件

touch /etc/nologin     #禁止普通用户登录

删除nologin文件或重启后即恢复正常

rm -rf /etc/nologin     #取消限制

三、Linux中的PAM安全认证

1.什么是PAM

PAM(Pluggable Authentication Modules),可插拔式认证模块。

  • 是一种高效且灵活的便利的用户级别认证方式
  • 也是当前Linux服务器使用的认证方式

2. su 命令的安全隐患

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

3. PAM认证原理

PAM认证一般遵循的顺序: Service (服务) --> PAM (配置文件) --> pam_*.so

  • PAM认证首先要确定哪一项服务,然后加载相应的PAM的配置文件(位于/etc/pam.d下),最后调用认证文件(位于/lib/security下)进行安全认证。
  • 用户访问服务器的时候,服务器的某一个服务程序把用户的不同请求发送到PAM模块进行认证。
  • 不同的应用程序所对应的PAM模块也是不同的。

4. PAM认证的构成

查看某个程序是否支持PAM认证,可以用ls命令

  • 示例:查看su是否支持PAM模块认证
ls /etc/pam.d | grep su

查看su的PAM配置文件:

cat /etc/pam.d/su
  • 每一行都是一个独立的认证过程
  • 每一行可以分为三个字段:认证类型,控制类型,PAM模块及其参数

控制类型也可以称作Control Flags,用于PAM验证类型的返回结果

  1. required验证失败时仍然继续,但返回Fail
  2. requisite验证失败则立即结束整个验证过程,返回Fail
  3. sufficient验证成功则立即返回,不在继续,否则忽略结果并继续
  4. optional不用于验证,只显示信息(通常用于session(会话)类型)

四、网络端口扫描 - nmap

  • 需先安装namp工具
yum install nmap -y     #安装nmap工具
  •  用法:
namp "扫描类型" "选项" "扫描目标"
常用选项与扫描类型解释
-p指定扫描的端口
-n禁用反向DNS解析(加快扫描速度)
-sSTCP的SYN扫描(半开扫描),只向目标发出SYN数据包,如果收到SYN\ACK响应包就认为目标端口正在监听服务,并立即断开连接;否则认为目标端口并未开放。
-sTTCP连接扫描,这是完整的TCP扫描方式(默认扫描类型),用来建立一个TCP连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。
-sFTCP的FIN扫描,开放的端口会忽略这种数据包,关闭的端口会回应RST数据包。许多防火墙对SYN数据包进行简单过滤,而忽略了其他形式的TCP。这种类型的扫描可间接检测防火墙的健壮性。
-sUUDP扫描,探测目标主机提供哪些UDP服务,UDP扫描的速度会比较慢。

-sP

ICMP扫描,类似于ping检测,快速判断目标主机是否存活,不做其他扫描。
-P0跳过ping检测,这种方式认为所有的目标主机是活的,当对方不响应ICMP请求时,使用这种方式可以避免因无法ping通而放弃

例:

namp -sT 127.0.0.1     #查看本机的TCP端口
namp -p 80 192.168.4.0/24     #检测192.168.4.0/24网段有哪些主机提供HTTP服务
namp -n -sP 192.168.4.0/24     #检测192.168.4.0/24网段有哪些存活主机

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

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

相关文章

Unity转Unreal5从入门到精通之如何实现一个简单的AI寻路

前言 我们今天使用最基础的引擎知识,来给大家创建一个简单的AI,可以追踪目标,攻击目标。 使用Unity类比的话,就是一个怪物预制体,放到了寻路上,当他视野看到目标后,就一直追踪目标,…

转账记录是怎样使用ZK实现证明的

目录 转账记录是怎样使用ZK实现证明的 1. 准备阶段 2. 生成证明 3. 转账记录的验证过程 4. 隐私保护 5. 应用场景 结论 转账记录是怎样使用ZK实现证明的 转账记录使用ZK(零知识证明)实现证明的过程,主要依赖于零知识证明技术中的协议,如ZK-SNARKs(Zero-Knowledge S…

72、docker资源管理

一、docker数据卷 容器和宿主机之间数据共享-----------挂载卷------------容器内的目录和宿主机的目录进行挂载。实现数据文件共享。 容器的生命周期是有限的,一旦重启所有对容器内部文件数据的修改以及保存的数据会被初始化,所以为了防止数据丢失&am…

Java语言程序设计基础篇_编程练习题16.22(播放、循环播放和停止播放一个音频剪辑)

题目:16.22(播放、循环播放和停止播放一个音频剪辑) 编写一个满足下面要求的程序: 使用AudioClip获取一个音频文件,该文件存放在类目录下。放置三个标记为Play、Loop和Stop的按钮,如图16-46a所示。单击Pla…

什么是调度中心控制台,它在现代运营管理中扮演什么角色?

在现代复杂多变的运营环境中,调度中心控制台作为企业内部信息管理的核心枢纽,扮演着至关重要的角色。它不仅是一个技术平台,更是企业高效运营和智能决策的重要支撑。接下来就给大家科普一下关于调度中心控制台知识点,及在现代运营…

HarmonyOS笔记4:从云数据库获取数据

移动应用获取数据的方式主要有: 1.从网络中获取数据接口API。 2.从华为云数据库获取云数据库的资源。 3.从移动终端直接获取本地的数据 在HarmonyOS笔记3中已经完成了方式一从网络中获取数据接口API的方式。在本篇笔记中,将讨论从云数据库中获取数据。 因…

极狐GitLab CI/CD 如何构建镜像并推送到 azure 镜像仓库?

极狐GitLab 是 GitLab 在中国的发行版,专门面向中国程序员和企业提供企业级一体化 DevOps 平台,用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规,而且所有的操作都是在一个平台上进行,省事省心省钱。可以一键安装极狐GitL…

远程访问安全:rsync、ProFTPD、OpenSSH和VNC漏洞分析

文章目录 rsync未授权访问概念复现个别工具检测批量工具检测 proftpd远程命令介绍CVE-2015-3306复现 openssh信息泄露介绍复现 libssh身份绕过介绍条件危害复现 向日葵远程RCE介绍条件靶场: VNC配置不当介绍复现 在当今高度互联的数字时代,远程访问工具已…

[Qt][Qt 事件][上]详细讲解

目录 1.事件介绍2.事件的处理3.鼠标事件4.按键事件5.moveEvent6.resizeEvent 1.事件介绍 事件是应⽤程序内部或者外部产⽣的事情或者动作的统称 在Qt中使⽤⼀个对象来表⽰⼀个事件,所有的Qt事件均继承于抽象类QEvent 事件是由系统或者Qt平台本⾝在不同的时刻发出的…

深入理解C#中的yield关键字:提升迭代性能与效率

文章目录 前言一、yield return二、yield break总结 前言 在C#中,yield 关键字是特别用于迭代器块和方法中的,它允许你逐个返回序列中的元素,而不是一次性返回整个集合。使用 yield 可以显著提高处理大数据集或进行复杂迭代时的性能和内存效率…

【数据结构初阶】队列经典习题两道

hello! 我是云边有个稻草人 目录 一、用队列实现栈 二、用栈实现队列 Relaxing Time ! 正文开始—— 一、用队列实现栈 225. 用队列实现栈 - 力扣(LeetCode) 根据题目要求,我们要用两个队列来实现栈的相关功能&…

虚拟机上使用Ubuntu1804上编译qt5.12.9部署到jetson nano上

开发qt界面,基于Qt5.12.9,开发环境使用虚拟机加载Ubuntu1804,开发完成后的qt程序最后部署到jetson nano上,使用的通用编译器是gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu 安装编译器 本文中直接将gcc-linaro-7.5.0-2019.…

汇昌联信做拼多多店铺如何运营?

汇昌联信如何在拼多多上运营店铺,是许多电商新手和希望扩展市场的商家所关注的问题。在这个快速发展的电商平台上,掌握正确的运营策略,对于提升店铺销量、增强品牌影响力至关重要。接下来,我们将详细探讨如何有效运营拼多多店铺。…

Angular由一个bug说起之九:AWS S3 文件下载问题

引言 在现代 Web 开发中,我们经常需要处理来自全球不同地区的数据,这包括文件名中可能包含的非拉丁文字符。最近,在一个项目中,我们遇到了一个与 Amazon S3 服务相关的挑战,涉及到文件名编码的处理。当从 S3 下载文件…

Redis分布式部署方式-主从复制

分布式部署Redis方式 分布式系统,涉及到一个非常关键的问题:单点问题 单点问题:如果某个服务器,只有一个节点(只搞一个物理服务器,来部署这个服务器程序),会遇到一些困难&#xff…

多线程学习之ThreadLocal详细笔记

ThreadLocal详细笔记 一、ThreadLocal的基本概念二、ThreadLocal的独特性2.1 数据访问方式2.2 线程安全实现2.3 适用场景 三、ThreadLocal 的简单使用四、ThreadLocal 的工作原理五、ThreadLocal和内存泄漏的关系5.1 ThreadLocalMap的Entry的Key设计成弱引用5.2 弱引用会导致内…

超简单4行代码-STM32F103的HAL实现有源蜂鸣器报警

1、概述 在嵌入式项目开发中,使用蜂鸣器作为简单的报警或提示装置非常常见。根据不同的应用场景,我们可能会选择有源蜂鸣器或无源蜂鸣器。本文将重点介绍如何通过STM32F103系列单片机,利用HAL库,仅通过4行代码实现对有源蜂鸣器的…

django学习入门系列之第九点《初识MySQL》

文章目录 9.1 初识网站9.2 初识MySQL下载安装创建配置文件初始化启动MySQL服务进入mysql查看已有文件夹退出(关闭连接)忘记密码 往期回顾 9.1 初识网站 Python相关:基础、函数、数据类型、面向、模块。前端开发直观:HTML、CSS、JavaScript、jQuery:[静态…

【运维】JetBrains Gateway (Pycharm) SSH免密连接,改为免密连接

一直要求输入密码,很烦人: 如何免密连接? 1 重新打开gateway,来到这个界面点新建连接: 2 点这里设置: 3 在这一页,你可以改你的所有配置,只要设置为password并且保存密码&…

详解Redis 高可用的方式 Redis Cluster

Redis 高可用方式 Redis 提供了多种高可用性方案,主要包括以下几种方式: 主从复制(Replication) 主从复制是最基本的高可用性方案,通过将数据从一个主节点复制到多个从节点来实现数据的冗余和读写分离。主节点负责所…