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

关于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的相关配置:

[[email protected] 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的相关配置:

#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
时间: 2024-10-12 01:07:45

fail2ban-防止用户暴力破解ssh工具的相关文章

Python3小工具——暴力破解ssh

一.工具说明 利用pxssh库进行暴力破解ssh 二.演示一下的利用效果 三.代码+注释 from pexpect import pxssh import argparse import threading maxConnetions = 5 connect_lock = threading.BoundedSemaphore(value=maxConnetions) def connect(host, user, password):     try:         s = pxssh.pxs

用fail2ban防止黑客暴力破解服务器密码

简单来介绍一下fail2ban的功能和特性 1.支持大量服务.如sshd,apache,qmail,proftpd,sasl等等 2.支持多种动作.如iptables,tcp-wrapper,shorewall(iptables第三方工具),mail notifications(邮件通知)等等. 3.在logpath选项中支持通配符 4.需要Gamin支持(注:Gamin是用于监视文件和目录是否更改的服务工具) 5.需要安装python,iptables,tcp-wrapper,shorewal

Linux 利用hosts.deny 防止暴力破解ssh(转)

一.ssh暴力破解 利用专业的破解程序,配合密码字典.登陆用户名,尝试登陆服务器,来进行破解密码,此方法,虽慢,但却很有效果. 二.暴力破解演示 2.1.基础环境:2台linux主机(centos 7系统).Development Tools. 主机ip:192.168.30.64 (服务器端).192.168.30.64(客户端+ 暴力破解[Hydra]) 在30.63上进行暴力破解30.64 2.2 客户端上安装 破解程序 hydra.关于该程序的详情请去官网. 安装该软件的依赖环境: [[

Linux 利用hosts.deny 防止暴力破解ssh

一.ssh暴力破解 利用专业的破解程序,配合密码字典.登陆用户名,尝试登陆服务器,来进行破解密码,此方法,虽慢,但却很有效果. 二.暴力破解演示 2.1.基础环境:2台linux主机(centos 7系统).Development Tools. 主机ip:192.168.30.64 (服务器端).192.168.30.64(客户端+ 暴力破解[Hydra]) 在30.63上进行暴力破解30.64 2.2 客户端上安装 破解程序 hydra.关于该程序的详情请去官网. 安装该软件的依赖环境: [[

使用fail2ban禁止暴力破解SSH

有时候很懒,又看不得别人一直在尝试SSH端口. 尝试用了下fail2ban这个软件,简单粗暴正是我们想要的效果. yum install fail2ban -y //epel cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local vim /etc/fail2ban/jail.local # "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will

部署fail2ban防止暴力破解ssh密码

fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽),如:当有人在试探你的SSH.SMTP.FTP密码,只要达到你预设的次数,fail2ban就会调用防火墙屏蔽这个IP,而且可以发送e-mail通知系统管理员,是一款很实用.很强大的软件! 步骤: #wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

利用python暴力破解ssh

1 # -*- coding:utf-8 -*- 2 #python 2.7 3 4 import optparse,sys,threading 5 import pexpect 6 7 PROMPT = ['#','>','/$'] 8 def ssh(host,user,password): 9 child = pexpect.spawn('ssh %[email protected]%s' % (user,host)) 10 ret = child.expect(['(?i)are you

防止暴力破解ssh远程连接

一.系统:CentOS 6.5 64位 二.方法:读取/var/log/secure,查找关键字 Failed,例如(注:文中的IP地址特意做了删减): Sep 17 09:08:09 localhost sshd[29087]: Failed password for root from 13.7.3.6 port 44367 ssh2 Sep 17 09:08:20 localhost sshd[29087]: Failed password for root from 13.7.3.6 p

centos 7 DenyHosts 安装 防暴力破解ssh登陆

为了减少软件扫描ssh登陆 还是用这个比较好点  默认端口号22 也要改 登陆密码也不要使用 弱口令 123456 这样的 Description DenyHosts is a python program that automatically blocks ssh attacks by adding entries to /etc/hosts.deny. DenyHosts will also inform Linux administrators about offending hosts,