Featured image of post 我的服务器防护-fail2ban使用记录

我的服务器防护-fail2ban使用记录

前言

有服务器的朋友多少都知道,黑客真的无处不在,无时无刻都在扫描你的服务器。记得第一次购买服务器的时候,那时安全意识弱什么sshd、mysql都是默认端口,一天下来ssh被黑客爆破上千次。80、443端口服务就更不用说了每天都有异常请求。那么如何防御这些黑客的攻击呢?

发现黑客攻击行为

ssh爆破行为检查,使用root用户输入lastb命令可以查看登陆失败的用户 图1

nginx代理的http、https服务检查,可以查看nginx服务日志,会发现有很多异常的请求如下图 图2

使用fail2ban防御

fail2ban介绍

fail2ban通过监控日志文件来自动检测和禁止恶意IP地址,从而保护服务器免受暴力破解等攻击。常见应用场景:ssh防爆破、web服务SQL注入、跨站攻击、邮件服务器暴力破解等。

fail2ban安装使用

这里我以centos7系统、iptables防火墙,配置fail2ban防止ssh爆破为例

# 安装
sudo yum install epel-release 
sudo yum install fail2ban

# 复制默认配置并修改sshd部分,主要是日志路径和端口
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
vim /etc/fail2ban/jail.local
[sshd]
port     = 11223             #sshd端口
logpath  = /var/log/secure   #监测的日志路径
backend  = %(sshd_backend)s
enabled  = true              #是否启用

# 启动
systemctl restart fail2ban

# 检查服务状态
fail2ban-client status sshd

#删除被ban IP
fail2ban-client set sshd unbanip 192.168.1.11

#查看iptables策略 
iptables -vnL

测试验证

使用ssh命令模拟多次登录,在4次输入错误密码后,服务器已无响应。再次连接提示失败。fail2ban已经正常工作,通过服务器ipables策略可以看到已经增加了一条禁止策略。 图3
图4

异常排查

  1. fail2ban-client status sshd 命令提示“‘sshd’ does not exist”。1)请检查sshd配置中日志文件/etc/log/secure是否存在 2)请复制默认jail.conf在修改
  2. 操作前备份iptables配置/etc/sysconfig/iptables,我在操作过程中iptables配置莫名丢失

结论

这里以防御ssh爆破为例简单介绍了下fail2ban的使用,其实还有很多其他实用防御场景。

参考

centos7 部署 fail2ban
Fail2ban无法启用sshd jail
GitHub

 赣ICP备18015110号-1   
使用 Hugo 构建 主题 StackJimmy 设计