阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

系统加固-Linux不允许用户使用密码登录,只能使用密钥登录

1,072次阅读
没有评论

共计 3979 个字符,预计需要花费 10 分钟才能阅读完成。

一、密码登录的安全隐患

传统的密码登录方式,尽管简单直接,却存在诸多安全隐患。首先,密码本身容易被猜测或通过暴力破解手段获得 。特别是当用户设置了过于简单或常见的密码时,系统面临的安全风险将显著增加。其次, 密码在传输过程中可能会被截获 ,尤其是在不安全的网络环境下,这进一步加剧了安全风险。最后,即使密码本身足够复杂且安全,但用户在不同平台间重复使用密码的习惯也容易导致“ 一损俱损”的连锁反应。

俗话不怕贼偷就怕贼惦记,服务器每天收到近万条尝试登录失败的通知。

系统加固 -Linux 不允许用户使用密码登录,只能使用密钥登录

二、密钥认证的优势

与密码登录相比,密钥认证机制在安全性方面有着显著的优势。密钥认证基于公钥和私钥的加密技术,用户需要在本地生成一对密钥,其中公钥上传至服务器,私钥则保存在本地且不应泄露。在登录过程中,用户通过私钥对服务器发送的挑战进行签名,服务器则使用对应的公钥进行验证。由于私钥的私密性和不可复制性,这种认证方式极大地提高了登录过程的安全性。

此外,密钥认证还提供了更强的身份验证能力。即使攻击者获得了用户的公钥,也无法直接用于登录,因为私钥始终掌握在用户手中。同时,密钥认证还可以支持多因素认证,如结合密码、生物特征等,进一步提升系统安全性。

系统加固 -Linux 不允许用户使用密码登录,只能使用密钥登录

生成密钥对

生成 SSH 密钥对(包括公钥和私钥)是用于进行公钥认证的常见操作。以下是在 Linux 或 macOS 中生成 SSH 密钥对的步骤。

1: 生成 SSH 密钥对

  1. 打开终端(Terminal)。

  2. 使用 ssh-keygen 命令生成 SSH 密钥对:

    ssh-keygen -t rsa -b 4096 -C"your_email@example.com"

    这里:

    • -t rsa:指定使用 RSA 算法。

    • -b 4096:指定密钥长度为 4096 位(更长的密钥更安全)。

    • -C "your_email@example.com":这是一个可选的标签,用于标识该密钥的用途。

  3. 系统会提示你选择保存密钥的文件路径,默认保存在 ~/.ssh/id_rsa

    Enter file in which to save the key (/home/youruser/.ssh/id_rsa):

    如果你不想使用默认路径,可以指定一个路径,或者直接按 Enter 键使用默认路径。

  4. 接下来,系统会提示你输入一个密码(可选),该密码用于保护你的私钥:

    Enter passphrase (empty for no passphrase):

    如果你希望设置一个密码保护私钥,输入密码;如果不需要密码保护,直接按 Enter 键。

步骤 2: 查看生成的密钥文件

生成的密钥对包含两个文件:

  • 私钥(默认文件为 ~/.ssh/id_rsa):不要将私钥泄露给任何人。

  • 公钥(默认文件为 ~/.ssh/id_rsa.pub):可以将公钥复制到远程服务器上,用于身份验证。

可以使用以下命令查看它们:

ls -l ~/.ssh/

步骤 3: 将公钥复制到远程服务器

为了使用 SSH 密钥认证登录远程服务器,你需要将公钥添加到远程服务器的 ~/.ssh/authorized_keys 文件中。

手动方式

  1. 复制公钥内容:

    使用 cat 命令查看公钥内容:

    cat ~/.ssh/id_rsa.pub

    复制输出的公钥内容(包括 ssh-rsa 开头和结束的部分)。

  2. 将公钥添加到远程服务器:

    登录到远程服务器,进入 root 或目标用户的 ~/.ssh 目录:

    ssh user@your_server_ip
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    nano ~/.ssh/authorized_keys

    将复制的公钥粘贴到 authorized_keys 文件中,并保存退出。

  3. 设置权限:

    chmod 600 ~/.ssh/authorized_keys

使用 ssh-copy-id 自动复制公钥

如果你有密码登录的权限,可以使用 ssh-copy-id 自动将公钥复制到远程服务器:

ssh-copy-id user@your_server_ip

系统会提示输入远程主机的密码,验证成功后会将公钥自动添加到远程服务器的 ~/.ssh/authorized_keys 中。

步骤 4: 测试 SSH 登录

完成上述步骤后,尝试使用以下命令登录远程服务器,验证公钥认证是否成功:

ssh -i ~/.ssh/id_rsa user@your_server_ip

如果一切配置正确,你应该能够成功登录,无需输入密码(如果没有设置私钥的 passphrase)。

配置服务器 SSHD

需求:

centos7 系统,不允许 root 用户等使用密码登录,只能使用密钥登录,公钥为:ssh-rsa ABCd123

系统加固 -Linux 不允许用户使用密码登录,只能使用密钥登录

1. 配置 SSH 服务

编辑 sshd 配置文件:

vi /etc/ssh/sshd_config
在文件中修改或添加以下参数:# 禁止密码认证
PasswordAuthentication no

# 允许公钥认证
PubkeyAuthentication yes

# 禁止 root 用户使用密码登录
PermitRootLogin prohibit-password
  • PasswordAuthentication no:禁止所有用户使用密码登录。

  • PubkeyAuthentication yes:允许使用公钥认证。

  • PermitRootLogin prohibit-password:禁止 root 使用密码登录,但允许其通过公钥登录。

2. 添加公钥到 root 用户

将提供的公钥 ssh-rsa ABCd123 刚才生成的密钥添加到 root 用户的 authorized_keys 文件中。

执行以下命令:

sudo mkdir -p /root/.ssh
sudo chmod 700 /root/.ssh
echo "ssh-rsa ABCd123" | sudo tee /root/.ssh/authorized_keys
sudo chmod 600 /root/.ssh/authorized_keys
sudo chown -R root:root /root/.ssh

3. 重启 SSH 服务

保存修改后,重启 SSH 服务以应用更改:

sudo systemctl restart sshd

4. 测试登录

确保本地有对应的私钥文件,并用以下命令测试登录:

ssh -i /path/to/private_key root@your_server_ip

5. 检查日志

如果遇到问题,可以查看 /var/log/secure 获取详细日志:

sudo tail -f /var/log/secure

注意事项

  • 确保防火墙允许 SSH 连接,必要时检查 firewalldiptables 配置。

  • 使用非 root 用户管理系统,root 权限仅在必要时通过 sudo 提升。

用 shell 脚本

#!/bin/bash

# 定义公钥内容
PUB_KEY="ssh-rsa ABCd123"

# 检查是否为 root 用户执行
if ["$(id -u)" -ne 0 ]; then
    echo "请使用 root 用户执行此脚本!"
    exit 1
fi

echo "开始配置 SSH 服务..."

# 设置 root 用户的公钥
echo "配置 root 用户的公钥..."
mkdir -p /root/.ssh
chmod 700 /root/.ssh
echo "$PUB_KEY" >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
chown -R root:root /root/.ssh
echo "公钥配置完成!"

# 修改 SSH 配置文件
echo "修改 SSH 配置文件..."
SSHD_CONFIG="/etc/ssh/sshd_config"

# 备份原配置文件
if [! -f "$SSHD_CONFIG.bak"]; then
    cp $SSHD_CONFIG "$SSHD_CONFIG.bak"
    echo "原配置文件已备份到 $SSHD_CONFIG.bak"
fi

# 修改配置项
sed -i 's/^#*\(PasswordAuthentication\).*/\1 no/' $SSHD_CONFIG
sed -i 's/^#*\(PubkeyAuthentication\).*/\1 yes/' $SSHD_CONFIG
sed -i 's/^#*\(PermitRootLogin\).*/\1 prohibit-password/' $SSHD_CONFIG

# 确保关键配置存在
grep -q "^PasswordAuthentication no" $SSHD_CONFIG || echo "PasswordAuthentication no" >> $SSHD_CONFIG
grep -q "^PubkeyAuthentication yes" $SSHD_CONFIG || echo "PubkeyAuthentication yes" >> $SSHD_CONFIG
grep -q "^PermitRootLogin prohibit-password" $SSHD_CONFIG || echo "PermitRootLogin prohibit-password" >> $SSHD_CONFIG

echo "SSH 配置修改完成!"

# 重启 SSH 服务
echo "重启 SSH 服务..."
systemctl restart sshd
if [$? -eq 0]; then
    echo "SSH 服务重启成功!"
else
    echo "SSH 服务重启失败,请检查配置。"
    exit 1
fi

echo "配置完成!root 用户已禁止密码登录,仅支持公钥认证。"

# 测试完成提示
echo "请使用以下命令测试登录:"
echo "ssh -i /path/to/private_key root@your_server_ip"

结尾

通过禁用密码登录并启用密钥认证机制,Linux 系统能够显著提升其安全性。这种加固措施不仅减少了因密码泄露或猜测而导致的安全风险,还为用户提供了更为便捷和安全的登录体验。当然,为了保持系统的持续安全,用户还应定期更新密钥、监控系统日志以及采取其他必要的安全措施。在数字化转型的浪潮中,让我们共同努力,为构建更加安全、可靠的数字世界贡献力量。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-12-04发表,共计3979字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7968421
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...