安装fail2ban保护Linux服务器

简介: CentOS 7.9.2009上安装配置fail2ban

最近总有人在尝试非法登录服务器,每天都有上千次的登录尝试,于是在服务器上安装了fail2ban,现将安装、配置过程记录下来,以备日后查阅。

Fail2ban扫描/var/log/auth.log等日志文件,并禁止进行过多失败登录尝试的IP地址。它通过在可配置的时间量内更新系统防火墙规则以拒绝来自这些IP地址的新连接来实现这一点。Fail2ban开箱即用,可以读取许多标准的日志文件,比如那些用于sshd和apache的文件,并且可以很容易地配置以读取您选择的任何日志文件,以查找您需要的任何错误(翻译自fail2ban官网的介绍)。

fail2ban是用python开发的,需要python版本不低于3.5,而CentOS7默认安装的是python2,因此首先需要安装python3,这里采用源码编译的方式并将python3安装到/usr/local/python3目录下,切记不可能用python3替换掉系统自带的python2,因为yum等程序不兼容python3。

一、源码编译安装python3

wget https://www.python.org/ftp/python/3.7.17/Python-3.7.17.tgz
tar zxvf Python-3.7.17.tgz
cd Python-3.7.17
./configure --prefix=/usr/local/python3 --enable-optimizationsmake-j4make install

二、安装fail2ban

git clone https://github.com/fail2ban/fail2ban.git
cd fail2ban
sudo python3 setup.py install
#检查fail2ban是否安装成功fail2ban-client -h

fail2ban的配置文件会安装到/etc/fail2ban目录下,将build目录下fail2ban.service复制到/lib/systemd/system/目录下,可通过systemctl启停fail2ban。

cat /lib/systemd/system/fail2ban.service
[Unit]
Description=Fail2Ban Service
Documentation=man:fail2ban(1)
After=network.target iptables.service firewalld.service ip6tables.service ipset.service nftables.service
PartOf=iptables.service firewalld.service ip6tables.service ipset.service nftables.service
[Service]
Type=simple
Environment="PYTHONNOUSERSITE=1"ExecStartPre=/bin/mkdir -p /run/fail2ban
ExecStart=/usr/local/python3/bin/fail2ban-server -xfstart# if should be logged in systemd journal, use following line or set logtarget to sysout in fail2ban.local# ExecStart=/usr/local/python3/bin/fail2ban-server -xf --logtarget=sysout startExecStop=/usr/local/python3/bin/fail2ban-client stopExecReload=/usr/local/python3/bin/fail2ban-client reload
PIDFile=/run/fail2ban/fail2ban.pid
Restart=on-failure
RestartPreventExitStatus=0255[Install]
WantedBy=multi-user.target

三、简单配置

这里仅简单设置了对sshd进行保护,主要修改/etc/fail2ban/jail.conf同时添加/etc/fail2ban/jail.d/sshd,下面仅列出修改部分,其余的取默认值即可(配置文件里对每个选项都有详细说明,可自行查阅)。

# /etc/fail2ban/jail.conf[sshd]
# To use more aggressive sshd modes set filter parameter "mode" in jail.local:# normal (default), ddos, extra or aggressive (combines all).# See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.#mode   = normalenabled =trueport    =ssh#根据自己的sshd配置修改logpath = %(sshd_log)s
backend = %(sshd_backend)s
cat /etc/fail2ban/jail.local
[DEFAULT]
ignoreip =192.168.2.105
bantime  =86400findtime  =300maxretry =3banaction = firewallcmd-rich-rules
backend = systemd
[sshd]
enabled =true
# /etc/fail2ban/jail.d/sshd.conf# sshd的保护规则[sshd]
enable =truemaxretry =5findtime = 10m
bantime = 24h

四、运行及检查

systemctl enable fail2ban.service
systemctl start fail2ban
systemctl status fail2ban
#如下提示说明已经正常启动● fail2ban.service - Fail2Ban Service
   Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2023-10-0418:37:48 CST; 5s ago
     Docs: man:fail2ban(1)
  Process: 30143ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
 Main PID: 30146 (fail2ban-server)
   CGroup: /system.slice/fail2ban.service
           └─30146 /usr/local/python3/bin/python3 /usr/local/python3/bin/fail2ban-server -xfstartOct 0418:37:48 ydapp1 systemd[1]: Starting Fail2Ban Service...
Oct 0418:37:48 ydapp1 systemd[1]: Started Fail2Ban Service.
Oct 0418:37:49 ydapp1 fail2ban-server[30146]: Server ready
#可用fail2ban-client version查看版本号fail2ban-client version
1.1.0.dev1
#可通过fail2ban-client status查看状态fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0|  |- Total failed:     0|  `- File list:`- Actions
   |- Currently banned: 0   |- Total banned:     0`- Banned IP list:[root@ydapp1 fail2ban]# fail2ban-client status sshdStatus for the jail: sshd|- Filter|  |- Currently failed: 0|  |- Total failed:     0|  `- File list:
`- Actions   |- Currently banned: 0   |- Total banned:     0   `- Banned IP list:


目录
打赏
0
2
1
1
18
分享
相关文章
|
14天前
|
Websoft9:为开发者打造的高效 Linux 服务器面板
Websoft9 是一款以开源应用部署与管理为核心的服务器面板,采用“环境即服务”模式。它通过运行环境标准化、自动化配置、安全融合和资源管理四个方面实现平台与环境的深度协同。支持多语言框架预集成、云原生组件整合,提供 200+ 应用模板一键部署,并具备全流程安全防护和统一资源监控能力,助力开发者高效管理和扩展应用环境。
39 0
|
20天前
|
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
本文详细介绍了在VMware虚拟机中安装CentOS 6.8的全过程。首先,需确保已安装VMware并开启V-CPU虚拟化功能,可通过BIOS设置或使用LeoMoon CPU-V工具检测。接着,下载CentOS镜像文件,并在VMware中新建虚拟机,配置CPU、内存、硬盘等参数。最后,加载ISO镜像启动虚拟机,按照提示完成CentOS的安装,包括语言、键盘、存储方式、地区、密码设置及硬盘分区等步骤。安装完成后,以root用户登录即可进入系统桌面,开始学习Linux命令和操作。
95 12
零基础保姆级教程!手把手教你免费玩转Linux CentOS安装+学习环境搭建(附避坑指南)
在Rocky Linux 9上安装JDK并配置环境变量!
本教程介绍在Rocky Linux 9上安装JDK并配置环境变量的完整步骤。首先更新系统,清理旧版本JDK相关包及残留文件,确保环境干净。接着搜索并安装所需版本的JDK(如OpenJDK 17),验证安装是否成功。然后查找JDK安装路径,配置全局环境变量`JAVA_HOME`和`PATH`,最后验证环境变量设置。按照此流程操作,可顺利完成Java开发环境搭建,支持多版本切换(如JDK 8/11/17)。生产环境请谨慎操作,避免影响现有服务。
65 21
Linux 手动安装快速部署 LNMP 环境实战
本文详细记录了在阿里云ECS上手动搭建LNMP环境的过程,系统选用Ubuntu 24.04。主要内容包括:1) 使用`apt`安装Nginx和MySQL,并更新软件源;2) 编译安装PHP 8.4.5,配置PHP-FPM及环境路径;3) 配置MySQL root用户密码;4) 调整Nginx支持PHP解析并测试整体环境。通过此过程,重现手动配置服务器的细节,帮助熟悉各组件的安装与协同工作。
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
深度体验阿里云系统控制台:SysOM 让 Linux 服务器监控变得如此简单
作为一名经历过无数个凌晨三点被服务器报警电话惊醒的运维工程师,我对监控工具有着近乎苛刻的要求。记得去年那次大型活动,我们的主站流量暴增,服务器内存莫名其妙地飙升到90%以上,却找不到原因。如果当时有一款像阿里云 SysOM 这样直观的监控工具,也许我就不用熬通宵排查问题了。今天,我想分享一下我使用 SysOM 的亲身体验,特别是它那令人印象深刻的内存诊断功能。
|
7天前
|
微服务2——MongoDB单机部署4——Linux系统中的安装启动和连接
本节主要介绍了在Linux系统中安装、启动和连接MongoDB的详细步骤。首先从官网下载MongoDB压缩包并解压至指定目录,接着创建数据和日志存储目录,并配置`mongod.conf`文件以设定日志路径、数据存储路径及绑定IP等参数。之后通过配置文件启动MongoDB服务,并使用`mongo`命令或Compass工具进行连接测试。此外,还提供了防火墙配置建议以及服务停止的两种方法:快速关闭(直接杀死进程)和标准关闭(通过客户端命令安全关闭)。最后补充了数据损坏时的修复操作,确保数据库的稳定运行。
35 0
[转]ECS之初体验(Linux)
服务商: 阿里云 操作系统:Linux 64位 Ubantu 20.04 64位
136 0
DeepSeek服务器繁忙解决方法:使用阿里云一键部署DeepSeek个人网站!
通过阿里云一键部署DeepSeek个人网站,解决服务器繁忙问题。学生用户可领取300元代金券实现0成本部署,普通用户则可用99元/年的服务器。教程涵盖从选择套餐、设置密码到获取百炼API-KEY的全流程,助您快速搭建专属大模型主页,体验DeepSeek、Qwen-max、Llama等多款模型,无需代码,最快5分钟完成部署。支持绑定个人域名,共享亲友使用,日均成本仅约1元。
72 10
【阿里云】控制台使用指南:从创建ECS到系统诊断测评
本文介绍了如何通过阿里云获取ECS云服务器并进行操作系统配置与组件安装,以实现高效的资源管理和系统监控。阿里云凭借强大的基础设施和丰富的服务成为用户首选。文中详细描述了获取ECS、RAM授权、开通操作系统控制台及组件安装的步骤,并展示了如何利用控制台实时监控性能指标、诊断系统问题及优化性能。特别针对idle进程进行了深入分析,提出了优化建议。最后,建议定期进行系统健康检查,并希望阿里云能推出更友好的低成本套餐,满足学生等群体的需求。
83 17
【阿里云】控制台使用指南:从创建ECS到系统诊断测评

热门文章

最新文章