跳到主要内容

Fail2ban

前几天畅总跟我说:你直接用ssh登录真的不怕扫吗?
然后我就愣愣的去

 lastb

结果:坏了
从早到晚一直被扫
然后就赶快来补上fail2ban

安装

 yum -y install fail2ban

环境

CentOS 7.6.1810 x86_64(Py3.7.9)

正常安装后fail2ban配置文件会存在于 /etc/fail2ban 中,其中 jail.conf 为主要的配置文件,很多说明也都在此文件中。
相关的匹配规则则在 filter.d 目录中,其他文件目录是很少用到的。
还有一份 fail2ban.sock 文件会存在于 /var/run/fail2ban 中。

配置

 cd /etc/fail2ban

/etc/fail2ban 中,就别直接使用 jail.conf ,还是新建一个比较安全。
所以直接

 vim jail.local
 [DEFAULT]
# 忽略的IP列表,不受设置限制
ignoreip = 127.0.0.1/8

# 被封IP禁止访问的时间,单位是秒
# 24h
bantime = 86400

# 检测时间,在此时间内超过规定的次数会激活fail2ban,单位是秒
# 1min
findtime = 60

# 允许错误登录的最大次数
maxretry = 5

# 日志修改检测机制(gamin、polling和auto这三种)详细说明查看conf
backend = auto

# 定义日志级别,默认
loglevel = 3

# 定义 fail2ban 日志文件
logtarget = /var/log/fail2ban.log

# sock 文件存放位置,默认
socket = /var/run/fail2ban/fail2ban.sock

# pid 文件存放位置,默认
pidfile = /var/run/fail2ban/fail2ban.pid

# 邮件通知参数
sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com,sendername="Fail2Ban"]
# dest为收件人地址 ## sender为发件人地址
# 腾讯云还需要自己设置端口号,sendmail自带端口号好像用不了

[sshd]
# 激活,表示开启监控
enabled = true

# 规律规则名,对应filter.d目录下的sshd.conf
filter = sshd
banaction = firewallcmd-new

# 检测的系统的登陆日志文件。这里要写sshd服务日志文件
logpath = /var/log/secure

# 禁止用户IP访问主机12小时
bantime = 43200

# 在1分钟内内出现规定次数就开始工作
findtime = 60

# 允许5次密码验证失败
maxretry = 5
port = 22

[sshd-ddos]
enabled = true

启动及状态

 #启动
systemctl start fail2ban

#重新启动
systemctl restart fail2ban

#停止
systemctl stop fail2ban

#开机启动
systemctl enable fail2ban

#查看fail2ban状态,可以看到被ban IP,其中sshd为名称,也可以不填
fail2ban-client status sshd

#删除被ban IP
fail2ban-client set sshd delignoreip 192.168.1.1

#查看日志
tail /var/log/fail2ban.log

#查看被拦截的ip
iptables -nvL

结果

刚搞好fail2ban没几分钟,就已经逮到好几条记录了
结果

Better

证书登录当然是更好的办法咯
众所周知,私钥是更安全的登录方式,但是目前就接入github用上了,自己电脑上都没保存hhhhh
找个借口:设备太多.
自己给自己挖了个坑,后面补上。