当前位置: 首页 > news >正文

linux系统安全

1.  账号安全控制

1.1 用户账号

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

1.2 系统账号和用户账号

除了超级用户 root 之外,其他大量账号只是用来维护系统运作、启动或保持服务进程,一般是不允许登录的,因此也称为非登录用户账号。
为了确保系统安全,这些用户账号的登录 Shell 通常是/sbin/nologin,表示禁止终端登录,应确保不被人为改动        

1.3 锁定账号和配置文件

使用 chattr 命令,分别结合“+i”“-i”选项来锁定、解锁文件,使用 lsattr 命令可以查看文件锁定情况。    在账号文件被锁定的情况下,其内容将不允许变更,因此无法添加、删除账号,也不能更改用户的密码、登录Shell、宿主目录等属性信息。

chattr用法:

Ø chattr [选项] [符号] [属性] 文件名

Ø -R:递归处理目录及其所有子文件。

Ø -V:显示详细信息,解释执行了哪些操作。

Ø -f:抑制错误信息,只显示成功的更改。

Ø +:添加属性。

Ø -:移除属性。

Ø =:设置属性为指定的值。

Ø a:追加模式(append only),只能向文件末尾追加数据,不能修改或删除已有内容。

Ø i:不可修改(immutable),文件不能被修改、删除、重命名或链接。

Ø d:禁止备份(no dump),在执行dump备份程序时会被忽略。

Ø s:安全删除(secure deletion),文件删除后数据会被覆盖,无法恢复。

Ø u:不可恢复删除(undeletable),删除文件时保存其内容以便恢复。

Ø c:压缩(compress),文件会在磁盘上被压缩保存。

Ø A:不更新atime(no atime updates),访问文件时不更新其访问时间。

1.4 密码有效期设置(chage)

1.4.1 默认情况下,Linux用户的密码永不过期。 当需要对新用户进行密码限制时,可以通过编辑 /etc/login.defs 文件,设置当前密码的有效期限,具 体变量如下所示:

ØPASS_MAX_DAYS:密码可以使用的最多天数

ØPASS_MIN_DAYS:密码更改之间允许的最小天数

ØPASS_MIN_LEN:可接受的最小密码长度

ØPASS_WARN_AGE:密码过期前发出警告的天数

1.4.2 chage命令
chage命令用来更改linux用户密码到期信息,包括密码 修改间隔最短、最长日期、密码失效时间等等。

1.5 命令历史

Linux 使用 history 命令记录命令历史记录并将其存储在文件 (~/.bash_history ) 中。可以使用不同的方法配置和操作历史记录。

清空历史命令:

  • history -c
  • 修改编辑 .bash_history 文件
  • 为了永久禁用历史记录功能,可以在 .bashrc或 .bash_profile 文件中添加以下行:export HISTSIZE=0 # 不保存任何历史记录,export HISTFILESIZE=0 # 不保存任何历史记录
  • unset HISTFILE (使用 unset 命令来删除 HISTFILE 环境变量。这将阻止 Bash 写入 .bash_history文件)

通过修改/etc/profile 文件中的 HISTSIZE 变量值,可 以影响系统中的所有用户。

1.6 注销

闲置超时由变量 TMOUT 来控制,默认单位为秒(s)

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

1.7 用户切换和提权(su sudo)

用户切换:使用 su 命令,可以切换为指定的另一个用户,从而具 有该用户的所有权限。

限制切换:

  • 修改sudoers文件,使用visudo命令来编辑sudoers文件,在打开的sudoers文件中,可以添加或修改规则来限制特定的用户可以使用su命令。例如mt ALL=(ALL) NOPASSWD: ALL

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

提权sudo命令

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

        配置文件/etc/sudoers 中,授权记录的基本配置格式 ,user MACHINE=COMMANDS 授权配置主要包括用户、主机、命令三个部分,即授权哪些人在哪些主机上执行哪些命令

        用户、主机、命令部分都可以定义为别名(必须为大 写),分别通过关键字 User_Alias、Host_Alias、 Cmnd_Alias 来进行设置。

若要启用 sudo 日志记录以备管理员查看,应在/etc/sudoers 文件中增加“Defaults logfile”设置。pvisudo //查找 Defaults,添加内容。
开启sudo日志
  • 创建sudo.log文件: touch /var/log/sudo.log
  • 修改文件权限: chmod root:root /var/log/sudo.log
  • 修改rsyslog配置文件:vim /etc/rsyslog.conf,添加以下内容:local2.debug /var/log/sudo.log //※空白处用“Tab”键补齐,不可以用空格
  • 重启rsyslog服务:systemctl restart rsyslog
  • 修改sudo配置文件:visudo.添加以下内容:Defaults logfile=/var/log/sudo.log,Defaults loglinelen=0,Defaults !syslog

2. 系统引导和登录控制

2.1 调整BIOS引导设置
  • 将第一优先引导设备(First Boot Device)设为当前系统所在磁盘。
  • 禁止从其他设备(如光盘、U 盘、网络等)引导系统,对应的项设为“Disabled”
  • 将 BIOS 的安全级别改为“setup”,并设置好管理密码,以防止未授权的修改。
2.2 限制更改BIOS引导
  • 在Ubuntu及其衍生版本中,使用以下命令来安装:apt install grub2-common
  • 使用grub-mkpasswd-pbkdf2命令创建GRUB 菜单密码
  • 修改grub的文件vim /etc/grub.d/00_header(添加生成的密码)
  • 使用 grub-mkconfig 命令生成新的 grub.cfg 配置文件。
  • 通过上述配置,重新开机进入 GRUB 菜单时,必须根据提示输入正确的 GRUB 密码
2.3 禁止root用户登录
  • 编辑 PAM 配置文件。这个文件用于控制对系统的访问权限。 sudo vi /etc/security/access.conf
  • 如果想禁止 root 用户从 tty5 和 tty6 登录,可以添加如下规则:-:root:LOCAL,-:root:tty5,-:root:tty6,-:root:sshd(禁止sshd访问)u 这里的 -: 表示拒绝访问,root 是用户名,LOCAL 表示本地登录,tty5 和 tty6 是特定的终端。
  • 禁止普通用户登录,建立/etc/nologin 文件即可。login程序会检查/etc/nologin 文件是否存在,如果存在,则拒绝普通用户登录系统(root 用户不受限制)

3. 弱口令,端口扫描

3.1 密码破解工具john

        John the Ripper 是一款开源的密码破解工具,能够在已知密文的情况下快速分析出明文的密码字串,支持DES、MD5 等多种加密算法,而且允许使用密码字典(包含各种密码组合的列表文件)来进行暴力破解。通过使用 John the Ripper,可以检测 Linux/UNIX 系统用户账号的密码强度

步骤:

  • 安装john

  • cp /etc/shadow /root/shadow.txt //准备待破解的密码文件

  • john /root/shadow.txt //执行暴力破解

  • john --show /root/shadow.txt /  #破解出的密码信息自动保存到 john.pot 文件中,可以结合“--show”选项进行查看。

  • John the Ripper 默认提供的字典文件为 /usr/share/john/password.lst

3.2 端口扫描(lsof,nmap)

        一个端口就是一个潜在的通信通道,也就是一个入侵通 道。对目标计算机进行端口扫描,能得到许多有用的信息。

nmap工具:

NMAP 是一个强大的端口扫描类安全评测工具。NMAP被设计为检测众多主机数量的巨大网络,支持ping 扫描、多端口检测、OS 识别等多种技术。

语法和类型:

语法格式:nmap [扫描类型] [选项] <扫描目标...>

其中,扫描目标可以是主机名、IP 地址或网络地址等,多个目标以空格分隔;p常用的选项有“-p”“-n”,分别用来指定扫描的端口、禁用反向 DNS 解析(以加快扫描速度);扫描类型决定着检测的方式,也直接影响扫描的结果。

  •  -sS,TCP SYN 扫描(半开扫描):只向目标发出 SYN 数据包,如果收到 SYN/ACK响应包就认为目标端口正在监听,并立即断开连接;否则认为目标端口并未开放。 
  • -sT,TCP 连接扫描:这是完整的 TCP 扫描方式,用来建立一个 TCP 连接,如果成功则认为目标端口正在监听服务,否则认为目标端口并未开放。
  • -sF,TCP FIN 扫描:开放的端口会忽略这种数据包,关闭的端口会回应 RST 数据包。许多防火墙只对SYN 数据包进行简单过滤,而忽略了其他形式的 TCP 攻击包。这种类型的扫描可间
  • 接检测防火墙的健壮性
  • -sU,UDP 扫描:探测目标主机提供哪些 UDP 服务,UDP 扫描的速度会比较慢。
  • -sP,ICMP 扫描:类似于 ping 检测,快速判断目标主机是否存活,不做其他扫描。
  • -P0,跳过 ping 检测:这种方式认为所有的目标主机是存活的,当对方不响应 ICMP请求时,使用这种方式可以避免因无法 ping 通而放弃扫描。

步骤:

  • 下载nmap,apt install nmap
  • 使用语法满足需求
http://www.lryc.cn/news/579877.html

相关文章:

  • Rovo Dev CLI Windows 安装与使用指南
  • Word和Excel批量转PDF新方法,操作简单
  • Selenium 安装使用教程
  • Java SE线程的创建
  • 怎么处理[TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark
  • 通道密度与安全性的突破:SiLM5768LCG-DG 六通道互锁隔离器如何重构高可靠系统?
  • Unity HDRP + Azure IoT 的 Python 后端实现与集成方案
  • 使用assembly解决jar包超大,实现依赖包、前端资源外置部署
  • linux 系统已经部署并正常提供服务的docker存储目录迁移
  • 【Prometheus 】通过 Pushgateway 上报指标数据
  • 每天一个前端小知识 Day 21 - 浏览器兼容性与 Polyfill 策略
  • AI+Web3:从Web2到Web3的范式革命与深度技术实践
  • 开源项目XYZ.ESB:数据库到数据库(DB->DB)集成
  • lsblk 显示磁盘(如 /dev/sda)已变大,但分区(如 /dev/sda2)未变,则需要手动调整
  • 微服务架构的演进:迈向云原生
  • 【C++】访问者模式中的双重分派机制详解
  • 【效率提升教程】飞书自动化上传图片和文字
  • jQuery Mobile 安装使用教程
  • 《新消费模式与消费者权益保护研讨会》课题研讨会在北京顺利召开
  • 【嵌入式ARM汇编基础】-ELF文件格式内部结构详解(四)
  • 状态机管家:MeScroll 的交互秩序维护
  • 智能电动汽车 --- 车辆网关路由缓存
  • SAP SD模块之业务功能剖析
  • 京东小程序JS API仓颉改造实践
  • 「AI产业」| 《中国信通院华为:智能体技术和应用研究报告》
  • 【加解密与C】对称加密(四) RC4
  • K8s服务发布基础
  • LiteHub中间件之限流实现
  • git教程-pycharm使用tag打标签
  • 【JavaEE】计算机工作原理