Linux防火墙的reject和drop的妙用

背景

当网站在上线运行后,总会受到各种攻击,包括但不限于爬取内容的爬虫、扫码漏洞、尝试攻击以及暴力破解等。当我们通过日志发现了攻击IP后,我们要做的就是将IP封禁了。IP封禁后,这个IP就无法再访问网站的服务器了,就彻底阻断了攻击。但是Linux防火墙阻断有reject和drop两种,它们有什么区别呢?一般我们使用reject,这个是否合适呢?这个就需要我们详细讨论一下他们的区别,这样就可以更好的匹配我们的应用场景。

 

分析

当检测到攻击IP时,我们就需要封禁IP,以免持续攻击,造成服务器的资源浪费,更可以避免找到了突破口而攻陷服务器。

 

一般Linux使用的防火墙有iptables或firewall。如果要封禁一个IP,使用下面的命令:

iptables -I INPUT -s 1.1.1.1 -j REJECT

iptables -I INPUT -s 1.1.1.1 -j DROP

firewall-cmd --add-rich-rule="rule family='ipv4' source address='1.1.1.1' reject"

firewall-cmd --add-rich-rule="rule family='ipv4' source address='1.1.1.1' drop"

iptables和firewall-cmd分别有两个,都可以阻断1.1.1.1的访问。

 

reject是拒绝的意思,drop为丢弃的意思。

 

从字面意思来看,reject是比较有礼貌的,别人问你话,你不想回答,你就说我拒绝回答,你找别人吧。

71fcbda5aa7b43feabaa3e648569e7ce.png

 

而drop就显得很不礼貌,因为别人问你话,你直接把别人的问话丢到了垃圾桶,别人一直在等你回话呢,这样让别人在等待过程中不知道你的态度,所以一直要等到他觉得不想等了为止。这样依赖,drop就导致别人不确定你还在不在,而且每次询问一直要等到极限才行。

79a48b2794994d65b98f2926a9aed6e9.png

 

所以,reject会让别人很快知道你拒绝了,所以别人可以尝试用其他的马甲(新IP)来换一种方式询问。反正可以很快确认是拒绝还是同意,这样尝试的成本很低,用时很短。因此这样尝试成功率很高。

另外,reject还隐含透露出来一个重要信息,那就是我还在呢!这样攻击者就会持续的攻击,因为你一直在,可以被攻击。

 

然而drop则不一样。drop直接将攻击的请求丢了,不做任何回复。从攻击者角度看,发出去的请求就石沉大海了。

 

在错综复杂的网络里,有可能是网络不通、有可能是已经下线,还有可能是防火墙拦截了。

 

这样给攻击的脚本的判断带来了难度。至少在每次请求时,因为没有回应,所以攻击者会等待回复。

 

等待的最长时间相对reject的响应时间就长很多了。这样就导致单位时间内攻击尝试次数就少了很多。

 

也因为网络不通、下线和drop的效果对攻击者来说是一样的,所以需要通过其他辅助手段才能判断到底是哪种情况,这个就给攻击带来了难度,提高了攻击的成本,从而有效遏制攻击的强度。

 

在明确应用在攻击的场景时,目标时增加攻击成本,从而保护服务器免受攻击或减少被攻击的强度。

在网络上,隐藏的越深,也就越安全。drop可以实现隐身的效果。网络就是一座黑暗森林,别人发出去的请求得不到响应,才是最安全的。一旦有了响应,就可以被追踪到位置,从而开始猎杀。

 

如果是应用在内部的访问控制上,只是为了限制访问,而不是应对攻击。此时需要回应reject,被拒绝后,请求者就知道被拒绝了,从而知道自己是被限制了。这样可以减少因为网络不通增加的调试和维护的成本。毕竟网络故障也是时有发生的,如果drop来处理,就经常需要有人来排查是不是网络出现了故障。

 

总结

防火墙中巧妙的使用reject和drop,可以达到事半功倍的效果。如果滥用reject,只是给攻击者提供攻击的方向标而已。

来源: http://www.yu7s.com/article/20240326110110180.html

 

  • 20
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux 系统中,常用的防火墙软件有 iptables 和 firewalld。下面以 iptables 为例,简单介绍如何配置防火墙并禁止某主机使用 sendmail 服务。 1. 查看 iptables 是否已安装 首先需要确认 iptables 是否已经安装在系统中。可以通过以下命令来检查: ``` iptables -V ``` 如果显示类似 "iptables v1.4.21" 的版本信息,则说明 iptables 已经安装。 2. 配置 iptables 规则 在配置 iptables 规则前,需要先了解 iptables 的基本概念和规则语法。iptables 的基本概念包括: - 链(Chain):iptables 规则是按照预定义的链(如 INPUT、OUTPUT、FORWARD 等)进行匹配和处理的; - 规则(Rule):每条 iptables 规则都由一系列条件和动作组成。条件用来匹配数据包,动作用来指定如何处理匹配的数据包; - 表(Table):iptables 规则也可以按照表(如 filter、nat、mangle 等)进行分类和管理; iptables 规则语法如下: ``` iptables [-t 表名] 命令 [链名] [条件] [-j 动作] ``` 其中,-t 表名用于指定表名,-j 动作用于指定匹配条件后要执行的动作。常用的动作包括 ACCEPT、DROP、REJECT 等。例如,ACCEPT 表示允许通过,DROP 表示直接丢弃数据包,REJECT 表示拒绝连接并返回拒绝信息。 要禁止某主机使用 sendmail 服务,可以添加以下 iptables 规则: ``` iptables -A INPUT -s 某主机IP地址 -p tcp --dport 25 -j DROP ``` 其中,-A INPUT 表示在 INPUT 链的末尾添加规则;-s 某主机IP地址 表示限制某个 IP 地址;-p tcp 表示限制 TCP 协议;--dport 25 表示限制发送邮件的端口号为 25;-j DROP 表示直接丢弃数据包。 3. 保存 iptables 规则 配置完 iptables 规则后,需要将规则保存到配置文件中,以便系统重启时自动加载。可以使用以下命令来保存 iptables 规则: ``` service iptables save ``` 4. 重启 iptables 服务 保存 iptables 规则后,需要重启 iptables 服务才能使新规则生效。可以使用以下命令来重启 iptables 服务: ``` service iptables restart ``` 至此,就完成了在 Linux 系统中配置防火墙并禁止某主机使用 sendmail 服务的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值