因此,如果一个用户试图访问我的路由器端口8291,它将结束在一个被阻塞的用户地址列表中,并将被阻塞在所有端口,甚至是对所有人开放的443。这样,该IP的用户将找不到任何开放端口。用户尝试一个非开放端口在我的路由器上没有什么可以做,所以100%阻塞。
这需要是最后两个筛选规则。
/ip firewall filter add action=add-src-to-address-list address-list=FW_Block_unkown_port address-list-timeout=1d chain=input comment=" add ip of user to access list if they have been port that is not open." in-interface=ether1 log-prefix=FI_AS_port-test add action=drop chain=input comment=" drop packets that not been allowed or dropped ." in-interface=ether1 log=yes log-prefix=FI_D_port-test . in-interface=ether1 log=yes log-prefix=FI_D_port-test .
第一行将IP添加到访问列表<年代trong>FW_Block_unkown_port
第二行,然后丢弃数据包。
这样,来自该IP的数据包在第一次到达时才会被记录。
顶线<年代trong>简单的:
in-interface=ether1 src-address-list=FW_Block_unkown_port . /ip firewall raw add action=drop chain=prerouting comment=" drop user that has trying ports that not open and has been added to block list
最上面的一行更高级(我使用的):
/ip firewall filter add action=jump chain=input comment="删除尝试端口未打开的用户并将其添加到阻止列表中。限制TARPIT以防止DDOS CPU问题" in-interface=ether1 jump-target=TARPIT protocol=tcp src-address-list=FW_Block_unkown_port add action= TARPIT chain=TARPIT Limit = 1,5:packet protocol=tcp add action=drop chain=TARPIT protocol=tcp /ip firewall raw add action=drop chain=prerouting in-interface=ether1 protocol=!tcp src-address-list = FW_Block_unkown_port
的拳头。跳到<年代trong>限定如果IP在访问列表中<年代trong>FW_Block_unkown_port
第二行。向tarpit发送数据包以减缓用户对路由器的攻击。这可能会使用一些资源,所以它只使用到达到限制。
第三行。丢弃其余TCP攻击..
第四和第五行。删除除TCP以外的所有攻击。
为了不把我自己挡在外面,我使用端口敲门。允许端口敲用户的访问列表,必须在块访问列表之上。
我的块访问列表始终包含从5000到10000个IP地址。(对于hEX路由器来说没有问题)
大约50%被送到tarpit并被阻塞,其余直接阻塞。
自上次重启(18天前)
86000个IP被阻塞(每个IP每24小时只计算一次)
3亿万个包裹被送到沥青链
1500万包被涂了沥青
15 000个TCP包被丢弃
丢弃了75万个udp报文
欢迎提出建议和改进