Linux SSHD服务安装与维护详解(二)——SSHD调优和fail2ban联动

本文涉及的产品
云防火墙,500元 1000GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: Linux SSHD服务安装与维护详解(二)——SSHD调优和fail2ban联动

今天开始给大家介绍Linux 服务运维,本文主要内容是SSHD服务的安装与维护。

一、SSHD配置文件与调优
SSHD服务有两个常用配置文件,分别是/etc/ssh/ssh_config和/etc/ssh/sshd_config,其中前一个配置文件是SSHD服务的客户端的配置文件,后面一个配置文件是SSHD服务的服务端的配置文件。为了提升远程链接的安全性,我们通常对SSHD服务进行以下X个方面的调优:
1、修改SSH服务端口号
有时,我们为了增强系统服务的安全性,会改动一些固定服务的监听端口,SSH服务的默认端口是22,但是我们有时会手动修改SSH服务的监听端口。
进入配置文件后,找到端口port部分,在默认情况下,port是由#注释的,在默认情况下会使用22端口,我们可以在配置文件中,直接添加一行:

Port 200
1
修改完成后,重启服务,可以看到监听端口改变。

在修改默认端口号时 ,要注意:
①有时修改后发现SSHD服务重启失败,此时可能是防火墙的原因,关闭防火墙功能即可。
②如果我们是采用ssh链接Linux服务器后修改ssh服务的端口号,则原理上服务重启后ssh链接会断开,但是Linux有一套机制,使得当前的ssh链接仍然存在。
2、修改LoginGraceTime
在默认情况下,使用者在尝试链接ssh链接后,会进入输入密码的界面,在没有修改LoginGraceTime参数时,该页面会一直存在,也就是说,ssh客户端和服务器之间的链接会长期存在,而这样则会耗费服务器资源,也会带来一些安全问题,在设置LoginGraceTime参数后,就可以使得密码输入界面在长时间没有成功连入后,自动断开。
在配置文件中,LoginGraceTime参数也是用#过滤的,在默认情况下不生效,我们可以删除#,使得该参数生效。
3、修改PermitRootLogin
该参数如果设置为yes,则表示允许以root身份通过ssh登录,如果设置为no,则表示不允许以root身份登录。在默认情况下,该参数也是用#过滤,我们可以手工配置。如果该参数设置为no,尽管不允许以root身份直接登入,但是可以先以普通用户身份登入,然后通过sudo提权执行root权限,或者是su直接切换成root。这两种操作都是被允许的。
4、修改PasswordAuthentication
ssh的登录支持两种方式,一种是传统的基于口令的登录方式,另一种是通过密钥对来认证身份,这种方式需要提前在客户端和服务端之间同步传递密钥信息,但是相比于密码的方式,比较安全。PasswordAuthentication参数如果设置为yes,则表示上述两种方式都可以登入,如果设置为no,则表示只允许密钥认证的方式登入。在默认情况下,sshd服务的PasswordAuthentication参数为yes。
5、设置PrintMold
该参数在默认情况下设置为yes,表示在ssh链接成功后会自动向客户端发送发送/etc/motd文件中的内容,该文件中的内容可以由管理员自己设定,可以是对远程ssh用户的提醒等信息。如果该参数设置为yes,则上述功能会关闭。
打开该功能并写入motd文件内容后,效果如下所示:

6、修改UseDNS
在默认情况下,SSHD服务为了保证安全性,需要判断客户端来源是否合法,而判断的方式就是通过连入的客户端的IP地址反查客户端的域名,这虽然可以带来一定的安全性保障,但是由于DNS反查需要时间,因此这会拖慢SSH服务的链接时间。在默认情况下,该参数被设置为yes,表示需要进行DNS反查寻,我们可以手动修改为no,表示不进行DNS反查寻。

二、fail2ban的安装与使用
(一)fail2ban安装
尽管SSH服务有密码保护,但是如果存在一个客户端暴力破解的情况,其不仅会增大密码暴露的风险,而且还会导致系统的负载很高。fail2ban是一款非常好用的SSH服务的管理软件,它可以监控SSH服务的日志,当检测到某一客户端暴力破解(多次输入密码错误)后,可以与SSH自带的iptables防火墙联动,将该客户端的IP地址加入到防火墙的禁止列表中。
fail2ban官方网站:
http://www.fail2ban.org
在跳转到下载页面后,界面如下所示:

我们就可以在这里直接下载fail2ban了。
fail2ban软件的安装与运行需要python环境,在下载的软件按照包里有fail2ban软件安装需要的python版本,在Linux中如果python版本符合要求,就可以安装fail2ban了,安装命令:

python setup.py install
1
安装过程非常迅速,在安装完成后,可以使用echo $?查看安装是否成功。

(二)fail2ban配置文件与启动文件
在安装完成后,应该会生成/etc/fail2ban目录,里面存放了fail2ban的配置文件,其中比较重要的有以下四个:
1、/etc/fail2ban/action.d/
该文件夹是动作文件夹,内含默认文件,包括iptables、mail等动作配置
2、/etc/fail2ban/fial2ban.conf
fial2ban的配置文件,定义了fail2ban的日志级别、进程、日志位置、socket文件位置等内容
3、/etc/fail2ban/filter.d
该文件夹是条件文件夹,内含默认文件,包括过滤日志等关键内容设置
4、/etc/fail2ban/jail.conf
该配置文件是fail2ban的主要配置文件,采取模块化的方式定义了fial2ban的服务动作及动作阈值
所谓模块化配置,就是在配置文件中存在一个一个的模块,包括全局模块和各种局部模块,其中局部模块的优先级要高于全局模块。
fial2ban的启动文件在file文件夹下,名字是redhat-initd,可以将该文件复制到/etc/init.d/目录下,以便于后期启动。

(三)fail2ban实战
下面,我们使用fail2ban设置对ssh暴力破解密码的防护。主要思想就是设定ssh服务单位时间内的密码验证次数(阈值),并设置账户锁定时间。fail2ban对SSH日志的匹配和iptables的联动都已经在action.d文件夹内配置完毕,我们需要做的就是修改上述的参数,主要修改配置的配置文件是jail.conf。
在该文件中,[DEFAULT]模块下,比较重要的参数如下:
ignoreip
bantime
findtime
maxretry
ignoreip表示可以忽略掉的IP,通常是设置成管理员常用的IP地址,其他三个参数表示在findtime时间内,如果出错次数超过maxretry,则禁止该IP登录bantime的时间。
之后,我们可以自行添加一个模块,模块名可以自定义,我这里使用的是iptables,内容如下:

enabled=true
filter=sshd
action=iptables
logpath=/etc/log/secure
1
2
3
4
上述第一个参数表示该模块启用,第二个参数表示过过滤器是sshd,第三个参数时表示动作为与iptables联动,第四个参数表示查找的ssh服务日志。
之后,我们故意尝试三次输错密码,发现当再次尝试ssh链接时,被直接拒绝,如下所示:

我们可以执行命令:

iptables -F
1
查看iptables的详细信息,结果发现出现了一条f2b的链,拒绝本机IP地址的链接,如下所示:

等待一段时间后,该链内容被清空,链接正常。
如果我们想清除该设置,则可以将ssh日志(/var/log/secure)清空,或者将iptables链信息清空,命令为iptables -F。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_40228200/article/details/121025027

目录
相关文章
|
1月前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
44 5
linux系统服务二!
|
1月前
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
44 3
linux系统服务!!!
|
26天前
|
存储 监控 安全
Linux内核调优的艺术:从基础到高级###
本文深入探讨了Linux操作系统的心脏——内核的调优方法。文章首先概述了Linux内核的基本结构与工作原理,随后详细阐述了内核调优的重要性及基本原则。通过具体的参数调整示例(如sysctl、/proc/sys目录中的设置),文章展示了如何根据实际应用场景优化系统性能,包括提升CPU利用率、内存管理效率以及I/O性能等关键方面。最后,介绍了一些高级工具和技术,如perf、eBPF和SystemTap,用于更深层次的性能分析和问题定位。本文旨在为系统管理员和高级用户提供实用的内核调优策略,以最大化Linux系统的效率和稳定性。 ###
|
27天前
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
38 5
|
1月前
|
Linux 数据库
Linux服务如何实现服务器重启后的服务延迟自启动?
【10月更文挑战第25天】Linux服务如何实现服务器重启后的服务延迟自启动?
199 3
|
1月前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
93 3
|
24天前
|
存储 缓存 Linux
【Linux】另一种基于rpm安装yum的方式
通过本文的方法,您可以在离线环境中使用RPM包安装YUM并进行必要的配置。这种方法适用于无法直接访问互联网的服务器或需要严格控制软件源的环境。通过配置本地YUM仓库,确保了软件包的安装和更新可以顺利进行。希望本文能够为您在特定环境中部署YUM提供实用的指导。
122 0
|
29天前
|
关系型数据库 MySQL Linux
Linux-安装Mariadb
本文介绍了在 Alibaba Cloud Linux 系统上安装和配置 MariaDB 10.5 的步骤。包括下载安装、初始化数据库、启动服务、处理启动失败的常见问题(如权限问题),以及如何连接数据库、设置密码和允许外部连接。通过这些步骤,您可以顺利完成 MariaDB 的安装和基本配置。
42 0
|
22天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
131 6
|
23天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
64 3