云网牛站
所在位置:首页 > Linux安全 > 在Ubuntu中用Fail2Ban保护SSH

在Ubuntu中用Fail2Ban保护SSH

2017-10-19 21:35:51作者:Linux编辑稿源:topspeedsnail

虽然通过SSH连接到你的服务器很安全,但是SSH服务是暴露在互联网中的。任何暴露的服务都是攻击者潜在的目标。如果你关注过这些服务的日志的话,你总可以看到重复的有规律的尝试登录,这是利用机器人程序进行暴力破解产生的。

# lastb

fail2ban 服务可以用来检测失败登录次数,如果登录次数超过你设置的数值的话。这个服务可以在iptables防火墙配置文件中自动加入规则屏蔽攻击者IP。

在这里,我们介绍在ubuntu中 fail2ban 的安装和使用方法。

在Ubuntu中用Fail2Ban保护SSH

 

安装Fail2Ban

sudo apt-get update

sudo apt-get install fail2ban

 

配置 Fail2Ban

配置目录 /etc/fail2ban,有一个默认配置文件jail.conf。由于这个文件在软件升级时会被修改,所以我们不在原地编辑此文件。创建新文件:

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

编辑 jail.local:

vim /etc/fail2ban/jail.local

按需修改:

ignoreip = 127.0.0.1/8

忽略的IP。要加入新IP,用空格分开每个IP。

bantime = 600

禁止时间,默认是10分钟。

findtime = 600

maxretry = 3

destemail = root@localhost

sendername = Fail2Ban

mta = sendmail

邮件通知

action = $(action_)s

action_是默认的动作,它简单的配置防火墙屏蔽攻击者IP直到禁止时间结束。如果你想配置邮件通知可以把action_ 改为action_mw。如果想要在邮件中包含相关日志用action_mwl。在你用邮箱提醒之前确保正确的邮箱设置。

 

单独服务设置

可以配置fail2ban影响那些服务,SSH默认开启,其它(例如:web服务)都是关闭的。在相应的段中编辑,例如[SSH]

enabled = true

示例:[nginx-http-auth]

[nginx-http-auth]

enabled = true

filter  = nginx-http-auth

port    = http,https

logpath = /var/log/nginx/error.log

记住重启fail2ban服务生效。

 

组合

现在你已经对fail2ban有了基本的了解,让我们看一个基本的设置。

我们将会配置一个 SSH 和 Nginx 自动禁止策略。我们还设置 fail2ban 在IP被禁止时用邮件通知我们。

首先,让我们安装相关的软件。

sudo apt-get update

sudo apt-get install nginx sendmail iptables-persistent

 

创建基本的防火墙

sudo iptables -A INPUT -i lo -j ACCEPT

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

sudo iptables -A INPUT -j DROP

sudo iptables -S

-P INPUT ACCEPT

-P FORWARD ACCEPT

-P OUTPUT ACCEPT

-N fail2ban-ssh

-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh

-A INPUT -i lo -j ACCEPT

-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

-A INPUT -j DROP

-A fail2ban-ssh -j RETURN

 

配置 Fail2ban

vim /etc/fail2ban/jail.local

bantime = 1800

destemail = admin@example.com  //目的邮箱

action = %(action_mwl)s

[nginx-http-auth]

enabled = true

. . .

 

重启Fail2ban服务

sudo service fail2ban stop

sudo service fail2ban start

 

测试

ssh user@fail2ban_server_IP  // 客户端登录

一直输入随机密码直到被banned

在服务器端输入:

sudo iptables -S

有下面一条记录,配置成功

-A fail2ban-ssh -s 11.111.111.11/32 -j REJECT --reject-with icmp-port-unreachable

 

相关主题

启用Ubuntu Server的SSH多重身份验证

精选文章
热门文章