fail2ban软件 +ssh密钥登录

fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽),如:当有人在试探你的SSH、SMTP、FTP密码,只要达到你预设的次数,fail2ban就会调用防火墙屏蔽这个IP,而且可以发送e-mail通知系统管理员,是一款很实用、很强大的软件!

http://www.fail2ban.org/wiki/index.php/Main_Page

 使用xftp工具上传到linux

tar xzf fail2ban-0.8.14.tar.gz

 [root@yuguangyuan ~]# cd fail2ban-0.8.14

[root@yuguangyuan fail2ban-0.8.14]# python setup.py install

生成启动脚本。

[root@yuguangyuan fail2ban-0.8.14]# grep chkconfig ./* -r --color
./files/redhat-initd:# chkconfig: - 92 08

[root@yuguangyuan fail2ban-0.8.14]# cp files/redhat-initd /etc/init.d/fail2ban

[root@yuguangyuan fail2ban-0.8.14]# chkconfig --add fail2ban

相关主要文件说明:

/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]  监狱

/etc/rc.d/init.d/fail2ban                #启动脚本文件

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

[root@yuguangyuan fail2ban]# vim jail.conf 

保存后,重启服务

[root@yuguangyuan fail2ban]# /etc/init.d/fail2ban  restart

在防火墙处,多一个chain。

使用131登陆130,故意登陆错误。看效果

[root@yuguangyuan ~]# ssh yy@192.168.1.130
ssh: connect to host 192.168.1.130 port 22: Connection refused
[root@yuguangyuan ~]# ssh yy@192.168.1.130 -p 222
yy@192.168.1.130's password:
Permission denied, please try again.
yy@192.168.1.130's password:
Permission denied, please try again.
yy@192.168.1.130's password:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
[root@yuguangyuan ~]# ssh yy@192.168.1.130 -p 222
ssh: connect to host 192.168.1.130 port 222: Connection refused

在130看一下日志

看一下状态

[root@yuguangyuan fail2ban]# fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: ssh-iptables

具体某一个的状态
[root@yuguangyuan fail2ban]# fail2ban-client status ssh-iptables
Status for the jail: ssh-iptables
|- filter
| |- File list: /var/log/secure
| |- Currently failed: 0
| `- Total failed: 3
`- action
|- Currently banned: 1
| `- IP list: 192.168.1.131
`- Total banned: 1

 系统日志:

[root@ygy130 ~]# tail /var/log/fail2ban.log
2016-09-21 07:40:36,852 fail2ban.server [1300]: INFO Exiting Fail2ban
2016-09-21 07:41:04,330 fail2ban.server [1300]: INFO Changed logging target to /var/log/fail2ban.log for Fail2ban v0.8.14
2016-09-21 07:41:04,332 fail2ban.jail [1300]: INFO Creating new jail 'ssh-iptables'
2016-09-21 07:41:04,332 fail2ban.jail [1300]: INFO Jail 'ssh-iptables' uses poller
2016-09-21 07:41:04,366 fail2ban.jail [1300]: INFO Initiated 'polling' backend
2016-09-21 07:41:04,387 fail2ban.filter [1300]: INFO Added logfile = /var/log/secure
2016-09-21 07:41:04,388 fail2ban.filter [1300]: INFO Set maxRetry = 3
2016-09-21 07:41:04,390 fail2ban.filter [1300]: INFO Set findtime = 300
2016-09-21 07:41:04,390 fail2ban.actions[1300]: INFO Set banTime = 3600
2016-09-21 07:41:04,811 fail2ban.jail [1300]: INFO Jail 'ssh-iptables' started

使用密钥认证方式:不用用户名和密码登陆。

ssh-keygen

ssh-copy-id -i /root/.ssh/id_rsa.pub  "-p 222  ygy@192.168.1.131"

 注意,这里不能使用超级用户登录,连超级用户的替代用户也不行,yy 是root的别名用户,不能使用yy登陆。

[root@ygy130 ~]# ssh ygy@192.168.1.131 -p 222
Last login: Fri Sep 23 06:53:16 2016 from 192.168.1.130
[ygy@yuguangyuan ~]$

遇到的问题:

我本想解除锁定,参考下面这个链接。

http://www.centoscn.com/image-text/config/2015/0516/5447.html

# iptables -L --line-numbers
Chain fail2ban-SSH (1references)
num  target    prot opt source            destination
1    REJECT     all  --  192.168.1.131        anywhere            reject-with icmp-port-unreachable 
2    RETURN    all  -- anywhere           anywhere
解除限制
# iptables -D fail2ban-SSH 1
 
然后重启service iptables restart
查看iptables -L -n 
可以看到确实删除了那一项

重启service fail2ban restart

发现了下面的错误。

[root@yuguangyuan ~]# ssh ygy@192.168.1.130 -p 222
ssh: connect to host 192.168.1.130 port 222: No route to host

解决办法:要修改防火墙:

[root@ygy130 ~]# iptables -I INPUT -p TCP -s 192.168.1.131 -j ACCEPT

[root@ygy130 ~]# /etc/init.d/iptables save

重启service fail2ban restart

 解除锁定

[root@ygy130 ~]# > /var/log/secure
[root@ygy130 ~]# service fail2ban restart

这个可以生效,但是想解除某一个ip的限定呢?

解除某一个ip的锁定,vim /var/log/secure

删除掉对应IP的信息。然后重启fail2ban 

解除锁定  :这里还有问题,fail2ban作用失效。是不是fail2ban软件本身还有问题?还是防火墙设置的原因?

原文地址:https://www.cnblogs.com/yuguangyuan/p/5890172.html