热门文章
最新发布
-
雷池waf社区版,反代+免费防火墙,NPM升级替代 前言 最近飞牛os安全爆雷的问题还是蛮严重的,我虽然没中招,但还是要引起注意。NAS的安全我认为还好,大不了断网,反而是VPS始终暴露在公网上,应该加强防护。无奈实在没有精力折腾防火墙,于是想到了最简单的方法,就是用雷池waf替代现在使用的Nginx Proxy Manager,既保持我自己反代的使用习惯,又加了一层web防护,也推荐给同样还在“裸奔”的朋友。 注意:免费版最多添加10条域名,对服务器配置有一点要求。功能 SafeLine,中文名 "雷池",是一款简单好用, 效果突出的 Web 应用防火墙(WAF),可以保护 Web 服务不受黑客攻击。 雷池通过过滤和监控 Web 应用与互联网之间的 HTTP 流量来保护 Web 服务。可以保护 Web 服务免受 SQL 注入、XSS、 代码注入、命令注入、CRLF 注入、ldap 注入、xpath 注入、RCE、XXE、SSRF、路径遍历、后门、暴力破解、CC、爬虫 等攻击。 核心功能: 防护 Web 攻击 防爬虫, 防扫描 前端代码动态加密 基于源 IP 的访问速率限制 HTTP 访问控制 安装使用 安装方式我选择官方自动脚本安装,也可以docker手动安装,不过需要手动配置。 一键安装:3 分钟即可完成自动安装。 bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"图片 进入登录页面,填入终端给出的账号密码,忘记的话在终端执行命令即可 图片 反代方法基本和npm一样,先申请SSL证书,社区版无法申请泛域名证书,稍微麻烦一点 图片 添加应用,填入域名,选择证书,上游服务器就是所在服务器地址 别忘了把域名解析到雷池所在的服务器 图片 添加完毕后无须其他设置,免费版也没有其他功能了 图片 首页可以查看统计 图片 -
使用Lucky保护你的飞牛,开启waf防火墙,设置IP过滤 前言 近期飞牛的安全漏洞还是很严重的,希望飞牛团队通过这次事件能够正视安全问题。我自己一是没有中招,二是有一款好用的国产系统真的不容易,所以继续使用飞牛,但还是要尽可能升级一下防护等级。由于实在没找到中招的机制,所以挑选一些看上去有用且操作简单的方法。 这些方法即使全做了,也不保障100%安全,最安全的方法是切断所有外网,只在内网环境使用。图片 基础设置 升级官方系统 截止的目前,官方已经针对漏洞升级过2次系统,现在系统版本是1.1.9,并且要求修改系统密码并关闭SSH功能。 升级后执行官方查杀脚本: curl -L https://static2.fnnas.com/aptfix/trim-sec -o trim-sec && chmod +x trim-sec && ./trim-sec如果无法升级或脚本查出有病毒,直接重装系统。 图片 修改常用端口 开启SSH功能前,将22端口修改为其他 图片 修改飞牛默认端口,将5666和5667修改为其他 图片 禁掉8000和8001端口,这两个端口到现在还能使用,也反映出飞牛团队确实不重视安全 图片 开启防火墙,我的网络结构是主路由是华硕路由器(开启防火墙),旁路由是istoreos(开启防火墙+adgardhome),所以我的飞牛防火墙未开启。 飞牛防火墙默认设置基本等于无效,如果需要开启,请修改防火墙默认为拒绝访问,并且将需要暴露的应用端口填入第一个规则,目标IP可以选择境内,出入站均如此设置。 图片 图片 修改FN ID,关闭FN Conect和自带的DDNS服务。 图片 使用lucky添加IP过滤 我一直使用lucky实现ddns功能,设置简单,功能丰富,仅暴露一个端口既可实现多个服务的外网访问,使用方法我之前也做过。多说一句,家用NAS主要是内网环境,外网使用对象最好仅限自己及几个人的家庭或团队,真正建站的还是买个服务器吧。 IP过滤-设置白名单-添加子规则,我的飞牛地址是192.168.2.185,所以规则写192.168.2.0/24 图片 添加境内IP,IP列表先空着 图片 添加计划任务,自动获取IP列表,可选择每日更新 图片 下划添加子任务-类型选择IP过滤规则更新 接口地址查询:https://github.com/metowolf/iplist 图片 手动触发一次,IP就添加好了 图片 图片 根据需求可以如法添加香港等地区规则 手机无法访问的话还需要添加手机运营商规则。 图片 添加自动记录IP设置,添加安全入口,复制链接,保存配置 图片 打开链接,说明配置好了 图片 会多一条自动配置的规则 图片 web服务-右键-编辑 图片 IP过滤规则选择白名单,保存后就设置完毕了 图片 Lucky_ 设置Coraza WAF 以下内容均来自lucky作者 功能介绍 确认你的 Lucky 支持 Coraza WAF Coraza 是一款功能强大的企业级 OWASP Web 应用程序防火墙。自 2.12.0 版本起,Coraza 已集成于 Lucky(万吉)的 Web 服务中。本文仅介绍 Coraza WAF 的快速设置方法 , 如需详细了解,请访问官方文档 请注意,不建议在硬件配置较低的路由器上运行万吉的 WAF 详细配置步骤 如果是简单使用,可以直接创建一条规则,选择类型为"OWASP 核心规则集" 勾选所有规则或按需选择,系统将自动调用内置的 OWASP 核心规则集。 如果只是用于防御路径穿越攻击,只需勾选 901、930、949 三条规则即可。 图片 创建和配置 Coraza WAF 实例 登录 Lucky 后台(默认 http://IP:16601/安全入口) 进入 左侧菜单栏 - Coraza WAF 图片 添加实例 图片 自定义实例名称 , 如 "基础防护" , 然后点击添加规则按钮 图片 点击规则列表 - 类型选框 , 下拉菜单中选择 "OWASP核心规则集" 图片 勾选 901 , 930 , 949 三条规则 , 保存即可 图片 图片 应用 WAF 实例 Lucky 中的WAF配置是 “按服务独立启用” 的 ,在每一个 “Web 服务” 中按需绑定,也就是说 可以为飞牛 OS 管理页面开启这个 WAF 实例 为 Docker 部署的 qBittorrent 单独开启或关闭 为 Bitwarden 绑定同一个 WAF 实例 也可以为不同服务绑定不同的 WAF 实例(比如一个用“基础防护”,另一个用“高强度防护”) 图片 在相应的Web服务子规则选择已创建的CorazaWAF实例 进入 左侧菜单栏 - Web服务 图片 选择需要配置的子规则 - 修改子规则 - Coraza WAF - 选择已创建的WAF实例 , 保存即可自动应用 图片 测试是否生效 在已开启防护的URL后添加 ?test=../../ 参数,如被拦截则说明路径穿越防护已生效。例如https://域名/?test=../../../ URL 参数中包含 ?test=../../../是典型的路径遍历(Path Traversal)攻击测试,也称为目录遍历。这是黑客或安全测试人员探测Web应用程序安全漏洞的一种常见手法。生效表现:页面被拦截(显示403 Forbidden,Lucky/WAF) 未生效表现:页面能正常打开或显示404 图片 内网穿透 这类软件、技术众多,各种声音都有,看下来最好不用,用就用大厂的。种类选择不暴露端口的,比如异地组网、VPN等技术的,不要用地址转发或端口映射的,我之前推荐的公益frp虽然免费但我自己已经不用了。 -
使用lucky插件,通过ipv6访问本地服务器 前言 我有一台家庭服务器,并在服务器上安装了可道云盘服务,通过配置frp内网穿透服务,在外网通过域名随时查看本地文件。 与Tailscale或ZeroTier相比,此方式无需安装客户端,可以通过域名直接访问内网服务。 需要有一个公网ip的服务器,连接速度取决于公网服务器的网速。 与frp方式相比,无需公网服务器中转,网速更快,但本地宽带要有ipv6公网。准备 宽带要有ipv6公网 百度搜索ipv6测试,打开网页查看测试结果,显示ipv6地址就没有问题了 图片 主路由设置:进入网络——接口——看是否自动出现一个 pppoe-wan 的 wan_6,并且 IPv6-PD 是有一个地址 图片 主路由安装lucky插件 可以通过应用商店或官网下载文件安装,官网地址:https://lucky666.cn/,官网云盘:https://545c.com/d/44547821-55537427-a5525e?p=16601 图片 配置lucky访问本地服务 打开cloudflare添加一条ipv6解析 图片 其中ipv6地址选择本地服务器的地址,通过主路由路由表查询,或在本地服务器终端输入ifconfig查询 图片 添加动态域名 图片 申请区域DNS令牌 图片 申请ssl证书,令牌同上 图片 添加web服务规则,监听端口就是域名后加的端口, 比如我的可道云地址为:https://yun.1day.vip:6677 图片 子规则列表中可建立多条相同端口的二级域名,比如https://yun.1day.vip:6677和https://sync.1day.vip:6677。 前端地址时解析好的二级域名,后端地址指向容器地址。 图片 此时外网就可以访问https://域名:端口了,如果无法访问就排查主路由和服务器的防火墙,主路由的防火墙转发默认时关闭的。 图片 -
任何摄像头实现Windows面容解锁 前言 最近满火的一个项目,无须专用的摄像头实现Windows面容解锁,比如笔记本自带的摄像头,甚至可以用手机上的摄像头。项目目前还是很初期的测试阶段,勉强可以玩玩,期待作者更新优化。 项目地址:https://github.com/zs1083339604/FaceWinUnlock-Tauri 下载地址 蓝奏云 密码:5969 推荐:不限速、不用登录、不用下载网盘 百度云 提取码: 2ugj 天翼云 访问码:u9gv 抖音ID: czm529797 提供的公益站点 安装使用 第一步:系统初始化 运行软件后,系统会自动检测摄像头权限及注册表环境。强烈推荐在第2步拍照留档,一旦出错方便恢复。 图片 图片 选择账户,密码是微软的登录密码,不是开机pin码 图片 点击执行后,软件会锁定账户,5秒后自动解锁,请勿手动解锁。解锁成功即初始化完成。 第二步:个性化设置 初始化成功后,点击首选项,选择一个摄像头设备。 图片 第三步:面容录入 点击面容管理->添加新面容,即可添加,图片如下: 图片 第四步:关联账户 上一步面容添加成功后,输入别名、Windows账户类型,用户名(自动检查)和密码,点击添加即可完成。 图片 第五步:测试 按下 Win + L 锁定屏幕,滑动鼠标或按键盘(如果你选的延迟时间,请等待相应的秒数),将调用面容识别代码。 图片 第六步:卸载 点击设置->点击维护与卸载(不走这一步,直接卸载软件会有残留) 图片 打开软件安装目录的 _uninstall.exe_ 卸载主程序即可 图片 最后删除残留的数据库和日志文件,程序卸载完成,无残留文件。 图片 -
飞牛os控制风扇转速的脚本实现降噪 前言 双十一入了拾光坞G2,性价比其实很高,3盘位完全满足我的需求,还是品牌NAS,官方支持刷机且有3年质保,到手直接刷飞牛,近乎完美。 唯一缺点就是默认40%的风扇有点吵,飞牛系统没有风扇控制的选项,装了CoolerControl但没有风扇驱动,BIOS好像也是阉割过的没有风扇控制功能。找了一圈发现fanctrl可以控制,改写了一个控温脚本,目前感觉不错。 手动控制风扇转速 下载G2 风扇控制转速程序 wget http://down.sgwbox.com/tools/x86/fanctrl /root/fanctrl chmod +x /root/fanctrl用法 ./fanctrl (0~100) 例如: ./fanctrl 30 表示设置风扇转速为30% ./fanctrl 80 表示设置风扇转速为80% 实测常规设置风扇转速为35%是基本听不到声音的;大于60就开始吵了。 风控脚本并开机自启 原帖的脚本我测试后无法正常工作,所以用豆包写了一个,感觉不错就分享出来,有问题直接发给AI就可以修改。 脚本功能 多源温度检测 智能风扇控制 完整日志记录 休眠保护 风扇温控脚本(fan_control.sh) #!/bin/bash set -eo pipefail # ================================== 配置项 ================================== STATE_FILE="/var/run/fan_control.state" # 状态保存文件 LOG_FILE="/var/log/fan_control.log" # 日志文件 FAN_CTRL="/root/fanctrl" # 风扇控制程序路径 CHECK_INTERVAL=60 # 检测间隔(秒) MAX_CPU_TEMP=80 # CPU温度阈值(℃) MAX_HDD_TEMP=50 # 硬盘温度阈值(℃) SAFE_FAN_SPEED=30 # 安全温度下的风扇转速(%) INCREASE_STEP=10 # 超温时每次增加的转速(%) MAX_FAN_SPEED=100 # 最大风扇转速(%) # ============================================================================= # 初始化日志和状态文件 init_files() { # 创建日志文件(确保权限) if [ ! -f "$LOG_FILE" ]; then touch "$LOG_FILE" chmod 644 "$LOG_FILE" fi # 初始化状态文件 if [ ! -f "$STATE_FILE" ]; then echo "current_speed=$SAFE_FAN_SPEED" > "$STATE_FILE" echo "last_action=initialized" >> "$STATE_FILE" echo "last_temp_check=$(date +%s)" >> "$STATE_FILE" # 初始设置风扇转速 if [ -x "$FAN_CTRL" ]; then "$FAN_CTRL" "$SAFE_FAN_SPEED" >/dev/null 2>&1 log "初始化风扇转速为 $SAFE_FAN_SPEED%" else log "错误:未找到风扇控制程序 $FAN_CTRL,请先安装" exit 1 fi fi } # 日志记录函数 log() { local timestamp=$(date +"%Y-%m-%d %H:%M:%S") echo "[$timestamp] $1" >> "$LOG_FILE" } # 读取当前状态 read_state() { source "$STATE_FILE" 2>/dev/null || { log "状态文件损坏,重新初始化" init_files source "$STATE_FILE" } } # 更新状态文件 update_state() { local speed=$1 local action=$2 echo "current_speed=$speed" > "$STATE_FILE" echo "last_action=$action" >> "$STATE_FILE" echo "last_temp_check=$(date +%s)" >> "$STATE_FILE" } # 获取CPU温度(兼容多种系统) get_cpu_temp() { # 优先尝试x86_pkg_temp if [ -f "/sys/class/thermal/thermal_zone0/temp" ]; then local temp=$(cat /sys/class/thermal/thermal_zone0/temp 2>/dev/null) if [ -n "$temp" ] && [ "$temp" -gt 0 ]; then echo $((temp / 1000)) return 0 fi fi # 尝试coretemp(多核心取最高) local core_temp=$(sensors | grep -i 'core' | grep -oP '\d+°C' | grep -oP '\d+' | sort -nr | head -1) if [ -n "$core_temp" ]; then echo "$core_temp" return 0 fi # 尝试proc文件系统 local proc_temp=$(cat /proc/cpuinfo | grep -i 'temperature' | grep -oP '\d+' | head -1) if [ -n "$proc_temp" ]; then echo "$proc_temp" return 0 fi # 所有方法失败 log "警告:无法获取CPU温度" return 1 } # 获取硬盘温度(兼容多种检测方式) get_hdd_temp() { local hdd_devices=$(lsblk -o NAME,TYPE | grep -i 'disk' | grep -v 'loop' | awk '{print $1}') local max_hdd_temp=0 for dev in $hdd_devices; do local device="/dev/$dev" # 检查硬盘是否休眠,避免唤醒 if hdparm -C "$device" 2>/dev/null | grep -qi 'standby\|sleeping'; then continue fi # 尝试smartctl local temp=$(smartctl -A "$device" 2>/dev/null | grep -i 'temperature' | awk '{print $10}' | head -1) if [ -z "$temp" ] || [ "$temp" -eq 0 ]; then # 尝试hddtemp temp=$(hddtemp -n "$device" 2>/dev/null) fi # 记录最高温度 if [ -n "$temp" ] && [ "$temp" -gt "$max_hdd_temp" ]; then max_hdd_temp=$temp fi done if [ "$max_hdd_temp" -gt 0 ]; then echo "$max_hdd_temp" return 0 else log "警告:无法获取硬盘温度" return 1 fi } # 控制风扇转速 control_fan() { local target_speed=$1 # 检查转速范围 if [ "$target_speed" -lt 0 ] || [ "$target_speed" -gt 100 ]; then log "无效转速 $target_speed%,限制在0-100之间" target_speed=$(( target_speed < 0 ? 0 : 100 )) fi # 执行转速设置 if [ -x "$FAN_CTRL" ]; then "$FAN_CTRL" "$target_speed" >/dev/null 2>&1 if [ $? -eq 0 ]; then log "风扇转速已设置为 $target_speed%" return 0 else log "错误:设置风扇转速 $target_speed% 失败" return 1 fi else log "错误:风扇控制程序 $FAN_CTRL 不存在或不可执行" return 1 fi } # 温度监控主逻辑 monitor_temps() { read_state local current_speed=$current_speed # 获取温度 local cpu_temp=$(get_cpu_temp) local hdd_temp=$(get_hdd_temp) # 检查温度是否有效 local temp_valid=1 if [ -z "$cpu_temp" ] && [ -z "$hdd_temp" ]; then log "无法获取任何温度数据,跳过本次调整" temp_valid=0 fi if [ $temp_valid -eq 1 ]; then # 决定是否需要调整转速 local need_increase=0 if [ -n "$cpu_temp" ] && [ "$cpu_temp" -ge "$MAX_CPU_TEMP" ]; then need_increase=1 fi if [ -n "$hdd_temp" ] && [ "$hdd_temp" -ge "$MAX_HDD_TEMP" ]; then need_increase=1 fi # 计算目标转速 local target_speed=$current_speed if [ $need_increase -eq 1 ]; then # 超温时逐步增加转速 target_speed=$((current_speed + INCREASE_STEP)) if [ "$target_speed" -gt "$MAX_FAN_SPEED" ]; then target_speed=$MAX_FAN_SPEED fi else # 温度正常时恢复到安全转速 if [ "$current_speed" -ne "$SAFE_FAN_SPEED" ]; then target_speed=$SAFE_FAN_SPEED fi fi # 执行调整(只有转速变化时才操作) if [ "$target_speed" -ne "$current_speed" ]; then if control_fan "$target_speed"; then update_state "$target_speed" "温度触发调整 (CPU: ${cpu_temp:-未知}°C, HDD: ${hdd_temp:-未知}°C)" fi else log "CPU温度: ${cpu_temp:-未知}°C, 硬盘温度: ${hdd_temp:-未知}°C, 风扇转速: $current_speed% (无需调整)" fi fi } # 显示状态 show_status() { read_state local cpu_temp=$(get_cpu_temp || echo "未知") local hdd_temp=$(get_hdd_temp || echo "未知") echo "===== 风扇温控状态 =====" echo "当前风扇转速: $current_speed%" echo "CPU温度阈值: $MAX_CPU_TEMP°C" echo "硬盘温度阈值: $MAX_HDD_TEMP°C" echo "" echo "CPU当前温度: $cpu_temp°C" echo "硬盘当前温度: $hdd_temp°C" echo "" echo "最后操作: $last_action" echo "========================" } # 主程序入口 main() { # 检查是否以root运行 if [ "$(id -u)" -ne 0 ]; then echo "错误:请以root权限运行(sudo)" exit 1 fi # 检查依赖 local dependencies=("hdparm" "hddtemp" "sensors") for dep in "${dependencies[@]}"; do if ! command -v "$dep" &>/dev/null; then echo "错误:缺少依赖 $dep,请先安装" exit 1 fi done init_files case "$1" in --service) log "启动风扇温控服务(间隔 $CHECK_INTERVAL 秒)" while true; do monitor_temps sleep $CHECK_INTERVAL done ;; --status) show_status ;; --log) tail -f "$LOG_FILE" ;; --restart) log "手动重启服务" control_fan "$SAFE_FAN_SPEED" update_state "$SAFE_FAN_SPEED" "手动重启" echo "服务已重启,风扇转速重置为 $SAFE_FAN_SPEED%" ;; *) echo "用法:" echo " $0 --service 启动温控服务(守护进程)" echo " $0 --status 查看当前状态" echo " $0 --log 查看实时日志" echo " $0 --restart 重启服务并重置风扇转速" exit 1 ;; esac } main "$@"脚本改进说明 增强兼容性:优化了 CPU / 硬盘温度检测逻辑,适配更多 Linux 发行版(。 完善错误处理:增加了文件权限检查、依赖检测、程序存在性验证,避免静默失败。 状态可视化:--status 命令更清晰地展示当前状态,方便排查问题。 可靠性提升:增加了 --restart 命令,可手动重置状态,解决可能的状态文件损坏问题。 日志优化:更详细的日志记录,便于追踪脚本运行情况。 使用步骤 安装基础依赖(确保先执行): apt update && apt install -y hdparm hddtemp smartmontools lm-sensors sensors-detect # 按提示完成传感器检测(一路按回车即可) 下载风扇控制程序: wget http://down.sgwbox.com/tools/x86/fanctrl -O /root/fanctrl && chmod +x /root/fanctrl 创建新脚本: # 复制上面的脚本内容到文件中 nano /usr/local/bin/fan_control.sh # 保存后设置权限 chmod +x /usr/local/bin/fan_control.sh 测试脚本: # 查看状态(验证是否正常运行) /usr/local/bin/fan_control.sh --status 设置系统服务(开机自启): # 创建服务文件 tee /etc/systemd/system/fan-control.service <<EOF [Unit] Description=Fan Control Service After=multi-user.target [Service] Type=simple ExecStart=/usr/local/bin/fan_control.sh --service Restart=always RestartSec=60 User=root WorkingDirectory=/root [Install] WantedBy=multi-user.target EOF # 启动并设置自启 systemctl daemon-reload systemctl enable --now fan-control 检查服务状态: systemctl status fan-control # 查看服务是否运行 tail -f /var/log/fan_control.log # 查看实时日志 图片 如果运行仍有问题,可通过日志文件 /var/log/fan_control.log 查看具体错误信息,或执行 systemctl status fan-control 检查服务状态,以便进一步排查。 图片 安装依赖 安装 hddtemp 依赖,按以下步骤安装即可解决,部分系统需额外处理兼容性问题。 第一步:优先常规安装 执行标准安装命令(适用于 Debian/Ubuntu/PVE 等基于 Debian 的系统): apt update && apt install -y hddtemp 安装完成后,重新运行脚本测试: /usr/local/bin/fan_control.sh --status第二步:若安装失败(无软件包) 先确认软件源是否包含 hddtemp,执行搜索: apt search hddtemp 若搜索结果为空,手动下载安装(以 Debian 12/ Ubuntu 22.04 为例): # 下载适配 x86_64 架构的 deb 包 wget http://ftp.debian.org/debian/pool/main/h/hddtemp/hddtemp_0.3-beta15-54_amd64.deb # 安装下载的包 dpkg -i hddtemp_0.3-beta15-54_amd64.deb # 修复依赖缺失(若有报错) apt -f install -y第三步:安装后验证 command -v hddtemp # 输出 /usr/sbin/hddtemp 即成功