logo NodeSeekbeta

【开源】Server Security Init Skill:让AI Agent帮你安全初始化服务器

很多小白拿到一台服务器不知道先干嘛,要对服务器做怎么样的安全初始化,我把自己常用的服务器初始化流程写成了一个skill,现在直接让AI帮你做吧,这个skill做以下内容:

  • 选择或生成本地 SSH 密钥
  • 引导用户先把公钥放到服务器上
  • 验证 root 或初始用户的公钥登录可用
  • 创建非 root 免密 sudo 用户
  • 修改 SSH 端口
  • 禁止 root 登录和密码登录
  • 配置 UFW,只放行必要端口
  • 配置 fail2ban,并把管理 IP 加入白名单
  • 更新本地 SSH config,更新本地 SSH config 配置文件,以后可以直接ssh 服务器别名直连

项目地址:
https://github.com/DeerYang/server-security-init-skill
可以链接甩给AI让他自己安装。

  • 看了一下,都是日常习惯,没必要上agent

  • 巧了,我正好也在做。还在完善中。

    name

    server init

    description

    • 用於初始化服務器,保持工程一致性。

    Principles

    Architecture Layers(架構層)

    • Probe Phase:純讀、無污染、收集環境快照
    • Audit Phase:用戶審計差異表
    • Init Phase:執行初始化項目,可跳過、可重入

    Safety Principles(安全原則)

    • SSH 是唯一控制手段
    • 嚴格遵守 SSH 風險矩陣
    • 禁止操作 sshd、network、firewall

    Execution Principles(執行原則)

    • 無污染
    • 可重入
    • 可審計
    • 可恢復
    • 用戶決定 init 每一個項目

    Workflow

    Probe Layer

    • 自行判斷 KVM&LXC 構架以及 linux 發行版本,適用對應的初始化策略。
      • 虛擬化:kvm,lxc,bare-metal,etc…
      • 系統:apline,debian,ubuntu,etc…
    • 只讀檢測當前環境,不安裝任何額外工具,完全依靠系統自帶
      • 硬件檢測
      • 網路檢測
      • 服務檢測
      • 權限檢測
      • 依賴檢測
      • etc…
    • 列出當前配置與初始化配置的對比表單,方便用戶審計
    • 初始化的每個項目需要簡短説明,讓用戶理解用途。由用戶決定是否繼續 or 跳過進入下一項
      • 做什麽? - What
      • 怎麽做? - How to
      • 爲什麽? - Why

    Diagnosis Layer

    • 假定 SSH 連接是用戶的唯一控制手段,嚴格規避 SSH 風險矩陣
      • 網絡層
        • 防火墻規則變更
        • ssh 端口更改
        • 關閉 nic / 修改網卡配置
        • 修改路由表
        • 修改 dns
        • 更改主機 ip
        • 更改 MTU
        • 啓用/禁用 ipv6
      • 進程層
        • 停止 sshd
        • 重啓 sshd
        • 更改 systemd 服務檔(sshd.service)
        • 修改 PAM 模組
        • 修改 /etc/nsswitch.conf
        • 刪除 /var/run/sshd
        • 更改 SELinux / AppArmor
      • 配置層
        • 更改驗證方式(密鑰/密碼/禁用 root)
        • 刪除 authorized_keys
        • 更改 home 目錄權限(600 → 777 = ssh 拒絕登入)
        • 修改 /etc/passwd
        • 修改 /etc/shadow
      • 憑證層
        • 更改伺服器端 host key(會導致 client 拒絕連線)
        • 更改使用者 UID/GID(authorized_keys 失效)
        • ~/.ssh 必須是 700
        • authorized_keys 必須是 600

    Init Layer

    System Hygiene Layer

    1. 更新系統
    2. 清理殘留 log,tmp,cache,core dump,journal,network lease,ssh session log

    System Identity Layer

    1. locale - 讓系統正確用 UTF-8 處理文字(中英文、特殊符號不亂碼)
    2. 時區默認指定 Etc/UTC,用戶審計時可更改,如:上海,東京,etc…
    3. hostname & FQDN,讓用戶指定主機名及 FQDN
    4. ntp - 讓系統時間與全球標準同步
      1. lxc用 chrony 配置,kvm 用自帶的 timesyncd
      2. 指定 NTP 伺服器 time.cloudflare.com 和 time.google.com

    System Performance Layer

    1. 開啓 bbr
    2. sysctl 安全項
    3. sysctl 性能項
    4. vm.swappiness 優化
    5. vm.dirty_ratio 優化
    6. vm.dirty_background_ratio 優化
    7. fs.file-max 優化
    8. ulimit 優化
    9. CPU governor 優化

    System Consistency Layer

    • LXC 特殊處理
    • KVM 特殊處理
    • Bare-metal 特殊處理
    • cloud-init 清理
    • netplan 清理
    • resolv.conf 清理
    • /etc/hosts 清理

    Contract

    1. 在 /root 路徑下,生成 error.log 的日志,將處理失敗的部分打印出來。full.log 也要提供。
    2. 動態 motd, 根據修改后的配置及讀取的服務器信息,打印自定義的登錄歡迎界面。

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有72267位seeker

🎉欢迎新用户🎉