请教:如何设置 Linux 的 iptables 只允许 http(s)的 get 请求

2019-10-21 08:49:43 +08:00
 herozzm
5817 次点击
所在节点    Linux
27 条回复
0ZXYDDu796nVCFxq
2019-10-21 08:52:24 +08:00
实现不了

如果是 Nginx 看下 limit_except
predator
2019-10-21 08:52:50 +08:00
iptbles 负责过滤 80/443
web server 负责过滤非 get 请求
retanoj
2019-10-21 08:54:33 +08:00
我觉得严格意义上做不到,个人感觉原生 iptables 不认识应用层协议。

求大牛来拍醒
paradislover
2019-10-21 09:01:09 +08:00
NDPI
clino
2019-10-21 09:07:10 +08:00
有啥意义呢?

或者用 iptables 设置只能通过 proxy 访问,在 proxy 里就可以设只能 get 了吧
herozzm
2019-10-21 09:10:12 +08:00
@clino 有个程序模式全部开放访问的,get 是读取模式,想只给外部只读权限
TimePPT
2019-10-21 09:28:40 +08:00
@herozzm 你这在应用层做鉴权更合适。
gamexg
2019-10-21 09:38:19 +08:00
http 不在乎杀可以做到,https 加密就别指望了。
这个需求最好前面加个反代,反代上面做拦截解决问题。
clino
2019-10-21 09:40:48 +08:00
同意楼上的,感觉应用层做比较合适
比如如果知道如何判断外部,可以在 nginx 里给请求加 header,然后在应用这里判断 header 就行了
lc7029
2019-10-21 09:45:06 +08:00
不能实现
iptables 是包过滤防火墙,工作在四层,只能进行端口层的过滤。
楼主说的只允许 http-get 请求属于应用层,需要进行七层过滤。
Vegetable
2019-10-21 09:45:25 +08:00
iptables 应该是在底层工作的,https 还可以通过端口识别,报文内容就读不到了吧,况且还是密文
Drinker
2019-10-21 09:56:56 +08:00
get 和 post 应该再应用层设置。iptables 应该不行。
kungfuchicken
2019-10-21 10:02:36 +08:00
nginx 上可以做
caskeep
2019-10-21 10:04:44 +08:00
这个应该不行吧? l4 和 l7 的差距吧
fangjinmin
2019-10-21 10:06:47 +08:00
办不到。协议层不一样,iptables 能设置的是第 3 层的网络层。
HTTP(S)协议层是应用层(在第 4 层以上),你应该在自己的程序中,或者是 Web 服务器上设置。
newtype0092
2019-10-21 10:09:03 +08:00
你用网络层的墙来拦应用层的协议?
reus
2019-10-21 10:11:16 +08:00
做不到
izoabr
2019-10-21 10:12:05 +08:00
可以的,我记得 iptables 有 7 层协议的模块插件的
lihongjie0209
2019-10-21 10:12:44 +08:00
IP/TCP 层的应用拦截 HTTP 层的请求?
richzhu
2019-10-21 10:19:29 +08:00
你需要的是 7 层防火墙,不是 3 层

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/611223

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX