如何通过 ip 表只允许访问特定的 url

How to allow access to only particular url by ip tables

在我的应用程序中,我必须限制对端口 8383 的外部访问。它应该只接收来自本地主机的连接。我通过以下方式成功实现了这一目标:

确保端口 8383 可从本地主机访问

iptables -A 输入 -p tcp --dport 8383 -s 127.0.0.0/8 -j 接受

确保端口 8383 已禁用外部访问

iptables -A INPUT -p tcp --dport 8383 -j REJECT

但是8383端口下的应用运行必须集群。它通过向 :8383/default/cluster.

发送 POST 请求来集群自身

有没有办法禁止外部访问 8383,但只允许在请求 uri 中包含“/default/cluster”的请求?

IPTables 无法直接使用。原因是 - IPTables 在 L3-4(网络和传输层)上工作并且不查看数据包有效负载。但是有几个扩展可以执行 "Deep packet inspection".

要使其正常运行,您至少需要:

  • 正确配置内核(Netfilter 连接跟踪支持)
  • 深度包检测工具(以ndpi为例)
  • 连接 linux 过滤和深度数据包检测功能的 IPtables 模块。