针对特定服务的IP地址白名单

时间:2016-02-18 16:43:57

标签: networking iptables whitelist

如何过滤在Docker上运行的特定服务的外部连接?具体来说,如何将传入的请求过滤到白名单IP的静态列表?

1 个答案:

答案 0 :(得分:1)

这个答案假定:

  • 容器将始终侦听同一主机:port。
  • 如果有多个可用容器,容器将始终绑定在同一个网卡接口上。通过在-p hostIp:hostPort:containerPort命令中使用选项docker run可以轻松完成此操作。

根据这两个假设,可以假设容器中运行的服务将始终侦听定义为hostIp:hostPort的同一主机套接字。

现在,您所要做的只是防火墙,它独立于docker。

我不是专家,没有测试这些线!在执行之前要注意。

# DROP every packets coming from every sources sent to the port $PORT
iptables -A INPUT -p tcp --dport $PORT -j DROP
# ACCEPT every packets coming from source xx.xx.xx.xx sent to port $PORT
iptables -A INPUT -p tcp -s xx.xx.xx.xx --dport $PORT -j ACCEPT
# Repeat the last command if needed, you can also specify a network, such as 192.30.252.0/22 instead of xx.xx.xx.xx

这些规则应按此精确顺序设置。白名单可以比作黑名单。