请教:如何设置 Linux 的 iptables 只允许 http(s)的 get 请求 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
herozzm
V2EX    Linux

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

  •  
  •   herzzm 2019-10-21 08:49:43 +08:00 6235 次点击
    这是一个创建于 2233 天前的主题,其中的信息可能已经有所发展或是发生改变。
    27 条回复    2019-10-25 17:48:01 +08:00
    0ZXYDDu796nVCFxq
        1
    0ZXYDDu796nVCFxq  
       2019-10-21 08:52:24 +08:00 via Android
    实现不了

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

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

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

    即使是 http,要做过滤,也需要解包再打包,还不如直接放在负载均衡、反向代理或者应用服务器上做
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5310 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 07:15 PVG 15:15 LAX 23:15 JFK 02:15
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86