如何提高Ubuntu 18.04系统的SSH安全性?

SSH服务是云服务器的主要访问点,同时也是最容易受到攻击的服务之一。本指南将通过不同的技巧和技术帮助提高服务的安全性。

更改端口

监听SSH连接的默认端口是22,更改此设置将允许将服务云化,并增加连接的安全性。
为了避免干扰机器上的其他现有服务,使用netstat命令检查哪些端口正在使用:

$ netstat -n -l

如何提高Ubuntu 18.04系统的SSH安全性?
通过传递给netstat的-l参数,强制它处于LISTEN状态的连接。本例中使用的端口如下:

  • 3306 MySQL service
  • 22 SSH
  • 80 Apache2 / HTTP
  • 53 DNS

若更改端口,需编辑/ etc / ssh / sshd_config中的配置文件,取消注释Port指令:

#Port 22

然后设置一个新的值(建议选值更大的),以防止它被任何端口自动扫描软件(例如2200、5574、1022)截获:

Port 5574

要申请更改,请通过以下方式上传:

$ sudo service sshd reload

之后,再通过使用reload来纠正任何错误并检查对另一个SSH客户机的任何新访问,从而保持连接活动。应用更改之后,指定新端口连接到服务器。例如,如果您从命令行使用SSH客户端:

$ ssh root@ -p 5574

身份验证

由于其安全性,通过RSA密钥访问是基于密码登录的另一种选择。在这种类型的身份验证中,客户端生成一个私钥和安装在服务器机器上的相关公钥,以明确地对客户端进行身份验证。
如果需要安装公钥,客户端首先需要使用ssh-keygen命令生成密钥对:

$ ssh-keygen
Generating public/private rsa key pair.
Enter file where to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.

在继续生成之前,ssh-keygen要求一个可用于身份验证的可选密码短语。为了方便访问,我们将这一部分留空。
完成后,软件将在指定的文件中保存两个文件

  • id_rsa: 客户端的私钥,不可与他人共享。
  • id_rsa.pub: 可共享的公钥。

要准备服务器环境,在用户文件夹内的.ssh文件夹中创建一个名为authorized_keys的文件,用于登录:

$ sudo mkdir ~/.ssh
$ sudo touch ~/.ssh/authorized_keys
$ sudo chmod 600 ~/.ssh/authorized_keys

确保该文件具有如上所示的权限。
然后继续粘贴客户端机器之前准备的公钥:

$ sudo nano ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoTzd9RnqT0yioQG1klsLEK/VG9myo7CQ47aRXu7hnPit6Lgw5kAjC7vzNWYLTy2oIlsrVI7R/tvWmVNISGkWDp9U3fONbSLp+vgBKDzRUVAIqP/AIJ2THanyZxj2b8XU/4s2uzGoTLSR3ViX0JU6zTc+IkaBp1o3W3OolvO15E10/VYJCKN3TkxPsSSGE3QReXnCcnIZYAnrPf9f1DPP1Lo+VUCIzZ7IzcZajAWQ53hC71mTYNHkUgIlWxpRyEhnsRfmqEfUSFbTwpNEarv7vGlK686C4xVxlVfKbqlNa3/g2Vrae4ArVBM958JPZ6aa+7KDZfH5TDgPPtlFCIGkd root@testclient

保存文件并重新加载SSH服务:

$ sudo service sshd reload

此时访问服务器可能不需要任何密码:

$ ssh root@

如果一切正常,通过修改文件/ etc / ssh / sshd_config禁用从服务器机器的密码访问,使用以下参数:

ChallengeResponseAuthentication no
PasswordAuthentication no

请注意,您可以添加其他公钥,只需将它们保存在服务器计算机中以~ / .ssh / authorized_keys为末尾的文件。

可用时间限制

减少不必要的访问和攻击的一种策略是缩减SSH服务的可用时间。如果确定在某些时间(例如晚上11点到第二天早上8点)不需要使用服务器,可以设置一个自动时间表来停止连接端口。
建议使用名为iptables的默认防火墙,但是请谨记,根据其性质,iptables不保存输入的配置。
为加快保存和加载配置,可以使用iptables-persistent,它将重新加载系统启动时保存的配置。
继续安装:

$ sudo apt-get install iptables-persistent

如何提高Ubuntu 18.04系统的SSH安全性?
安装完成后,输入“chain”,阻止SSH服务:

$ sudo iptables -N chain-ssh
$ sudo iptables -A INPUT -p tcp --dport 22 -j chain-ssh

通过这种方式,所有指向端口22的连接(如果您的SSH服务使用另一个端口,请根据您的自行更改该值)将通过新创建的“chain- SSH”链。
用以下命令保存当前配置(将由iptables-persistent加载):

$ sudo iptables-save > /etc/iptables/rules.v4

然后通过修改crontab,创建一个时间时间表,用于在链上输入和删除规则,具体操作如下:

$ sudo crontab -e
# m h  dom mon dow   command
0 23   * * *   iptables -A chain-ssh -j DROP
0 8    * * *   iptables -F chain-ssh

如您所见,通过第一个操作添加在11.00 pm连接的DROP规则,而第二个操作在08.00 am清空链以恢复服务。
保存文件以使更改生效。

原创文章,作者:余初云,如若转载,请注明出处:https://blog.jidcy.com/jsjc/2717.html

Like (1)
Previous 2026年5月20日 下午12:02
Next 2026年5月21日

相关推荐

  • 网站打开速度越来越慢和主机有关系吗?

    网站上线运营一段时间后,页面加载越来越慢几乎是个绕不开的问题。 出现这种情况,很多站长的第一反应是去查代码、压图片、卸插件,或者觉得是最近网络不稳定。这些方向不能说没有道理,但常常…

    2026年4月13日
    0
  • 网络图片侵权被告?赔偿标准是多少

    为网络的开放特性与便利性,使得网络上非常容易出现图片侵权状况,大量图片版权拥有者在毫不知情的状态下被他人直接使用自己创作或拍摄的图片,当察觉自身权益遭到侵害时,无论对方是有意还是无…

    2026年6月4日
    0
  • 企业网站应选共享 IP 地址还是独立 IP 呢?

    网站搭建包括服务器配置、网页设计以及网站内容优化等环节,通常网站管理员会着重投入网站设计和内容优化方面,以提供更优质的用户体验。此外,在搭建服务器时还会遇到共享IP与独立IP的问题…

    2026年4月1日
    0
  • 一文读懂什么是DDoS高防IP?

    什么是DDoS高防IP? DDoS高防IP是网络安全厂商针对解决互联网服务器遭遇大流量DDoS攻击后造成服务不可用的状况,所推出的付费增值方案。企业可通过部署DDoS高防IP服务,…

    2026年6月1日
    0
  • 堡垒机与跳板机是什么意思?

    在规模较大的企业中担任过运维岗位的同行应该都有体会,企业内部运维管理混乱是极为普遍的状况。人员规模一旦扩大,就会产生多人共用同一个账号,或者一个人操作多个账号的情形,日积月累必然会…

    2026年5月29日
    0
  • DDoS分布式拒绝服务攻击种类

    网络新闻中总能频繁看到各类大型平台遭遇DDoS攻击的相关报道,这类攻击会直接造成网站宕机、页面瘫痪,用户无法正常浏览和使用平台内容。当下网络环境中,主流的DDoS攻击方式主要有以下…

    2026年5月27日
    0
  • 如何改变Linux云服务器的SSH端口

    SSH(Secure shell)是一种加密网络协议,用于安全连接远程服务器,可在主机与客户端之间以加密形式传输数据。 SSH 默认 TCP 端口为 22,修改默认端口,能够防范恶…

    2026年5月26日
    0
  • 什么是数据库审计?

    防火墙主要负责阻挡外部安全威胁,而数据库审计则侧重于管控数据库内部的隐患。面对潜在的安全威胁,搭建一套行之有效的信息安全审计体系,强化对数据库的管控,有效治理并缩减信息安全风险,是…

    2026年6月5日
    0
  • 什么是 SSH?理解 SSH 及其加密技术

    远程连接服务器这件事,在没有加密的年代风险极高。用户名、密码、每一条执行的命令,全部明文跑在网络上,同一局域网里的人抓个包就能看清楚。Telnet 和 Rlogin 就是那时候的主…

    2026年4月14日
    0
  • 什么是CISA证书?如何获得CISA认证?

    CISA(注册信息系统审计师,Certified Information Systems Auditor),自1978年起,由国际信息系统审计协会(ISACA)开始实施注册。目前,…

    2026年5月6日
    0