首次发布 - KK集团完成10亿元E轮融资,华人文化资本领投
06-17
前言fail2ban是一款安全防护工具。触发限制后,会创建防火墙规则封堵IP,如ssh暴力破解、ftp/http密码耗尽等,场景提供强力防护,主要功能总结如下: 避免暴力攻击 查看验证失败日志 自动创建防火墙规则 阻止IP 支持多种服务 高度可定制 1.安装 1.软件源码安装 Distro安装命令 Arch pacman -Sy failure2ban/yay -Sy failure2banCentOS/Redhatyum install -y failure2ban Debian apt-get install failure2ban 2.源码安装代码语言: shell copy git clone failure2bansudo python setup.py install 这会将fail2ban安装到python的库目录中。
可执行脚本放在/usr/bin中,配置目录在/etc/fail2ban中。二、配置是参数详细说明 1、配置备份以Debian为例。
其他分布大体相同,个别参数的命名可能不同。默认配置文件路径为/etc/fail2ban。
出于安全考虑,最好保留默认配置,以便出现问题时可以回滚并与原始配置进行比较。代码语言:shell copy cd /etc/fail2bancpjail.confjail.localcpfail2ban.conffail2ban.local。
在fail2ban.local之后,我们只需要配置jail.local和fail2ban.local文件,同样有效。 2.jali.local配置详细代码语言:shell copy [DEFAULT] #该参数为白化的网段和IP。
可以是域名、网段或单个IP,以空格分隔。 ignoreip = .0.0.1/8 ::1#设置阻塞时间间隔,如下图,表示10分钟,可以是秒(s)、分钟(m)、小时(h)、天(d)、无单位默认为s,-1表示永久阻塞。
bantime = 10m#检测间隔时间。时间间隔内,当>=maxtretry设置的失败次数时,将触发限制,禁止访问。
findtime = 10m #findtime内最大失败次数 maxretry = 5 3. SSH安全防护 1. 启用sshd模块。返回jali.local配置文件,找到[sshd]模块,添加一行启用该模块: 代码语言:shell copy [sshd]enabled = trueport = 22 #ssh port logpath = /var/log/auth. log #日志路径 backend = %(sshd_backend)s #后端管理程序,默认由systemd接管,无需修改enabled = true表示启用该模块。
同时,上面提到的[DEFAULT]配置可以理解为全局选项,对所有服务模块生效。当然,您也可以在特定的服务模块下添加参数。
局部变量的优先级高于全局变量。例如: 代码语言: shell copy [sshd ]enabled = trueport = 22logpath = /var/log/auth.logbackend = %(sshd_backend)signoreip = .0.0.1/8 ::1 10.10.0.0/16 .16.0.0 /16bantime = 60mfindtime = 1mmaxretry = 5 次或以上配置 表示一分钟内 SSH 登录失败 5 次,将封锁访问 IP,并排除本地环回地址和部分内网网段。
2、启动fail2ban 代码语言:shell copy systemctl restart failure2ban #重启服务,查看fail2ban启用的模块: 代码语言:shell copy failure2ban-client statusfail2ban-client status sshd #显示具体模块的详细信息 3、模拟ssh使用Hydra暴力破解 模拟ssh耗尽:可以看到fail2ban成功封堵了攻击IP。从iptables的角度来看,fail2ban服务在iptables入口处增加了ssh端口的引入。
有明确的拒绝规则跳转到f2b-sshd链表拒绝攻击者的流量,并回复icmp port unreachable:此时攻击主机使用nping检测,明确收到port unreachable echo: 4.手动解除限制,使用unban解封IP编码语言: shell copyfail2ban-client unban ..1.16fail2ban -client unban --all #全部解锁 4、HTTP登录保护 1、准备模拟环境,通过htpasswd命令对密码进行加密并写入文件: 代码语言:shell copy printf "Rokas:$(openssl passwd -1 Rokasyang)\n " >/etc/nginx/htpasswd #用户名Rokas,密码Rokasyangnginx配置文件根路径加一个基本验证,读取htpasswd 文件密码:代码语言:shell 复制位置 / { auth_basic "Rokas auth"; auth_basic_user_file /etc/nginx/htpasswd; try_files $uri $uri/ =;然后重启nginx,通过curl模拟请求。可以看到输入用户名和密码后才能成功登录: 2、在/etc/fail2ban/filter.d目录下配置filterfail2ban的过滤规则,比如前面提到的sshd,这个中的sshd.conf文件默认读取目录。
同样,jail.local配置文件中的nginx-http-auth模块也有一个对应命名的过滤器文件,但里面的匹配规则与我们的实际场景不符。在/etc/fail2ban/filter.d目录下新建nginx-auth.conf文件,写入如下规则: 代码语言:shell copy [定义]failregex=
配置jail.local启用nginx-limit-req:代码语言:shell copy [nginx-limit-req]enabled=trueport=http,httpsfilter=nginx-limit-requestlogpath=/var/log/nginx/access.logbantime=1dfindtime =1mmaxretry=.overloadfail2ban-clientreload可以是特定模块。如果模块未连接,则将重新加载所有已启用的模块:代码语言:shell copyfail2ban-client reload nginx-limit-req4。
模拟测试通过了11次模拟测试,第11次访问被拒绝:果然,fail2ban已经把客户端IP给了BAN:综上所述,通过上面的例子,其他服务的安全防护配置也可以轻松了解到。当然,有些服务本身就有安全保护。
例如nginx的conn_limit模块可以限制访问频率,可以使用它本身的安全保护,不需要使用fail2ban。它带有 PDF 版本:fail2ban 安全配置和应用。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-17
06-18
06-18
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用