[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

[IDS] 安装 Tripwire 并通知 Chatwork 检测到的文件差异 (Ubuntu 22.0.4)

你好。
下属的信任
这在零信任系统解决方案部门很可爱。

新年快乐
今年我也想尽力而为。

这次,我想使用托管的 IDS OSS“ Tripwire ”来自动通知 Chatwork 检测到的文件篡改。
很难注意到服务器上不经常接触的文件和目录的更改,因此它似乎非常有用。虽然全面实施有一定难度,但实施本身并不困难。

什么是绊线?

Tripwire是一个 IDS(入侵检测)或文件篡改检测工具,可以监视预定义目录下的文件并检查并通知您结果。
它是Tripwire Inc.的产品,有免费OSS版本和付费版本。这次我们将使用OSS版本(没有IPS功能)。

手册页: https

安装

■验证环境

Ubuntu 24.04 LTS Tripwire 2.4.3.7.0 Python 3.12.3 # 用于通知

■安装和初始设置

$ sudo apt update $ sudo apt install tr​​ipwire

这就是安装的全部内容。
安装过程中将出现几个提示,选择适当的设置并继续。
*这次我们假设本地主机环境。

▼ 选择目的。这次我选择了“仅限本地” ,请选择
“Internet 站点”

▼ 用于通知的电子邮件地址的域。如果您没有什么特别的, example.com就可以。这次我不会用它。

▼ 为了安全起见,请为 Tripwire 创建密钥对。选择
默认的 (详细信息可以在 twfiles(5) 中找到: //linux.die.net/man/5/twfiles

▼ 对于初始配置,

▼ 输入您的密码(推荐使用备忘录)。输入两次以进行确认。

▼ 安装完成

继续进行策略文件设置。

政策设置

twpol.txt ”是策略文件,因此对其进行编辑。
为了以防万一,请提前备份。

$sudo cp /etc/tripwire/twpol.txt /etc/tripwire/twpol_org.txt $sudo nano /etc/tripwire/twpol.txt

由于检测内容会很长我只想定位
“/var/www/html 下” *如果你想和本文一样,请复制粘贴以下内容。

# 全局变量定义 @@section GLOBAL TWBIN = /usr/sbin; TWVAR = /var/lib/tripwire; # 文件系统定义 @@section FS # Tripwire 二进制文件 (rulename = "Tripwire Binaries",严重性 = 100 ) { $(TWBIN)/siggen -> $(ReadOnly) $(TWBIN)/tripwire -> $(ReadOnly) ; $(TWBIN)/twadmin -> $(ReadOnly) ; $(TWBIN)/twprint -> $(ReadOnly) } # Apache 文档根 ( 规则名称 = "Apache 文档根", 严重性 = 100 ) { /var/www/html/ -> $(IgnoreNone)-SHA } # 策略文件结束

编辑策略后,应用并初始化策略。
输入您在上面的初始设置提示中设置的密码。
如果输出如下图就OK了。

$ sudo twadmin --create-polfile /etc/tripwire/twpol.txt 请输入您的站点密码: 写入策略文件:/etc/tripwire/tw.pol $ sudo tripwire --init 请输入您的本地密码: 解析策略文件: /etc/tripwire/tw.pol 正在生成数据库... *** 处理 Unix 文件系统 *** 写入数据库文件:/var/lib/tripwire/hamchan.twd数据库已成功生成。

基本设置现已完成。
我会尝试检查一下。

$ sudo tripwire --check 解析策略文件:/etc/tripwire/tw.pol *** 处理 Unix 文件系统 *** 执行完整性检查... 写入报告文件:/var/lib/tripwire/report/hamcha-20241025 -135438.twr 开源 Tripwire(R) 2.4.3.7 完整性检查报告 报告生成者:root 报告创建日期:2024 年 10 月 25 日星期五01:54:38 PM JST 数据库上次更新时间:从不 ======================================= ============================================= 报告摘要: =================================================== ============================== 主机名:hamchan 主机 IP 地址:127.0.1.1 主机 ID:无 使用的策略文件:/等/tripwire/tw.pol 配置使用的文件:/etc/tripwire/tw.cfg 使用的数据库文件:/var/lib/tripwire/hamchan.twd 使用的命令行:tripwire --check ================= =================================================== ===========规则总结: =================================================== =================================== ----------------- - ------------------------------------------------- - ----------- 部分:Unix 文件系统 ---------------------- ----------- ---------------------------------- 规则名称 严重级别 添加 删除 修改 --------- -------------- ----- ------ -------- Tripwire 二进制文件 100 0 0 0 Apache 文档根 100 0 0 0 (/var/www/html) 扫描的对象总数:7 发现的违规总数: 0 =================================================== =============================== 对象摘要: =================================================== =============================== --------------------- -------------------------------------------------- -------- # 部分:Unix 文件系统 ------------------------------------ ------------------------------------------- 无违规行为。 =================================================== =============================== 错误报告: =================================================== =============================== 没有错误 ------------------ - ------------------------------------------------- - --------- *** 报告结束 *** 开源 Tripwire 2.4 部分版权所有 2000-2018 Tripwire, Inc. Tripwire 是 Tripwire, Inc. 的注册商标。该软件不附带任何详细信息使用保证。该软件是免费软件,仅在某些条件下才可重新分发或修改;有关详细信息,请参阅“复制”。完整性检查已完成。

输出总结扫描对象数量等的报告。
接下来,让我们检测文件差异。

差异检测

首先,在下面的 HTML 文件中写入“test”并尝试编辑它。

须藤纳米 /var/www/html/test.html

当我再次运行扫描时,已修改的目录和文件的摘要显示在已修改

# 摘录================================================== ================================= 规则总结: =================================================== =============================== --------------------- -------------------------------------------------- -------- 部分:Unix 文件系统------------------------------------ ------------------------------------------ 规则名称 严重级别 添加 删除 修改 - -------- -------------- ----- ------- -------- Tripwire 二进制文件 100 0 0 0 * Apache 文档根 100 0 0 2 (/var/www/html) 扫描的对象总数:7 发现的违规总数:2 =================================================== =============================== 对象摘要: =================================================== =============================== --------------------- -------------------------------------------------- -------- # 部分:Unix 文件系统 ------------------------------------ ---------------------------------------------------------- ---- --- ---------------------------------------------------------- --- ---------------------- 规则名称:Apache 文档根(/var/www/html) 严重级别:100 -------------------------------------- ------------------------------------------ 修改:“/var/www/html “”/var/www/html/test.html“

这次,您可以看到
/var/www/html 下的 test.html 已发生更改顺便说一句,即使文件的所有者或权限发生变化,它也会被检测到。

接下来,让我们创建一个新文件。

sudo touch /var/www/html/ransom.sh

再次扫描。

-------------------------------------------------- -------------------------------------- 部分:Unix 文件系统 ---------------- -------------------------------------------------- ------------- 规则名称 严重性级别 添加 删除 修改 --------- -------------- ----- -- ----- -------- Tripwire 二进制文件 100 0 0 0 * Apache 文档根 100 1 0 2 (/var/www/html) 扫描的对象总数:8 发现的违规总数:3 =================================================== =============================== 对象摘要: =================================================== =============================== --------------------- -------------------------------------------------- -------- # 部分:Unix 文件系统 ------------------------------------ ---------------------------------------------------------- ---- --- ---------------------------------------------------------- --- ---------------------- 规则名称:Apache 文档根(/var/www/html) 严重级别:100 -------------------------------------- ------------------------------------------ 添加:“/var/www/html /ransom.sh”修改:“/var/www/html”“/var/www/html/test.html”

您可以看到
/var/www/html/ransom.sh ”已创建,因为它在已添加如果您检查报告,很明显会发现意外的文件已被放置。方便。

定期执行及报告通知

Tripwire有电子邮件通知功能,但这次我想介绍一下如何通知Chatwork。

首先,准备一个 cron 作业。
正常检查以二进制形式输出报告,因此将其保存为任意路径中的文本文件。
执行间隔可以根据环境和使用情况进行调整。

sudo crontab -e 0 0 * * * /usr/sbin/tripwire --check > /home/hamchan/$(date +\%Y\%m\%d)_report.txt # *请包含日期 (yyyymmdd)输出时添加处理以授予。 $ echo $(date) 星期五 10 月 25 日 02:47:26 PM JST 2024 $ echo $(date +\%Y\%m\%d) 20241025

接下来,为 Chatwork 通知创建 Python 代码。

import requests import subprocess import os from glob import glob # Chatwork API 设置 API_TOKEN = 'xxxxxxxx' # Chatwork API 令牌 ROOM_ID = 'xxxxxxxx' # 目标组 ID ENDPOINT = f'https://api.chatwork.com/ v2/rooms/ {ROOM_ID}/messages' HEADERS = { 'X-ChatworkToken': API_TOKEN, } #返回最新 Tripwire 报告文件路径的函数 def get_latest_tripwire_report(): report_files = glob('/home/hamchan/*_report.txt') if report_files: return max(report_files, key=os.path.getmtime) # 最新获取文件 return None # 读取文件并将其作为文本返回的函数 def get_report_content(report_path): with open(report_path, 'r',encoding='utf-8') as file: return file.read() # 以文本形式返回文件内容 # 发送文件名和路径到 Chatwork def send_chatwork_message(message): payload = {'body' : message} response = requests.post(ENDPOINT, headers=HEADERS, data=payload) if response.status_code == 200: print('通知已发送至 Chatwork。') else: print(f'通知失败: {response.status_code}, {response.text}') if __name__ == '__main__':latest_report_path = get_latest_tripwire_report() iflatest_report_path: report_content = get_report_content(latest_report_path) # 报表内容获取 send_chatwork_message( f"[info][title]Tripwire 报告保存在[/title]\n" f"{latest_report_path}[/info]\n\n" f"\n{report_content}" ) else: send_chatwork_message("没有最新的 Tripwire发现了报告。 ”)

将其放入 cron 作业中。
作为尝试,我将通知设置为在 Tripwire 报告输出后 2 分钟发送。

sudo crontab -e 2 0 * * * /usr/bin/python3 /home/hamchan/tripwire_test/chatwork_notification.py

▼ 通知内容

如下。
这样,您将能够注意到那里是否放置了任何可疑文件。我认为这比不添加任何东西会带来更好的安全性。
请尝试一下。

完全的

如果您觉得这篇文章有帮助,请点赞!
2
加载中...
2 票,平均:1.00 / 12
25
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

写这篇文章的人

关于作者

川健

属于系统解决方案部的
好奇的 Poke○n