searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Linux之sshd_config配置文件说明及实践——天翼云

2025-11-25 10:19:42
4
0

一、sshd_config配置文件基础解析

1. 文件路径与权限要求

sshd_config默认位于/etc/ssh/目录,文件宿主为root,权限建议设置为644(即-rw-r--r--)。若权限配置不当(如权限开放至777),可能导致密钥泄露或未授权修改,引发安全风险。

2. 配置语法规则

  • 键值对格式:参数名与值通过空格分隔,例如Port 2222
  • 注释规则:以#开头的行为注释,默认配置中多数参数被注释,需取消注释并修改生效。
  • 优先级机制:若通过Include /etc/ssh/sshd_config.d/*.conf引入子配置文件,其参数优先级高于主配置文件,重复参数以最后定义为准。

3. 核心配置参数详解

(1)监听与连接控制

  • Port:默认监听22端口,生产环境建议修改为10000-65535之间的非知名端口(如Port 2222),规避端口扫描攻击。
  • ListenAddress:指定监听IP地址,例如ListenAddress 192.168.1.100可限制仅通过内网IP访问。
  • MaxStartups:控制未认证连接的最大并发数,默认值10,防止暴力破解时资源耗尽。

(2)认证与访问控制

  • PermitRootLogin:禁止root直接登录(PermitRootLogin no),强制使用普通用户+sudo提权,降低高危操作风险。
  • PasswordAuthentication:禁用密码认证(PasswordAuthentication no),仅允许密钥登录,杜绝弱密码泄露风险。
  • AllowUsers/DenyUsers:白名单机制,例如AllowUsers ops admin仅允许指定用户登录。
  • AuthorizedKeysFile:指定公钥存储路径,默认.ssh/authorized_keys,需确保文件权限为600

(3)安全加固参数

  • LoginGraceTime:认证超时时间,默认120秒,建议缩短至60秒(LoginGraceTime 60),减少暴力破解窗口期。
  • ClientAliveInterval:心跳检测间隔,例如ClientAliveInterval 300每5分钟发送存活包,自动断开闲置连接。
  • UseDNS:禁用DNS反向解析(UseDNS no),加速登录响应并避免DNS欺骗攻击。

二、天翼云服务器实践案例

场景:某企业使用天翼云弹性云主机部署Web服务,需通过SSH进行运维管理,要求满足以下安全需求:

  1. 修改SSH默认端口为2222;
  2. 禁止root直接登录;
  3. 仅允许运维组(ssh-users)成员登录;
  4. 启用密钥认证并禁用密码登录。

操作步骤

1. 修改sshd_config配置文件

bash
# 备份原配置文件
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup_$(date +%Y%m%d)

# 编辑配置文件
sudo vi /etc/ssh/sshd_config

修改以下关键参数:

ini
Port 2222                      # 修改监听端口
PermitRootLogin no             # 禁止root登录
PasswordAuthentication no       # 禁用密码认证
PubkeyAuthentication yes        # 启用密钥认证
AllowGroups ssh-users           # 仅允许ssh-users组登录
ClientAliveInterval 300         # 心跳检测间隔5分钟
UseDNS no                       # 禁用DNS解析

2. 创建运维组并添加用户

bash
sudo groupadd ssh-users          # 创建组
sudo usermod -aG ssh-users ops   # 将用户ops加入组

3. 生成密钥对并配置公钥

在客户端生成密钥对(若未生成):

bash
ssh-keygen -t ed25519 -C "ops@example.com"

将公钥上传至服务器:

bash
# 创建.ssh目录并设置权限
ssh ops@服务器IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh"
# 追加公钥至authorized_keys
cat ~/.ssh/id_ed25519.pub | ssh ops@服务器IP "cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

4. 开放防火墙与SELinux规则

bash
# 开放2222端口(CentOS 7+)
sudo firewall-cmd --add-port=2222/tcp --permanent
sudo firewall-cmd --reload

# 若启用SELinux,需添加端口规则
sudo semanage port -a -t ssh_port_t -p tcp 2222

5. 重启SSH服务并验证

bash
sudo systemctl restart sshd
sudo systemctl status sshd  # 检查服务状态

测试新端口登录:

bash
ssh -p 2222 ops@服务器IP

三、常见问题与排查

1. 修改配置后无法连接

  • 原因:语法错误或端口未开放。
  • 解决
    • 使用sudo sshd -t测试配置语法;
    • 检查防火墙规则(firewall-cmd --list-ports)与SELinux设置。

2. 密钥登录失败

  • 原因:公钥权限或路径错误。
  • 解决
    • 确保authorized_keys权限为600
    • 验证公钥内容是否正确追加至文件。

四、总结

通过合理配置sshd_config,可显著提升天翼云服务器的SSH安全性。本文通过修改端口、禁用root登录、启用密钥认证等实践,构建了多层次防护体系。实际运维中,建议结合日志分析(/var/log/secure)与自动化工具(如Ansible)实现批量管理,进一步降低人为配置风险。

0条评论
作者已关闭评论
窝补药上班啊
1346文章数
6粉丝数
窝补药上班啊
1346 文章 | 6 粉丝
原创

Linux之sshd_config配置文件说明及实践——天翼云

2025-11-25 10:19:42
4
0

一、sshd_config配置文件基础解析

1. 文件路径与权限要求

sshd_config默认位于/etc/ssh/目录,文件宿主为root,权限建议设置为644(即-rw-r--r--)。若权限配置不当(如权限开放至777),可能导致密钥泄露或未授权修改,引发安全风险。

2. 配置语法规则

  • 键值对格式:参数名与值通过空格分隔,例如Port 2222
  • 注释规则:以#开头的行为注释,默认配置中多数参数被注释,需取消注释并修改生效。
  • 优先级机制:若通过Include /etc/ssh/sshd_config.d/*.conf引入子配置文件,其参数优先级高于主配置文件,重复参数以最后定义为准。

3. 核心配置参数详解

(1)监听与连接控制

  • Port:默认监听22端口,生产环境建议修改为10000-65535之间的非知名端口(如Port 2222),规避端口扫描攻击。
  • ListenAddress:指定监听IP地址,例如ListenAddress 192.168.1.100可限制仅通过内网IP访问。
  • MaxStartups:控制未认证连接的最大并发数,默认值10,防止暴力破解时资源耗尽。

(2)认证与访问控制

  • PermitRootLogin:禁止root直接登录(PermitRootLogin no),强制使用普通用户+sudo提权,降低高危操作风险。
  • PasswordAuthentication:禁用密码认证(PasswordAuthentication no),仅允许密钥登录,杜绝弱密码泄露风险。
  • AllowUsers/DenyUsers:白名单机制,例如AllowUsers ops admin仅允许指定用户登录。
  • AuthorizedKeysFile:指定公钥存储路径,默认.ssh/authorized_keys,需确保文件权限为600

(3)安全加固参数

  • LoginGraceTime:认证超时时间,默认120秒,建议缩短至60秒(LoginGraceTime 60),减少暴力破解窗口期。
  • ClientAliveInterval:心跳检测间隔,例如ClientAliveInterval 300每5分钟发送存活包,自动断开闲置连接。
  • UseDNS:禁用DNS反向解析(UseDNS no),加速登录响应并避免DNS欺骗攻击。

二、天翼云服务器实践案例

场景:某企业使用天翼云弹性云主机部署Web服务,需通过SSH进行运维管理,要求满足以下安全需求:

  1. 修改SSH默认端口为2222;
  2. 禁止root直接登录;
  3. 仅允许运维组(ssh-users)成员登录;
  4. 启用密钥认证并禁用密码登录。

操作步骤

1. 修改sshd_config配置文件

bash
# 备份原配置文件
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_backup_$(date +%Y%m%d)

# 编辑配置文件
sudo vi /etc/ssh/sshd_config

修改以下关键参数:

ini
Port 2222                      # 修改监听端口
PermitRootLogin no             # 禁止root登录
PasswordAuthentication no       # 禁用密码认证
PubkeyAuthentication yes        # 启用密钥认证
AllowGroups ssh-users           # 仅允许ssh-users组登录
ClientAliveInterval 300         # 心跳检测间隔5分钟
UseDNS no                       # 禁用DNS解析

2. 创建运维组并添加用户

bash
sudo groupadd ssh-users          # 创建组
sudo usermod -aG ssh-users ops   # 将用户ops加入组

3. 生成密钥对并配置公钥

在客户端生成密钥对(若未生成):

bash
ssh-keygen -t ed25519 -C "ops@example.com"

将公钥上传至服务器:

bash
# 创建.ssh目录并设置权限
ssh ops@服务器IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh"
# 追加公钥至authorized_keys
cat ~/.ssh/id_ed25519.pub | ssh ops@服务器IP "cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

4. 开放防火墙与SELinux规则

bash
# 开放2222端口(CentOS 7+)
sudo firewall-cmd --add-port=2222/tcp --permanent
sudo firewall-cmd --reload

# 若启用SELinux,需添加端口规则
sudo semanage port -a -t ssh_port_t -p tcp 2222

5. 重启SSH服务并验证

bash
sudo systemctl restart sshd
sudo systemctl status sshd  # 检查服务状态

测试新端口登录:

bash
ssh -p 2222 ops@服务器IP

三、常见问题与排查

1. 修改配置后无法连接

  • 原因:语法错误或端口未开放。
  • 解决
    • 使用sudo sshd -t测试配置语法;
    • 检查防火墙规则(firewall-cmd --list-ports)与SELinux设置。

2. 密钥登录失败

  • 原因:公钥权限或路径错误。
  • 解决
    • 确保authorized_keys权限为600
    • 验证公钥内容是否正确追加至文件。

四、总结

通过合理配置sshd_config,可显著提升天翼云服务器的SSH安全性。本文通过修改端口、禁用root登录、启用密钥认证等实践,构建了多层次防护体系。实际运维中,建议结合日志分析(/var/log/secure)与自动化工具(如Ansible)实现批量管理,进一步降低人为配置风险。

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0