在独立服务器中,我有一个运行jenkins的docker容器。我想写一本允许我(一些公共IP,例如107.33.11.111)通过22和8080连接到我的独立服务器上的jenkins服务器的剧本。我的独立服务器上的eth0上出现了公共流量。我正在使用this guide尝试使这项工作成功。
这是我运行詹金斯的一个例子:
# privileged is needed to allow browser based testing via chrome
- name: Run jenkins container
command: docker run --privileged -d -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-jdk11
然后我设置此防火墙规则:
- name: Firewall rule - allow port 22/SSH traffic only for me
iptables:
chain: INPUT
in_interface: eth0
destination_port: 22
jump: ACCEPT
protocol: tcp
source: 107.33.11.111
- name: Firewall rule - allow port 8080 traffic only for me
iptables:
chain: INPUT
in_interface: eth0
destination_port: 8080
jump: ACCEPT
protocol: tcp
source: 107.33.11.111
- name: Firewall rule - drop any traffic without rule
iptables:
chain: INPUT
jump: DROP
in_interface: eth0
当我执行上面的剧本并运行iptables -L
时,我的输出仅修剪为:
Chain INPUT (policy ACCEPT)
target prot opt source destination
当我删除最后一条丢弃所有流量的规则时,我可以观察到整个输出,并且ip表显示我的ip被允许用于端口22和8080。但是,所有进入eth0的流量都可以到达这些端口也是
我需要做些什么才能将22和8080仅允许用于我的ansible剧本中的特定公共地址?
答案 0 :(得分:3)
对于您的特定用例,您无需跳到另一条链,但是您可以在允许8080和22之后将默认策略设置为DROP
。
替换为剧本中的最后一个节
- name: Firewall rule - drop any traffic without rule
iptables:
chain: INPUT
policy: DROP