ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

fail2Ban ubuntu

2021-07-07 09:01:07  阅读:213  来源: 互联网

标签:INFO 02 2615 20 17 fail2ban ubuntu fail2Ban


一、安装
sudo apt-get install -y fail2ban


二、配置
Fail2Ban 配置文件格式 INI,存于 /etc/fail2ban 目录:

fail2ban.conf : fail2ban 程序运行的日志和数据库等参数。
jail.conf : 禁止(ban)相关参数。
filter.d/* : jail.conf 中涉及“节”(section,如 [sshd] )的过滤器,由正则表达式构成。
action.d/* : jail.conf 中涉及“节”(section,如 [sshd] )的处理器。

它们皆为安装文件,直接修改将导致后续升级 无法自动合并 配置文件。Fail2Ban 提供了自定义配置文件的机制:

fail2ban.conf 可依此通过 fail2ban.d/* 和 fail2ban.local 来重定义相关选项。
jail.conf 可依此通过 jail.d/* 和 jail.local 来重定义相关选项。

默认安装,/etc/fail2ban/jail.d/defaults-debian.conf 已启用 sshd 的 jail

通常,除 jail.conf 外,不需要改变配置。以下着重介绍 jail.conf 中的参数,它们不仅是默认(全局)参数(隶属于 [DEFAULT]),
而且可在具体 jail 中重定义(如 [sshd])。

常用参数

ignoreip : 忽略不 IP 地址(CIDR 格式)或机器名,以空格分隔。
bantime : 主机被禁止时长,默认 600 秒。
maxretry : 在 findtime 时间窗口中,允许主机认证失败次数。达到最大次数,主机将被禁止。
findtime : 查找主机认证失败的时间窗口。 不意味 着每隔 findtime 时间扫描一次日志。

高版本 Fail2ban 支持 s (秒), m (分)和 d (天)作为时间单位,如 10m 和 1d

backend
默认 auto ,支持 4 种文件修改的监控后端:

pynotify : inotify 的 Python 绑定。在 Debian/Ubuntu 中,对应 python3-pyinotify 包。
gamin : KDE 和 GNOME 等桌面使用的文件监控系统,通常基于 inotify 实现。 在 Debian/Ubuntu 中,对应 gamin 包。
polling : 周期性扫描相关系统日志。相对于其它几种后端,或将占用 更多 CPU 时间。
systemd : 通过 Systemd 的 Python 绑定来访问 systemd 日志,logpath 将无效。 在 Debian/Ubuntu 中,对应 python3-systemd 包。
auto : 依此尝试 pyinotify , gamin 和 polling

通常,在安装 fail2ban 安装包时,将自动安装 iptables , whois , python3-pyinotify 和 python3-systemd ,
即启用 pyinotify 后端。除非 APT 配置 APT::Install-Recommends "false"; (如:/etc/apt/apt.conf)或 --no-install--recommends 。

最佳实践
建议将 bantime 设为 86400 (即 1 天)。如 jail.local :

[DEFAULT]
bantime = 86400
findtime = 600
maxretry = 3

[sshd]
bantime = 86400
findtime = 600
maxretry = 3


修改后,须重载 fail2ban :

sudo service fail2ban reload

/var/log/fail2ban.log 将出现类似:

2021-02-20 17:04:59,580 fail2ban.observer [2615]: INFO Observer start...
2021-02-20 17:04:59,583 fail2ban.database [2615]: INFO Connected to fail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3'
2021-02-20 17:04:59,583 fail2ban.jail [2615]: INFO Creating new jail 'sshd'
2021-02-20 17:04:59,593 fail2ban.jail [2615]: INFO Jail 'sshd' uses pyinotify {}
2021-02-20 17:04:59,596 fail2ban.jail [2615]: INFO Initiated 'pyinotify' backend
2021-02-20 17:04:59,597 fail2ban.filter [2615]: INFO maxLines: 1
2021-02-20 17:04:59,611 fail2ban.filter [2615]: INFO maxRetry: 3
2021-02-20 17:04:59,611 fail2ban.filter [2615]: INFO findtime: 600
2021-02-20 17:04:59,611 fail2ban.actions [2615]: INFO banTime: 86400
2021-02-20 17:04:59,611 fail2ban.filter [2615]: INFO encoding: UTF-8
2021-02-20 17:04:59,611 fail2ban.filter [2615]: INFO Added logfile: '/var/log/auth.log' (pos = 34274, hash = 5cdc6285962a0352611a54aa860667fc35ededc1)
2021-02-20 17:04:59,614 fail2ban.jail [2615]: INFO Jail 'sshd' started
2021-02-20 17:08:12,674 fail2ban.server [2615]: INFO Reload all jails
2021-02-20 17:08:12,674 fail2ban.server [2615]: INFO Reload jail 'sshd'
2021-02-20 17:08:12,674 fail2ban.filter [2615]: INFO maxLines: 1
2021-02-20 17:08:12,674 fail2ban.filter [2615]: INFO maxRetry: 3
2021-02-20 17:08:12,675 fail2ban.filter [2615]: INFO findtime: 600
2021-02-20 17:08:12,675 fail2ban.actions [2615]: INFO banTime: 86400
2021-02-20 17:08:12,675 fail2ban.filter [2615]: INFO encoding: UTF-8
2021-02-20 17:08:12,675 fail2ban.server [2615]: INFO Jail 'sshd' reloaded
2021-02-20 17:08:12,675 fail2ban.server [2615]: INFO Reload finished.

 

三、查看状态


sudo fail2ban-client status sshd

输出类似:

Status for the jail: sshd
|- Filter
| |- Currently failed: 2
| |- Total failed: 5343
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 178
|- Total banned: 1354
`- Banned IP list: ...


列表 iptables 的规则:

iptables -S

输出类似:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A fail2ban-nginx-http-auth -j RETURN
-A fail2ban-ssh -s <IP 1> -j REJECT --reject-with icmp-port-unreachable
-A fail2ban-ssh -s <IP 2> -j REJECT --reject-with icmp-port-unreachable
...
-A fail2ban-ssh -j RETURN

标签:INFO,02,2615,20,17,fail2ban,ubuntu,fail2Ban
来源: https://www.cnblogs.com/vicowong/p/14979897.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有