前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >fail2ban保护linux安全

fail2ban保护linux安全

作者头像
小小科
发布2018-05-02 17:59:37
1K0
发布2018-05-02 17:59:37
举报
文章被收录于专栏:北京马哥教育北京马哥教育

一、下载安装

#wget http://cdnetworks-kr-2.dl.sourceforge.net/project/fail2ban/fail2ban-stable/fail2ban-0.8.4/fail2ban-0.8.4.tar.bz2

#tar xvfj fail2ban-0.8.4.tar.bz2

#cd fail2ban-0.8.4

#python setup.py install

#cd files

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

# chkconfig --add fail2ban

#service fail2ban start 注:如果重起iptables 记的一定还要重起fail2ban,不然他就不能生效,fail2ban的过滤表是在iptables 启动后在加入的.

二、配置

默认fail2ban.conf里面就三个参数,而且都有注释。

#默认日志的级别

loglevel = 3

#日志的目的

logtarget = /var/log/fail2ban.log

#socket的位置

socket = /tmp/fail2ban.sock

jail.conf配置里是fail2ban所保护的具体服务的配置,这里以SSH来讲。

在jail.conf里有一个[DEFAULT]段,在这个段下的参数是全局参数,可以被其它段所覆盖。

#忽略IP,在这个清单里的IP不会被屏蔽

ignoreip = 127.0.0.1 172.13.14.15

#屏蔽时间

bantime = 600

#发现时间,在此期间内重试超过规定次数,会激活fail2ban

findtime = 600

#尝试次数

maxretry = 3

#日志修改检测机制

backend = auto

[ssh-iptables]

#激活

enabled = true

#filter的名字,在filter.d目录下

filter = sshd

#所采用的工作,按照名字可在action.d目录下找到

action = iptables[name=SSH, port=ssh, protocol=tcp]

mail-whois[name=SSH, dest=root]

#目的分析日志

logpath = /var/log/secure

#覆盖全局重试次数

maxretry = 5

#覆盖全局屏蔽时间

bantime = 3600

对jail.conf进行一定的设置后,就可以使用fail2ban了。

启动fail2ban

/etc/init.d/fail2ban start

启动之后,只要符合filter所定义的正则式规则的日志项出现,就会执行相应的action。由于0.8源码树采用客户机/服务器的模式,因此可以很方便的查询fail2ban的执行情况。比方所,要查询刚才定义的“ssh-iptables”段的情况,只要执行

三、测试:

fail2ban-client status ssh-iptables

会打印出结果

Status for the jail: ssh-iptables

|- filter

| |- Currently failed: 0

| `- Total failed: 5

`- action

|- Currently banned: 1

| `- IP list: 192.168.210.21

`- Total banned: 1

fail2ban-client也可以直接定义运行中的fail2ban参数

比如增加屏蔽时间为一天

fail2ban-client set ssh-iptables bantime 86400

重新读入配置文件

fail2ban-client reload

其它还有很多用法,可以不带参数执行fail2ban-client查看更多选项。

因为fail2ban的框架,所以可以执行修改filter或者action来满足自己的特殊需要,比如我希望改变fail2ban默认的iptables规则插入方式,那么我就可以到action.d目录下,找到希望修改的action,这里的例子是iptables.conf

默认actionstart的iptables规则有一条是

iptables -I INPUT -p --dport -j fail2ban-

这样就把fail2ban的规则插到INPUT链的最前面,而我希望自己写的一条iptables -A INPUT -p ALL -s 1.2.3.4/32 -j ACCEPT一直作为第一条规则从而使自己的IP作为信任IP不受防火墙后面规则的限制。那么就要修改fail2ban的启动规则,把上面那条改为

iptables -I INPUT 2 -p --dport -j fail2ban-

这样fail2ban就会把自己的规则作为INPUT链的第二条规则插入,而不影响第一条。

这里只是一个很简单的例子,你可以根据自己的规则,对action做更多的修改。

而在filter.d目录里就是一些日志的正则式匹配规则,系统自带了一些常见软件的匹配,如sshd,apache,postfix,vsftpd,pure-ftpd等等。来看看sshd的规则,就能了解这些filter应该怎么写,你就可以 用fail2ban来保护更多自己的服务。

sshd.conf的内容

[Definition]

failregex = Authentication failure for .* from

Failed [-/\w]+ for .* from

ROOT LOGIN REFUSED .* FROM

[iI](?:llegal|nvalid) user .* from

ignoreregex =

可以看到,每行一则正则式,对应各种错误认证,如果你的sshd版本错误认证日志项不太一样,可以修改这里的,或者加入更多。

完全设置完毕后,过了一段时间,查看日志/var/log/fail2ban.log,嘿嘿~:cool:

2012-05-30 17:42:49,681 fail2ban.actions: WARNING [ssh-iptables] Ban 219.235.231.76

2007-05-30 17:48:00,823 fail2ban.actions: WARNING [ssh-iptables] Ban 60.191.63.180

2007-05-30 18:42:50,456 fail2ban.actions: WARNING [ssh-iptables] Unban 219.235.231.76

2007-05-30 18:48:01,424 fail2ban.actions: WARNING [ssh-iptables] Unban 60.191.63.180

2007-05-30 23:14:43,921 fail2ban.actions: WARNING [ssh-iptables] Ban 59.42.210.176

2007-05-31 00:14:44,797 fail2ban.actions: WARNING [ssh-iptables] Unban 59.42.210.176

2007-05-31 01:49:14,241 fail2ban.actions: WARNING [ssh-iptables] Ban 58.143.242.123

2007-05-31 02:49:15,236 fail2ban.actions: WARNING [ssh-iptables] Unban 58.143.242.123

2007-05-31 07:20:54,717 fail2ban.actions: WARNING [ssh-iptables] Ban 210.51.22.207

2007-05-31 08:20:55,297 fail2ban.actions: WARNING [ssh-iptables] Unban 210.51.22.207

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马哥Linux运维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、下载安装
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档