系统 centos 7.4 系统 e 不知道的可以用 uname -r 查看
[root@local ~]# uname -r
3.10.0-514.26.2.el7.x86_64
查看 du -h /var/log/secure 是否被暴力攻击 超过1M说明被攻击
下载软件包: 官方地址:http://www.fail2ban.org
我们使用fail2ban-0.8.14.tar.gz版本
安装fail2ban
解压查看readme文件
[root@www ~]# tar -zxvf fail2ban-0.8.14.tar.gz
[root@www fail2ban-0.8.14]# vim README.md #查看以下内容
需要安装python开发环境,并且版本要大于2.4
查看当前系统中python的版本:
[root@www fail2ban-0.8.14]# python -V
Python 2.6.6
安装:
[root@www ~]# cd fail2ban-0.8.14
[root@www fail2ban-0.8.14]#python setup.py install
相关主要文件说明:
/etc/fail2ban/action.d #动作文件夹,内含默认文件。iptables以及mail等动作配置
/etc/fail2ban/fail2ban.conf #定义了fai2ban日志级别、日志位置及sock文件位置
/etc/fail2ban/filter.d #条件文件夹,内含默认文件。过滤日志关键内容设置
/etc/fail2ban/jail.conf #主要配置文件,模块化。主要设置启用ban动作的服务及动作阀值
# jail [dʒeɪl]监狱
服务启动脚本:
[root@www fail2ban-0.8.14]# pwd
/root/fail2ban-0.8.14 /files/redhat-initd
?? 你怎么知道要复制这个文件? 一个新的软件包,后期怎么可以知道哪个文件是启动脚本文件?
这就要找服务器启动脚本文件中有什么特点,然后过滤出来对应的文件名。
chkconfig是RedHat系统Linux特有的服务启动配置命令,我们可以作为关键字来进行过滤
[root@www fail2ban-0.8.14]# grep chkconfig ./* -R --color
./files/redhat-initd:# chkconfig: - 92 08
启动脚本里都包含chkconfig 字段
源码方式 可以通过自带的脚本启动,但是重启服务器不能开机自动启动
下面的方式可以用yum在线安装,生成系统启动脚本加入开机启动
yum安装fail2ban0.9
配好epel源
Yum -y install fail2ban 安装vim /etc/fail2ban/jail.conf 修改配置文件
跳到最后一行,加配置如下
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=root, [email protected]]
logpath = /var/log/secure
maxretry = 3
findtime = 300
bantime = 3600
vim /etc/fail2ban/jail.conf #配置文件说明
[ssh-iptables]
enabled = true #是否激活此项(true/false)修改成 true
logpath = /var/log/secure #检测的系统的登陆日志文件。这里要写sshd服务日志文件。
#完成:5分钟内3次密码验证失败,禁止用户IP访问主机1小时。 配置如下
findtime = 300 #在5分钟内内出现规定次数就开始工作,默认时间单位:秒
maxretry = 3 #3次密码验证失败
bantime = 3600 #禁止用户IP访问主机1小时
[DEFAULT] #全局设置
ignoreip = 127.0.0.1/8 #忽略的IP列表,不受设置限制
bantime = 600 #屏蔽时间,单位:秒
findtime = 600 #这个时间段内超过规定次数会被ban掉
maxretry = 5 #最大尝试次数
backend = auto #日志修改检测机制(gamin、polling和auto这三种)
启动服务:
systemctl start fail2ban.service
设置开机自启动:
systemctl enable fail2ban.service
测试:
[root@xuegod63 fail2ban]# > /var/log/secure #清日志。 从现在开始
启动服务:
[root@xuegod63 ~]# /etc/init.d/fail2ban restart
[root@xuegod63 fail2ban]# iptables -L –n #会多生成一个规则链
测试:在xuegod64上故意输入错误密码3次,再进行登录时,会拒绝登录
[root@xuegod64 ~]# ssh 192.168.1.63
连续3次
fail2ban-client status#配置好之后我们检测下fail2ban是否工作。
Status
|- Number of jail: 1
`- Jail list: ssh-iptables
#具体看某一项的状态也可以看,如果显示被ban的ip和数目就表示成功了,如果都是0,说明没有
需要注意的四点:
(1)如果做错了,想清空一下记录,还原:
只需要把 > /var/log/secure 清空就可以了。
service fail2ban restart
(2)另外如果后期需要把iptables清空后或iptables重启后,也需要把fail2ban重启一下。
(3)如果修改ssh默认端口22为2015后 。 配置fail2ban来监控SSHD服务
需要修改配置文件:
[root@xuegod63 fail2ban]# vim jail.conf
#修改iptables动作中的端口号。 默认为SSH。
改:port=ssh 为 port=2015
[root@xuegod63 fail2ban]# vim /etc/fail2ban/action.d/iptables.conf #修改动作文件中默认端口号。 改: port=ssh 为port=2015