TypechoJoeTheme

至尊技术网

统计
登录
用户名
密码
/
注册
用户名
邮箱

悠悠楠杉

网站页面

使用fail2ban防止ssh爆破

2024-01-04
/
0 评论
/
762 阅读
/
正在检测是否收录...
01/04

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

# 将IP添加到黑名单中
fail2ban-client set sshd banip 8.8.8.8

# 清空黑名单
fail2ban-client unban --all
经验SSHfail2ban防爆破
朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/6411/(转载时请注明本文出处及文章链接)

评论 (0)