-
Notifications
You must be signed in to change notification settings - Fork 106
Review firewall requirements #4210
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 13 commits
1c5af47
d8d4888
f3dc17a
880a236
5001a48
361c6ec
27cf6d4
8327116
bc907f5
411b8c1
f38d86a
18317ea
63d837a
f95141e
ac2faf2
f7c2828
1cb0a23
404bfe5
3c96f12
b5ac66f
92b73b5
7a35aa1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
include::modules/con_networking-considerations-in-project.adoc[] | ||
|
||
include::modules/con_smart-proxy-networking.adoc[leveloffset=+1] | ||
|
||
include::modules/ref_project-server-port-and-firewall-requirements.adoc[leveloffset=+1] | ||
|
||
include::modules/ref_smart-proxy-port-and-firewall-requirements.adoc[leveloffset=+1] |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
[id="networking-considerations-in-{project-context}"] | ||
= Networking considerations in {Project} | ||
|
||
For the components of {Project} architecture to communicate, the required network ports must be open and free to enable incoming and outgoing traffic between the components. |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,43 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||
[id="{smart-proxy-context}-networking"] | ||||||||||||||||||||||||||||||||||||||||||||||||||||
= {SmartProxy} networking | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
The communication between {ProjectServer} and hosts registered to a {SmartProxyServer} is routed through that {SmartProxyServer}. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
{SmartProxyServer} also provides {Project} services to hosts. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
[NOTE] | ||||||||||||||||||||||||||||||||||||||||||||||||||||
==== | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Some outgoing traffic returns to {Project} to enable internal communication and security operations. | ||||||||||||||||||||||||||||||||||||||||||||||||||||
==== | ||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||
|
[NOTE] | |
==== | |
Some outgoing traffic returns to {Project} to enable internal communication and security operations. | |
==== |
Was this part of the docs before? If so, feel free to ignore my comment/move this to an GH issue.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd like to resolve this here so that we're sure the reviewed requirements are okay. @evgeni can you shed some light on this? Can we perhaps specify the note? Or is it safe to drop it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well, it was added in #2451 and is frankly a tad confusing.
So strap on your best glasses, we're using a Tardis!
The bug that #2451 was trying to fix (https://bugzilla.redhat.com/show_bug.cgi?id=2233266) was reported against Satellite 6.13, and we look at https://docs.redhat.com/en/documentation/red_hat_satellite/6.13/html/installing_satellite_server_in_a_connected_network_environment/preparing_your_environment_for_installation_satellite#Ports_and_Firewalls_Requirements_satellite we see the following entries with "Satellite" as the destination:
Destination Port | Protocol | Service | Destination | Required For | Description |
---|---|---|---|---|---|
443 | TCP | HTTPS | Satellite | Capsule | Capsule, Configuration management, Template retrieval, OpenSCAP, Remote Execution result upload |
5646 | TCP | AMQP | Satellite Server | Katello agent | Forward message to Qpid dispatch router on Capsule (optional) |
5671 | Satellite Server | Remote install for Katello agent | Send install command to client | ||
5671 | Satellite Server | Remote install for Katello agent | Forward message to dispatch router on Satellite |
(Yes, protocol and service are missing for the last two lines, yes "Satellite" vs "Satellite Server" is inconsistent, have a 🍷 for me please)
Now, it is true that the way Katello agent communication was set up, the Germans would call "from behind, through the chest, into the eye" (Sorry Anet, if you don't have a visual picture of the pain, I either owe you one, or you can count yourself lucky, or both).
Luckily for us, today, stepped out of the Tardis again: Katello agent is a sin of the past and we don't have to care about it anymore and can solely focus on the one remaining entry in todays docs:
Destination Port | Protocol | Service | Destination | Required For | Description |
---|---|---|---|---|---|
443 | TCP | HTTPS | Satellite | Capsule | Capsule, Configuration management, Template retrieval, OpenSCAP, Remote Execution result upload |
And the great thing? It's nonsense! I mean, yeah, the external Capsule needs to be able to talk to the Satellite on port 443 (and others!) but that should be covered by "{Project} incoming traffic" and "{SmartProxy} outgoing traffic" and never be part of "{Project} outgoing traffic"
So, my verdict is:
- drop that note
- drop line 65-73 of
guides/common/modules/ref_project-server-port-and-firewall-requirements.adoc
(| 443 | TCP | HTTPS | {Project} | {SmartProxy} | {SmartProxy} …
)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That was quite the suspenseful read. I wish more comments were like this.
Also, it really helps that you summarized it at the end to tell me what it is that I'm supposed to do 😆 So I removed both the note and the row.
aneta-petrova marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
aneta-petrova marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
maximiliankolb marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
aneta-petrova marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
maximiliankolb marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
This file was deleted.
This file was deleted.
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
:_mod-docs-content-type: PROCEDURE | ||
|
||
[id="opening-required-ports"] | ||
= Opening required ports | ||
|
||
For the components of {Project} architecture to communicate, ensure that the required network ports are open and free on the base operating system. | ||
aneta-petrova marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
You must also ensure that the required network ports are open on any network-based firewalls. | ||
|
||
[NOTE] | ||
==== | ||
Some cloud solutions must be specifically configured to allow communications between machines because they isolate machines similarly to network-based firewalls. | ||
If you use an application-based firewall, ensure that the application-based firewall permits all applications that are listed in the tables and known to your firewall. | ||
If possible, disable the application checking and allow open port communication based on the protocol. | ||
==== | ||
|
||
ifndef::satellite,orcharhino[] | ||
If you do not use `firewall-cmd` to configure the Linux firewall, implement using the command of your choice. | ||
aneta-petrova marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
endif::[] | ||
|
||
.Procedure | ||
. Optional: If you need to prevent the DHCP {SmartProxy} from pinging hosts to check for available IP addresses, disable DHCP IP address pinging: | ||
aneta-petrova marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
+ | ||
[options="nowrap", subs="+quotes,attributes"] | ||
---- | ||
# {foreman-installer} --foreman-proxy-dhcp-ping-free-ip false | ||
---- | ||
+ | ||
By default, a DHCP {SmartProxy} performs ICMP ping and TCP echo connection attempts to hosts in subnets with DHCP IPAM set to find out if an IP address considered for use is free. | ||
aneta-petrova marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
ifdef::katello,satellite,orcharhino[] | ||
ifeval::["{context}" == "{project-context}"] | ||
. Open the ports for clients on {ProjectServer}: | ||
endif::[] | ||
ifeval::["{context}" == "{smart-proxy-context}"] | ||
. Open the ports for clients on {SmartProxyServer}: | ||
endif::[] | ||
+ | ||
[options="nowrap"] | ||
---- | ||
# firewall-cmd \ | ||
--add-port="8000/tcp" \ | ||
--add-port="9090/tcp" | ||
---- | ||
endif::[] | ||
ifeval::["{context}" == "{project-context}"] | ||
. Allow access to services on {ProjectServer}: | ||
endif::[] | ||
ifeval::["{context}" == "{smart-proxy-context}"] | ||
. Allow access to services on {SmartProxyServer}: | ||
endif::[] | ||
+ | ||
[options="nowrap"] | ||
---- | ||
# firewall-cmd \ | ||
--add-service=dns \ | ||
aneta-petrova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
--add-service=dhcp \ | ||
aneta-petrova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
--add-service=tftp \ | ||
aneta-petrova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
--add-service=http \ | ||
--add-service=https \ | ||
aneta-petrova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
ifndef::katello,satellite,orcharhino[] | ||
--add-service=foreman-proxy \ | ||
aneta-petrova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
endif::[] | ||
--add-service=puppetmaster | ||
aneta-petrova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
---- | ||
aneta-petrova marked this conversation as resolved.
Show resolved
Hide resolved
|
||
. Make the changes persistent: | ||
+ | ||
[options="nowrap", subs="+quotes,verbatim,attributes"] | ||
---- | ||
# firewall-cmd --runtime-to-permanent | ||
---- | ||
|
||
.Verification | ||
* Enter the following command: | ||
aneta-petrova marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
+ | ||
[options="nowrap"] | ||
---- | ||
# firewall-cmd --list-all | ||
---- | ||
|
||
.Additional resources | ||
* {PlanningDocURL}networking-considerations-in-a-{project-context}-deployment[Networking considerations in a {Project} deployment] | ||
aneta-petrova marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
ifndef::foreman-deb[] | ||
* https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/configuring_firewalls_and_packet_filters/using-and-configuring-firewalld_firewall-packet-filters/9/html/configuring_firewalls_and_packet_filters/using-and-configuring-firewalld_firewall-packet-filters[Using and configuring firewalld in _{RHEL}{nbsp}9 Configuring firewalls and packet filters_] | ||
aneta-petrova marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
endif::[] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For this chapter we run into the naming problem: Capsule in downstream is IMHO something quite different than a Smart Proxy.
My interpretation:
Now looking ahead we're going to make this a bigger problem. The Insights on Premise is also recognized as a Smart Proxy. Then with pulp_smart_proxy the Pulp server can identify as a Smart Proxy.
In other words: I think soon we need to have the discussion within Red Hat: where do we want to go with this. Do we stop branding Smart Proxy as Capsule?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think this is actionable right now but it's interesting information so I'll keep this thread open for awareness.