ines-saouli/startech-linux-server

GitHub: ines-saouli/startech-linux-server

通过模拟企业 Linux 服务器环境,系统性地实践用户管理、权限控制、密码策略、备份和 SSH 日志分析等系统管理技能。

Stars: 0 | Forks: 0

# 🐧 StarTech 企业服务器 ## 📖 概述 本项目旨在管理和保护一家名为 **StarTech** 的虚构企业的 Linux 服务器。 目标是建立一个完整的架构,包括多个部门、用户、组、访问规则、密码策略、备份以及对 SSH 认证日志的分析。 所有任务均在命令行下完成,未使用脚本。 ## 🎯 目标 - 创建和管理用户与组 - 组织企业目录树 - 配置 Linux 权限 - 使用 ACL 管理特定访问 - 实施密码策略 - 保护共享文件夹 - 创建带有访问限制的备份 - 分析 SSH 日志 - 识别暴力破解尝试 - 诊断并修复权限故障 ## 🛠️ 技术与命令 - Linux - Bash - `useradd` - `groupadd` - `chmod` - `chown` - `setfacl` - `getfacl` - `chage` - PAM - `grep` - `cut` - `sort` - `uniq` - `wc` - `cp` ## 🏢 组架构 创建了以下组: ``` dev marketing finance direction it startech managers ``` 每个用户属于: - 其所在部门; - 通用组 `startech`; - 担任经理职务时,属于 `managers` 组。 ### 创建示例 ``` sudo groupadd dev sudo groupadd marketing sudo groupadd finance sudo groupadd direction sudo groupadd it sudo groupadd startech sudo groupadd managers ``` ``` sudo useradd -m -s /bin/bash -g dev -G startech dev1 sudo useradd -m -s /bin/bash -g dev -G startech dev2 sudo useradd -m -s /bin/bash -g dev -G startech,managers dev_mgr ``` ### 验证 ``` getent group dev marketing finance direction it startech managers id dev1 id dev_mgr ``` ## 📂 服务器目录树 ``` /srv/startech ├── dev ├── marketing ├── finance ├── direction ├── commun ├── archives └── managers ``` ### 创建 ``` sudo mkdir -p /srv/startech/{dev,marketing,finance,direction,commun,archives,managers} ``` ``` sudo chown root:startech /srv/startech sudo chmod 2750 /srv/startech ``` ## 🔐 权限管理 ### 部门文件夹 每个用户只能访问其所在部门的文件夹。 经理拥有: - 对其部门的完全访问权限; - 对其他部门的只读访问权限。 开发部门示例: ``` sudo chown root:dev /srv/startech/dev sudo chmod 2770 /srv/startech/dev sudo setfacl -m g:managers:rx /srv/startech/dev sudo setfacl -d -m g:managers:rx /srv/startech/dev ``` ### 经理文件夹 该文件夹仅供 `managers` 组的成员使用。 ``` sudo chown root:managers /srv/startech/managers sudo chmod 2770 /srv/startech/managers ``` ### 公共文件夹 所有员工都可以在公共文件夹中创建文件。 **sticky bit** 可防止用户删除属于其他用户的文件。 ``` sudo chown root:startech /srv/startech/commun sudo chmod 3770 /srv/startech/commun ``` 测试: ``` sudo -u dev1 touch /srv/startech/commun/test-dev1 sudo -u dev2 rm /srv/startech/commun/test-dev1 ``` 第二个命令应该被拒绝。 ### 归档文件夹 `direction` 组可以写入该文件夹。 其他员工只能查看其内容。 ``` sudo chown root:direction /srv/startech/archives sudo chmod 2770 /srv/startech/archives sudo setfacl -m g:startech:rx /srv/startech/archives sudo setfacl -d -m g:startech:rx /srv/startech/archives ``` ## 🔑 密码策略 实施的策略要求: - 至少 10 个字符; - 7 天后过期; - 禁止重复使用最近 3 个密码; - 失败 3 次后锁定; - 首次登录时必须更改密码。 ### 首次登录强制更改 ``` sudo passwd dev1 sudo chage -d 0 dev1 sudo chage -l dev1 ``` ### 7 天后过期 ``` sudo chage -M 7 dev1 ``` ### 最小长度 配置于: ``` /etc/security/pwquality.conf ``` ``` minlen = 10 ``` ## 💾 备份 在 `/mnt/backups` 中创建了两个带有日期的备份文件夹。 ``` DATE=$(date +%F) sudo mkdir -p /mnt/backups/$DATE sudo mkdir -p /mnt/backups/${DATE}-2 ``` 访问规则: - `it` 组可以读写; - `direction` 组可以读取; - 其他用户没有任何访问权限。 ``` sudo chown root:it /mnt/backups sudo chmod 2770 /mnt/backups sudo setfacl -m g:direction:rx /mnt/backups sudo setfacl -d -m g:direction:rx /mnt/backups ``` 复制示例: ``` sudo cp -a \ /srv/startech/dev \ /srv/startech/marketing \ /srv/startech/finance \ /srv/startech/direction \ /srv/startech/managers \ /srv/startech/archives \ /mnt/backups/$DATE/ ``` ## 🔎 SSH 日志分析 分析了以下文件: ``` /var/log/auth.log ``` 目的是识别: - 尝试连接的 IP 地址; - 最活跃的 IP; - 最受针对性的用户; - 成功的连接; - 潜在的暴力破解尝试。 ### 提取 IP 地址 ``` grep -E "sshd.*(Failed password|Accepted password|Invalid user)" /var/log/auth.log \ | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' \ | sort -u ``` ### 最活跃的前 5 个 IP ``` grep -E "sshd.*(Failed password|Invalid user)" /var/log/auth.log \ | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' \ | sort \ | uniq -c \ | sort -nr \ | head -5 ``` ### 成功的连接 ``` grep "sshd.*Accepted password" /var/log/auth.log \ | cut -d' ' -f1-3,9,11 ``` ### 失败次数 ``` grep -c "sshd.*Failed password" /var/log/auth.log ``` 一个在短时间内生成大量尝试的 IP 地址可能表明发生了 **SSH 暴力破解** 攻击。 ## 🧯 故障诊断 该项目包含几个模拟事件: - 经理无法访问 `managers` 文件夹; - `direction` 无法在 `archives` 中写入; - 财务用户能够读取 dev 文件夹; - 在 `commun` 中发生未经授权的删除; - 无法访问某个部门; - 失去对备份的访问权限; - 多次失败后未锁定; - 经理的访问权限不正确; - 已离职用户仍存在于组中。 对于每个事件,遵循的方法是: 1. 识别可能的原因; 2. 检查组和权限; 3. 应用修复; 4. 测试结果。 ### 诊断命令 ``` id nom_utilisateur groups nom_utilisateur ls -ld /srv/startech/* getfacl /srv/startech/dev getfacl /srv/startech/commun getfacl /mnt/backups ``` ## 📚 我学到了什么 这个项目让我深入了解了: - 用户和组的管理; - 高级权限管理; - Linux ACL; - setgid 和 sticky bit; - 共享文件夹的安全保护; - 配置密码策略; - 备份管理; - SSH 日志分析; - 检测可疑行为; - 事件的诊断和解决。 ## 🚀 培养的技能 - Linux 系统管理 - 身份和访问管理 - 访问控制 - Linux 安全防护 - 日志分析 - SSH 调查 - 暴力破解检测 - 数据备份 - 故障诊断 - 使用 Bash 终端 ## 💡 未来展望 为了走得更远,可以通过以下方式丰富此实验室: - 使用 `cron` 自动化备份; - 安装 Fail2ban; - 使用 Wazuh 集中管理日志; - 针对 SSH 尝试创建警报; - 监控文件完整性; - 使用 Bash 或 Ansible 自动化用户创建。
标签:Linux系统管理, 应用安全, 数据备份, 权限控制, 系统运维, 红队行动, 访问控制列表(ACL)