Linux配置安全软件Fail2ban

在服务器里的日志里,经常可以发现有很多未经授权却在不停的尝试登录我们服务的记录,比如ssh,postfix,vsftpd。
以前,我自己写个脚本,自动分析这些日志,把对应的暴力破解的IP加入到防火墙里进行管理,经常改来改去很是麻烦,直到我发现了一个叫Fail2ban的软件。

[root@mytest ~]# yum install epel-release
[root@mytest ~]# yum -y --enablerepo=epel install fail2ban

接下来就是设置了,主要配置在/etc/fail2ban/jail.conf里,但是一般不要修改这个文件,因为一旦更新,就给你覆盖了,推荐的方法是新建一个文件/etc/fail2ban/jail.local,把自己需要的配置参数和要监控的服务写到这个文件里,下面是一些主要配置参数:

[root@mytest ~]# vim /etc/fail2ban/jail.local
#共通配置段
[DEFAULT]
#白名单
ignoreip = 127.0.0.0/8 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16

#ban的时间长度(秒)
bantime  = 3600
#判定时间(秒)
findtime = 300
#最大失败次数
maxretry = 3

#上面三个参数结合起来就是,5分钟内3次登陆失败的IP禁止登陆1小时。

#对于再犯者的处理,也就是说已经ban了它一次了,如果解封后,还继续尝试登录的话:
[recidive]
#日志地址,fail2ban要从这个文件的记录来查询是不是再犯
logpath  = /var/log/fail2ban.log
#禁止的行为
banaction = %(banaction_allports)s
#ban的时间长度(秒)
bantime  = 604800
#判定时间(秒)
findtime = 86400

#上面三个参数结合起来就是,在1天之内有再犯的IP就禁止登陆任何端口1周。

#邮件通知设定
#警告通知邮件发给谁 比如系统管理员的邮箱
destemail  = admin@example.com
#发信者
sender     = fail2ban@example.com

#下面就是要监控的服务,比如sshd,postfix,vsftpd等等,这些常见的服务配置在/etc/fail2ban/jail.conf
#里有,你服务器配置了这个服务并且需要监控的话,直接复制过来加上enabled = true即可,
#如果没有你需要的服务,你也可以参照相同的方式添加你要监控的服务。
#需要注意的是,下面这些服务配置里的logpath参数,这个参数定义了服务的日志路径,
#因为fail2ban是从日志的记录来进行操作的,所以如果你的服务日志不是系统默认路径,
#那就需要在这里修改成你自定义或者修改后的日志文件地址,否则会启动失败。
[sshd]
enabled = true
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

[postfix]
enabled  = true
port     = smtp,465,submission
logpath  = %(postfix_log)s
backend  = %(postfix_backend)s

[postfix-sasl]
enabled  = true
port     = smtp,465,submission,imap3,imaps,pop3,pop3s
logpath  = %(postfix_log)s
backend  = %(postfix_backend)s

[vsftpd]
enabled  = true
port     = ftp,ftp-data,ftps,ftps-data
logpath  = %(vsftpd_log)s

保存退出,现在我们启动fail2ban,并把它设置成开机自启动。

[root@mytest ~]# systemctl start fail2ban
[root@mytest ~]# systemctl enable fail2ban
Created symlink from /etc/systemd/system/multi-user.target.wants/fail2ban.service to /usr/lib/systemd/system/fail2ban.service.

现在我们来确认一下我们监控的服务,比如sshd

[root@mytest ~]# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:

如果需要即时解封被ban的某个ip,比如解封”IP地址1.1.1.1被禁用sshd服务的,使用如下命令即可:

[root@mytest ~]# fail2ban-client set sshd unbanip 1.1.1.1

除非标明,否则皆为<IT民工の在日生活 - 神户印象>原创之作,转载必须以明文链接标明出处。
本文链接:https://www.lifeinjp.net/share/347

发表评论