Linux服务器总是被暴力破解,用fail2ban来加强防护(用法详解)

简介: Linux服务器总是被暴力破解,用fail2ban来加强防护(用法详解)

背景


在云计算时代大力发展的今天,不少企业纷纷将自家的业务迁到云端,不仅如此,个人用户也可以买到非常便宜的ECS(Elastic Compute Service 弹性计算服务)或VPS(Virtual Private Server 虚拟专用服务器),后者也被亲切的称为"小鸡",特别是指那种128M256M的小内存VPS,使得人人上云的成本越来越小。

举个例子,近期的双十一,船长也是白嫖到一台一年的国内轻量云服务器,不仅仅没花钱甚至还赚了,就问你敢不敢信?!比如某国内的云厂商的活动,新用户一年才60元,相当于60块租了一年云端的电脑,妥妥的白菜价!


image.png


言归正传,如果把上云称为搬家,VPS(或其它云服务器的称呼)就是它的家,我们手里的ssh密钥或登录凭证就是打开这扇门的钥匙。有家自然就有盗贼惦记,原理就是不断的猜测你服务器的密码,直到猜对为止,对此使用以下方法来加强安全。如果确实想要保护服务,请将服务配置为基于公/私钥的身份验证方式。


复现


猜测密码的过程可能是你的ssh密码,也有可能是你的邮箱密码。我这里以常用的ssh演示。

# 实时查看日志
[root@blog ~]# tail -f /var/log/secure


image.png


当有大量的电脑发起登录请求时,不断地猜测密码不仅会有猜出密码的风险,甚至会大量消耗CPU资源。


处理


做为一名优秀的管理员,这种问题不应该等到机器瘫痪了再来,该出手时就出手。


1.简单处理

如果经常是同一个IP来爆破,可以使用防火墙加入黑名单中。

永久配置:--permanent
--add-source=网段地址
--add-service=协议
# 例子
# 拒绝网段或单个IP访问
firewall-cmd --permanent --zone=block --add-source=172.34.0.0/24
firewall-cmd --permanent --zone=block --add-source=172.34.4.207
firewall-cmd --permanent --zone=block --add-service=http
firewall-cmd --permanent --zone=block --add-service=ftp
# 重载生效
firewall-cmd --reload
# 删除不需要的
firewall-cmd --permanent --zone=block --remove-source=172.34.4.207

或者把IP访问/etc/hosts.deny文件中,你再用此ip登录就不行了。

vim /etc/hosts.deny 
# 以如下的形式添加内容
sshd:213.136.88.159
sshd:207.154.196.169
sshd:167.172.188.48
sshd:45.133.1.78
sshd:206.81.23.148
……

稍微高级的点的方法,也可以使用脚本分析日志,当IP失败设定次数时,加到此文件中。此种方法可参照我前面的文章。

Linux服务器总是被猜测密码怎么办?这个脚本帮你简单加固


2.faill2ban


使用fail2ban来自动化处理异常登录请求。安装它使用以下命令:

# ubuntu
sudo apt-get install fail2ban
# centos/rhel
sudo yum -y install fail2ban

常用的配置选项:

root@ubuntu:~# fail2ban-client --help
Usage: /usr/bin/fail2ban-client [OPTIONS] <COMMAND>
Option:
    -c <DIR>                设置配置目录,服务端在启动时将从该目录下搜索并加载配置文件。
    -s <FILE>               设置服务端套接字文件路径。
    -p <FILE>               设置服务端启动时应该创建的进程文件路径。
    -d                      转储配置,用于调试,使用该选项则会将配置信息显示到屏幕上。
    -i                      以交互的方式操作Fail2ban。
    -v                      较详细的显示操作信息。
    -q                      较少的显示操作信息。
    -x                      设置服务端在启动前将删除套接字文件。
    -b                      设置服务端将在后台运行。
    -f                      设置服务端将在前台运行。
    -h, --help              显示帮助信息。
    -V, --version           显示版本信息。
Command:
    start                                    启动服务端和所有监禁(jail)。
    reload                                   重载所有配置。
    reload <JAIL>                            重载指定的监禁(jail)配置。
    stop                                     停止服务端和所有监禁(jail),当Fail2ban服务交
                                             由"systemctl"托管时,使用该命令将会导致服务端重启。
    status                                   获取当前监禁(jail)的运行状态。
    ping                                     测试服务端的活跃状态。
    help                                     return this output
    version                                  显示服务端的版本。


应用实例

配置文件路径:

[root@blog ~]# vim /etc/fail2ban/jail.local.conf
# 拷贝默认配置
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vim /etc/fail2ban/jail.local
# 只关注sshd这部分,其它的原理类似,自成一个板块
[sshd]
enabled = true                # 是否开启动
filter  = sshd                # 过滤sshd协议
port    = 22                  # 监控端口22,根据自己服务器修改ssh端口 
action = %(action_mwl)s       # 执行动作
logpath = /var/log/secure     # 监控日志来源
maxretry    = 5               # 最大尝试次数
bantime     = 18000           # 禁止IP地址的持续时间(“ m”代表分钟)。如果键入的值不带“ m”或“ h”(代表小时),则将其视为秒。值-1将永久禁止IP地址。要非常小心,不要将自己永久锁定在自己的面前。
findtime        = 1800        # “尝试失败次数过多”的值。


image.png


如果要把自己的IP加入到白名单,请ignoreip后面加上自己的IP。

[DEFAULT]
ignoreip = xxx.xxx.xxx.xxx


启动运行

# 设置开机自启动
sudo systemctl enable fail2ban
# 启动
sudo systemctl start fail2ban
# 查看运行状态
sudo systemctl status fail2ban


image.png


测试一下

任意找一个IP测试一下(注意:不要自己把自己关在外面了!!!)

# 查看状态
sudo fail2ban-client status
# 查看sshd监控状态
sudo fail2ban-client status sshd

可以看到,我在执行多次失败操作后,我的成ip被成功禁止登录了。


image.png

相关文章
|
12月前
|
弹性计算 安全 Linux
阿里云服务器ECS安装宝塔Linux面板、安装网站(新手图文教程)
本教程详解如何在阿里云服务器上安装宝塔Linux面板,涵盖ECS服务器手动安装步骤,包括系统准备、远程连接、安装命令执行、端口开放及LNMP环境部署,手把手引导用户快速搭建网站环境。
|
Linux 网络安全 数据安全/隐私保护
使用Linux系统的mount命令挂载远程服务器的文件夹。
如此一来,你就完成了一次从你的Linux发车站到远程服务器文件夹的有趣旅行。在这个技术之旅中,你既探索了新地方,也学到了如何桥接不同系统之间的距离。
2145 21
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
1142 13
|
存储 安全 Ubuntu
从Linux到Windows:阿里云服务器系统镜像适配场景与选择参考
阿里云为用户提供了丰富多样的服务器操作系统选择,以满足不同场景下的应用需求。目前,云服务器的操作系统镜像主要分为公共镜像、自定义镜像、共享镜像、镜像市场和社区镜像五大类。以下是对这些镜像类型的详细介绍及选择云服务器系统时需要考虑的因素,以供参考。
|
监控 Linux 网络安全
FinalShell SSH工具下载,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux
FinalShell是一款国人开发的多平台SSH客户端工具,支持Windows、Mac OS X和Linux系统。它提供一体化服务器管理功能,支持shell和sftp同屏显示,命令自动提示,操作便捷。软件还具备加速功能,提升访问服务器速度,适合普通用户和专业人士使用。
3817 0
|
Linux
Linux下版本控制器(SVN) -服务器端环境搭建步骤
Linux下版本控制器(SVN) -服务器端环境搭建步骤
551 0
Linux下版本控制器(SVN) -服务器端环境搭建步骤
|
存储 安全 Linux
Linux服务器上安装配置GitLab的步骤。
按照以上步骤,一个基础的GitLab服务应该运行并可以使用。记得定期检查GitLab官方文档,因为GitLab的安装和配置步骤可能随着新版本而变化。
1072 0
|
数据挖掘 Linux 数据库
服务器数据恢复—Linux系统服务器数据恢复案例
服务器数据恢复环境: linux操作系统服务器中有一组由4块SAS接口硬盘组建的raid5阵列。 服务器故障: 服务器工作过程中突然崩溃。管理员将服务器操作系统进行了重装。 用户方需要恢复服务器中的数据库、办公文档、代码文件等。
|
10月前
|
弹性计算 运维 安全
阿里云轻量应用服务器与云服务器ECS啥区别?新手帮助教程
阿里云轻量应用服务器适合个人开发者搭建博客、测试环境等低流量场景,操作简单、成本低;ECS适用于企业级高负载业务,功能强大、灵活可扩展。二者在性能、网络、镜像及运维管理上差异显著,用户应根据实际需求选择。
829 10
|
10月前
|
弹性计算 ice
阿里云4核8g服务器多少钱一年?1个月和1小时价格,省钱购买方法分享
阿里云4核8G服务器价格因实例类型而异,经济型e实例约159元/月,计算型c9i约371元/月,按小时计费最低0.45元。实际购买享折扣,1年最高可省至1578元,附主流ECS实例及CPU型号参考。
868 8