Orange的运维学习日记–18.Linux sshd安全实践

文章目录

  • Orange的运维学习日记--18.Linux sshd安全实践
    • 场景模拟
    • sshd配置
      • 需求:
      • 参数表格:
    • MOTD警告
    • 定期备份SSH密钥与配置
    • 登录防护:fail2ban
      • 测试与日志

场景模拟

你是某金融科技公司的Linux运维工程师,负责维护核心生产服务器集群。近期公司安全审计发现,SSH服务存在以下风险:

  1. 暴力破解攻击频繁(平均每天尝试1000+次)
  2. 部分服务器仍使用默认22端口
  3. 所有服务器未启用双因素认证
  4. 未限制 SSH访问源IP
  5. 部分服务器仍允许root直接登录

sshd配置

需求:

  • 将 SSH 默认端口 22 修改为 2222
  • 禁用 root 直接登录
  • 禁用密码认证,仅保留密钥认证
  • 禁止空口令的 SSH 密钥
  • 设置登录超时为 120
  • 禁用 DNS 反向解析

参数表格:

参数对应需求
Port2222修改默认端口
PermitRootLoginno禁用 root 直接登录
PasswordAuthenticationno禁用密码认证
PermitEmptyPasswordsno禁止空口令的密钥
LoginGraceTime120登录超时 120 秒
UseDNSno禁用 DNS 反向解析
sudo vim /etc/ssh/sshd_config
Port 2222
PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
LoginGraceTime 120
UseDNS no
sudo systemctl restart sshd

MOTD警告

sudo bash -c "echo '授权访问将被记录并追究法律责任' >> /etc/motd"

登录效果:

在这里插入图片描述


定期备份SSH密钥与配置

  1. 编写备份脚本
sudo vim /usr/local/bin/backup_ssh.sh

参考脚本1–未按用户分类

#!/bin/bash
TARGET_DIR=/secure_backups/ssh_$(date +%F)
mkdir -p "$TARGET_DIR"
cp /etc/ssh/sshd_config "$TARGET_DIR/"
cp -r /root/.ssh "$TARGET_DIR/"
find /home -maxdepth 2 -type d -name ".ssh" -exec cp -r {} "$TARGET_DIR/" \;

参考脚本2–按用户分别存储

#!/bin/bash# 备份根目录与当天日期
BACKUP_ROOT=/secure_backups/ssh_$(date +%F)
mkdir -p "$BACKUP_ROOT"# 1. 备份 SSH 配置文件
cp /etc/ssh/sshd_config "$BACKUP_ROOT/"# 2. 备份 root 用户的 .ssh
if [ -d /root/.ssh ]; thenmkdir -p "$BACKUP_ROOT/root"cp -a /root/.ssh "$BACKUP_ROOT/root/"
fi# 3. 按用户分别备份 /home 下的 .ssh
for homedir in /home/*; do[ -d "$homedir/.ssh" ] || continueuser=$(basename "$homedir")mkdir -p "$BACKUP_ROOT/$user"cp -a "$homedir/.ssh" "$BACKUP_ROOT/$user/"
done
  1. 配置权限
sudo chmod +x /usr/local/bin/backup_ssh.sh
  1. 测试脚本
sudo /usr/local/bin/backup_ssh.sh
  1. 设定定时任务
sudo bash -c "echo '0 0 * * * root /usr/local/bin/backup_ssh.sh' > /etc/cron.d/backup_ssh"
  • 第1个字段(分钟):0
  • 第2个字段(小时):0
  • 第3个字段(日):*(每天)
  • 第4个字段(月):*(每月)
  • 第5个字段(星期):*(每周)

效果:每天凌晨 00:00,系统以root身份执行/usr/local/bin/backup_ssh.sh


登录防护:fail2ban

安装并配置 fail2ban,自动屏蔽恶意的 SSH 登录尝试。

# 安装(CentOS/RHEL)
sudo yum install -y fail2ban# 或(Debian/Ubuntu)
sudo apt-get install -y fail2ban

/etc/fail2ban/jail.local 添加或修改以下内容:

[sshd]
enabled  = true
port     = 2222
filter   = sshd
logpath  = /var/log/secure
maxretry = 5
bantime  = 600
findtime = 600
  • enabled:启用 sshd 监控
  • port:与 SSHD 配置中一致
  • maxretry:最大失败尝试次数
  • bantime:封禁时长(秒)
  • findtime:统计失败窗口(秒)
# 启动并设置开机自启
sudo systemctl enable --now fail2ban# 查看 SSHD jail 状态
sudo fail2ban-client status sshd

测试与日志

  • 人为输入错误密码超过 maxretry,再观察 IP 是否被封
  • 日志位置:/var/log/fail2ban.log

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/91302.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/91302.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/91302.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

聚观早报 | 德赛电池自主研发主动安全AI电芯;华为首展线下昇腾384超节点;蔚来纯电小车萤火虫已交付一万辆

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。整理丨肖羽7月28日消息德赛电池自主研发主动安全AI电芯华为首展线下昇腾384超节点蔚来纯电小车萤火虫已交付一万辆京东已成立智能机器…

python可视化:按序号展示社团星级分布 - 热力图样式

目录 关键代码: 运行结果: 关键代码: # 4. 按序号展示社团星级分布 - 热力图样式 plt.subplot(2, 2, 4) # 创建星级映射为数值 star_mapping {五星:4, 四星:3, 三星:2, 星级入围:1} star_values df[答辩结果].map(star_mapping) plt.s…

智能家居平台服务端安装教程——东方仙盟部署

1. 准备工作 登录阿里云服务器:使用 SSH 工具(如 ssh 命令)登录到你的阿里云 Linux 服务器。确保服务器已安装并能正常运行,且网络连接正常。更新系统软件包:执行以下命令更新系统软件包到最新版本。 bash sudo apt …

360环视技术推荐的硬件平台:支持多摄像头与三屏异显的理想选择

在智能硬件不断升级的今天,360环视技术早已不只是豪华车型的专属。通过布置多路摄像头,并将其图像进行融合处理,360环视可以为系统提供车辆或设备周围的完整视野。 它不仅能够消除盲区,还能通过AI识别实现物体检测、避障判断、自动…

FFmpeg:因码流采集与封装不同步导致录制出来的MP4文件会出现黑屏、绿屏的问题

项目要求实时播放视频,并且需要支持播放中途可以录制视频。但是录制出来的文件会黑屏,过一段时间后正常显示。即:码流采集—>播放—>(一段时间后)录制MP4,黑屏出现的时间就在采集到录制之前。黑屏现象…

C 语言与 C++、Java、Python 等编程语言的区别

C 语言与 C、Java、Python 等编程语言在设计理念、特性和应用场景上存在显著差异,以下从核心区别、特性对比和适用场景三个维度详细解析:一、C 语言与 C 的核心区别C 是在 C 语言基础上发展而来(最初名为 “C with Classes”)&…

Apache Ignite 的分布式锁Distributed Locks的介绍

以下这段内容是关于 Apache Ignite 的分布式锁(Distributed Locks) 的介绍。这是一个非常重要的功能,用于在分布式系统中协调多个节点对共享资源的并发访问。 下面我们来一步步深入理解它。🎯 一、一句话理解:什么是 I…

第十二天:C++ 标准库函数分类总结

C 标准库函数分类总结 数学函数&#xff08;<cmath>&#xff09; 基本运算函数 abs(x)&#xff1a;返回整数或浮点数的绝对值。int a abs(-5); // 返回 5fabs(x)&#xff1a;返回浮点数的绝对值。double b fabs(-3.14); // 返回 3.14fmod(x, y)&#xff1a;计算 x 除以…

Unity Standard Shader 解析(四)之ForwardAdd(简化版)

一、ForwardAdd// Additive forward pass (one light per pass)Pass{Name "FORWARD_DELTA"Tags { "LightMode" "ForwardAdd" }Blend [_SrcBlend] OneFog { Color (0,0,0,0) } // in additive pass fog should be blackZWrite OffZTest LEqualC…

第十九周-文档数据库MongoDB、消息队列和微服务

1. 完成redis单机安装&#xff0c;哨兵模式安装&#xff0c;主从安装&#xff0c;集群安装单机安装#安装依赖包 [rootcentos8~]#yum -y install gcc make jemalloc-devel #如果支持systemd需要安装下面包 [rootubuntu2204 ~]#apt update && apt -y install make gcc li…

C++中sizeof运算符全面详解和代码示例

sizeof 是 C 中的一个编译时运算符&#xff0c;用于获取对象或类型所占的字节数&#xff08;以 size_t 返回&#xff09;。它是掌握底层内存模型、结构体对齐、数组大小计算等的重要工具。1. 基本语法 sizeof(type) // 获取类型的大小 sizeof expression // 获取表达式结果…

内容中台:在一个地方管理多渠道内容

在数字化竞争愈演愈烈的今天&#xff0c;企业官网、社交平台、移动应用、邮件营销等渠道已成为品牌触达用户的关键接口。内容仍是连接企业与客户的核心资产。然而&#xff0c;内容创作与分发的复杂性持续攀升&#xff0c;多平台运营面临重复维护、更新不一致、资源冗余等诸多挑…

【刷题】东方博宜oj 1307 - 数的计数

样例输入&#xff1a; 6输出&#xff1a; 16 26 126 36 136原版是直接输出总数量&#xff0c;但我修改了一些&#xff0c;输出所有的新数。 #include <iostream> #include <vector> #include <string> using namespace std; //int c; void g(int num, string…

阿里云AI代码助手通义灵码开发指导

与阿里云一起轻松实现数智化让算力成为公共服务&#xff1a;用大规模的通用计算&#xff0c;帮助客户做从前不能做的事情&#xff0c;做从前做不到的规模。让数据成为生产资料&#xff1a;用数据的实时在线&#xff0c;帮助客户以数据为中心改变生产生活方式创造新的价值。智能…

设计模式(二十三)行为型:模板方法模式详解

设计模式&#xff08;二十三&#xff09;行为型&#xff1a;模板方法模式详解模板方法模式&#xff08;Template Method Pattern&#xff09;是 GoF 23 种设计模式中的行为型模式之一&#xff0c;其核心价值在于定义一个操作中的算法骨架&#xff0c;而将一些步骤延迟到子类中实…

Postgresql 查询使用正则

今天接到任务&#xff0c;要从数据库中查询数据&#xff0c;对于postgresql 我并不熟悉&#xff0c;问了百度&#xff0c;问了通义千问。发现Postgresql 在写query sql 的时候&#xff0c;可以使用正则匹配&#xff0c;不单是使用like 这种关键字。我像发现了新大陆一样的兴奋。…

【WRF-Chem Emissions教程第八期】转换实用程序

转换实用程序 8.1 将中间二进制文件转换为 WRF-Chem 数据文件 文件命名规范与风格 8.2 Binary data file format(中间二进制排放数据文件的格式和结构) FORTRAN 示例程序说明 8.3 Building the WRF-Chemistry emissions conversion code 编译步骤 验证编译结果 8.4 Namelist …

Qt Ribbon效果界面

实现效果&#xff1a;头文件&#xff1a;#pragma once #include <QMdiArea> #include <QMdiSubWindow> #include <QMainWindow> #include "ui_MainFrame1.h" #include "DockManager.h" #include "DockAreaWidget.h"class Main…

如何修改 MySQL 8.0 的密码,和忘记密码时如何修改

要修改 MySQL 8.0 的密码&#xff0c;可以通过以下几种方法实现&#xff1a;方法 1&#xff1a;使用 ALTER USER 命令&#xff08;推荐&#xff09;这是 MySQL 8.0 推荐的修改密码方式&#xff1a;-- 修改当前登录用户的密码 ALTER USER USER() IDENTIFIED BY 新密码;-- 修改指…

图像处理控件Aspose.Imaging教程:使用 C# 编程将 CMX 转换为 PNG

PNG图像文件格式是广泛使用的图像格式之一。这种图像文件格式提供了增强的共享和显示功能。另一方面&#xff0c;CMX也是 Corel 应用程序主要使用的图像文件格式。然而&#xff0c;将 CMX 转换为 PNG 可以帮助用户在网络上查看和共享文件。因此&#xff0c;在本指南中&#xff…