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

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

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

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

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

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

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