首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Fail2Ban阻止Syn攻击?

问如何使用Fail2Ban阻止Syn攻击?
EN

Server Fault用户
提问于 2014-10-30 13:39:32
回答 2查看 11K关注 0票数 5

在我的日志中,我经常看到这样掉下来的ips:

代码语言:javascript
复制
> 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

从上述情况来看,我假设这些都是被我的IpTables规则所抛弃的Syn洪水。这就是我在iptables for Syn中所拥有的(尽管不确定这些规则中有哪一条正在删除上面的规则):

代码语言:javascript
复制
# 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

在Fail2ban中,我在filter.d文件夹中没有看到任何针对Syn攻击的特定过滤器。我的问题是:

1)我是否只是忽略了上面的日志,而不担心为这些日志设置一个Fail2Ban过滤器,因为它的互联网上总是会有脚本孩子来做这些事情?

2)由于Fail2ban基于iptables日志工作,有什么方法可以禁止在我的服务器上进行上述的Syn尝试吗?

这是我对过滤器的拙劣尝试,但它不起作用。不确定它是否有效:

代码语言:javascript
复制
[Definition]
failregex = ^<HOST> -.*IPTables Dropped:.*SYN URGP=0
ignoreregex =

我在用Debian + Nginx

EN

回答 2

Server Fault用户

回答已采纳

发布于 2014-10-30 14:30:44

我想出了另一个解决方案,到目前为止似乎还在起作用。基本上,我已经编写了一个过滤器,可以扫描日志并阻止由于各种原因在给定的findtime中删除的所有恶意IP地址。因此,这个过滤器将阻止由于Syn、Xmas攻击、端口扫描等原因而丢弃的IPs -不管您的iptables规则中列出了什么。换句话说,由于各种原因,它会阻止那些一直出现在iptables中的块列表。

Jail.local

代码语言:javascript
复制
[iptables-dropped]

enabled = true
filter = iptables-dropped
banaction = iptables-allports
port = all
logpath = /var/log/messages
bantime = 1800
maxretry = 3

过滤器:iptables-Droped.conf

代码语言:javascript
复制
[Definition]
failregex = IPTables Dropped: .* SRC=<HOST>
ignoreregex =

请确保在iptables规则中这样记录掉的IP,这样上面的过滤器就可以工作了:

代码语言:javascript
复制
# 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

以上这些似乎对我有用。

票数 5
EN

Server Fault用户

发布于 2022-04-10 10:49:11

你能帮我一把吗?如何通过安装nftable而不是iptable来使用SYN过滤器?

票数 -1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/640873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档