当前位置:首页>Linux>Linux安全加固-主机运维

Linux安全加固-主机运维

  • 2026-09-29 10:30:08
Linux安全加固-主机运维
招新
OnePanda-Sec
-招新说明-
招新要求

· 热爱网络安全,喜欢CTF

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

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

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

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

· 未参与其他高校联队

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

联系方式

发送简历于邮箱

· 简历邮箱:2638726415@qq.com

聘

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 核心配置参数一览表

基础连接配置

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

认证方式配置

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

访问控制配置

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

连接与性能优化

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

转发与隧道配置

配置项默认值作用说明
X11Forwardingyes是否允许 X11 图形界面转发 
AllowTcpForwardingyes是否允许 TCP 端口转发 
AllowAgentForwardingyes是否允许 SSH Agent 转发
GatewayPortsno是否允许远程端口绑定到非本地地址
PermitTunnelno是否允许 tun 设备转发(VPN 隧道)

日志与监控配置

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

高级安全配置

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

找到这一行代码,也就是在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指定密钥算法类型为 RSARSA / ECDSA / Ed25519
-b 4096--bits 4096指定密钥位数(仅 RSA/DSA 有效)2048 / 3072 / 4096
-f filename--filename指定密钥文件名默认 ~/.ssh/id_rsa
-C comment--comment添加密钥注释(通常用邮箱)user@example.com
-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 ~/.ssh700SSH 配置目录所有者:读(4)+写(2)+执行(1)=7;组和其他人:无权限(0)
chmod 600 ~/.ssh/authorized_keys600授权公钥文件所有者:读(4)+写(2)=6;组和其他人:无

权限位解析

数字权限表示法

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

文件权限对比表

权限值符号表示所有者组其他人适用对象
700drwx------rwx------~/.ssh/ 目录
600-rw-------rw-------~/.ssh/authorized_keys
644-rw-r--r--rw-r--r--~/.ssh/id_rsa.pub 公钥
755drwxr-xr-xrwxr-xr-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 → 劫持代理转发

最新文章

随机文章