1
0ZXYDDu796nVCFxq 2019-10-21 08:52:24 +08:00 via Android
实现不了
如果是 Nginx 看下 limit_except |
2
predator 2019-10-21 08:52:50 +08:00
iptbles 负责过滤 80/443
web server 负责过滤非 get 请求 |
3
retanoj 2019-10-21 08:54:33 +08:00 via iPhone
我觉得严格意义上做不到,个人感觉原生 iptables 不认识应用层协议。
求大牛来拍醒 |
4
paradislover 2019-10-21 09:01:09 +08:00 via Android
NDPI
|
5
clino 2019-10-21 09:07:10 +08:00 via Android
有啥意义呢?
或者用 iptables 设置只能通过 proxy 访问,在 proxy 里就可以设只能 get 了吧 |
8
gamexg 2019-10-21 09:38:19 +08:00
http 不在乎杀可以做到,https 加密就别指望了。
这个需求最好前面加个反代,反代上面做拦截解决问题。 |
9
clino 2019-10-21 09:40:48 +08:00
同意楼上的,感觉应用层做比较合适
比如如果知道如何判断外部,可以在 nginx 里给请求加 header,然后在应用这里判断 header 就行了 |
10
lc7029 2019-10-21 09:45:06 +08:00
不能实现
iptables 是包过滤防火墙,工作在四层,只能进行端口层的过滤。 楼主说的只允许 http-get 请求属于应用层,需要进行七层过滤。 |
11
Vegetable 2019-10-21 09:45:25 +08:00
iptables 应该是在底层工作的,https 还可以通过端口识别,报文内容就读不到了吧,况且还是密文
|
12
Drinker 2019-10-21 09:56:56 +08:00
get 和 post 应该再应用层设置。iptables 应该不行。
|
13
kungfuchicken 2019-10-21 10:02:36 +08:00
nginx 上可以做
|
14
caskeep 2019-10-21 10:04:44 +08:00 via iPhone
这个应该不行吧? l4 和 l7 的差距吧
|
15
fangjinmin 2019-10-21 10:06:47 +08:00
办不到。协议层不一样,iptables 能设置的是第 3 层的网络层。
HTTP(S)协议层是应用层(在第 4 层以上),你应该在自己的程序中,或者是 Web 服务器上设置。 |
16
newtype0092 2019-10-21 10:09:03 +08:00
你用网络层的墙来拦应用层的协议?
|
17
reus 2019-10-21 10:11:16 +08:00
做不到
|
18
izoabr 2019-10-21 10:12:05 +08:00
可以的,我记得 iptables 有 7 层协议的模块插件的
|
19
lihongjie0209 2019-10-21 10:12:44 +08:00
IP/TCP 层的应用拦截 HTTP 层的请求?
|
20
richzhu 2019-10-21 10:19:29 +08:00
你需要的是 7 层防火墙,不是 3 层
|
22
xduanx 2019-10-21 11:27:28 +08:00 via iPhone
把 nginx 配成反向代理,nginx get_method 指令可以获取请求方法,然后在 location 里写具体指令,比如拒绝,重定向,返回 404 之类的
|
23
coolloves 2019-10-21 12:47:47 +08:00
nginx 只开 443 只允许 get,
|
24
izoabr 2019-10-21 12:54:43 +08:00
或者干脆直接上 mod_security 得了,这种开源的 WAF 应该还有好几款,这样灵活性更好一些。
|
25
msg7086 2019-10-21 14:32:28 +08:00
而且你真的以为只允许 get 请求就是只读了?
|
26
saltedFish666 2019-10-21 15:16:13 +08:00
iptables 处理不了协议把,一般不是用来设置端口吗
|
27
reus 2019-10-25 17:48:01 +08:00
https 是端对端加密,中间过滤是不知道内容的
即使是 http,要做过滤,也需要解包再打包,还不如直接放在负载均衡、反向代理或者应用服务器上做 |