1

假设我的应用程序具有侦听UDP套接字,并且它知道它可以从哪些IP地址接收UDP数据报。来自其他IP地址的任何内容都将被视为恶意数据报,应尽早丢弃以防止DoS攻击。最困难的部分是这些合法IP地址的集合可以动态改变应用程序的生命周期(即通过在控制通道上动态接收它们)。应该在应用层本身实现源IP地址过滤还是由应用委托给防火墙

如何在上述情况下基于源IP地址实施过滤?

我看到了两个解决方案,其中把这个源IP筛选逻辑:

  1. 它recvfrom的()调用后,应用程序本身实现。
  2. 在防火墙中安装默认的丢弃策略,然后让应用程序安装可动态将白名单合法IP地址列入白名单的防火墙规则。

每种解决方案都有优点和缺点。一些来我的脑海:

  1. 的iptables可以用O(n)的滤波的复杂性(CON iptables的)
  2. 的iptables丢弃数据包之前,他们甚至得到套接字缓冲区(亲iptables的)最终
  3. iptables的可能不是非常便携(CON iptables的)从我的应用程序
  4. iptables的可能与可能也将安装iptables规则(CON iptables的)
  5. ,如果我的应用程序安装的iptables规则,那么它可能成为其他应用程序攻击矢量本身(con for iptables)

你会在哪里实现源IP过滤,为什么?

你可以命名遵循约定#2的任何应用程序(管理员手动安装静态防火墙规则不计数)吗?

+0

iptables是内核级别,应用程序是用户空间。那里存在显着差异。我期望一个tcpwrapper像实现,如果你在用户空间做的事情..但通常有它的共同基础设施,如Apache允许/拒绝规则的全部原因。 –

回答

1

我的建议防御(绝对没有权威)是使用iptables做速率限制来抑制任何DoS攻击,并在应用程序中执行实际的过滤。这会给你两个世界中最坏的东西,允许你使用iptables的性能来限制DoS吞吐量,以及在不引入潜在安全漏洞的情况下更改允许哪些地址的能力。

如果您确实决定单独使用iptables,我会创建一个新链来执行特定于应用程序的过滤,以降低干扰的可能性。

希望这会有所帮助。

-3

Hope this link help you 网络层防火墙或分组过滤器在TCP/IP协议栈操作,不允许数据包通过防火墙除非它们匹配由管理员定义的或默认应用已建立的规则集。现代防火墙可以根据很多数据包属性(如源IP地址,源端口,目标IP地址或端口)或目标服务(如WWW或FTP)来过滤流量。他们可以基于协议,TTL值,发起者的网络块,源的许多其他属性进行过滤。 应用层防火墙适用于TCP/IP协议栈的应用层,拦截所有去往或来自应用程序的数据包,将不需要的外部通信放到受保护的机器上,而不需要发件人的确认。额外的检查标准可能会增加额外的延迟,以便将数据包转发到目的地。 强制访问控制(MAC)过滤或沙箱通过根据允许连接到特定网络的特定设备的MAC地址允许或拒绝访问来保护易受攻击的服务。 代理服务器或服务可以在专用硬件设备上运行,也可以在通用计算机上运行,​​响应输入数据包(如连接请求),同时阻止其他数据包。尽管IP欺骗等方法可以将数据包传输到目标网络,但滥用内部系统并不一定会导致安全漏洞。 网络地址转换(NAT)功能允许通过与“私有地址范围”地址编号来隐藏受保护设备的IP地址,如RFC 1918中定义该功能提供对网络侦察

相关问题