使用fail2ban防止ssh爆破

fail2ban 是一个更加强大和灵活的工具,它可以监控多种日志文件,并根据用户自定义的规则进行拉黑。例如,可以监控 SSH、FTP、Apache 等服务的日志文件,根据设定的规则来判断恶意访问行为,如登录失败、多次访问不存在的 URL、频繁访问等,然后自动拉黑恶意 IP 地址。

fail2ban 的优点是功能强大,可以对多种恶意行为进行处理;
缺点是配置比较繁琐,需要用户自定义规则,并且可能会误判合法访问。

Fail2ban目录结构如下:

/etc/fail2ban/action.d —– iptables 、mail 等动作文件目录
/etc/fail2ban/fail2ban.conf —– 定义日志级别、日志、sock文件位置等
/etc/fail2ban/filter.d —– 条件匹配(过滤器)文件目录,过滤日志关键内容
/etc/fail2ban/jail.conf —– 主配置文件,主要设置启用ban动作的服务及动作阀值,不建议修改
/etc/fail2ban/jail.d/ —– fail2ban模块化子配置文件

安装fail2ban

epel_release源安装fail2ban

# 安装epel_release源
yum install -y epel-release

# 建立缓存
yum makecache

# 安装fail2ban
yum install -y fail2ban fail2ban-firewalld fail2ban-systemd

# Centos7支持tcpd,需要安装fail2ban-hostsdeny
yum install -y fail2ban-hostsdeny

# 现在启动并开机自启
systemctl enable --now fail2ban

源码安装fail2ban
版本 1.0/0.11/0.10(和旧的 0.9)将仍然基于 python2.7
版本1.01及以后以后使用python3

# 安装sqlite3
yum install -y sqlite

# 安装依赖
yum install -y python2 python3

# 下载Fail2ban源码
wget -c https://github.com/fail2ban/fail2ban/archive/refs/tags/1.0.2.tar.gz

# 解压Fail2ban
tar xvf 1.0.2.tar.gz

# 进入解压后的Fail2ban目录
cd fail2ban-1.0.2

# 安装Fail2ban
python3 setup.py install --record fail2ban_install.log
# 如果是1.0以下低版本,请使用python2安装
python2 setup.py install --record fail2ban_install.log

#复制fail2ban服务脚本
cp /root/fail2ban-1.0.2/files/redhat-initd  /etc/init.d/fail2ban

#设置fail2ban服务为自启动服务
systemctl enable fail2ban 

#启动fail2ban服务
systemctl start fail2ban

# 卸载Fail2ban
cat fail2ban_install.log | xargs rm -rf

全局配置白名单IP(非必须)

vim /etc/fail2ban/filter.d/jail.local

# 全局配置
[DEFAULT]
# 要忽略的 IP 地址。 IP 地址列表可以使用 CIDR 表示法
ignoreip = 10.0.0.0/24
# 封禁IP时间(以秒为单位)。负数-1为“永久”禁止
## 86400秒=1天
bantime = 86400
findtime  = 300
maxretry = 5
# banaction = iptables-multiport
backend = systemd

子配置启用sshd保护策略

vim /etc/fail2ban/jail.d/sshd_jail.local

[sshd]
# 启用防护
enabled = true
# 选择过滤器
filter = sshd

# 启用抗攻击防护模式--防护策略敏感度最高
# 正常(默认)、ddos、额外或 aggressive (攻击性 全部组合)。
## normal (default), ddos, extra or aggressive (combines all).
# 有关使用示例和详细信息,请参阅“tests/files/logs/sshd”或“filter.d/sshd.conf”。
mode = aggressive

# 禁止 IP 的持续时间(以秒为单位)。负数-1为“永久”禁止。
## 86400秒为1天
bantime = 86400
## 如果在“findtime”秒内未找到匹配,则计数器设置为零。默认 600s
findtime = 300
# ssh登录失败阈值默认为 3
maxretry = 5
# 指定封禁的端口,默认为0:65535,也就是所有端口,但可以在jail中设定
port = ssh
# 使用哪个工具方法阻止IP
## firewall防火墙: firewallcmd-ipset
## iptables防火墙: iptables 或 iptables-multiport
## 拉黑到/etc/hosts.deny: hostsdeny
banaction = iptables-multiport
            hostsdeny
# 日志路径
logpath = %(sshd_log)s
# 指定用于修改日志文件的后端
#backend = %(sshd_backend)s
backend = systemd

常用命令

# 启动Fail2ban
systemctl start fail2ban

# Fail2ban设置为开机自启动
systemctl enable fail2ban

# 重新加载配置或重启服务
systemctl reload-or-restart fail2ban.service

# 查看服务是否正常运行
systemctl status fail2ban.service -l

# 查看哪些IP被ban
fail2ban-client status sshd

# 将IP从黑名单中移除
fail2ban-client set sshd unbanip 8.8.8.8
—————— 展开浏览全文 ——————
版权免责声明 01、本站名称:飞瓜资源服务网
02、本站网址:https://www.dybdfw.com
03、本站所有资源来源于互联网搜集并整理,如有侵权请联系站长进行删除!
04、本站分享的资源仅供参考学习,您必须在下载后二十四个小时之内删除!
05、本站分享目的仅供学习研究和借鉴,请不要用于商业用途以及违法用途!
06、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
07、禁止用本站源码用于非法商业用途,不得违反国家法律,否则后果自负!
08、如发现资源链接无法下载、失效或广告,请联系管理员或提交工单处理!
09、所有资源均可通过日常签到等任务进行免费兑换,记得每天到本站签到!
10、本站所有资源积分兑换只是赞助,收取费用仅维持本站的日常运营所需!
11、如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励!
12、如需商用请购买正版,由于未及时购买正版发生侵权行为,与本站无关!
13、如果您发现本站分享的资源侵犯了您的权益,请邮件联系我们进行删除!
14、我们无法辨别该内容是否具有版权,若侵犯了您的权益请联系我们删除!
15、本站禁止以任何方式发布或转载任何违法相关信息,发现请向站长举报!
16、本站所有资源不代表本站立场,并不代表赞同其观点和对其真实性负责!
17、本站资源大多存储在云盘,如发现链接失效,请联系我们第一时间更新!
0
资源下载 / Download
下载权限VIP会员专享
仅限VIP会员下载开通VIP会员
飞瓜十周年庆,升级(终身VIP)只需188元,原价288元,限时特惠,即将终止! 点击开通
显示验证码
没有账号?注册  忘记密码?