Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
herozzm
V2EX  ›  Linux

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

  •  
  •   herozzm · Oct 21, 2019 · 6892 views
    This topic created in 2581 days ago, the information mentioned may be changed or developed.
    27 replies  •  2019-10-25 17:48:01 +08:00
    0ZXYDDu796nVCFxq
    0ZXYDDu796nVCFxq
    Oct 21, 2019 via Android
    1
    实现不了

    如果是 Nginx 看下 limit_except
    predator
    predator
    Oct 21, 2019
    2
    iptbles 负责过滤 80/443
    web server 负责过滤非 get 请求
    retanoj
    retanoj
    Oct 21, 2019 via iPhone
    3
    我觉得严格意义上做不到,个人感觉原生 iptables 不认识应用层协议。

    求大牛来拍醒
    paradislover
    paradislover
    Oct 21, 2019 via Android
    4
    NDPI
    clino
    clino
    Oct 21, 2019 via Android
    5
    有啥意义呢?

    或者用 iptables 设置只能通过 proxy 访问,在 proxy 里就可以设只能 get 了吧
    herozzm
    herozzm
    OP
    Oct 21, 2019
    6
    @clino 有个程序模式全部开放访问的,get 是读取模式,想只给外部只读权限
    TimePPT
    TimePPT
    Oct 21, 2019 via iPhone
    7
    @herozzm 你这在应用层做鉴权更合适。
    gamexg
    gamexg
    Oct 21, 2019
    8
    http 不在乎杀可以做到,https 加密就别指望了。
    这个需求最好前面加个反代,反代上面做拦截解决问题。
    clino
    clino
    Oct 21, 2019
    9
    同意楼上的,感觉应用层做比较合适
    比如如果知道如何判断外部,可以在 nginx 里给请求加 header,然后在应用这里判断 header 就行了
    lc7029
    lc7029
    Oct 21, 2019
    10
    不能实现
    iptables 是包过滤防火墙,工作在四层,只能进行端口层的过滤。
    楼主说的只允许 http-get 请求属于应用层,需要进行七层过滤。
    Vegetable
    Vegetable
    Oct 21, 2019
    11
    iptables 应该是在底层工作的,https 还可以通过端口识别,报文内容就读不到了吧,况且还是密文
    Drinker
    Drinker
    Oct 21, 2019
    12
    get 和 post 应该再应用层设置。iptables 应该不行。
    kungfuchicken
    kungfuchicken
    Oct 21, 2019
    13
    nginx 上可以做
    caskeep
    caskeep
    Oct 21, 2019 via iPhone
    14
    这个应该不行吧? l4 和 l7 的差距吧
    fangjinmin
    fangjinmin
    Oct 21, 2019
    15
    办不到。协议层不一样,iptables 能设置的是第 3 层的网络层。
    HTTP(S)协议层是应用层(在第 4 层以上),你应该在自己的程序中,或者是 Web 服务器上设置。
    newtype0092
    newtype0092
    Oct 21, 2019
    16
    你用网络层的墙来拦应用层的协议?
    reus
    reus
    Oct 21, 2019
    17
    做不到
    izoabr
    izoabr
    Oct 21, 2019
    18
    可以的,我记得 iptables 有 7 层协议的模块插件的
    lihongjie0209
    lihongjie0209
    Oct 21, 2019
    19
    IP/TCP 层的应用拦截 HTTP 层的请求?
    richzhu
    richzhu
    Oct 21, 2019
    20
    你需要的是 7 层防火墙,不是 3 层
    westoy
    westoy
    Oct 21, 2019
    21
    @izoabr l7filter 做不到的
    xduanx
    xduanx
    Oct 21, 2019 via iPhone
    22
    把 nginx 配成反向代理,nginx get_method 指令可以获取请求方法,然后在 location 里写具体指令,比如拒绝,重定向,返回 404 之类的
    sparkssssssss
    sparkssssssss
    Oct 21, 2019
    23
    nginx 只开 443 只允许 get,
    izoabr
    izoabr
    Oct 21, 2019
    24
    或者干脆直接上 mod_security 得了,这种开源的 WAF 应该还有好几款,这样灵活性更好一些。
    msg7086
    msg7086
    Oct 21, 2019
    25
    而且你真的以为只允许 get 请求就是只读了?
    saltedFish666
    saltedFish666
    Oct 21, 2019
    26
    iptables 处理不了协议把,一般不是用来设置端口吗
    reus
    reus
    Oct 25, 2019
    27
    https 是端对端加密,中间过滤是不知道内容的

    即使是 http,要做过滤,也需要解包再打包,还不如直接放在负载均衡、反向代理或者应用服务器上做
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2096 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 72ms · UTC 01:24 · PVG 09:24 · LAX 17:24 · JFK 20:24
    ♥ Do have faith in what you're doing.