服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - 强化 SSH 让你更加安心

强化 SSH 让你更加安心

2023-11-28 18:24未知服务器之家 Linux

导读 为了让我们的SSH服务更加安全,我们有必要对此做一些强化措施,使得我们在之后的工作过程中更加放心。当你查看你的 SSH 服务日志,可能你会发现充斥着一些不怀好意的尝试性登录。这里有 5 条常规建议(和一些个别特殊

导读 为了让我们的SSH服务更加安全,我们有必要对此做一些强化措施,使得我们在之后的工作过程中更加放心。当你查看你的 SSH 服务日志,可能你会发现充斥着一些不怀好意的尝试性登录。这里有 5 条常规建议(和一些个别特殊策略)可以让你的 OpenSSH 会话更加安全。
1. 强化密码登录

密码登录很方便,因为你可以从任何地方的任何机器上登录。但是它们在暴力攻击面前也是脆弱的。尝试以下策略来强化你的密码登录:

  • (1)使用一个密码生成工具,例如 pwgen。pwgen 有几个选项,最有用的就是密码长度的选项(例如:产生一个12位字符的密码pwgen 12)
  • (2)不要重复使用密码。忽略所有那些不要写下你的密码的建议,然后将你的所有登录信息都记在一个本子上,如果你不相信我的建议,那总可以相信安全权威 Bruce Schneier 吧。如果你足够细心,没有人能够发现你的笔记本,那么这样能够不受到网络上的那些攻击。
  • (3)你可以为你的登录记事本增加一些额外的保护措施,例如用字符替换或者增加新的字符来掩盖笔记本上的登录密码。使用一个简单而且好记的规则,比如说给你的密码增加两个额外的随机字符,或者使用单个简单的字符替换,例如 # 替换成 * 。
  • (4)为你的 SSH 服务开启一个非默认的监听端口。虽然是很老套的建议,但是它确实很有效。检查你的登录,很有可能 22 端口是被普遍攻击的端口,其他端口则很少被攻击。
  • (5)使用 Fail2ban来动态保护你的服务器,是服务器免于被暴力攻击。
  • (6)使用不常用的用户名。绝不能让 root 可以远程登录,并避免用户名为“admin”。
2. 解决 Too Many Authentication Failures 报错

当我的 ssh 登录失败,并显示“Too many authentication failures for carla”的报错信息时,我们不应该气馁,伤痛之感并不能解决问题。解决办法就是在你的(客户端的) ~/.ssh/config 文件设置强制密码登录。如果这个文件不存在,首先创个 ~/.ssh/目录。

$mkdir~/.ssh
$chmod700~/.ssh

然后在一个文本编辑器创建 ~/.ssh/confg 文件,输入以下行,使用你自己的远程域名替换 HostName。

HostNameremote.site.com
PubkeyAuthentication=no

(LCTT 译注:这种错误发生在你使用一台 机器使用 ssh 登录另外一台服务器时,你的 .ssh 目录中存储了过多的私钥文件,而 ssh 客户端在你没有指定 -i 选项时,会默认逐一尝试使用这些私钥来登录远程服务器后才会提示密码登录,如果这些私钥并不能匹配远程主机,显然会触发这样的报错,甚至拒绝连接。因此本条是通过禁用本地私钥的方式来强制使用密码登录——显然这并不可取,如果你确实要避免用私钥登录,那你应该用 -o PubkeyAuthentication=no 选项登录。显然这条和下两条是互相矛盾的,所以请无视本条即可。)

3. 使用公钥认证

公钥认证比密码登录安全多了,因为它不受暴力密码攻击的影响,但是并不方便因为它依赖于 RSA 密钥对。首先,你要创建一个公钥/私钥对;下一步,私钥放于你的客户端电脑,并且复制公钥到你想登录的远程服务器。你只能从拥有私钥的电脑登录才能登录到远程服务器,你的私钥就和你的家门钥匙一样敏感;任何人获取到了私钥就可以获取你的账号。你可以给你的私钥加上密码来增加一些强化保护规则。使用 RSA 密钥对管理多个用户是一种好的方法:当一个用户离开了,只要从服务器删了他的公钥就能取消他的登录。

以下例子创建一个新的 3072 位长度的密钥对,它比默认的 2048 位更安全,而且为它起一个独一无二的名字,这样你就可以知道它属于哪个服务器。

$ssh-keygen-trsa-b3072-fid_mailserver

以下创建两个新的密钥, id_mailserver 和 id_mailserver.pub ,id_mailserver 是你的私钥--不要传播它!现在用 ssh-copy-id 安全地复制你的公钥到你的远程服务器。你必须确保在远程服务器上有可用的 SSH 登录方式。

$ssh-copy-id-iid_rsa.pubuser@remoteserver
/usr/bin/ssh-copy-id:INFO:attemptingtologinwiththenewkey(s),tofilteroutanythatarealreadyinstalled
user@remoteserver'spassword:
Numberofkey(s)added:1
Nowtryloggingintothemachine,with:"ssh'user@remoteserver'"
andchecktomakesurethatonlythekey(s)youwantedwereadded.

ssh-copy-id 会确保你不会无意间复制了你的私钥;从上述输出中复制登录 ,记得带上其中的单引号,以测试你的新的密钥登录。

$ssh'user@remoteserver'

它将用你的新密钥登录,如果你为你的私钥设置了密码,它会提示你输入。

4. 取消密码登录

一旦你已经测试并且验证了你的公钥可以登录,就可以取消密码登录,这样你的远程服务器就不会被暴力密码攻击。如下设置你的远程服务器的 /etc/sshd_config 文件。

PasswordAuthenticationno

然后重启服务器上的 SSH 守护进程。

5. 设置别名 -- 这很快捷而且很有 B 格

你可以为你的远程登录设置常用的别名,来替代登录时输入的命令,例如:

ssh-uusername-p2222remote.site.with.long-name

你可以使用 ssh remote1。你的客户端机器上的 ~/.ssh/config 文件可以参照如下设置

Hostremote1
HostNameremote.site.with.long-name
Port2222
Userusername
PubkeyAuthenticationno

如果你正在使用公钥登录,可以参照这个:

Hostremote1
HostNameremote.site.with.long-name
Port2222
Userusername
IdentityFile~/.ssh/id_remoteserver

原文来自:


延伸 · 阅读

精彩推荐
  • Linux在 Linux 中把多个 Markdown 文件转换成 HTML 或其他格式

    在 Linux 中把多个 Markdown 文件转换成 HTML 或其他格式

    Markdown 格式的文件可以转换成 .html 文件,有时候我需要把它转换成其他格式,如 epub,这个时候 pandoc 就派上了用场。我更喜欢用命令行,因此本文我会首...

    Linux中国7732021-04-08
  • Linux又该换Linux版本了!

    又该换Linux版本了!

    作者 | 王瑞平 51CTO读者成长计划社群招募,咨询小助手(微信号:CTOjishuzhan) 提起开发,程序员们更青睐于不同版本的Linux操作系统而不是Windows。 为什么...

    未知2002023-05-10
  • LinuxLinux下使用blkid命令查询设备及文件系统信息的方法

    Linux下使用blkid命令查询设备及文件系统信息的方法

    lsblk 是一个 Linux 工具,它会显示有关你系统里所有可用块设备的信息,它从 sysfs 文件系统中获取信息,默认情况下,这个工具将会以树状格式显示(除了内存虚...

    Linux命令手册6642019-06-15
  • LinuxLinux和Vim的使用

    Linux和Vim的使用

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应...

    Python之王4982020-11-19
  • LinuxLinux漏洞扫描工具lynis使用方法解析

    Linux漏洞扫描工具lynis使用方法解析

    这篇文章主要介绍了Linux漏洞扫描工具lynis使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可...

    小雨淅淅o06652020-08-03
  • Linuxscanimage:从命令行扫描!

    scanimage:从命令行扫描!

    scanimage 是一个命令行工具,在 sane-utils Debian 软件包中。我想所有的 Linux 扫描工具都使用 sane (“scanner access now easy”) 库,所以我猜测它和其他扫描软件...

    Linux中国6672020-12-06
  • LinuxLinux下部署springboot项目的方法步骤

    Linux下部署springboot项目的方法步骤

    这篇文章主要介绍了Linux下部署springboot项目的方法步骤,由于springboot是内嵌了tomcat,所以可以直接将项目打包上传至服务器上,具体实例方法大家参考下本...

    wang_java_666_9402022-03-10
  • LinuxLinux系统中file命令的使用详解

    Linux系统中file命令的使用详解

    这篇文章主要介绍了Linux系统中file命令的使用详解,是Linux入门学习中的基础知识,需要的朋友可以参考下...

    cnblogs9252019-08-29