type
Post
status
Published
date
Dec 15, 2024
slug
summary
服务器SSH配置优化和Fail2Ban防护
tags
工具
安全
category
服务器
icon
password
AI总结
本文详细阐述了服务器安全加固的两个关键步骤:SSH配置优化和Fail2Ban防护。文章首先指导读者如何更改SSH默认端口、禁止root直接登录并创建新用户,然后详细介绍了Fail2Ban的安装与配置。通过修改SSH配置和部署Fail2Ban,可以显著提高服务器的安全性,有效防范暴力破解和未授权访问风险。
English Version
This article provides a comprehensive guide to enhancing server security through two critical steps: SSH configuration optimization and Fail2Ban protection. The guide walks readers through changing the default SSH port, disabling direct root login, creating new users, and then provides detailed instructions for installing and configuring Fail2Ban. By modifying SSH settings and deploying Fail2Ban, server administrators can significantly improve security, effectively preventing brute-force attacks and unauthorized access.
一,更改SSH配置
1,前提设置(可选)
2,添加新的SSH登录用户
3,配置防火墙放行端口
以UFW防火墙为例
4,更改SSH配置
5,重启SSH服务并测试连接
二,配置Fail2Ban
1,安装fai2ban
2,创建并修改本地配置文件
编辑SSH配置文件:
找到并确保以下参数设置如下:
Fail2Ban 仅SSH配置(旧配置)
3,保存并检测配置文件
4,fail2ban其他命令
基础状态查询
封禁和解封管理
服务控制
配置查询
动态配置修改
日志管理
数据库管理
配置测试和调试
常用命令组合
注意事项
- 权限要求:大多数命令需要
sudo权限
- 配置持久化:通过
fail2ban-client set修改的配置是临时的,重启后会失效。永久修改需要编辑配置文件
- 重载 vs 重启:
reload- 重新读取配置,不会解封已封禁的 IPrestart- 完全重启,会清空内存中的数据,但数据库中的封禁记录会保留
- 时间格式:支持
s(秒),m(分),h(小时),d(天),例如:10m,2h,7d
5,其他配置
更多过滤器配置可以参考下述链接:
三,SSH仅密钥登录
1,生成SSH密钥对
在本地电脑上打开终端(Linux/macOS)或PowerShell(Windows),执行以下命令:
在这个过程中,系统会提示你:
- 选择保存位置:直接按回车使用默认路径(如
~/.ssh/id_rsa)即可
- 设置密钥密码:设置一个密码可以为私钥再加一把“锁”,更安全,但也可以直接回车留空
命令执行成功后,会在保存路径下得到两个文件:
id_rsa(私钥) 和 id_rsa.pub(公钥)。私钥必须妥善保管,不能泄露给他人。2,上传公钥到VPS
- 在本地显示公钥内容:
cat ~/.ssh/id_rsa.pub。
- 复制输出的全部文本。
- 登录VPS,确保
~/.ssh目录存在(不存在则用mkdir -p ~/.ssh创建)
- 编辑(或创建)
authorized_keys文件:vim ~/.ssh/authorized_keys。
- 将复制的内容粘贴到文件末尾,保存退出。
如果已存在其他公钥,可以追加生成的公钥并保留现有其他密钥
authorized_keys - 最重要的文件- 作用:这个文件包含所有被允许通过SSH登录到当前用户账户的公钥
- 位置:
~/.ssh/authorized_keys
- 格式:每行一个公钥
- 权限:必须是
600(-rw-------)
id_ed25519 和 id_ed25519.pub - 客户端密钥对- 作用:当这台VPS作为SSH客户端去连接其他服务器时使用的密钥对
- 生成方式:可能是VPS提供商或系统初始化时自动生成的
- 影响:删除它们不会影响你登录这台VPS,只会影响此VPS连接其他服务器
- 如果想进一步确保禁止root用户登录,可以在authorized_keys中写入下述内容
这样即使其他用户拥有正确的密码或密钥,以root身份成功登录后也会被强制退出。
3,配置SSH服务
编辑SSH配置文件:
找到并确保以下参数设置如下:
5,测试并重启SSH
在重启SSH服务之前,开启一个新的终端窗口或标签页,再次连接到你的VPS。
如果新配置导致无法连接,你还可以通过这个窗口恢复。
在新的终端里,尝试使用私钥登录,验证配置是否正确:
如果密钥登录成功,那么回到第一个终端,重启SSH服务以使新配置生效
再开启一个新终端,测试仅使用密钥是否能正常登录。同时,确认输入密码已经无法登录。
四,其他相关教程
1,SSH蜜罐endlessh
Endlessh 是一个 SSH 陷阱工具,它会极其缓慢地发送一串无限且随机的 SSH 欢迎横幅,使 SSH 客户端长时间卡住,持续数小时甚至数天,而无法骚扰到真实的服务器。
项目地址:
endlessh
skeeto • Updated Jan 10, 2026
此处使用Docker部署endlessh,由于它没有提供docker镜像,因此使用
shizunge/endlessh-go 镜像进行搭建,它相较于前者使用GO语言重写项目,并有更丰富的数据观察功能。容器链接:shizunge/endlessh-go
2,SSH配置TOTP
教程链接:为服务器SSH登录增加2FA验证