Fail2ban是Python语言开发监控软件,它可以监控系统的日志文件并根据检测到的任何可疑的行为自动触发不同的操作。
Fail2ban安装
可以采用apt
直接安装Fail2ban
:
1
apt install fail2ban
但是源的版本往往不够新,所以可以通过源码来安装:
1
2
3
git clone https://github.com/fail2ban/fail2ban.git
cd fail2ban
sudo python setup.py install
这样会将Fail2ban
安装到Python
的库目录下,可执行脚本位于/usr/bin
,配置文件位于/etc/fail2ban
。
需要注意,从源码直接安装时,并没有将Fail2ban
自动配置为服务,在Debian
下需要执行如下命令:
1
2
3
cp files/debian-initd /etc/init.d/fail2ban
update-rc.d fail2ban defaults
service fail2ban start
apt
安装的Fail2ban
默认开机启动,手动安装如果需要自行设置:
1
update-rc.d fail2ban enable
如果需要对IPv6地址进行匹配,Fail2ban
的版本需要大于0.10
。
Fail2ban配置
为了避免在升级时配置被覆盖,首先复制配置文件:
1
2
cd /etc/fail2ban
cp jail.conf jail.local
常用的配置参数有:
名称 | 默认值 | 描述 |
---|---|---|
filter | jail检测匹配时使用的过滤器名称。过滤器每成功进行一次匹配,对应的jail内的计数器加一 | |
logpath | /var/log/messages | 过滤器使用的日志文件的路径 |
maxretry | 5 | IP触发操作的匹配次数(即计数器的值) |
findtime | 600 sec | 如果在设置的时间内未找到匹配值,则将计数器置零 |
bantime | 600 sec | IP被禁止的时间。负数为“永久”禁止。 |
一般情况下的完整配置文件如下:
1
2
3
4
5
6
7
8
9
10
[DEFAULT]
ignoreip = 127.0.0.1/8 #忽略的IP地址
bantime = 604800
findtime = 600
maxretry = 5
[sshd]
enabled = true
这个配置为SSH
的配置(如果自行修改过端口,则必须指定修改后的端口),其他的配置可以参加jail.conf
。如果需要使用,需要将enabled
设置为true
,并且配置action
,指定需要匹配的端口等。loglevel
可以设置日志级别,sendmail
可以设置邮件提醒。
Fail2ban常用命令
显示fail2ban的活动列表:
1
2
3
4
fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd
显示特定jail
的状态:
1
2
3
4
5
6
7
8
9
10
fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list:
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:
需要注意,如果停止了Fail2ban
服务,那么所有的IP地址都会被解锁。当你重启Fail2ban
时,其会在/var/log/auth.log
中查找异常的IP地址,如果这些异常地址的产生时间仍然在禁止时间内,那么Fail2ban
将会重新禁止这些IP地址。
更多用法咕咕当中 && 一般不会有人踩的坑咕咕当中。
Fial2ban只能降低风险,提高安全性。
本文采用CC BY-NC-ND 4.0许可协议进行许可,转载请注明出处。
本文最后更新时间为:2019-02-03-Sunday-03:22:20 PM