Skip to main content

10.系统安全配置

本章主要内容是系统安全方面的知识

centos系统安全方面需要做哪些加固?

及时更新系统: 确保系统及其所有组件、应用程序和软件都及时更新到最新版本。使用 yumdnf 命令进行系统和软件包的更新。用户账号安全

sudo yum update

配置防火墙: 启用和配置防火墙以限制对不必要服务的访问。使用 firewalldiptables 进行配置,并只允许必需的端口对外开放。

禁用不必要的服务: 禁用或删除系统上不必要的服务和进程,以减少攻击面。

sudo systemctl disable <service-name>

安装安全补丁: 定期检查并安装 CentOS 发布的安全更新和补丁。

sudo yum update

使用强密码策略: 确保所有用户都使用强密码,并定期更改密码。

限制用户权限: 仅分配给用户必要的权限,并使用最小权限原则。

启用 SELinux: 安全增强 Linux(SELinux)是一种强制访问控制(MAC)系统,可以提供额外的安全层。

sudo setenforce 1

安装和配置 fail2ban: fail2ban 可以防范暴力破解攻击,通过监视系统日志并自动禁止攻击者的 IP 地址。

sudo yum install fail2ban

使用密钥认证: 对于 SSH 访问,使用密钥认证而不是仅仅依赖密码。

监控系统日志: 定期检查系统和应用程序的日志文件,查找异常或可疑活动。

安装和配置入侵检测系统(IDS): 使用 IDS 工具(如 Snort)来检测网络上的潜在攻击。

定期备份: 确保定期备份系统和关键数据,以便在发生数据损坏或攻击时进行快速恢复。

禁用不安全的服务: 禁用不再需要的服务和协议,如 Telnet,使用更安全的替代方案。

加密通信: 对于需要安全传输的数据,使用加密协议(例如,使用 HTTPS 替代 HTTP)。

定期安全审计: 进行系统和网络的定期安全审计,以发现并修复潜在的安全问题。

设置账号有效期

相关命令

chage

chage命令用于更改用户密码的相关信息,例如密码过期日期、账户失效日期等

chage [options] username

选项:

  • -d, --lastday 置密码上次修改的日期。DAYS表示距离1970-01-01的天数。
  • -E, --expiredate 设置账户的过期日期。DATE的格式为YYYY-MM-DD。
  • -I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态
  • -l, --list 显示帐户年龄信息
  • -m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”
  • -M, --maxdays MAX_DAYS 将两次改变密码之间相距的最大天数设为“最大天数”
  • -R, --root CHROOT_DIR chroot 到的目录
  • -W, --warndays 警告天数 将过期警告天数设为“警告天数”

常用操作:

chage -d 0 username		#密码的上次修改日期被设置为1970年1月1日
chage -l username #显示用户密码详细信息
chage -E 2022-12-31 username #密码在2022-12-31日后过期

chage -m 7 username #在修改密码之前必须等待的7天
chage -M 90 username #设置密码的最大使用天数为90天
chage -W 14 username #密码过期前14天提醒更改
chage -I 7 username #密码过期后,账号7天后失效

chage -d 0 username 命令中的 -d 选项表示设置密码上次修改的日期。在这个命令中,0 表示距离1970-01-01的天数,即密码的上次修改日期被设置为1970年1月1日。

这样的设置通常用于强制用户在下一次登录时强制修改密码。通过将上次修改日期设置为过去的日期,系统会认为密码已经过期,因此用户在登录时将被提示强制修改密码。这是一种常见的安全策略,用于确保密码定期更新,增强系统的安全性。

paswd

passwd应用看之前的笔记

常用的选项使用:

  • -l 锁定
  • -u 解锁
  • -S 看状态

强制定期修改密码

配置文件 /etc/login.defs

  • 主要控制属性
    • PASS_MAX_DAYS: 密码的最大使用天数。
    • PASS_MIN_DAYS: 密码必须存在的最短天数。
    • PASS_MIN_LEN: 密码的最小长度。
    • PASS_WARN_AGE: 在密码过期前,提前多少天通知用户。
    • CREATE_HOME: 如果设置为 "yes",则在用户首次登录时创建家目录。
    • SYSLOG_SU_ENAB: 如果设置为 "yes",则 su 命令的使用将被记录到系统日志。
    • LOGIN_RETRIES: 允许的登录重试次数。
    • LOGIN_TIMEOUT: 登录超时的时间。
    • UMASK: 文件创建时的默认权限掩码。
    • USERGROUPS_ENAB: 如果设置为 "yes",用户组将与其用户名相同。如果设置为 "no",用户组将为用户ID的默认组。
    • MAIL_DIR: 指定用户邮件存储的目录。
    • QUOTAS_ENAB: 如果设置为 "yes",启用磁盘配额功能。

伪登录提示

配置文件

  • /etc/issue
    • 用于在用户登录系统时显示一条欢迎消息或系统信息。如系统名称、版本号、发行版。
    • /etc/issue 文件中的内容可以包含一些转义序列,这些序列会在显示时被替换为相应的信息。
      • \n 表示换行符,\l 表示终端设备名称,\s 表示系统名称等
  • /etc/issue.net
    • 在网络登录时显示欢迎消息或系统信息。例如 SSH。
    • 提供了一种区分本地登录和远程(网络)登录的方式。系统管理员可以使用该文件来定制本远程登录时显示的欢迎消息,以便向用户提供相关的系统信息。

注意:

以上2个文件中的这些欢迎消息文件可能会暴露一些系统信息,因此在安全性要求较高的环境中,管理员可能会选择限制或不使用这些文件。

为普通用户增加root权限

为普通用户增加对 root 权限的访问是一个非常危险的操作,因为 root 用户拥有系统上的最高权限,允许对系统进行关键性的更改。通常情况下,最好的做法是将需要执行特权操作的用户添加到 sudoers 列表,以便在需要时通过 sudo 命令获取 root 权限。

sudoers文件简介

sudoers 文件通常位于 /etc/sudoers,是 Linux 系统中实现授权和权限管理的关键文件,它允许系统管理员对用户进行细粒度的授权,以执行特定的任务而无需完全提升为超级用户。

sudoers文件格式

  • 使用特殊工具 visudo 进行编辑,该命令保存文件时会进行语法检查,避免出现错误。
  • 使用vim也行
sudo visudo
sudo vim /etc/sudoers

sudoers 文件使用特定的语法格式。每个规则由以下格式组成:

user host=(runas-user:runas-group) command
  • user:表示适用的用户。可以使用 % 表示组%wheel,表示wheel组。
  • host:表示适用的主机。通常为 ALL,表示适用于所有主机。
  • runas-user:表示运行命令时要模拟成的用户。
  • runas-group:表示运行命令时要模拟成的组。
  • command:表示允许执行的命令。也可以使用 ALL 表示允许执行所有命令。

特殊关键字:

  • ALL 表示匹配所有选项,如所有用户、所有主机、所有命令等。
  • NOPASSWD 允许用户在执行 sudo 命令时无需输入密码。

常用赋权操作

授予用户所有root权限

sudo visudo
#
## Allow root to run any commands anywhere
root ALL=(ALL:ALL) ALL

#授予用户所有root权限
test001 ALL=(ALL:ALL) ALL #允许用户 "test001" 使用 sudo

授予用户部分权限

#允许用户以root权限执行/sbin/下的所有命令,但是,禁止修改eth0网卡的参数
test002 localhost,svr1=/sbin/*,!/sbin/ifconfig etho

#授予用户zhangsan 在本机和host50主机 能够启动mysqld服务和编辑配置文件的权限
zhangsan localhost,host50=/usr/bin/systemctl mysqld, /usr/bin/vim /etc/my.cnf

授予组用户所有权限

%wheel    ALL=(ALL:ALL) ALL	#允许 "wheel" 组中成员使用 sudo 所有权限

测试 sudo 权限

退出当前终端并使用新添加的用户登录,然后尝试运行一个需要 root 权限的命令

sudo ls /root

请注意,将用户添加到 sudoers 列表应该是一个谨慎的决定,仅将真正需要进行特权操作的用户添加到列表。为了最小化潜在的安全风险,应该只给予用户执行必要任务所需的最低特权。

扩展

包含其他文件

sudoers 文件支持通过 #include 指令包含其他文件,以便更好地组织规则。

#includedir /etc/sudoers.d

文件系统安全

锁定和解锁保护文件

相关命令

chattr

chattr 命令用于修改文件的扩展属性

chattr [+-=] [属性] [文件或目录]
  • +: 添加属性。
  • -: 移除属性。
  • =: 设置唯一的属性,移除其他所有属性。

属性:

  • a (append-only): 文件只能被追加数据,不能被修改或删除
  • i (immutable): 文件不能被修改、删除、重命名或链接。
  • A (no-atime-updates): 不更新文件的访问时间(atime)
  • u (undeletable): 在删除文件时保留其数据块,并将其内容标记为无效。

示例:

chattr +a filename
chattr +i filename
chattr +A filename
chattr +u filename

#
chattr +i /etc/hosts
echo "1.2.3.4 www.qq.com" >> /etc/hosts
bash:/etc/hosts:权限不够

lsattr

lsattr 命令用于显示文件的扩展属性。

  • lsattr 命令会列出文件的各种属性,如果文件没有扩展属性,将不显示任何内容。
  • lsattr 命令只显示文件扩展属性,而不显示文件的权限、所有者等信息。
lsattr [文件或目录]

网络安全

sshd安全设置

配置文件简介

配置文件 /etc/ssh/sshd_config

  • port 33890:改用非标准端口
  • Protocol 2 :启用SSH V2版协议
    • 默认使用 V2,原始的 SSH 协议版本 1(SSH-1)存在一些安全性问题,包括容易受到中间人攻击(Man-in-the-Middle attacks)。
  • ListenAddress 192.168.168.174 :仅监听来自该 IP 地址的连接请求
  • PermitRootLogin no :禁止rot登录
  • UseDNS no :不解析客户机地址,不解析主机名连接会快一些
  • LoginGraceTime 1m:登录限时。
    • 在1分钟内保持连接而不进行任何操作。超过这个时间,如果用户没有执行任何操作,连接将被自动关闭。这有助于防止在用户登录后无操作的情况下占用服务器资源。
  • MAx AuthTries 3:每次连接最多认证次数
  • DenyUser USER1 USER2...
    • 禁止某些用户登录
  • AllowUser USER@HOST ...
    • 允许登录的用户
  • DenyGroups GROUP1
    • 禁止某些组登录
  • AllowGroups GROUP ...
    • 允许登录的组
  • PubkeyAuthentication yes:开启公钥登录

提示:

DenyUser 的优先级高于 AllowUser。也就是说,如果一个用户同时出现在 DenyUserAllowUser 列表中,DenyUser 的设置将覆盖 AllowUser,该用户将被拒绝登录。

SELinux(未完成占位)

SELinux(Security-Enhanced Linux)是一个强化 Linux 安全性的安全子系统。它提供了强制访问控制(MAC)机制,使系统管理员能够更细粒度地控制每个进程对系统资源的访问权限。

基本概念:

  • 强制访问控制(MAC): SELinux 引入了 MAC,与传统的自由访问控制(DAC)相对。在 DAC 中,用户和进程有权决定其对文件和资源的访问权限。而在 SELinux 中,访问权限是由策略和规则强制执行的。
  • 标签: SELinux 使用标签为文件、进程和其他系统资源分配安全属性。使用三个部分的安全上下文标签来描述对象,包括类型(type)、角色(role)和用户(user)等。

标签类别:

  • 类型(Type)
    • 表示对象所属的SELinux用户,每个 SELinux 对象(文件、进程等)都分配了一个类型,表示其用途和规则。
    • 每个用户都有一个唯一的标识符,例如 system_u 表示系统用户。例如,一个 Web 服务器可能有不同的类型与一个数据库服务器。
  • 角色(Role)
    • 表示对象在系统中扮演的角色。角色定义了用户在特定上下文中执行任务的权限。例如 object_r 表示普通对象。
  • 用户(User)
    • 表示对象的类型,定义了对象的用途和权限。例如 httpd_t 表示一个与 Apache HTTP Server 相关的对象。

一个典型的 SELinux 安全上下文标签的格式如下:

user:role:type

示例:

一个文件的安全上下文标签可能是:

system_u:object_r:httpd_sys_content_t

这表示这个文件属于 system_u 用户,object_r 角色,httpd_sys_content_t 类型。这个标签描述了文件所属用户、角色以及文件类型,从而确定了文件的访问权限。

SELinux 状态

  • Enforcing 模式: SELinux 可以处于强制模式,强制执行策略规则。
  • Permissive 模式: 在该模式下,SELinux 不强制执行策略,但会记录违规的访问,用于审计和调试。
  • Disabled 模式:关闭SELinux。

SELinux 工具

  • semanage: 用于配置 SELinux 策略管理器的策略模块。
  • sestatus: 显示 SELinux 状态和模式。
  • getenforce: 获取 SELinux 强制模式的当前状态。

semanage使用

semanage 是一个 SELinux 策略管理工具,用于管理和配置 SELinux 策略的参数。它允许管理员在不改变策略文件的情况下进行更灵活的 SELinux 配置。

基本语法

semanage [options] [command] [args...]

常用命令

sestatus		#查看 SELinux 状态
semodule -l #列出 SELinux 策略模块
load_policy #重载 SELinux 策略

semanage fcontext -l #查看文件上下文规则
semanage fcontext -a -t <type> '<path_regex>' #添加自定义文件上下文规则
semanage fcontext -l #查看文件上下文规则

semanage port -a -t <type> -p tcp <port> #为端口添加 SELinux 上下文
semanage login -a -s <user_role> <login_name> #为用户添加 SELinux 用户角色
semanage login -m -s <default_role> -r <user_role> <login_name> #为用户添加默认 SELinux 用户角色

restorecon -v <path> #修改文件上下文
restorecon -R -v <directory_path> #将文件上下文更改应用于整个目录

加密和解密(未完成占位)

加密和解密是信息安全领域中用于保护数据机密性的基本概念。

基本原理

加密原理:

  1. 对称加密:
    • 原理: 对称加密使用相同的密钥(称为对称密钥)进行加密和解密。发送方使用密钥对明文进行加密,接收方使用相同的密钥对密文进行解密。
    • 示例算法: AES(Advanced Encryption Standard),DES(Data Encryption Standard),3DES(Triple DES)。
  2. 非对称加密:
    • 原理: 非对称加密使用一对密钥,分为公钥和私钥。公钥用于加密数据,私钥用于解密数据。公钥可以公开分享,但私钥必须保持机密。
    • 示例算法: RSA,Elliptic Curve Cryptography(ECC)。
  3. 哈希函数:
    • 原理: 哈希函数是一种单向函数,它将任意大小的数据映射为固定大小的哈希值。在密码学中,常用于生成消息摘要,验证数据的完整性。
    • 示例算法: SHA-256,MD5。
  4. 数字签名:
    • 原理: 数字签名结合了非对称加密和哈希函数的概念。发送方使用私钥对消息的哈希值进行签名,接收方使用发送方的公钥验证签名的有效性。
    • 示例算法: RSA,DSA(Digital Signature Algorithm)。

解密原理:

  1. 对称解密:
    • 原理: 对称解密使用相同的对称密钥对密文进行解密,将其还原为原始明文。接收方必须拥有与发送方相同的密钥。
    • 示例算法: AES,DES,3DES。
  2. 非对称解密:
    • 原理: 非对称解密使用私钥对使用公钥加密的数据进行解密。私钥只能由接收方持有。
    • 示例算法: RSA,ECC。
  3. 哈希验证:
    • 原理: 接收方使用相同的哈希函数对接收到的数据生成哈希值,并将其与发送方提供的哈希值进行比较。如果两者匹配,数据未被篡改。
    • 示例算法: SHA-256,MD5。
  4. 数字签名验证:
    • 原理: 接收方使用发送方的公钥对数字签名进行验证,确保消息的完整性和身份认证。只有持有私钥的发送方能够生成有效的数字签名。
    • 示例算法: RSA,DSA。

linux中加密和解密相关操作(未完成占位)

在 Linux 中,加密和解密通常涉及使用各种加密算法和工具来保护敏感数据的安全性。

1. 加密和解密文件:

使用 GPG(GNU Privacy Guard):

  • 加密文件:

    gpg -c filename		#创建一个加密的 .gpg 文件
  • 解密文件:

    gpg filename.gpg	#输入密码以解密文件

2. 使用 OpenSSL 进行对称加密和解密:

对称加密:

  • 加密文件:

    openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.txt	#使用 AES-256-CBC 算法对文件进行加密
  • 解密文件:

    openssl enc -d -aes-256-cbc -in encrypted.txt -out decrypted.txt	#输入密码以解密文件

3. 使用 OpenSSL 进行非对称加密和解密:

非对称加密:

  • 生成密钥对:

    openssl genpkey -algorithm RSA -out private_key.pem
    openssl rsa -pubout -in private_key.pem -out public_key.pem

    生成私钥(private_key.pem)和相应的公钥(public_key.pem)

  • 加密文件(使用公钥加密)

    openssl rsautl -encrypt -pubin -inkey public_key.pem -in plaintext.txt -out encrypted.txt
  • 解密文件(使用私钥解密)

    openssl rsautl -decrypt -inkey private_key.pem -in encrypted.txt -out decrypted.txt

4. 使用 LUKS 加密磁盘:

LUKS(Linux Unified Key Setup)是 Linux 上的一个磁盘加密标准,用于对整个磁盘或分区进行加密。

  • 创建加密分区:

    cryptsetup luksFormat /dev/sdX
    cryptsetup open --type luks /dev/sdX encrypted_volume

    输入密码以格式化和打开加密分区。

  • 在加密分区上创建文件系统:

    mkfs.ext4 /dev/mapper/encrypted_volume
  • 挂载加密分区:

    mount /dev/mapper/encrypted_volume /mnt

AIDE入侵检测(未完成占位)

AIDE(Advanced Intrusion Detection Environment)是一种开源的入侵检测系统,用于监控系统文件的完整性。它旨在检测文件系统、目录和文件的任何变化,这包括新增、修改或删除的文件。通过定期检查文件系统的完整性,AIDE 可以帮助识别系统上潜在的安全威胁或未经授权的活动。

特点:

  1. 完整性检查: AIDE 主要用于检查文件系统的完整性,确保系统文件和目录未被未经授权的修改。
  2. 灵活性: AIDE 允许用户根据需要定义文件、目录和规则,以适应不同系统的需求。
  3. 定期扫描: AIDE 可以按计划或周期性地运行,以定期检查文件系统的状态。
  4. 报告和警报: AIDE 生成详细的报告,其中包括任何检测到的变化。管理员可以配置警报机制,以便在发现潜在入侵时及时得到通知。
  5. 基于数据库: AIDE 使用数据库来存储文件系统的状态,允许进行比较和分析以确定何时发生了变化。
  6. 多算法支持: AIDE 可以使用不同的哈希算法来计算文件的签名,包括 MD5、SHA-1、SHA-256 等。

工作原理:

  1. 初始化数据库: 首次运行 AIDE 时,会创建一个数据库,其中包含文件和目录的哈希值。
  2. 定期扫描: AIDE 在预定的时间间隔内运行,重新计算文件和目录的哈希值,并与之前的数据库中的值进行比较。
  3. 检测变化: AIDE 检测到文件或目录的哈希值与先前的不同,就会标记为发生了变化。这可能表示潜在的入侵或未经授权的修改。
  4. 生成报告: AIDE 生成包含检测到的变化的报告,管理员可以查看和分析。
  5. 管理配置: 管理员可以根据系统的变化调整 AIDE 的配置,包括文件、目录和检查规则。

使用步骤

安装 AIDE

sudo yum install aide

初始化 AIDE 数据库

sudo aide --init

/var/lib/aide/aide.db.new.gz 中创建一个初始数据库。可将其重命名为 /var/lib/aide/aide.db.gz

sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

定期运行 AIDE

使用 aide 命令运行 AIDE,生成报告:

sudo aide

可以将这个命令添加到定时任务(cron job)中,以定期运行 AIDE

查看报告

AIDE 生成的报告通常在 /var/log/aide/aide.log 中。可以使用文本编辑器或 cat 命令查看报告。

sudo cat /var/log/aide/aide.log

调整配置

AIDE 的配置文件为 /etc/aide/aide.conf。你可以根据需要调整文件、目录和规则,以适应系统的特定配置。

自动化报告和警报

可以使用脚本或其他工具,将 AIDE 报告的内容发送给管理员或通过其他方式进行警报,如:邮件,微信

定时更新数据库

为了保持数据库的最新状态,你可以定期更新数据库

sudo aide --update

其他 AIDE 命令:

  • aide --config-check:检查 AIDE 配置文件的语法。
  • aide --check:检查数据库的状态,但不更新。
  • aide --compare:比较两个数据库文件。

Nmap扫描工具(未完成占位)

Nmap(Network Mapper)是一个用于网络发现和安全审计的免费且开源的工具。它是一款强大的网络扫描器,能够探测主机、服务以及网络中的许多信息。Nmap最初由Gordon Lyon(也称为Fyodor Vaskovich)开发,并且在开源社区中广泛使用。

Nmap的主要功能包括:

  1. 主机发现: Nmap能够确定网络上存活的主机。它使用一系列技术,如ICMP echo请求、TCP和UDP扫描等,以确定哪些主机在网络上是活跃的。
  2. 端口扫描: Nmap可以扫描目标主机上开放的端口。这对于了解目标系统上运行的服务和应用程序非常重要。
  3. 服务版本检测: Nmap可以尝试识别目标主机上运行的服务及其版本信息。这对于识别潜在的安全漏洞和进行系统配置审计非常有用。
  4. 操作系统检测: Nmap可以尝试确定目标主机的操作系统类型和版本。这有助于了解目标系统的特征,以便更好地进行安全评估。
  5. 脚本扫描: Nmap支持使用脚本进行扫描,这可以通过Nmap脚本引擎(NSE)实现。这允许用户执行自定义的脚本,以执行特定的扫描任务和检测。
  6. 输出格式: Nmap能够生成多种输出格式,包括文本、XML和脚本友好的格式。这有助于对扫描结果进行分析和处理。

tcpdump 和 wireshark(未完成占位)

Linux防病毒软件(未完成占位)

clamva https://aws.amazon.com/cn/blogs/china/deploy-clamav-on-ec2-with-realtime-scan-and-centralized-alarm/

https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/security_guide/sec-using-aide

linux系统审计(未完成占位)

Linux系统审计是一种通过记录系统活动并生成相关的审计日志,以监控和审计系统中发生的事件的过程。这些事件可以包括用户登录、文件访问、系统配置更改等。审计可以用于跟踪系统中的活动,确保合规性、检测潜在的安全问题以及提供对系统行为的详细了解。

Linux系统审计通常包括以下关键方面:

  1. 登录和用户活动审计: 记录用户登录和注销事件,以及用户在系统上执行的命令。这有助于追踪系统访问和识别潜在的恶意活动。
  2. 文件和目录访问审计: 跟踪对文件和目录的访问,包括读取、写入和执行操作。这对于检测对敏感数据的未经授权访问或修改非常重要。
  3. 系统调用审计: 记录系统调用的使用情况,可以帮助检测尝试以非法或异常的方式使用系统资源的行为。
  4. 网络活动审计: 记录网络连接和通信,包括进入和离开系统的网络流量。这有助于发现潜在的网络攻击和异常活动。
  5. 系统配置更改审计: 记录对系统配置的更改,包括用户账户、权限、服务配置等的修改。这有助于确保系统的安全性和合规性。
  6. 安全事件审计: 记录与安全相关的事件,如拒绝访问尝试、入侵检测系统(IDS)警报等。

nginx安全加固(未完成占位)

  • 删除不需要的模块
  • 修改版本信息
  • 显示并发
  • 拒绝非法请求
  • 防止buffer溢出

数据库安全加固(未完成占位)

  • 初始化安全脚本
  • 密码安全
  • 数据库与还原
  • 数据安全

Tomcat安全加固

  • 隐藏版本信息
  • 降权启动
  • 删除默认的测试页面

补丁升级(未完成占位)

补丁原理

  • 源代码的不同该版本
  • diff逐行比较
  • diff文件对比
  • diff目录对比

diff

  • -u: 以Unified diff格式输出,通常更易读。
  • -r: 递归地比较目录。
  • -N: 如果一个文件在一个目录中不存在,但在另一个目录中存在,则认为它是一个新文件。这样新文件也会被包括在差异中。
  • -a: 将所有文件当作文本文件对待,而不是二进制文件。

单个文件

语法:

diff -u 旧文件 新文件 > x.patch

test2比test1版本高

对比test1和test2差异,把差异输出到 patch 文件

#生成补丁
diff -u test1.sh test2.sh > bd.patch

#打补丁
cat bd.path #在需要打补丁的机器上执行

多个文件

diff -urNa /demo/source1 /demo/source2 > bd2.patch

#打补丁
cat bd2.path

比较两个目录 /demo/source1/demo/source2 中的文件内容,然后生成一个包含差异信息的补丁文件 bd2.patch

patch打补丁

  • 给文件生成补丁
  • 给文件打补丁
  • 给目录生成补丁
  • 给目录打补丁

Reference Links:

#使用AIDE检查完整性

https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/security_guide/sec-using-aide

#在 EC2 Linux 操作系统上部署 ClamAV 并开启实时防护、集中日志采集和统一告警

https://aws.amazon.com/cn/blogs/china/deploy-clamav-on-ec2-with-realtime-scan-and-centralized-alarm/