限制来自Docker容器内的HTTP流量

时间:2019-06-02 09:27:39

标签: docker iptables

我需要确保只有HTTPS通信是从Docker容器中发出的。

限制从容器中发出的HTTP(或任何其他端口)的最佳方法是什么?

容器本身不侦听任何端口。容器内的工具发出HTTP / HTTPS请求以提取许可证。我需要确保它只能执行HTTPS请求。

最好在docker主机端阻止流量吗?

赞:

iptables -I DOCKER-USER -i ext_if -p tcp --dport http -j REJECT

我不想弄乱Docker在初始化时创建的所有表。

1 个答案:

答案 0 :(得分:2)

如果需要限制特定容器(而不是主机级别,不是所有容器)的流量,则必须在该容器中添加防火墙规则。这是一个示例:

使用NET_ADMIN capability

运行容器
search_tweets <- function(search) return(search)

library(shiny)
ui <- fluidPage(

  # Application title
  #titlePanel("Twitter Analytics"),

  fluidRow( 
    column( 4, titlePanel("Twitter Analytics")),
    column( 3, textOutput("mysearch") ),
    column( 4, textInput("searchstring", 
                         label = "",
                         value = "")),
    column(1, 
           br(),
           actionButton("action", "go"))

  )
)

server <- function(input, output) {

  twitter <- eventReactive(input$action,{
    search_tweets(input$searchstring)
  })

  output$mysearch  <- renderText({
    twitter()
  }) 
}

shinyApp(ui, server)

安装iptables和curl

docker run --rm -it --cap-add=NET_ADMIN  debian

添加防火墙规则

apt update && apt install iptables curl

然后使用以下方法测试规则:

ptables -A OUTPUT -p tcp --dport 80 -j DROP