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软件本身还有问题?还是防火墙设置的原因?

fail2ban软件 +ssh密钥登录的更多相关文章

  1. SSH密钥登录让Linux VPS/服务器更安全

    查看 /var/log 登录日志文件,突然发现服务器被人扫描端口在进行暴力攻击 平常登录服务器,都是使用用户密码登录,看来这样的做法并不安全,不得不关闭密码登录了. 总结了一个putty使用密钥自动登 ...

  2. centos6.7版本下配置ssh密钥登录

    需要提前说明的是我使用的系统是centos6.7的版本. 1.我使用的是Putty登录 #ssh-keygen (生成公钥和私钥的命令) 回车之后会提示密钥要存放的目录,默认的目录是当前目录下的.ss ...

  3. CentOS6.9下ssh密钥登录配置步骤(免密码登录)和ssh-keygen 命令常用参数

    密钥登录步骤(免密码登录)ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一种,出于安全方面的考虑,介绍密钥认证方式登录到linux/unix的方 ...

  4. Debian9.5下ssh密钥登录配置步骤(免密码登录)和ssh-keygen 命令常用参数

    密钥登录步骤(免密码登录)ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一种,出于安全方面的考虑,介绍密钥认证方式登录到linux/unix的方 ...

  5. SSH 密钥登录

    一.什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录. 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会 ...

  6. ssh密钥登录及远程执行命令

    以192.168.1.104作为客户机 以192.168.1.103作为服务器 使用密钥登录 创建密钥对 在SSH客户机创建用户秘钥对 ssh-keygen -t rsa 之后全回车即可 将会在~/. ...

  7. ssh密钥登录

    一.生成密钥对(两种方式)并配置 方式1:使用ssh-keygen(1)生成并配置 (1)生成密钥对 [root@iZwz9catu2mrq92b07d1d0Z ~]# ssh-keygen -t r ...

  8. SSH 密钥登录 SecureCRT

    https://www.qcloud.com/doc/product/213/2036 1.3. 使用SecureCRT登录 1.3.1. 复制公钥 登录腾讯云控制台,点击[云服务器]-[SSH密钥] ...

  9. Centos7.5使用SSH密钥登录

    12.1.查看操作系统版本 # cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core) 12.2.在服务器端创建密钥 # ssh-ke ...

随机推荐

  1. nodeJs 对 Mysql 数据库的 curd

    var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user : ' ...

  2. vuls安装记录

    第一步安装go环境apt-get install golang-go(显示出错,go版本apt安装太低,apt-get purge golang-go卸载后手动安装,必须1.8.3以上) 还需将/us ...

  3. 糖果 南阳acm589

    糖果 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 topcoder工作室的PIAOYIi超级爱吃糖果,现在他拥有一大堆不同种类的糖果,他准备一口气把它们吃完,可是 ...

  4. tail命令使用

    1.tail命令 命令的主要用途是将指定的文件的最后部分输出到终端,如果该文件有更新,tail会自己主动刷新. 2.tail语法 tail [ -f ] [ -c Number | -n Number ...

  5. mybatis动态列名

    mybatis动态列名 <select id="getUser" resultType="java.util.Map" parameterType=&qu ...

  6. 利用nodejs实现商品管理系统(一)

    一.界面分类:用户登录界面,商品管理界面(包含商品编辑,创建,删除,列表界面) 功能实现:1.用户输入用户名与密码,通过加密,与数据库校验,如果正确,则跳转到商品管理界面,否则一直停留在用户界面. 2 ...

  7. SQL数据库 面试题

    一.sql理论题 1.触发器的作用? 答:触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的.它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化. ...

  8. Spring + MySQL + Mybatis + Redis【二级缓存】

    一.Redis环境 Redis 官网 :http://redis.io/ windows下载:https://github.com/dmajkic/redis/downloads 1.文件解压缩 2. ...

  9. mysql ON DUPLICATE KEY UPDATE、REPLACE INTO

    INSERT INTO ON DUPLICATE KEY UPDATE 与 REPLACE INTO,两个命令可以处理重复键值问题,在实际上它之间有什么区别呢?前提条件是这个表必须有一个唯一索引或主键 ...

  10. exchange 2007迁移到2010

    标签:exchange 2007 2010 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zpf666.blog.51cto.c ...