Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >保护SSH端口安全性的多种技巧介绍

保护SSH端口安全性的多种技巧介绍

作者头像
FB客服
修改于 2018-12-05 09:44:47
修改于 2018-12-05 09:44:47
1.9K00
代码可运行
举报
文章被收录于专栏:FreeBufFreeBuf
运行总次数:0
代码可运行

SSH是一种可以让你在不安全的网络上,安全的运行网络服务的网络协议的.ssh的标准TCP端口为22端口,其最佳应用场景是用户远程登录至计算机系统。因此,SSH端口也是攻击者必扫的端口之一。本文将就SSH端口的安全性展开讨论,并为大家提供多种保护SSH端口安全性的建议和方法。

在开始之前,让我们先在计算机上安装SSH服务器。命令如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get install openssh-server

端口转发

配置并运行SSH服务,然后我们使用NMAP进行扫描,可以看到当前SSH正在22端口上运行。

切换至客户端机器的/etc/ssh目录下,我们可以看到一个名为sshd_config的配置文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cd /etc/ssh

使用nano命令打开sshd_config的文件。

我们将其中的默认端口跟改为2222(如下图所示),保存并关闭。通过这种方式,我们将端口从22转发到2222。

现在,我们再次使用nmap进行扫描。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nmap 192.168.1.104

nmap的输出显示TCP端口2222已打开;但在服务描述中只显示了EthernetIP-1,并没有给出运行服务的准确描述。因此,因此,让我们再来运行带有版本检测选项的nmap命令看看:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nmap -sV 192.168.1.104

通过输出我们可以清楚地看到SSH服务当前正在TCP 2222端口上运行,以及OpenSSH版本的描述。

公钥保护

首先,我们需要下载并安装PuTTY Key Generator。

注:PuTTYgen是一个密钥生成器,用于为PuTTY创建SSH密钥并且以自己的格式存储密钥(.ppk扩展名)

打开它,然后单击生成。

单击生成将启动生成公钥和私钥的过程,如图所示:

生成公钥和私钥后,单击“保存公钥”。这会将密钥作为一个公钥保存。

现在,打开我们服务器的Ubuntu的终端并输入SSH-凯基。

以上命令将创建一个名为.ssh的文件夹,然后我们在同一文件夹中创建一个名为authorized_keys的空文本文件。然后,我们复制之前使用PuTTy Key Generator创建的“ssh_login.ppk”文件,并将其粘贴到的.ssh文件夹中,如图所示:

在终端中,进入.ssh文件夹并键入以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
puttygen -L "ssh_login.ppk"

此命令将会生成一个密钥。

现在,我们复制该密钥并使用纳米命令将其粘贴到名为authorized_keys中的空文件中并保存。

接着,我们打开腻子配置选项卡,然后转到会话选项卡,为你的客户端机器提供IP地址和端口号。

继续转到数据选项,并提供自动登录用户名(自动登录用户名)。

导航到SSH>验证并提供ssh_login.ppk文件的路径(之前生成的公钥),然后单击“打开”。

此时,它将使用公钥登录SSH服务器,而无需输入密码。

使用的gedit命令打开的/ etc / SSH中的sshd_config中文件。我们将修改#PasswordAuthentication选项,如图所示。

当前配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#PasswordAuthentication yes

现在,我们将参数值是改为无并去掉注释符(如下图所示),完成后保存并关闭文件。此更改将禁止任何用户使用密码登录SSH服务器。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PasswordAuthentication no

正如你所看到的,这些设置已禁用基于密码的登录,并要求使用公钥登录。

禁用根登录并限制SSH用户的访问权限

该安全措施,需要我们先使用的adduser命令创建一些新用户(这里我已经创建了:H1,H2,H3,H4用户),然后使用的gedit命令在sshd_config的文件的#Authentication身份下添加以下行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#No root login allowed(h2 can login as sudo -s)

PermitRootLogin no

##only allow 1 users h2 (sysadmin)

AllowUsers h2

切记更改后及时进行保存,这将禁用Root Login,并且只允许h2用户远程登录ssh服务器。

正如你所看到的,只有H2用户能够成功登录SSH服务器,而H1和H3用户权限则被拒绝登录。

Google身份验证

要通过SSH服务器进行双因素身份验证,你需要在手机上下载安装Google Authenticator,并使用以下命令为Ubuntu安装所需的依赖包:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get install libpam-google-authenticator

– Google Authenticator在安装过程中会有多次询问,你只需选择是即可。

安装完成后,打开终端并输入命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
google-authenticator

此时,将会生成一个二维码,我们使用手机上的Google Authenticator进行扫描。

成功扫描后,它将为我们生成一个动态口令,如图所示。

现在,我们使用的gedit命令打开sshd的文件并进行以下更改:

在@include common-auth前添加注释符;

添加行(auth required pam_google_authenticator.so)到@include common-password下。

如图所示:

继续更改的sshd_config文件中的以下选项。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ChallengeResponseAuthentication yes

现在,当我们登录SSH服务器时,它会提示要求输入验证码。这里,我们必须输入在Google Authenticator上生成的动态口令。如下所示,我们已经使用一次性密码成功登录至SSH服务器。

计划任务限制

在该安全措施中,我们将在服务器上设置SSH服务的时间限制。

克龙是一个用于调度任务的Linux的内置服务,它能够在指定的时间和日期自动运行服务器上的命令或脚本。

在这里,我们将使用crontab的计划SSH服务。

我们在/等中使用的纳米命令打开的crontab现在,让我们创建一个计划任务让SSH服务每2分钟启动一次,4分钟停止一次用于调度SSH服务的命令如下。:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
* / 2 * * * * root service ssh start

* / 4 * * * * root service ssh stop

保存更改并关闭文件。

等待服务重启,使用nmap扫描22端口。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nmap -p 22 192.168.1.104

运行扫描后,我们将观察端口22上的SSH服务是否已被关闭,因为它已持续了4分钟的时间。

现在,如果我们的命令正常工作,它应该每隔2分钟启动一次服务,为了进一步的确认我们将再次使用nmap进行扫描。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nmap –p 22 192.168.1.104

可以看到端口现在处于开放状态。

禁用空密码

从安全最佳实践来看,我们应该始终禁用空密码登录SSH服务器要启用此设置,我们只需将sshd_config的文件的以下选项参数值更为号即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PermitEmptyPasswords no

这将禁用空密码登录SSH服务器。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SSH攻击问题
SSH(Secure Shell)攻击是常见的网络安全问题,攻击者可能尝试通过暴力破解或其他手段获取服务器的访问权限。以下是一些诊断和解决SSH攻击问题的方法:
是山河呀
2025/02/03
2370
Linux服务器最最基本安全策略
1、Linux SSH 安全策略一:关闭无关端口 网络上被攻陷的大多数主机,是黑客用扫描工具大范围进行扫描而被瞄准上的。所以,为了避免被扫描到,除了必要的端口,例如 Web、 FTP、SSH 等,其他的都应关闭。值得一提的是,我强烈建议关闭 icmp 端口,并设置规则,丢弃 icmp 包。这样别人 Ping 不到你的服务 器,威胁就自然减小大半了。丢弃 icmp 包可在 iptables 中, 加入下面这样一条: -A INPUT -p icmp -j DROP 2、Linux SSH 安全策略二:更改 S
李海彬
2018/03/23
3.2K0
SSH随笔
简单说,SSH是一种网络协议,用于计算机之间的加密登录。SSH只是一种协议,存在多种实现,既有商业实现,也有开源实现。这里说的实现是OpenSSH。
浩Coding
2020/09/27
9940
SSH随笔
SSH原理常见应用升级及端口转发
命令 -L localport:remotehost:remotehostport sshserver
iginkgo18
2020/09/27
1.9K0
SSH原理常见应用升级及端口转发
SSH 命令介绍
ssh命令多用于登录和文件传输,安全可靠,本文记录ssh命令用法。 概述 SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。 SSH服务端由2部分组成: openssh(提供ssh服务) openssl(提供加密的程序) SSH是安全的加密协议,用于远程连接Linux服务器 SSH的默认端口是22,安全协议版本是SSH2 SSH
为为为什么
2022/08/05
1.1K0
SSH 命令介绍
(SSH体系下的公私密钥的介绍和使用技巧)
下面来讲解如何在Linux服务器上制作密钥对,将公钥添加给账户,设置SSH,最后通过客户端登录。
时代疯
2021/07/22
2.8K0
Linux系统下的ssh使用(依据个人经验总结)
对于linux运维工作者而言,使用ssh远程远程服务器是再熟悉不过的了!对于ssh的一些严格设置也关系到服务器的安全维护,今天在此,就本人工作中使用ssh的经验而言,做一些总结记录来下。 -bash: ssh: command not found 解决办法; yum install -y openssh-server openssh-clinets (0)ssh登录时提示:Read from socket failed: Connection reset by peer. 尝试了很多解决方案均无效,无奈!
洗尽了浮华
2018/01/23
4.1K0
SSH密钥登录问题
默认情况下,密钥会保存在 ~/.ssh/id_rsa(私钥)和 ~/.ssh/id_rsa.pub (公钥)。
是山河呀
2025/02/03
5820
SSH(sshd)终极安全加固指南
本文翻译自:https://www.putorius.net/how-to-secure-ssh-daemon.html
sunsky
2022/09/02
5.4K0
SSH(sshd)终极安全加固指南
Linux 设置 SSH 密钥登陆及更换登录端口
前几天我的工作邮箱收到了一封比特币勒索邮件,刚开始看邮件内容的时候我还以为是自己的服务器被劫持了,吓了一跳,不过这次事情之后,倒是让我开始为服务器的安装问题考虑了,第一步就是这篇文章要记录的,关于 Linux 系统设置 SSH 密钥登陆。
Hopetree
2022/09/26
3.7K0
CentOS 7配置SSH远程访问及控制
在实际生产环境中,不可能一直在服务器本地对服务器进行相应的管理,大多数企业服务器都是通过远程登录的方式进行管理的。当需要从一个工作站管理数以百计的服务器主机时,远程维护的方式将更占优势。
星哥玩云
2022/07/28
4.6K0
CentOS 7配置SSH远程访问及控制
Linux【安全 01】云服务器主机安全加固(修改SSHD端口、禁用登陆失败的IP地址、使用密钥登录)
PubkeyAuthentication: (默认被注释)当设置为yes时,允许用户使用公钥进行身份验证,包括但不限于RSA密钥。这是一种基于密钥对的身份验证方式,用户在其本地生成密钥对,将公钥上传到SSH服务器上。只有拥有相应私钥的用户才能成功进行身份验证。这通常比基于密码的身份验证更加安全。
yuanzhengme
2025/06/12
2300
Linux的ssh命令
SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息。
狼啸风云
2019/11/05
10K0
更改Linux默认端口,并设置仅允许密钥登录
接上一篇文章,更改Linux默认端口,防止被恶意扫描 为了服务器安全。我们接着搞 上步骤: 一:首先运行Xshell5来生成密钥。如图: 一直如图操作: 密码自行决定是否设置,推荐默认。 到这里,务必
刺_猬
2018/06/21
3.1K0
centos su sudo wheel
为加强系统账户安全性,对系统及账户权限进行加固。修改ssh 服务端口号,禁止root账户远程登录,普通用户使用秘钥文件登录服务器后使用sudo 赋予完全的 root 权限。
Kevin song
2020/09/22
1.4K0
CVM LINUX SSH配置最佳实践
随着云上用户的增多,安全事件层出不穷,根据分析大部分入侵是由于安全组对外开放敏感端口,且敏感端口存在弱口令造成。本次将介绍SSH服务配置的最佳实践。
熊昪
2020/10/30
3.3K0
001.SSH配置文件
GGSSAP认证默认已开启,经过dns进行认证,尝试将主机IP和域名进行解析。若管理主机无对外域名,建议在管理主机上在客户端的配置文件将此认证关闭。
木二
2019/07/26
7830
Ubuntu环境下SSH的安装及使用
SSH是指Secure Shell,是一种安全的传输协议,Ubuntu客户端可以通过SSH访问远程服务器 。SSH的简介和工作机制可参看上篇文章 SSH简介及工作机制。
小黑鸭
2020/11/24
30.8K2
如何在 CentOS 8 上设置 SSH 密钥
安全 Shell (SSH) 是一个被设计用来在客户端和服务器之间进行安全连接的加密网络协议。
雪梦科技
2020/05/11
3.3K0
如何在 CentOS 8 上设置 SSH 密钥
配置ssh使用key登录
昨天我们讲了如何修改或者添加ssh登录的默认端口,为了进一步提高服务器的安全性,我们还可以配置服务器只允许使用公私钥来登录,公私钥是一种非对称加密的算法,有关于公私钥的详细信息和具体实现,大家可以查看一下相关资料,这里不再详细介绍。
ianzhi
2019/07/31
2K0
配置ssh使用key登录
相关推荐
SSH攻击问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验