fail2ban防止暴力破解sshd服务

实战背景

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

fail2ban可以监视你的系统日志,然后匹配日志的错误信息,(正则式匹配) 执行相应的屏蔽动作,(一般是防火墙) 而且可以发送e-mail通知系统管理员,很好,很强大,很实用

简单来说,功能就是防止暴力破解,工作的原理是通过分析一定时间内的相关服务日志,将满足动作的相关ip利用iptables加入到dorp列表一定时间

下载稳定版或者超级稳定版

www.fail2ban.org > downloads > stable

上传到服务器

scp /Users/sunlizhao/Downloads/fail2ban-0.8.14.tar sss@192.168.137.162:/home

解包

tar -xvf fail2ban-0.8.14.tar 

进入到解压的目录有个README.md,里面写了安装方法
要依赖python解释器

安装

python setup.py install

获得开机启动脚本的方法(在解压的文件中搜索)

grep chkconfig ./* -R --color

生成服务启动脚本

cp files/redhat-initd /etc/init.d/fail2ban

启动

/etc/init.d/fail2ban start

开机自启动

chkconfig --add fail2ban

相关文件说明

/etc/fail2ban/action.d/
动作文件夹,内含默认文件,iptables以及mail等动作配置

/etc/fail2ban/fail2ban.conf
定义了fail2ban日志级别,日志位置

/etc/fail2ban/filter.d
条件文件夹,内含默认文件,过滤日志关键内容设置

/etc/fail2ban/jail.conf
主要配置文件,模块化,主要设置启用ban动作的服务及动作阀值

主配置文件介绍

cat /etc/fail2ban/jail.conf
ignoreip = 127.0.0.1/8 
忽略本机ip地址

ignorecommand =
忽略的命令

bantime  = 600
触发设置的条件,多长时间不能登录(秒)

findtime  = 600
maxretry = 3
在多长时间(600秒)内可以尝试3次

backend = auto
自动恢复

应用实例

设置条件:ssh 远程登录5分钟内3次密码验证失败,禁止用户ip访问主机1小时,一小时该限制自动解除,用户重新输入

修改/etc/fail2ban/jail.conf文件中的
[ssh-iptables]

enabled  = false
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername="Fail2Ban"]
logpath  = /var/log/sshd.log
maxretry = 5

enabled = false
对该服务是否启用(改为true)

filter = sshd
过滤规则filter的名字,对应filter.d目录下的sshd.conf

action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, [email protected], [email protected], sendername=”Fail2Ban”]
动作的相关文件,对应action.d/iptables.conf文件,

logpath = /var/log/secure
检测系统的登录日志文件,默认为/var/log/sshd.log

bantime = 3600
findtime = 300
maxretry = 3
五分钟内出现三次密码登录失败,禁止用户id访问主机1小时

修改保存之后,
清空日志信息

> /var/log/secure

重启服务

/etc/init.d/fail2ban restart

查看

iptables -L -n

测试:当我们故意输错密码三次,会拒绝我们连接
ssh: connect to host 192.168.137.162 port 22: Connection refused

当我们不想等待一小时,想再次连接

清空日志信息
> /var/log/secure
重启服务
/etc/init.d/fail2ban restart

还有一些相应的命令

查看当前服务的状态,列出管理的服务
fail2ban-client status

查看某一服务的详细信息
fail2ban-client status ssh-iptables

查看fail2ban的日志能够看到相关的信息
tail /var/log/fail2ban.log

猜你喜欢

转载自blog.csdn.net/sunlizhao31/article/details/82697561
今日推荐