Nee*_*eel 5 debian firewall iptables fail2ban syn
在我的日志中,我经常看到这样的 ip 掉线:
> Oct 30 17:32:24 IPTables Dropped: IN=eth0 OUT=
> MAC=04:01:2b:bd:b0:01:4c:96:14:ff:df:f0:08:00 SRC=62.210.94.116
> DST=128.199.xxx.xxx LEN=40 TOS=0x00 PREC=0x00 TTL=244 ID=45212
> PROTO=TCP SPT=51266 DPT=5900 WINDOW=1024 RES=0x00 SYN URGP=0
>
> Oct 30 17:29:57 Debian kernel: [231590.140175] IPTables Dropped:
> IN=eth0 OUT= MAC=04:01:2b:bd:b0:01:4c:96:14:ff:ff:f0:08:00
> SRC=69.30.240.90 DST=128.199.xxx.xxx LEN=40 TOS=0x00 PREC=0x00 TTL=245
> ID=12842 DF PROTO=TCP SPT=18534 DPT=8061 WINDOW=512 RES=0x00 SYN
> URGP=0
Run Code Online (Sandbox Code Playgroud)
从上面,我假设这些是我的 IpTables 规则丢弃的 Syn flood。这是我在 iptables 中为 Syn 所拥有的(虽然不确定这些规则中的哪一个会删除上面的规则):
# Drop bogus TCP packets
iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
iptables -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
# --- Common Attacks: Null packets, XMAS Packets and Syn-Flood Attack ---
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
Run Code Online (Sandbox Code Playgroud)
在 Fail2ban 中,我没有在filter.d文件夹中看到任何针对 Syn 攻击的特定过滤器。我的问题是:
1) 我是否只是忽略了上面的日志,而不用担心为这些设置一个 Fail2Ban 过滤器,因为它在互联网上并且总是会有脚本小子在做这些?
2)由于Fail2ban基于iptables日志工作,有没有办法在我的服务器上禁止上述Syn尝试?
这是我对过滤器的蹩脚尝试,但它不起作用。不确定它是否有效:
[Definition]
failregex = ^<HOST> -.*IPTables Dropped:.*SYN URGP=0
ignoreregex =
Run Code Online (Sandbox Code Playgroud)
我正在使用 Debian + Nginx
我为此想出了另一个解决方案,到目前为止它似乎有效。基本上,我编写了一个过滤器来扫描日志并阻止所有因各种原因在给定findtime. 因此,此过滤器将阻止因 Syn、Xmas 攻击、端口扫描等而被丢弃的 IP - 无论是在您的 iptables 规则中列出的任何内容。换句话说,它会出于各种原因阻止那些不断出现在 iptables 阻止列表中的内容。
监狱.local
[iptables-dropped]
enabled = true
filter = iptables-dropped
banaction = iptables-allports
port = all
logpath = /var/log/messages
bantime = 1800
maxretry = 3
Run Code Online (Sandbox Code Playgroud)
过滤器:iptables-dropped.conf
[Definition]
failregex = IPTables Dropped: .* SRC=<HOST>
ignoreregex =
Run Code Online (Sandbox Code Playgroud)
确保在 iptables 规则中记录这样丢弃的 IP,以便上述过滤器工作:
# log iptables denied calls (access via 'dmesg' command) to /var/log/messages file
iptables -N LOGGING
iptables -A INPUT -j LOGGING
iptables -A LOGGING -m limit --limit 5/min -j LOG --log-prefix "IPTables Dropped: " --log-level 4
iptables -A LOGGING -j DROP
Run Code Online (Sandbox Code Playgroud)
以上似乎对我有用。
| 归档时间: |
|
| 查看次数: |
8945 次 |
| 最近记录: |