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

Systemd安全加密备份系统与智能通知

在这里插入图片描述

实训背景

你是一家金融科技公司的系统架构师,需为敏感数据设计一套安全备份系统,满足以下需求:

  1. 加密存储:自动解密插入的LUKS加密USB设备,挂载到安全目录。
  2. 备份验证:备份完成后校验文件完整性,并发送加密邮件通知。
  3. 冲突规避:禁用Ubuntu默认USB挂载,确保自定义流程独占控制。
  4. 自清洁流程:备份完成后自动卸载并安全移除USB设备。

环境准备

  1. 操作系统:Ubuntu 22.04 LTS。
  2. 工具安装
    sudo apt install cryptsetup ssmtp mailutils shasum  # LUKS工具、邮件客户端、校验工具
    
  3. LUKS加密USB
    • 设备路径:/dev/sdb1(根据实际情况修改)。
    • 加密密码文件:/etc/backup.key(权限600)。

实训步骤


任务1:禁用系统默认USB挂载

目标:阻止GNOME自动挂载USB到 /media 目录。

操作步骤
  1. 屏蔽udisks2服务
    sudo systemctl mask udisks2.service  # 完全禁用自动挂载
    
  2. 创建UDEV规则覆盖默认行为
    sudo nano /etc/udev/rules.d/99-no-automount.rules
    
    内容:
    ENV{UDISKS_IGNORE}="1"  # 标记设备由自定义服务处理
    
  3. 重启UDEV服务
    sudo udevadm control --reload && sudo udevadm trigger
    

任务2:配置LUKS加密设备自动解密

目标:插入加密USB时自动解密并挂载到 /secure/backup

操作步骤
  1. 创建解密挂载脚本

    sudo nano /opt/scripts/luks_mount.sh
    

    内容:

    #!/bin/bash
    DEVICE="/dev/sdb1"
    MOUNT_DIR="/secure/backup"
    KEYFILE="/etc/backup.key"# 解密设备
    cryptsetup open --key-file $KEYFILE $DEVICE backup_volume
    mkdir -p $MOUNT_DIR
    mount /dev/mapper/backup_volume $MOUNT_DIR
    

    赋予执行权限:

    sudo chmod 700 /opt/scripts/luks_mount.sh
    
  2. 创建解密挂载服务

    sudo nano /etc/systemd/system/luks-mount.service
    

    内容:

    [Unit]
    Description=Mount LUKS Encrypted USB
    BindsTo=dev-sdb1.device  # 绑定到特定设备[Service]
    Type=oneshot
    ExecStart=/opt/scripts/luks_mount.sh
    

任务3:实现安全备份与校验

目标:备份数据并生成SHA256校验文件。

操作步骤
  1. 创建备份校验脚本

    sudo nano /opt/scripts/secure_backup.sh
    

    内容:

    #!/bin/bash
    SRC="/data"
    DEST="/secure/backup"
    LOG="/var/log/secure_backup.log"# 执行增量备份
    rsync -av --delete $SRC/ $DEST/ >> $LOG
    # 生成校验文件
    find $DEST -type f -exec sha256sum {} \; > $DEST/checksum.sha
    

    赋予执行权限:

    sudo chmod +x /opt/scripts/secure_backup.sh
    
  2. 创建备份服务

    sudo nano /etc/systemd/system/secure-backup.service
    

    内容:

    [Unit]
    Description=Secure Data Backup
    After=luks-mount.service
    Requires=luks-mount.service[Service]
    Type=oneshot
    ExecStart=/opt/scripts/secure_backup.sh
    

任务4:配置PGP加密邮件通知

目标:备份完成后发送加密邮件,避免敏感信息泄露。

操作步骤
  1. 生成GPG密钥对

    gpg --full-generate-key  # 选择RSA 4096,不设过期
    gpg --export -a "Backup Admin" > backup.pub
    
  2. 创建邮件发送脚本

    sudo nano /opt/scripts/send_alert.sh
    

    内容:

    #!/bin/bash
    RECIPIENT="admin@company.com"
    BACKUP_LOG="/var/log/secure_backup.log"# 加密日志文件
    gpg --encrypt --recipient "$RECIPIENT" $BACKUP_LOG
    echo "Backup completed at $(date)" | mail -s "Secure Backup Report" $RECIPIENT -A $BACKUP_LOG.gpg
    

    赋予执行权限:

    sudo chmod +x /opt/scripts/send_alert.sh
    
  3. 创建通知服务

    sudo nano /etc/systemd/system/backup-notify.service
    

    内容:

    [Unit]
    Description=Send Encrypted Backup Notification
    After=secure-backup.service[Service]
    Type=oneshot
    ExecStart=/opt/scripts/send_alert.sh
    

任务5:构建完整生命周期链

目标:实现插入USB → 解密挂载 → 备份 → 发送通知 → 卸载的完整流程。

操作步骤
  1. 创建卸载服务

    sudo nano /etc/systemd/system/luks-umount.service
    

    内容:

    [Unit]
    Description=Unmount LUKS Device
    After=backup-notify.service[Service]
    Type=oneshot
    ExecStart=/bin/sh -c "umount /secure/backup && cryptsetup close backup_volume"
    
  2. 定义流程Target

    sudo nano /etc/systemd/system/secure-backup.target
    

    内容:

    [Unit]
    Description=Secure Backup Pipeline
    Requires=luks-mount.service secure-backup.service backup-notify.service luks-umount.service
    After=luks-mount.service secure-backup.service backup-notify.service luks-umount.service
    
  3. 触发全流程

    sudo systemctl start secure-backup.target
    journalctl -f -u luks-mount.service -u secure-backup.service  # 监控日志
    

实训总结

通过本次实训,你实现了以下功能:

  1. 安全存储:LUKS加密设备的自动化管理。
  2. 完整性保障:通过SHA256校验确保备份数据可信。
  3. 零冲突挂载:完全接管USB设备控制权,避免系统干扰。
  4. 合规通知:PGP加密邮件满足金融数据安全要求。

知识要点

  1. LUKS设备管理

    • cryptsetup open/close:加解密卷操作。
    • 密钥文件安全:chmod 600 /etc/backup.key
  2. 服务依赖设计

    • BindsTo=dev-sdb1.device:设备插入时触发服务。
    • AfterRequires:严格定义执行顺序。
  3. 邮件安全实践

    • GPG非对称加密:公钥加密、私钥解密。
    • 避免SMTP密码泄露:使用应用专用密码。
  4. 日志审计技巧

    journalctl -u secure-backup.service --since "1 hour ago" --output json  # 结构化日志分析
    

扩展挑战

  • 添加USB设备指纹识别:仅允许特定厂商ID的设备触发备份。
  • 实现备份失败熔断:连续3次失败后锁定系统并发送警报。
  • 集成Prometheus监控:实时展示备份状态和存储容量。

相关文章:

Systemd安全加密备份系统与智能通知

实训背景 你是一家金融科技公司的系统架构师,需为敏感数据设计一套安全备份系统,满足以下需求: 加密存储:自动解密插入的LUKS加密USB设备,挂载到安全目录。备份验证:备份完成后校验文件完整性&#xff0c…...

6.0 使用Qt+ OpenCV+Python加载图片

本例作为python图像处理的入门课程1,使用Qt+ OpenCV+Python加载图片。 主要有如下几个地方需要注意: 1. OpenCV 默认使用 BGR 格式,而 Qt 使用 RGB。显示前需要转换:cv2.cvtColor(img, cv2.COLOR_BGR2RGB),一般使用某个QLabel控件进行显示。 pic = cv2.cvtColor(pic, cv2.C…...

深度学习篇---网络分析(1)

文章目录 前言1. ImprovedResBlock(改进的残差块)结构组成卷积层1卷积层2跳跃连接(Downsample) 前向传播流程主路径跳跃路径残差连接 2. EnhancedCNN(主模型)2.1 初始特征提取层功能参数变化 2.2 残差块堆叠…...

【Mac 从 0 到 1 保姆级配置教程 11】- Mac 基础配置 Finder、触控板、常用快捷键等

文章目录 前言配置 Finder1. 把我们的家目录请出来2. 显示文件扩展名3. 展示隐藏文件4. 显示路径栏和状态栏5. 固定文件夹到工具栏 基础快捷键1. Finder 导航快捷键2. 文件操作快捷键3. 视图和显示快捷键4. 搜索和选择快捷键5. 实用技巧6. 关于文件创建 配置触控板1. 右键设置2…...

C++Primer - 动态内存管理

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...

DeepSeek本地部署(Ollama)

1. Ollama 安装 Ollama 官网地址: https://ollama.com/安装包网盘地址: https://pan.baidu.com 2. Deepseek 部署 根据自己电脑配置和应用需求选择不同模型,配置不足会导致运行时候卡顿。 版本安装指令模型大小硬盘(存储)显卡…...

Amodal3R ,南洋理工推出的 3D 生成模型

Amodal3R 是一款先进的条件式 3D 生成模型,能够从部分可见的 2D 物体图像中推断并重建完整的 3D 结构与外观。该模型建立在基础的 3D 生成模型 TRELLIS 之上,通过引入掩码加权多头交叉注意力机制与遮挡感知注意力层,利用遮挡先验知识优化重建…...

第二期:深入理解 Spring Web MVC [特殊字符](核心注解 + 进阶开发)

前言: 欢迎来到 Spring Web MVC 深入学习 的第二期!在第一期中,我们介绍了 Spring Web MVC 的基础知识,学习了如何 搭建开发环境、配置 Spring MVC、编写第一个应用,并初步了解了 控制器、视图解析、请求处理流程 等核…...

论伺服电机在轨道式巡检机器人中的优势及应用实践​

一、引言​ 1.1 研究背景与意义​ 在现代工业生产、电力系统、轨道交通等诸多领域,保障设施设备的安全稳定运行至关重要。轨道式巡检机器人作为一种高效、智能的巡检工具,正逐渐在这些领域崭露头角。它能够沿着预设轨道,对目标区域进行全方位…...

开源软件与自由软件:一场理念与实践的交锋

在科技的世界里,“开源软件”和“自由软件”这两个词几乎无人不知。很多人或许都听说过,它们的代码是公开的,可以供所有人查看、修改和使用。然而,若要细究它们之间的区别,恐怕不少朋友会觉得云里雾里。今天&#xff0…...

(51单片机)独立按键控制流水灯LED流向(独立按键教程)(LED使用教程)

源代码 如上图将7个文放在Keli5 中即可,然后烧录在单片机中就行了 烧录软件用的是STC-ISP,不知道怎么安装的可以去看江科大的视频: 【51单片机入门教程-2020版 程序全程纯手打 从零开始入门】https://www.bilibili.com/video/BV1Mb411e7re?…...

开发指南111-关闭所有打开的子窗口

门户系统是通过window.open通过单点登录的模式打开子系统的,这就要求门户系统退出时,关闭所有打开的子系统。 平台处理这一问题的核心原理如下: 主窗口定义: allChildWindows:[], //所有子窗口 pushChildWindow(childWindow){ …...

react-router children路由报错

项目场景: 写个路由页面,引发的问题 问题描述 报错: An absolute child route path must start with the combined path of all its parent routes. 代码: import { createBrowserRouter } from "react-router-dom";…...

双向链表示例

#include <stdio.h> #include <stdlib.h>// 定义双向链表节点结构体 typedef struct list {int data; // 数据部分struct list *next; // 指向下一个节点的指针struct list *prev; // 指向前一个节点的指针 } list_t;// 初始化链表&#xff0c;将链表的…...

Socket编程TCP

Socket编程TCP 1、V1——EchoServer单进程版2、V2——EchoServer多进程版3、V3——EchoServer多线程版4、V4——EchoServer线程池版5、V5——多线程远程命令执行6、验证TCP——Windows作为client访问Linux7、connect的断线重连 1、V1——EchoServer单进程版 在TcpServer.hpp中实…...

当网页受到DDOS网络攻击有哪些应对方法?

分布式拒绝服务攻击也是人们较为熟悉的DDOS攻击&#xff0c;这类攻击会通过大量受控制的僵尸网络向目标服务器发送请求&#xff0c;以此来消耗服务器中的资源&#xff0c;致使用户无法正常访问&#xff0c;当网页受到分布式拒绝服务攻击时都有哪些应对方法呢&#xff1f; 建立全…...

文件映射mmap与管道文件

在用户态申请内存&#xff0c;内存内容和磁盘内容建立一一映射 读写内存等价于读写磁盘 支持随机访问 简单来说&#xff0c;把磁盘里的数据与内存的用户态建立一一映射关系&#xff0c;让读写内存等价于读写磁盘&#xff0c;支持随机访问。 管道文件&#xff1a;进程间通信机…...

4.4刷题记录(哈希表)

1.242. 有效的字母异位词 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool isAnagram(string s, string t) {unordered_map<char,int>cnt_s,cnt_t;for(int i0;i<s.size();i){cnt_s[s[i]];}for(int i0;i<t.size();i){cnt_t[t[i]];}if(cnt_sc…...

代码随想录回溯算法03

93.复原IP地址 本期本来是很有难度的&#xff0c;不过 大家做完 分割回文串 之后&#xff0c;本题就容易很多了 题目链接/文章讲解&#xff1a;代码随想录 视频讲解&#xff1a;回溯算法如何分割字符串并判断是合法IP&#xff1f;| LeetCode&#xff1a;93.复原IP地址_哔哩哔…...

批量改CAD图层颜色——CAD c#二次开发

一个文件夹下大量图纸&#xff08;几百甚至几千个文件&#xff09;需要改图层颜色时&#xff0c;可采用插件实现&#xff0c;效果如下&#xff1a; 转换前&#xff1a; 转换后&#xff1a; 使用方式如下&#xff1a;netload加载此dll插件&#xff0c;输入xx运行。 附部分代码如…...

【内网安全】DHCP 饿死攻击和防护

正常情况&#xff1a;PC2可以正常获取到DHCP SERVER分别的IP地址查看DHCP SERCER 的ip pool地址池可以看到分配了一个地址、Total 253个 Used 1个 使用kali工具进行模拟攻击 进行DHCP DISCOVER攻击 此时查看DHCP SERVER d大量的抓包&#xff1a;大量的DHCP Discover包 此时模…...

【愚公系列】《高效使用DeepSeek》055-可靠性评估与提升

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…...

AI时代编程教育启示录:为什么基础原理依然不可或缺?

李升伟 编译 在生成式AI重塑编程教育的今天&#xff0c;我作为拥有十年开发者关系团队管理经验、编程训练营教学经历的专业软件工程师&#xff0c;想与大家探讨这个新时代的编程教育之道。 ‌平衡之道&#xff1a;基础原理与AI工具的博弈‌ 当GitHub Copilot、Amazon Q Deve…...

10种电阻综合对比——《器件手册--电阻》

二、电阻 前言 10种电阻对比数据表 电阻类型 原理 特点 应用 贴片电阻 贴片电阻是表面贴装元件&#xff0c;通过将电阻体直接贴在电路板上实现电路连接 体积小、重量轻&#xff0c;适合高密度电路板&#xff1b;精度高、稳定性好&#xff0c;便于自动化生产 广泛应用于…...

剑指Offer(数据结构与算法面试题精讲)C++版——day6

剑指Offer&#xff08;数据结构与算法面试题精讲&#xff09;C版——day6 题目一&#xff1a;不含重复字符的最长子字符串题目二&#xff1a;包含所有字符的最短字符串题目三&#xff1a;有效的回文 题目一&#xff1a;不含重复字符的最长子字符串 这里还是可以使用前面&#x…...

freertos韦东山---事件组以及实验

事件组的原理是什么&#xff0c;有哪些优点&#xff0c;为啥要创造出这个概念 在实时操作系统&#xff08;如 FreeRTOS&#xff09;中&#xff0c;事件组是一种用于任务间同步和通信的机制&#xff0c;它的原理、优点及存在意义如下&#xff1a; 事件组原理 数据结构&#xf…...

架构师面试(二十六):系统拆分

问题 今天我们聊电商系统实际业务场景的问题&#xff0c;考查对业务系统问题的分析能力、解决问题的能力和对系统长期发展的整体规划能力。 一电商平台在早期阶段业务发展迅速&#xff0c;DAU在 10W&#xff1b;整个电商系统按水平分层架构进行设计&#xff0c;包括【入口网关…...

Spring 中的事务

&#x1f9fe; 一、什么是事务&#xff1f; &#x1f9e0; 通俗理解&#xff1a; 事务 一组操作&#xff0c;要么全部成功&#xff0c;要么全部失败&#xff0c;不能只做一半。 比如你转账&#xff1a; A 账户扣钱B 账户加钱 如果 A 扣了钱但 B 没收到&#xff0c;那就出问…...

Java中的同步和异步

一、前言 在Java中&#xff0c;同步&#xff08;Synchronous&#xff09;和异步&#xff08;Asynchronous&#xff09;是两种不同的任务处理模式。核心区别在任务执行的顺序控制和线程阻塞行为。 二、同步&#xff08;Synchronous&#xff09; 定义&#xff1a;任务按顺序执行…...

vue2 vue3 响应式差异

vue2 响应式原理看这 链接: link 总结&#xff1a; object.defineproperty()是对属性的劫持&#xff0c;对属性劫持有两大缺陷 1. 需要遍历对象的所有属性&#xff0c;深层属性需递归&#xff0c;存在效率问题 2. 后添加的属性&#xff0c;无法获得响应式&#xff0c;因为劫持…...