通知:《打工人日报》迁移到独立板块
通知:《打工人日报》迁移到独立板块
通知:《打工人日报》迁移到独立板块 考虑到近期的一些情况,我决定将《打工人日报》迁移到独立板块,将不在首页展示,后续的更新将在独立板块中进行。不影响原文章的阅读和订阅邮件的推送。感谢各位的支持和关注!!! 访问地址 访问链接 首页点击访问
Kubernetes — SSL 证书自动更新
Kubernetes — SSL 证书自动更新
介绍 提供一个在 Kubernetes 中使用 cert-manager + Cloudflare 自动签发并自动更新 Let’s Encrypt 证书的完整思路与示例(DNS-01 验证),方便你在集群内自动化 TLS 证书更新。 前置条件 Kubernetes 集群:可正常访问外网。不做网络环境配置的教程,具体可以去看其他文章 Cloudflare 账号:已将你的域名托管到 Cloudflare。使用 Cloudflare 做 dns-01 挑战 kubectl:已连接到集群。最基本的条件,保证k8s能正常访问 helm:推荐用 Helm 安装 cert-manager。使用helm安装,方便干净 安装 官方推荐用 Helm,这里我使用 1.18.2 的版本,在我这个时间点这个版本还是比较新的 安装 cert-manager 1# 安装 cert-manager CRDs 2kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.18.2/cert-manager.crds.yaml 1## Add the Jetstack Helm repository 2helm repo add jetstack https://charts.jetstack.io --force-update 1## Install the cert-manager helm chart 2helm install cert-manager --namespace cert-manager --version v1.18.2 jetstack/cert-manager 验证:
Kubernetes — RKE2 + kube-vip + cilium 部署
Kubernetes — RKE2 + kube-vip + cilium 部署
准备工作 节点名称 节点IP k8s-master-1 10.10.10.151 k8s-master-2 10.10.10.152 k8s-master-3 10.10.10.153 kube-vip(虚拟IP) 10.10.10.150 RKE 安装 rancher 在第一个 master 安装 RKE2 server 1# 安装 RKE2 2curl -sfL https://get.rke2.io | sh - 创建配置文件 1mkdir -p /etc/rancher/rke2/ 1# 配置 server 2cat <<EOF >/etc/rancher/rke2/config.yaml 3write-kubeconfig-mode: "0644" 4tls-san: 5 - 10.10.10.150 6 - rancher.jobcher.com 7cni: cilium 8disable-kube-proxy: true 9EOF 1# 启动 server 2systemctl enable rke2-server --now 3systemctl status rke2-server 1ln -s /var/lib/rancher/rke2/bin/kubectl /usr/local/bin/kubectl 2echo 'export KUBECONFIG=/etc/rancher/rke2/rke2.yaml' >> ~/.
使用TLSv1.3 升级nginx和openssl
使用TLSv1.3 升级nginx和openssl
介绍 TLS v1.3(Transport Layer Security version 1.3)是传输层安全协议的最新正式版本,用于在计算机网络中提供加密通信。它由 IETF(Internet Engineering Task Force) 于 2018 年 8 月正式发布,是对 TLS v1.2 的重大改进。 由于原有老的nginx版本不支持新的TLSv1.3,需要升级nginx和openssl。 🔐 TLS 的用途 TLS 常用于以下场景: HTTPS(浏览器访问网站) 邮件客户端与服务器通信(如 IMAP/SMTP over TLS) VPN、聊天工具等需要安全传输的场合 ✨ 相比 TLS 1.2,TLS 1.3 有哪些主要改进? 特性 TLS 1.2 TLS 1.3 握手轮数 至少 2 次往返 最多 1 次往返,支持 0-RTT 加密套件 多且复杂,包含弱算法 简化,仅支持强加密算法 前向保密 可选 强制启用 加密内容 一部分未加密 握手后所有内容都加密,包括证书 安全性 存在旧漏洞(如 BEAST、POODLE) 移除已知不安全特性 性能 较慢 更快(特别是在移动网络) 🔧 移除的内容(相比 TLS 1.2) RSA 密钥交换(只保留 ECDHE/DHE) 不安全的加密算法(如 RC4、3DES、MD5) 静态密钥协商、不再支持非前向保密 会话恢复机制被简化为基于票据(session tickets) ✅ TLS 1.
Proxmox VE(PVE) 更新到最新版本
Proxmox VE(PVE) 更新到最新版本
背景 由于增加了新的pve机器组了pve集群,这过程中发生很多事情,打算记录一下过程中发生的问题。 如何不使用企业源完成pve更新 修改订阅源 禁用企业源 添加 no-subscription 源 执行命令 到具体的pve机器上执行命令 1apt update 2apt dist-upgrade 3# 查看版本 4pveversion HA 集群无法正常运行 出现lrm pve (old timestamp - dead?)获取不到pve主机状态 查看 lrm 服务状态 1systemctl status pve-ha-lrm 2systemctl status pve-ha-crm 重启 lrm 服务 1# 重启 lrm 服务 2systemctl restart pve-ha-lrm 3# 重启 crm 服务 4systemctl restart pve-ha-crm
kindle 邮件发送失败,错误代码E999
kindle 邮件发送失败,错误代码E999
背景 最近看到了一本电子书《just for fun》 Linux之父:林纳斯的自传。就想上传到kindle上去看这本书,但是之前epub的上传都没有问题,唯独这本一直上传失败。E999 故障。我直接说我对于这个问题的解决办法。 解决方法 将epub转换为mobi格式 将装换好的mobi文件再转换为新的epub文件 上传新的epub文件到kindle 总结 感觉是原本的epub文件格式有损坏导致,amzon无法正确识别epub格式,所有按照这个方式转换一遍,基本上上传就没有问题了。
metallb + ingress-nginx + argocd 本地部署
metallb + ingress-nginx + argocd 本地部署
环境准备(配置代理) proxy_setting.yml 1--- 2- name: 设置全局代理并测试连接 3 hosts: all 4 become: yes 5 vars: 6 proxy_host: "10.10.10.254" 7 proxy_port: "7890" 8 http_proxy: "http://{{ proxy_host }}:{{ proxy_port }}" 9 https_proxy: "http://{{ proxy_host }}:{{ proxy_port }}" 10 no_proxy: "localhost,127.0.0.1" 11 12 environment: 13 http_proxy: "{{ http_proxy }}" 14 https_proxy: "{{ https_proxy }}" 15 no_proxy: "{{ no_proxy }}" 16 17 tasks: 18 - name: 显示代理设置 19 debug: 20 msg: 21 - "HTTP Proxy: {{ http_proxy }}" 22 - "HTTPS Proxy: {{ https_proxy }}" 23 - "NO_PROXY: {{ no_proxy }}" 24 25 - name: 使用 curl 测试外部连接(使用代理) 26 command: curl -I https://www.
iStoreOS(旁路由)使用openclash实现dns劫持
iStoreOS(旁路由)使用openclash实现dns劫持
背景 我主要介绍通过openwrt中的openclash覆写hosts实现dns劫持的方法。 操作 进入openwrt后台,进入openclash,进入覆写设置,进入dns设置 勾选hosts,并写入hosts信息,10.10.10.6是内网nas的ip地址,你可以改成任意的IP 1'nas.com': 10.10.10.6 2'*.nas.com': 10.10.10.6 3. 保存并应用 测试 1ping nas.com 2ping www.nas.com 总结 openclash实现dns劫持的方法非常简单,只需要在openclash中配置hosts即可。
异常流量分析:图片库服务黑客入侵
异常流量分析:图片库服务黑客入侵
背景 最近这两天prometheus一直再对服务器的下行带宽告警,检查告警发现是一台图片服务器,这台图片服务器是很早部署的一台nginx反向代理本地静态文件的服务器,当时没有做任何的安全防护,只是简单做了一个上传接口暴露给外网,导致这台服务器被黑客入侵,上传了大量文件,同时对这些文件有大量的下载请求,导致服务器的带宽被打满,同时也导致了prometheus的告警。 发现 发现这台服务器的带宽被打满了,所以只能先从这台服务器开始排查。先检查nginx所有大量请求的日志 1cd /var/log/nginx 2awk '{print $7}' access.log | sort | uniq -c | sort -nr | head -n 10 这个是一个图片服务器,看起来都是图片的请求,好像没有发现异常的请求。但是这个图片为什么有那么高的流量呢?检查这个图片,发现图片无法打开,所以我换二进制的方式打开图片 发现图片的二进制头部是 FFmpeg, 所以这是一个伪装成图片的视频文件 解决 检查nginx的配置文件,上传接口拒绝所有外部请求 server{ location /upload { proxy_pass http://192.168.1.1:8080; # 拒绝所有外部请求 allow 192.168.1.0/24; deny all; } } 查找最早上传的文件,创建python文件,并在图片服务器执行 import os # 查找最早包含 FFmpeg 的 JPG 文件 def find_earliest_jpg_with_ffmpeg(directory): earliest_file = None earliest_timestamp = float('inf') for root, dirs, files in os.walk(directory): for file in files: if file.
搭建ip地址检索服务
搭建ip地址检索服务
背景 很多时候,我们需要查询一个IP地址,都得通过百度,谷歌,或者其他搜索引擎,非常麻烦。教大家一个使用cloudflare worker搭建一个只属于我们自己的ip地址检索服务。 条件 需要一个cloudflare账号(自行注册,必选) 域名(自行购买,可选) 步骤 1. 注册cloudflare账号,并登录。 2. 在cloudflare的dashboard中,点击workers,点击create a worker。 3. 创建一个worker 4. 复制代码并粘贴到worker.js中。 1addEventListener('fetch', event => { 2 event.respondWith(handleRequest(event.request)); 3}); 4 5/** 6 * Handle the incoming request and return formatted IP information 7 * @param {Request} request 8 */ 9async function handleRequest(request) { 10 const url = new URL(request.url); 11 const queryIp = url.searchParams.get('ip'); 12 const clientIp = queryIp || request.headers.get('cf-connecting-ip'); 13 const path = url.
Kubernetes — k8s 手动安装 1.17.9
Kubernetes — k8s 手动安装 1.17.9
背景 已经2024年了, k8s已经更新到 1.30.x的版本了,但是还有很多公司还在使用1.17.9版本,那么我们今天就来手动安装一下1.17.9版本的k8s。 安装 我们在测试centos服务器192.168.40.1安装单节点 Kubernetes 集群(Master 节点)使用 kubeadm 是一个相对直接的过程。 前提条件 确保主机满足以下要求: 操作系统:CentOS 7.x 或更高版本 内存:至少 2 GB 内存 磁盘空间:至少 20 GB 磁盘空间 网络:至少 2 个网络接口 配置主机名和 IP 1sudo hostnamectl set-hostname k8s 2echo "192.168.40.1 k8s" | sudo tee -a /etc/hosts 更新系统 切换镜像源,选择你喜欢的镜像源,我这里选择腾讯云 1bash <(curl -sSL https://linuxmirrors.cn/main.sh) 更新系统 1sudo yum update -y 禁用 SELinux 1sudo setenforce 0 2sudo sed -i --follow-symlinks 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config 禁用 Swap 1sudo swapoff -a 2sudo sed -i '/swap/d' /etc/fstab 修改 /etc/sysctl.
SELinux 问题:导致端口无法创建,无法访问
SELinux 问题:导致端口无法创建,无法访问
背景 今天有同事在使用nginx部署一个服务,部署完成后发现无法访问,nginx创建端口无法创建,无法访问 nginx: [emerg] bind() to 0.0.0.0:8081 failed (13: Permission denied) 解决方法 查看日志发现是SELinux导致的,SELinux是Linux系统的安全机制,它会限制进程访问文件和网络端口等资源。 查看SELinux状态 1sudo getenforce 当 SELinux 处于 enforcing 模式时,会阻止进程访问不允许的资源。有三种方法可以解决 1. 临时关闭SELinux 1sudo setenforce 0 2. 永久关闭SELinux 1sudo vim /etc/selinux/config 2# 修改SELINUX=enforcing 为 SELINUX=disabled 重启服务器 1sudo reboot 3. 设置为宽容模式 1semanage permissive -a http_port_t 这个命令会将 http_port_t 类型的端口设置为宽容模式(permissive mode),使得 semanage 不再对该类型的端口进行访问控制。 总结 SELinux 是 Linux 系统的安全机制,它会限制进程访问文件和网络端口等资源。在使用 SELinux 时,需要根据实际情况选择合适的解决方案。