Fail2ban 检测来自永久禁止 IP 的尝试

Fail2ban 检测来自永久禁止 IP 的尝试

我有一个带有自定义防火墙脚本和Fail2ban的虚拟机。

我已经确定了一些会进行永久入侵尝试的 IP 范围,因此我直接在防火墙脚本中阻止了它们。以下是简化的概述:

#!/bin/sh

### BEGIN INIT INFO
# Provides:     Custom firewall
# Required-Start:   $remote_fs $syslog $network
# Required-Stop:    $remote_fs $syslog $network
# Default-Start:    2 3 4 5
# Default-Stop:     0 1 6
# Short Description:    Firewall init script
# Description:      Custom firewall
### END INIT INFO

## Lock everything
# Clear current tables
iptables -t filter -F
iptables -t filter -X 

# Deny all connexions (input and output)
iptables -t filter -P INPUT DROP
iptables -t filter -P FORWARD DROP
iptables -t filter -P OUTPUT DROP


## Common configurations
# Preserve established connexions
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# Allow loopback
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT

# Allow ICMP (ping)
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT


## Custom rules
# SSH
iptables -t filter -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT

# HTTP
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT

## JAIL
iptables -A INPUT -s 61.147.80.0/24 -j DROP

iptables -A INPUT -s 61.167.49.0/24 -j DROP

iptables -A INPUT -s 61.174.50.0/24 -j DROP
iptables -A INPUT -s 61.174.51.0/24 -j DROP

iptables -A INPUT -s 103.41.124.0/24 -j DROP

iptables -A INPUT -s 122.225.97.0/24 -j DROP
iptables -A INPUT -s 122.225.103.0/24 -j DROP
iptables -A INPUT -s 122.225.109.0/24 -j DROP

Fail2ban 运行良好,但令我惊讶的是,它仍然检测到来自被禁止 IP 的尝试,因为122.225.109.107它们应该被我的防火墙脚本禁止。这怎么可能呢?

答案1

数据包按照规则出现的顺序通过 iptables 规则。

您在规则集末尾禁止了所提到的 IP,并且在禁止之前,您接受了到端口 80 和 ssh 22 的所有流量。因此,您的禁止规则没有捕捉到。

您应该让 fail2ban 管理禁止,因为他将禁止规则放在 iptables 规则集的开头,或者将您的禁止规则放在脚本的开头,使用命令将iptables -I INPUT 1 rule规则放在集合中的第一个规则之前。

并且由于您有 DROP 的默认策略,因此将带有 DROP 目标的规则放在规则集末尾是没有用的。

相关内容