前言
有服务器的朋友多少都知道,黑客真的无处不在,无时无刻都在扫描你的服务器。记得第一次购买服务器的时候,那时安全意识弱什么sshd、mysql都是默认端口,一天下来ssh被黑客爆破上千次。80、443端口服务就更不用说了每天都有异常请求。那么如何防御这些黑客的攻击呢?
发现黑客攻击行为
ssh爆破行为检查,使用root用户输入lastb命令可以查看登陆失败的用户
nginx代理的http、https服务检查,可以查看nginx服务日志,会发现有很多异常的请求如下图
使用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策略可以看到已经增加了一条禁止策略。
异常排查
- fail2ban-client status sshd 命令提示“‘sshd’ does not exist”。1)请检查sshd配置中日志文件/etc/log/secure是否存在 2)请复制默认jail.conf在修改
- 操作前备份iptables配置/etc/sysconfig/iptables,我在操作过程中iptables配置莫名丢失
结论
这里以防御ssh爆破为例简单介绍了下fail2ban的使用,其实还有很多其他实用防御场景。