在 Linux 上保护 SSH 服务器连接的15种措施

在 Linux 上保护 SSH 服务器连接的15种措施

SSH(Secure Shell)是一种广泛使用的协议,用于安全地访问 Linux 服务器。尽管 SSH 提供了一定的安全性,但不安全的默认配置可能会导致各种安全风险,特别是在开放的环境中。为了保护 SSH 服务器,以下是几种有效的安全措施。

1. 禁用 Root 用户登录

禁用 root 用户的 SSH 访问是增强安全性的基本步骤。攻击者通常会首先尝试破解 root 密码,因此创建一个具有管理权限的新用户是明智之举。

操作步骤:

  1. 创建一个新用户并赋予其 sudo 权限:

    sudo useradd -m exampleroot
    sudo passwd exampleroot
    sudo usermod -aG sudo exampleroot
    
  2. 修改 SSH 配置文件 /etc/ssh/sshd_config,添加以下内容:

    PermitRootLogin no
    AllowUsers exampleroot
    
  3. 重启 SSH 服务:

    sudo systemctl restart sshd
    

2. 更改默认端口

默认的 SSH 连接端口是 22,攻击者常常会针对这个端口进行扫描。通过更改 SSH 的端口号,可以降低受到攻击的风险。

操作步骤:

  1. 打开 /etc/ssh/sshd_config 文件,找到并更改端口号:

    Port 22099
    
  2. 重启 SSH 服务以应用更改:

    sudo systemctl restart sshd
    
  3. 确保防火墙允许新的端口号通过。

3. 禁止空密码用户访问

空密码的用户账户可能会被攻击者利用。为了防止这种情况,可以在配置文件中禁止空密码登录。

操作步骤:

  1. /etc/ssh/sshd_config 中添加以下行:

    PermitEmptyPasswords no
    

4. 限制登录尝试次数

默认情况下,SSH 允许多次输入密码。如果攻击者尝试暴力破解,限制登录尝试次数将有效防止这种攻击。

操作步骤:

  1. 修改 /etc/ssh/sshd_config 文件,添加以下行:

    MaxAuthTries 3
    

5. 使用 SSH 版本 2

SSH 的第二个版本比第一个版本更安全。确保服务器只接受 SSH 版本 2 的连接。

操作步骤:

  1. /etc/ssh/sshd_config 文件中添加以下行:

    Protocol 2
    

6. 关闭 TCP 端口转发和 X11 转发

关闭 TCP 端口转发和 X11 转发可以防止攻击者利用 SSH 连接访问其他系统。

操作步骤:

  1. /etc/ssh/sshd_config 文件中添加以下行:

    AllowTcpForwarding no
    X11Forwarding no
    

7. 使用 SSH 密钥连接

使用 SSH 密钥而不是密码连接是提高安全性的有效方式。SSH 密钥包括公钥和私钥,公钥存储在服务器上,私钥存储在客户端。

操作步骤:

  1. 生成 SSH 密钥:

    ssh-keygen
    
  2. 将公钥上传到服务器:

    ssh-copy-id exampleroot@your_server_ip
    
  3. /etc/ssh/sshd_config 文件中禁用密码认证:

    PasswordAuthentication no
    

8. 限制 SSH 连接的 IP 地址

通过限制特定 IP 地址的访问,可以进一步提高安全性。可以在 /etc/hosts.allow 文件中配置允许和拒绝的 IP 地址。

操作步骤:

  1. 编辑 /etc/hosts.allow 文件,添加允许的 IP 地址:

    sshd: 192.168.1.0/255.255.255.0
    
  2. 编辑 /etc/hosts.deny 文件,拒绝所有其他 IP 地址:

    sshd: ALL
    

9. 使用防火墙

使用防火墙(如 iptablesufw)可以帮助限制对 SSH 的访问。可以设置规则,仅允许特定 IP 地址或 IP 范围访问 SSH 服务。

操作步骤:

  • 使用 ufw(简单易用的防火墙):

    sudo ufw allow from 192.168.1.0/24 to any port 22099
    sudo ufw enable
    
  • 使用 iptables

    sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22099 -j ACCEPT
    sudo iptables -A INPUT -p tcp --dport 22099 -j DROP
    

10. 监控登录尝试

使用工具(如 fail2ban)监控 SSH 登录尝试,可以在检测到多次失败尝试后自动阻止该 IP 地址。

操作步骤:

  1. 安装 fail2ban

    sudo apt-get install fail2ban
    
  2. 配置 /etc/fail2ban/jail.local,启用 SSH 监控:

    [sshd]
    enabled = true
    maxretry = 3
    bantime = 600
    

11. 使用多因素认证 (MFA)

启用多因素认证增加了一层安全性,即使密码被泄露,也难以通过 SSH 登录。

操作步骤:

  1. 安装 libpam-google-authenticator

    sudo apt-get install libpam-google-authenticator
    
  2. 在用户目录中运行 google-authenticator 命令,根据提示进行设置。

  3. 修改 /etc/pam.d/sshd 文件,添加以下行:

    auth required pam_google_authenticator.so
    
  4. /etc/ssh/sshd_config 中确保 ChallengeResponseAuthentication 设置为 yes

    ChallengeResponseAuthentication yes
    

12. 定期审计和更新

定期检查 SSH 配置文件,审计用户账户和权限,确保没有未使用的账户或过期的密钥。同时,定期更新系统和 SSH 软件,以修复已知的安全漏洞。

操作步骤:

  • 使用以下命令更新系统:

    sudo apt-get update
    sudo apt-get upgrade
    

13. 禁用 IPv6(如果不需要)

如果不使用 IPv6,可以考虑禁用它,以减少潜在的攻击面。

操作步骤:

  1. 编辑 /etc/sysctl.conf 文件,添加以下行:

    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1
    
  2. 应用更改:

    sudo sysctl -p
    

14. 使用 SSH 代理

SSH 代理可以存储你的密钥并在需要时自动使用,提高安全性和便利性。

操作步骤:

  1. 启动 SSH 代理:

    eval "$(ssh-agent -s)"
    
  2. 添加私钥:

    ssh-add ~/.ssh/id_rsa
    

15. 设置登录通知

使用邮件或其他通知系统,当有新的 SSH 登录时接收通知,以便及时发现可疑活动。

操作步骤:

  1. /etc/ssh/sshd_config 文件中启用 PermitRootLogin no 和其他配置。
  2. 使用 auditdsyslog 监控登录事件。

结论

保护 SSH 服务器连接的安全性是每个系统管理员的基本职责。通过实施上述措施,可以显著降低服务器被攻击的风险,确保数据的安全性。定期审查和更新这些配置将有助于维护安全环境。

通过结合上述多种措施,可以显著提高 SSH 服务器的安全性,降低遭受攻击的风险。始终保持警惕,并定期检查和更新安全策略,以确保系统的安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/899432.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Springboot基于微信小程序的同城优惠软件的开发-计算机毕设 附源码24287

Springboot基于微信小程序的同城优惠软件的开发 摘要 随着互联网技术的发展,网络购物越来越受到大家的欢迎。电子商务这一概念大家都不在陌生。通过互联网进行的商品贸易范围越来越广泛,从经典的电子商品、到化妆品、书籍等,发展到小吃商品&a…

PCL学习——点云基础

点云基础 一、什么是三维点云二、获取三维点云的几种方式三、主要挑战四、什么是PCL 一、什么是三维点云 三维点云(3D Point Cloud)是一种用于表示三维空间中对象或场景的数据结构。在最基础的形式中,它是一个包含多个三维坐标点&#xff08…

SpringBoot民宿预定信息管理系统-计算机毕业设计源码89828

目 录 摘要 1 绪论 1.1 选题背景与意义 1.2研究背景 1.3论文结构与章节安排 2 民宿预定信息管理系统系统分析 2.1 可行性分析 2.1.1 技术可行性分析 2.1.2 经济可行性分析 2.1.3 法律可行性分析 2.2 系统功能分析 2.2.1 功能性分析 2.2.2 非功能性分…

Pytest日志收集器配置

前言 在pytest框架中,日志记录(logging)是一个强大的功能,它允许我们在测试期间记录信息、警告、错误等,从而帮助调试和监控测试进度。 pytest与Python标准库中的logging模块完美集成,因此你可以很容易地在…

Spring源码解析(35)之Spring全体系源码流程图

一、前言 画了一个spring全体系的流程图,spring容器创建过程,spring生命周期过程,AOP过程,Spring事务执行过程。 二、Spring体系源码图

【1024程序员节】之C++系列完结篇:Web编程

文章目录 一、Web编程1. 使用C标准库和第三方库2. 使用CWeb框架3. 使用C与JavaScript的集成4. 数据库交互5. 部署和运维 二、CppCMS框架构建Web应用1. 安装 CppCMS:2. 创建项目目录和文件3. 编写源代码4. 编译和运行5. 访问 Web 应用 三、HTTP介绍1. 请求头部字段&a…

Vue项目的创建

安装Vue工具 Vue CLI Vue CLI Vue.js 开发的标准工具,Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统 npm install -g vue/cli安装之后,你就可以在命令行中访问 vue 命令。你可以通过简单运行 vue,看看是否展示出了一份所有可用命令的…

qt QApplication详解

一、概述 QApplication是Qt应用程序的基础类,负责设置和管理应用的环境。它的主要功能包括:初始化应用程序、管理事件循环、处理命令行参数、提供全局设置(如样式和调色板)以及创建和管理主窗口。通常在main函数中创建QApplicati…

Netty简单应用

1.服务端构建 接收客户端请求,打印请求消息;消息采用内置String作为编码与解码器;开启信息输入监听线程,发送消息至客户端; 1.1 服务端消息处理类 import io.netty.channel.Channel; import io.netty.channel.Chann…

React实现购物车功能

今日学习React的useReducer,实现了一个购物车功能 文章目录 目录 效果展示 逻辑代码 CSS代码 效果展示 逻辑代码 import {useReducer} from "react"; import ./index.css; import { message} from antd;export function ShoppingCount(){// 初始化购…

去哪儿旅行携手 HarmonyOS SDK | 告别繁琐,常用信息秒级填充

背景 去哪儿旅行作为行业内领先的一站式在线旅游平台,多年来在日益加剧的市场竞争中积极寻求创新,凭借其优质的服务深受消费者青睐。2024年,去哪儿旅行适配HarmonyOS NEXT版本, 升级用户服务体验。 当前,去哪儿旅行应…

HTML+JavaScript 贪吃蛇游戏实现与详解

在网页开发的领域中,利用 HTML 和 JavaScript 能够创造出各种引人入胜的互动游戏。其中,贪吃蛇作为一款经典之作,以其简单易玩的特性和紧张刺激的挑战,一直深受玩家的喜爱。本文将详细阐述如何运用 HTML 和 JavaScript 来打造一个…

OPPO携手比亚迪共同探索手机与汽车互融新时代

10月23日,OPPO与比亚迪宣布签订战略合作协议,双方将共同推进手机与汽车的互融合作,这一合作也标志着两大行业巨头在技术创新和产业融合上迈出了重要一步,为手机与汽车的深度融合探索新的可能。 OPPO创始人兼首席执行官陈明永、OP…

鸿蒙网络编程系列3-TCP客户端通讯示例

1. TCP简介 TCP协议是传输层最重要的协议,提供了可靠、有序的数据传输,是多个广泛使用的表示层协议的运行基础,相对于UDP来说,TCP需要经过三次握手后才能建立连接,建立连接后才能进行数据传输,所以效率差了…

【PDF文件】默认被某种软件打开,如何进行修改?

当有时下载某种软件后,电脑中的PDF文件就默认由该种软件打开,每次需要右键选择打开方式才能选择需要的其他软件打开。如下图所示。 修改方法: (1)点击电脑的“设置”,选择应用 (2)…

Java一站式校园社区外卖系统小程序源码

一站式校园社区外卖系统,让校园生活更便捷! 🏫 开篇:校园生活的“新宠儿” 嘿,小伙伴们!今天要和大家分享一个超级实用的校园生活神器——“一站式校园社区外卖系统”!在这个快节奏的时代&…

一个开源可私有化部署的没有任何广告的网易云

优点 ✅ 使用 Vue.js 全家桶开发🔴 网易云账号登录(扫码/手机/邮箱登录)📺 支持 MV 播放📃 支持歌词显示📻 支持私人 FM / 每日推荐歌曲🚫🤝 无任何社交功能🌎️ 海外用…

歌手如何建立抖音百科?塑造个人形象!

在抖音这个充满无限可能的舞台上,明星们以独特的魅力吸引着亿万粉丝的目光。而抖音百科,作为明星们展示自我、塑造形象的又一重要窗口,正逐渐成为连接明星与粉丝的桥梁。 创建明星人物抖音百科,不仅是对明星过往成就的总结与回顾&…

WRB Hidden Gap,WRB隐藏缺口,MetaTrader 免费公式!(指标教程)

WRB Hidden Gap MetaTrader 指标用于检测和标记宽范围的柱体(非常长的柱体)或宽范围的烛身(具有非常长实体的阴阳烛)。此指标可以识别WRB中的隐藏跳空,并区分显示已填补和未填补的隐藏跳空,方便用户一眼识别…

uniapp移动端优惠券! 附源码!!!!

本文为常见的移动端uniapp优惠券,共有6种优惠券样式(参考了常见的优惠券),文本内容仅为示例,您可在此基础上调整为你想要的文本 预览效果 通过模拟数据,实现点击使用优惠券让其变为灰色的效果(模…