Linux安全加固-主机运维

admin 2026-04-22 04:44:36 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 该文档为Linux主机安全加固实操指南,详细介绍了通过修改用户密码、配置SSH权限、创建新用户及密钥认证等方式提升系统安全性。核心内容包括:修改bus用户弱密码、临时开放root远程登录后关闭、创建back用户并配置SSH密钥认证。文档提供了完整的命令示例和配置参数说明,具备较强的实操指导价值。 综合评分: 78 文章分类: 安全建设,安全工具,技术标准,系统安全,运维安全


cover_image

Linux安全加固-主机运维

原创

Luistin Luistin

OnePanda-Sec

2026年3月28日 22:09 湖北

在小说阅读器读本章

去阅读

招新

OnePanda-Sec

-招新说明-

**招新要求

· 热爱网络安全,喜欢CTF

· 拥有CTF比赛经验,有较好比赛成绩的

· 乐于奉献、热爱分享,愿意提升   自己同时帮助他人

· 时间允许参加各类赛事,服从战队管理与安排

· 各类比赛获奖者、能力出众者视情况考量

· 未参与其他高校联队

· 大一同学视情况放宽资历要求**

联系方式

发送简历于邮箱

· 简历邮箱:[email protected]

Linux安全加固-主机运维

推荐平台

https://www.qsnctf.com/#/main/target

激活这个平台的方法

https://tools.qsnctf.com/

靶场实操

https://www.qsnctf.com/#/main/target?page=1&category=27&difficulty=&keyword=&user_answer=&user_favorite=&tag_ids=&challenge_id=1

Linux安全加固-主机运维

环境针对Linux安全加固而生产,环境中可能存在一些风险,所以需要进行一定的加固,请根据题目引导进行练习
账号:bus 密码:bus123

任务1

任务名称:修改用户:bus的ssh密码

任务分数:2.00

任务类型:自动校验

用户"bus"存在弱口令风险,需要你进行安全加固,请对此用户进行增强密码操作

在加固之前我建议大家都把权限提升到root

sudo -i

输入bus的密码即可

修改密码为高难度

passwd bus

任务2

任务名称:允许root用户ssh远程登录

任务分数:2.00

任务类型:自动校验

服务器由于需要进行远程操作,且需要高权限,需要进行暂时性的开放root用户允许ssh远程登录权限,尽管这是不安全的

这是考的linux运维的知识点,也就是在ssh的配置文件里面进行设置

vi /etc/ssh/sshd_config

sshd_config 配置文件的详细表格介绍。这个文件是 OpenSSH 服务器的主配置文件,位于 /etc/ssh/sshd_config,用于控制 SSH 服务器的行为和安全参数。

sshd_config 核心配置参数一览表

基础连接配置

| 配置项 | 默认值 | 作用说明 | 安全建议 | | — | — | — | — | | Port | 22 | SSH 服务监听的端口号 | 建议修改为 1024-65535 之间的非标准端口 | | AddressFamily | any | 协议族设置(IPv4/IPv6) | 根据网络环境选择 any/inet/inet6 | | ListenAddress | 0.0.0.0 | 监听地址,默认监听所有网卡 | 多网卡服务器可指定特定 IP | | Protocol | 2 | SSH 协议版本 | 必须使用 Protocol 2(版本 1 有安全漏洞) |

认证方式配置

| 配置项 | 默认值 | 作用说明 | 安全建议 | | — | — | — | — | | PermitRootLogin | yes | 是否允许 root 用户 SSH 登录 | 强烈建议设为 no,使用普通用户登录后切换 | | PasswordAuthentication | yes | 是否允许密码认证 | 高安全环境建议设为 no,改用密钥认证 | | PubkeyAuthentication | yes | 是否允许公钥认证 | 建议保持 yes,作为首选认证方式 | | PermitEmptyPasswords | no | 是否允许空密码登录 | 必须保持 no | | MaxAuthTries | 6 | 每个连接的最大认证尝试次数 | 建议设为 3-5 次,防暴力破解 | | MaxSessions | 10 | 最大允许并发未认证连接数 | 根据服务器性能调整 | | LoginGraceTime | 120s | 登录超时时间(用户必须在此时间内完成认证) | 建议设为 60-120 秒 |

访问控制配置

| 配置项 | 默认值 | 作用说明 | 使用示例 | | — | — | — | — | | AllowUsers | 无 | 允许登录的用户白名单 | AllowUsers alice [email protected].* | | DenyUsers | 无 | 禁止登录的用户黑名单 | DenyUsers mallory | | AllowGroups | 无 | 允许登录的用户组 | AllowGroups sshusers | | DenyGroups | 无 | 禁止登录的用户组 | DenyGroups badusers | | Match | 无 | 条件匹配块,可针对特定用户/IP设置不同规则 | 见下方 Match 用法示例 |

连接与性能优化

| 配置项 | 默认值 | 作用说明 | 优化建议 | | — | — | — | — | | UseDNS | yes | 是否进行 DNS 反向解析验证客户端主机名 | 建议设为 no,可加快连接速度 | | GSSAPIAuthentication | yes | 是否启用 GSSAPI 认证 | 如不使用 Kerberos,建议设为 no | | TCPKeepAlive | yes | 是否发送 TCP 保活包检测连接状态 | 保持 yes 防止连接假死 | | ClientAliveInterval | 0 | 服务器向客户端发送保活消息间隔(秒) | 建议设为 300(5分钟) | | ClientAliveCountMax | 3 | 保活检测最大失败次数 | 建议设为 2-3 次 | | Compression | delayed | 是否启用压缩 | 低带宽环境可启用,高带宽建议 no |

转发与隧道配置

| 配置项 | 默认值 | 作用说明 | | — | — | — | | X11Forwarding | yes | 是否允许 X11 图形界面转发 | | AllowTcpForwarding | yes | 是否允许 TCP 端口转发 | | AllowAgentForwarding | yes | 是否允许 SSH Agent 转发 | | GatewayPorts | no | 是否允许远程端口绑定到非本地地址 | | PermitTunnel | no | 是否允许 tun 设备转发(VPN 隧道) |

日志与监控配置

| 配置项 | 默认值 | 作用说明 | 可选值 | | — | — | — | — | | SyslogFacility | AUTHPRIV | 日志设施类型 | AUTH, AUTHPRIV, LOCAL0-LOCAL7 | | LogLevel | INFO | 日志详细程度 | QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG | | PrintMotd | yes | 登录后是否显示 /etc/motd 欢迎信息 | 建议设为 no(使用 PAM 的 pam_motd 更灵活) | | PrintLastLog | yes | 是否显示上次登录信息 | 建议保持 yes |

高级安全配置

| 配置项 | 默认值 | 作用说明 | | — | — | — | | HostKey | /etc/ssh/ssh_host_* | 服务器主机密钥文件路径(RSA/ECDSA/Ed25519) | | AuthorizedKeysFile | .ssh/authorized_keys | 用户公钥存放位置 | | StrictModes | yes | 是否严格检查用户密钥文件权限 | | Banner | none | 登录前显示的警告信息文件路径 | | ChrootDirectory | none | 将用户限制在指定目录(SFTP 监狱) | | ForceCommand | none | 强制用户只能执行特定命令 |

找到这一行代码,也就是在33行,建议大家可以把序号打开,E光标模式下:set number,当然也可以:set num,修改完了之后记得:wq保存

#PermitRootLogin prohibit-password
修改为
PermitRootLogin yes

任务3

任务名称:运维远程完毕,可关闭root用户的ssh远程权限

任务分数:3.00

任务类型:自动校验

允许root远程登录是危险的,所以运维完成远程操作后,可立即将root用户ssh远程权限关闭

这个和上面那个其实是重复了一半,就是把上面那个yes修改为no

PermitRootLogin yes 修改为 PermitRootLogin no

然后:wq保存

任务4

任务名称:创建新用户并配置SSH私钥

任务分数:2.00

任务类型:自动校验

为了让主机远程连接安全更进一步,请创建一个back用户并修改它的密码,最终生成这个用户的私钥,后续可以利用私钥让运维远程连接更安全

首先新建一个名字叫back的用户

useradd -m back

| 命令 | 是否创建家目录 | 是否复制配置文件 | 适用场景 | | — | — | — | — | | useradd username | 否 | 否 | 创建系统账户/服务账户,不需要登录 | | useradd -m username | 是 | 是(从 /etc/skel 复制) | 创建普通登录用户 | | useradd -m -d /path username | 是(指定路径) | 是 | 自定义家目录位置 | | adduser username | 是 | 是 | 交互式创建(Debian/Ubuntu 推荐) |

然后切换到back用户

su back

生成ssh密钥对

ssh-keygen -t rsa -b 4096

| 参数 | 全称 | 作用说明 | 推荐值 | | — | — | — | — | | -t rsa | --type rsa | 指定密钥算法类型为 RSA | RSA / ECDSA / Ed25519 | | -b 4096 | --bits 4096 | 指定密钥位数(仅 RSA/DSA 有效) | 2048 / 3072 / 4096 | | -f filename | --filename | 指定密钥文件名 | 默认 ~/.ssh/id_rsa | | -C comment | --comment | 添加密钥注释(通常用邮箱) | [email protected] | | -N passphrase | --new-passphrase | 设置私钥密码(加密私钥) | 建议设置 | | -P oldpass | --old-passphrase | 更改现有私钥密码时使用 | 密钥管理 | | -p | --change-passphrase | 修改私钥密码 | 密钥维护 | | -y | --yield | 从私钥提取公钥 | 公钥恢复 | | -l | --fingerprint | 显示密钥指纹 | 密钥验证 | | -E hash | --hash | 指定指纹哈希算法 | md5 / sha256 |

$ ssh-keygen-t rsa -b4096
Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):  # 按回车使用默认路径
Enter passphrase (empty for no passphrase):                     # 输入密码(推荐设置)
Enter same passphrase again:                                    # 确认密码
Your identification has been saved in /home/user/.ssh/id_rsa    # 私钥
Your public key has been saved in /home/user/.ssh/id_rsa.pub   # 公钥

配置公钥

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

| 组件 | 作用 | | — | — | | ~/.ssh/id_rsa.pub | 生成的公钥文件,可安全分享给任何人 | | ~/.ssh/authorized_keys | 存储允许登录该服务器的公钥列表 | | >> | 追加操作符,将内容添加到文件末尾(不覆盖原有内容) |

添加权限

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

| 命令 | 权限值 | 作用目标 | 具体含义 | | — | — | — | — | | chmod 700 ~/.ssh | 700 | SSH 配置目录 | 所有者:读(4)+写(2)+执行(1)=7;组和其他人:无权限(0) | | chmod 600 ~/.ssh/authorized_keys | 600 | 授权公钥文件 | 所有者:读(4)+写(2)=6;组和其他人:无 |

权限位解析

数字权限表示法

┌─────────────────────────────────────────┐
│  权限位    所有者   所属组   其他人      │
│  数值        7        0        0   = 700 │
│  数值        6        0        0   = 600 │
│                                         │
│  计算:                                    │
│  r = 4 (读)                               │
│  w = 2 (写)                               │
│  x = 1 (执行)                             │
└─────────────────────────────────────────┘

文件权限对比表

| 权限值 | 符号表示 | 所有者 | 组 | 其他人 | 适用对象 | | — | — | — | — | — | — | | 700 | drwx------ | rwx | — | — | ~/.ssh/ 目录 | | 600 | -rw------- | rw- | — | — | ~/.ssh/authorized_keys | | 644 | -rw-r--r-- | rw- | r– | r– | ~/.ssh/id_rsa.pub 公钥 | | 755 | drwxr-xr-x | rwx | r-x | r-x | 普通可执行目录 |


为什么这些权限是必须的?

SSH 服务的安全机制

SSH 服务器(sshd)有严格的权限检查,如果权限过于宽松,会直接拒绝使用密钥认证:

| 权限检查项 | 如果权限错误 | 后果 | | — | — | — | | ~/.ssh/ 目录 | 组/其他人可写(如 777) | 拒绝登录,提示 “Authentication refused” | | ~/.ssh/authorized_keys | 组/其他人可写 | 忽略该文件,密钥认证失败 | | ~/.ssh/id_rsa 私钥 | 组/其他人可读 | SSH 客户端警告,可能拒绝连接 |

攻击场景示例

# 危险配置:权限过于宽松
chmod777 ~/.ssh              # 任何人都能修改密钥配置!
chmod666 ~/.ssh/authorized_keys  # 任何人都能添加公钥!

# 攻击者可以:
# 1. 将自己的公钥追加到 authorized_keys → 获得未授权访问
# 2. 替换整个 authorized_keys 文件 → 锁定合法用户
# 3. 修改 ~/.ssh/config → 劫持代理转发


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:OnePanda-Sec Luistin Luistin《Linux安全加固-主机运维》

Linux安全加固-主机运维 网络安全文章

Linux安全加固-主机运维

文章总结: 该文档为Linux主机安全加固实操指南,详细介绍了通过修改用户密码、配置SSH权限、创建新用户及密钥认证等方式提升系统安全性。核心内容包括:修改bu
评论:0   参与:  0