-
Feature Request
-
Resolution: Unresolved
-
Normal
-
None
-
openshift-4.19
-
None
-
None
-
Product / Portfolio Work
-
None
-
False
-
-
None
-
None
-
None
-
-
None
-
None
-
None
-
None
-
None
1. Proposed title of this feature request
Ingress Node Firewall add destinationCIDRs capability
2. What is the nature and description of the request?
Modify the '.spec.ingress' within IngressNodeFirewall CR to add destinationCIDRs that allows you to create rules based on the destination IP/CIDR (not just sourceCIDRs)
3. Why does the customer need this? (List the business requirements here)
For security reasons, customer might want to block all external external traffic from reaching 'br-ex' on port TCP/111 but allow the Openshift related networks through (clusterNetwork, machineNetwork, serviceNetwork) so they might create this rule
apiVersion: ingressnodefirewall.openshift.io/v1alpha1
kind: IngressNodeFirewall
metadata:
name: ingressnodefirewall
spec:
interfaces:
- br-ex
nodeSelector:
matchLabels:
kubernetes.io/hostname: worker-3
ingress:
- sourceCIDRs:
- 10.128.0.0/14 ### Allow clusterNetwork
- 172.30.0.0/16 ### Allow serviceNetwork
- 10.1.164.0/24 ### Allow machineNetwork
rules:
- order: 10
protocolConfig:
protocol: TCP
tcp:
ports: "111"
action: Allow
- sourceCIDRs:
- 0.0.0.0/0 ### Block All CIDRs
rules:
- order: 10
protocolConfig:
protocol: TCP
tcp:
ports: "111"
action: Deny
However, if they're using MetalLB with it's own IPPool and create an Openshift Service that should be reachable on TCP/111 and that MetalLB IP lives on 'br-ex' as well, they're now effectively blocked because of this.
We are proposing a 'destinationCIDRs' which might look like this
- destinationCIDRs:
- 10.1.164.222/32 ### Custom IP used for MetalLB
rules:
- order: 10
protocolConfig:
protocol: TCP
tcp:
ports: "111"
action: Allow
So the full config might look like this
apiVersion: ingressnodefirewall.openshift.io/v1alpha1
kind: IngressNodeFirewall
metadata:
name: ingressnodefirewall
spec:
interfaces:
- br-ex
nodeSelector:
matchLabels:
kubernetes.io/hostname: worker-3
ingress:
- destinationCIDRs:
- 10.1.164.222/32 ### Custom IP used for MetalLB
rules:
- order: 10
protocolConfig:
protocol: TCP
tcp:
ports: "111"
action: Allow
- sourceCIDRs:
- 10.128.0.0/14 ### Allow clusterNetwork
- 172.30.0.0/16 ### Allow serviceNetwork
- 10.1.164.0/24 ### Allow machineNetwork
rules:
- order: 10
protocolConfig:
protocol: TCP
tcp:
ports: "111"
action: Allow
- sourceCIDRs:
- 0.0.0.0/0 ### Block All CIDRs
rules:
- order: 10
protocolConfig:
protocol: TCP
tcp:
ports: "111"
action: Deny
This would effectively allow clusterNetwork, machineNetwork, serviceNetwork to reach TCP/111 on 'br-ex'. This would allow external connections (external from the cluster) to reach the MetalLB IP '10.1.164.222/32' that also lives on 'br-ex' at TCP/111 but block ALL connections otherwise trying to reach 'br-ex' on TCP/111
4. List any affected packages or components.
Ingress Node Firewall Operator