Fail2ban安装以及配置

  1. 介绍
    1. 安装
    2. Firewalld
    3. 配置

介绍

现在让我们一起来认识一下今天的主角 – Fail2Ban。简单说来,这是一个入侵防御软件的框架,可以保护计算机服务器免受暴力攻击。Fail2Ban 使用 Python 编程语言编写,能够运行在 POSIX 系统上(例如:Linux),并且具有与本地安装的数据包控制系统或防火墙的接口,例如iptables或TCP Wrapper 等。更进一步的解释,Fail2Ban 帮助我们自动化的监视暴力攻击和密码猜测者的攻击,对于在短时间内反复未能通过身份验证,则自动的禁止进行尝试。

代码库:https://github.com/fail2ban/fail2ban
项目主页:https://www.fail2ban.org

安装

# 查看 iptables 的现有规则
iptables -L

# Centos7安装
yum install -y epel-release
yum install -y fail2ban

# 服务配置
systemctl enable fail2ban 
sudo fail2ban-client status # 看 Fail2ban 的状态
sudo fail2ban-client version # 查看 Fai2ban 的版本
sudo fail2ban-client ping # 检查 Fail2ban 是否正常运行(正常将显示 pong)
sudo systemctl start fail2ban # 启动 Fail2ban
sudo systemctl stop fail2ban # 停止 Fail2ban
sudo systemctl restart fail2ban # 重启 Fail2ban
sudo tail -f /var/log/fail2ban.log # 打开 Fail2ban 的日志监控
sudo iptables --list -n #显 示系统当前 iptables
sudo iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP   # 解除封禁的 IP

fail2ban-client set ssh-iptables unbanip 192.168.1.8    # 解锁特定的IP
fail2ban-client set sshd banip 192.168.1.8              # 同理,封禁特定的IP

Firewalld

# 如果您已经安装iptables建议先关闭
service iptables stop
# 查看Firewalld状态
firewall-cmd --state
# 启动firewalld
systemctl start firewalld
# 设置开机启动
systemctl enable firewalld.service
# 放行22端口
firewall-cmd --zone=public --add-port=22/tcp --permanent
# 重载配置
firewall-cmd --reload
# 查看已放行端口
firewall-cmd --zone=public --list-ports

配置

fail2ban的.conf配置文件都是可以被.local覆盖,所以配置方式建议是添加.local文件,不修改原来的配置文件。

vim /etc/fail2ban/jail.local
vim /etc/fail2ban/jail.local

[DEFAULT]
# 忽略的IP列表,不受设置限制(白名单)
ignoreip    = 127.0.0.1 172.16.0.0/12 192.168.0.0/16 10.0.0.0/8
# 屏蔽时间,单位:秒
bantime     = 600
# 这个时间段内超过规定次数会被ban掉
findtime    = 60
# 最大尝试次数
maxretry    = 10
# 日志修改检测机制(gamin、polling和auto这三种)
backend     = auto
usedns      = warn

[zsrv-iptables-sshd]
enabled     = true
# 过滤规则filter的名字,对应filter.d目录下的sshd.conf
filter      = zsrv-sshd
# 动作的相关参数
action      = iptables[name=zsrv-sshd, port=22, protocol=tcp]
              sendmail-whois[name=zsrv-sshd, [email protected], [email protected], sendername="Fail2ban"]
logpath     = /var/log/secure
bantime     = 600
findtime    = 300
maxretry    = 5

[zsrv-iptables-nginx]
enabled     = true
filter      = zsrv-nginx
action      = iptables-multiport[name=zsrv-nginx, port="80,443", protocol=tcp]
              sendmail-whois[name=zsrv-nginx, [email protected], [email protected], sendername="Fail2ban"]
logpath     = /srv/logs/nginx/access.log
bantime     = 600
findtime    = 60
maxretry    = 30

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [email protected]

×

喜欢就点赞,疼爱就打赏