虽然通过SSH连接到你的服务器很安全,但是SSH服务是暴露在互联网中的。任何暴露的服务都是攻击者潜在的目标。如果你关注过这些服务的日志的话,你总可以看到重复的有规律的尝试登录,这是利用机器人程序进行暴力破解产生的。 # lastb fail2ban 服务可以用来检测失败登录次数,如果登录次数超过你设置的数值的话。这个服务可以在iptables防火墙配置文件中自动加入规则屏蔽攻击者IP。 在这里,我们介绍在ubuntu中 fail2ban 的安装和使用方法。
安装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
相关主题 |