fail2ban-防止用户暴力破解ssh工具

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

关于fail2ban:

  fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是防火墙),而且可以发送e-mail通知系统管理员,很好、很实用、很强大!
  简单来说其功能就是防止暴力破解。工作的原理是通过分析一定时间内的相关服务日志,将满足动作的相关IP利用iptables加入到dorp列表一定时间。 

实战场景:

  最近公网网站一直被别人暴力破解sshd服务密码。虽然没有成功,但会导致系统负载很高,原因是在暴力破解的时候,系统会不断地认证用户,从而增加了系统资源额外开销,导致访问公司网站速度很慢。

fail2ban安装:

  fail2ban是python编写的,确保你的python版本大于2.4

  #yum install fail2ban -y

相关主要配置文件:

  /etc/fail2ban/action.d   #动作文件夹,内含默认文件。iptables以及mail等动作配置
  /etc/fail2ban/fail2ban.conf #定义了fai2ban日志级别、日志位置及socket文件位置
  /etc/fail2ban/filter.d  #条件文件夹,内含默认文件。过滤日志关键内容设置
  /etc/fail2ban/jail.conf #主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值等重要信息
  /etc/rc.d/init.d/fail2ban #启动脚本文件

fail2ban把异常ssh ip加入iptables黑名单实战:

加入黑名单设置条件:

  ssh远程登录5分钟内3次密码验证失败,禁止用户IP访问主机1小时,1小时该限制自动解除,用户可重新登录。

  因为动作文件(action.d/iptables.conf)以及日志匹配条件文件(filter.d/sshd.conf )安装后是默认存在的。基本不用做任何修改。所有主要需要设置的就只有jail.conf文件。启用sshd服务的日志分析,指定动作阀值即可。

1.fail2ban.conf的相关配置:

  [root@shvpuppet01 fail2ban]# egrep -v "^#|^$" fail2ban.conf 
  [Definition]
  loglevel = INFO #logevel设置日志级别
  logtarget = /var/log/fail2ban/fail2ban.log  #logtarget设置日志文件存放位置
  syslogsocket = auto 
  socket = /var/run/fail2ban/fail2ban.sock  #socket存放位置
  pidfile = /var/run/fail2ban/fail2ban.pid    #pid存放位置
  dbfile = /var/lib/fail2ban/fail2ban.sqlite3
  dbpurgeage = 86400

2.jail.conf的相关配置:

  全局设置:

  注:单个服务检查设置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置。

  [DEFAULT]

  #忽略的IP列表,不受设置限制  如果有二组以上用空白做为间隔

  ignoreip = 127.0.0.1/8

  #屏蔽时间,单位:秒(设置IP被封锁的时间)

  bantime  = 600

  #这个时间段内超过规定次数会被ban掉(设定多长时间内达到最大次数就解锁。)

  findtime  = 600

  #最大尝试次数

  maxretry = 3

  #日志修改检测机制(gamin、polling和auto这三种)

  backend = auto

  #检测ssh并加入到iptables的具体设置

  [ssh-iptables]
  enabled  = true
  filter   = sshd
  action   = iptables[name=SSH, port=ssh, protocol=tcp]  
  logpath  = /var/log/secure
  #5分钟内3次密码验证失败,禁止用户IP访问主机1小时。 配置如下
  bantime  = 3600 #禁止用户IP访问主机1小时
  findtime = 300 #在5分钟内内出现规定次数就开始工作
  maxretry = 3 #3次密码验证失败

3.iptables防火墙需要配置

  因为fail2ban的工作的原理就是通过分析一定时间内的相关服务日志,将满足动作的相关IP利用iptables加入到dorp列表一定时间。 
  所以首先要启动防火墙iptables的相关配置:

1
2
#iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name ROUTER-SSH  --update --seconds 1800 --hitcount 5 -j DROP
#iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --name ROUTER-SSH --set -j ACCEPT

4.进行ssh加入iptables测试

  随便找一台机器进行ssh测试

  wKiom1nPPwbSklobAABzi_8eXn8586.png

  可以看到,尝试ssh登陆的ip被禁止了,现在来看下iptables有没有相关的规则

  wKioL1nPP13RBYV4AABbwveRNLM823.png

  可以通过fail2ban-client命令,查看加入到黑名单的IP信息等内容

  #fail2ban-client status ssh-iptables

  wKioL1nPRV2xvbXjAAAc2eKgZcg947.jpg

5.至此实验成功,把fail2ban加入开机启动

6.fail2ban也可以实现nginx的认证,恶意扫描等并将加入黑名单

  [yunvn-get-dos]
  enabled = true
  port = http,https
  filter = nginx-bansniffer
  action = iptables[name=IT300, port=http, protocol=tcp]
  #sendmail-whois[name=IT300, dest=xxxxx@qq.com, sender=xxxxxx@163.com]
  logpath = /var/log/nginx/access.log
  maxretry = 300
  findtime = 60
  bantime = 3600


  然后创建文件/etc/fail2ban/filter.d/nginx-bansniffer.conf,内容如下:
  [Definition]
  failregex = <HOST> -.*- .*HTTP/1.* .* .*$
  ignoreregex =
  最后重启fail2ban服务即可,在上面的配置中,我们对每60秒有超过300次访问的ip,封禁1小时。

本文转自激情燃烧的岁月博客51CTO博客,原文链接http://blog.51cto.com/liuzhengwei521/1969972如需转载请自行联系原作者


weilovepan520

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6月前
|
Shell 网络安全 iOS开发
最好用的SSH工具Royal TSX for mac使用教程
众所周知,在 Windows上我们经常用到的shell工具可能非 xshell莫属了。但是xshell却并没有开发mac 版本,我们只能用其他的工具替代了。 在我用过几个ssh工具之后,我觉得在macOS上最好用的ssh工具客户端必须是 Royal TSX,它和使用xhell的感觉简直一模一样。 Royal TSX是一款功能非常强大适用于 Mac 的远程连接管理工具。兼容多种连接类型,比如:RDP、VNC、基于SSH连接的终端,SFTP/FTP/SCP或基于Web的连接管理,Royal TSX 都可以满足您的要求!
772 0
最好用的SSH工具Royal TSX for mac使用教程
|
6月前
|
Devops 网络安全 Docker
百度搜索:蓝易云【DevOps系列文章之Docker部署web ssh工具sshwifty教程。】
同时,了解DevOps和Docker的基本原理和概念也对你进行部署和管理这样的工具非常有帮助。你可以进一步研究Docker容器化技术和相关的DevOps实践,以更好地理解和应用这些概念。
98 0
|
运维 应用服务中间件 网络安全
Ansible自动化运维工具之解决SSH连接使用明文密码问题(4)
Ansible自动化运维工具之解决SSH连接使用明文密码问题(4)
136 0
|
6月前
|
Linux 网络安全 数据安全/隐私保护
SSH工具连接远程服务器或者本地Linux系统
SSH工具连接远程服务器或者本地Linux系统
125 0
|
2月前
|
运维 安全 网络安全
常用的运维工具:SSH和远程连接工具详解
常用的运维工具:SSH和远程连接工具详解
109 3
|
6月前
|
Ubuntu Shell Linux
使用sshpass工具通过SSH执行远程命令
`sshpass`是一个用于在脚本中自动输入SSH密码的工具 **在Debian/Ubuntu上安装sshpass:** ```bash sudo apt-get install sshpass ``` **在CentOS/RHEL上安装sshpass:** ```bash sudo yum install sshpass ``` **在Fedora上安装sshpass:** ```bash sudo dnf install sshpass ``` 安装完成后,你可以使用`sshpass`命令通过SSH执行远程命令。以下是一个示例: ```bash sshpass -p 'yo
654 0
|
3月前
|
安全 Linux 网络安全
Docker部署ssh连接工具webssh2
【8月更文挑战第2天】Docker部署ssh连接工具webssh2
276 6
Docker部署ssh连接工具webssh2
|
3月前
|
监控 网络安全 数据安全/隐私保护
Mac服务器ssh连接工具
Mac服务器ssh连接工具
107 2
|
安全 Linux 网络安全
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
45155 0
|
运维 搜索推荐 Shell
Ansible自动化运维工具之个性化定制SSH连接登录端口(3)
Ansible自动化运维工具之个性化定制SSH连接登录端口(3)
315 0