STIG Manager (non-local) over HTTP and UN/PW, is it possible? #1266
Replies: 11 comments 15 replies
-
Greetings to you, Daniel! The tldr; answer is yes, you are moving in the right direction by aiming for an HTTPS deployment without CAC and persistent storage. I'll also take the opportunity to explain why the HTTPS requirement is there and where it applies. The API service does not require HTTPS and all endpoints will work just fine over HTTP. It is the first-party web app offered by the project that has the requirement to be served from a secure context (localhost or HTTPS). That's because we use browser APIs that require a secure context, including a service worker (which can actually be bypassed but results in a reduced feature set) and FIPS 140-3 compliant hash functions (which we cannot make optional). And as you've already noticed, CAC is not a requirement at all just a popular deployment option. --Carl |
Beta Was this translation helpful? Give feedback.
-
Another thought, since you say you have a short-term goal of a test-bed with non-local HTTP. If you have a small number of clients, it might be feasible to configure SSH reverse tunneling on each of them. Each client could establish an SSH session with the container host like so:
From the remote client's browser, navigate to You may need to jigger the SSH client and server configs to enable reverse tunneling since it is often disabled because of potential misuse. Just a thought, I do this in my local dev network now and then. |
Beta Was this translation helpful? Give feedback.
-
Thanks Carl! I appreciate your reply and the insightful info on the web app requirements. We're going to push forward with the end-state goal and get the Nginx and CA certs squared away. Take care, Daniel |
Beta Was this translation helpful? Give feedback.
-
Hi @danielcornwell615 @hearts1137 @hasib-haque @petertirrell That said we will help whenever we can! It sounds like many of you are getting hung up on https. Our app expects https to be performed on its behalf by the proxy. This will most likely require proxy configuration similar to our sample orchestration, and that you provision your own certificates acceptable by our organization. (A certificate issue is the most likely reason for any "secure context" type messages you might see). One user has contributed their configuration for a username/password Docker-compose orchestration here, in the "Community Solutions" section of the STIGMan Orchestration repo readme: In theory, you could just run this entire orchestration on a VM in AWS, rather than using their various container services, etc. with proper proxy/ingress configuration, certs, , etc. but that might not be suitable for production. You also may be using your cloud provider's OIDC provider, rather than Keycloak. In that case, the end goal remains the same, create an access token that meets our requirements here: https://stig-manager.readthedocs.io/en/latest/installation-and-setup/authentication.html#json-web-token-jwt-requirements When you settle on a working configuration for AWS, or any other solution you think is useful, it would be great if you could help out the STIGMan community by offering a sanitized version of your deployment files on a public repo like GitHub. We will also clarify our Documentation where applicable as the conversation evolves. |
Beta Was this translation helpful? Give feedback.
-
Hi @hearts1137 This orchestration uses our demo auth container, which has pre-canned users and an admin, and does not require CAC. The passwords are public, here: It should be possible to offer CAC or username/password auth, but would require changing the browser authentication flow in Keycloak. Their docs may be able to help you get there, but we do not have experience there. |
Beta Was this translation helpful? Give feedback.
-
@hearts1137 Really glad to hear you got this working in your environment, gives me hope! I'm trying to use the new branch that the NAVSEA team provided in this post but with TLS across the network (I'm using self-signed certs) and I feel like I'm close to getting it working... but I get a splash page (see attached) when I bring the stack up that says "It worked! You did it! ... something was wrong reading the CAC certificate" I can get to Keycloak no issue but the stigman front-end isn't presenting the application, just a splash page. Maybe my yaml is missing an envvar? Issue with the cert? Maybe I'm going to the wrong URL? https://hostname:443 is what I'm using. https://hostname:443/kc/ will get me to KC. SSL handshake is failing accordin to nginx logs. I've also attached my yaml, nginx conf and nginx logs; any input or suggestions would be greatly appreciated! |
Beta Was this translation helpful? Give feedback.
-
Getting closer... I now get served the web-app via https://hostname:443/stigman Funny thing is it shows up as an active session within KC, but I am unable to get into the STIG Manager application. I'm hoping this is just an issue with the self signed certs I'm using or something related to that, but I figured I'd post it in case it's a glaringly obvious issue to someone more seasoned than me. Looking at the NGINX logs, I see a lot of failed SSL handshakes... |
Beta Was this translation helpful? Give feedback.
-
@csmig @cd-rite |
Beta Was this translation helpful? Give feedback.
-
@cd-rite @csmig Also, when importing CKLs I noticed there is a column for "rejected" relating to the checks (I assume). Upon import, I am receiving several rejected checks but the rest of the CKL imports fine. Could this be due to the fact that my organization is way behind on their STIGs and the CKLs I'm importing are from like 3-4 revisions ago (2021, 2022)? I am using the latest Benchmark Compilation from DISA. As always, thank you for your time. -DJ |
Beta Was this translation helpful? Give feedback.
-
Hi @danielcornwell615 It looks like your checklist is not based on the latest RHEL STIG Benchmark, which does not have those RuleIds. If you import the V1R13 version of the RHEL Reference STIG then your checklist should import. From our STIG compare tool, comparing R13 to R14, you can see that that first STIG rule ID you had an issue with has changed: |
Beta Was this translation helpful? Give feedback.
-
I made a docker orchestration around 8 months ago that used nginx proxy manger (GUI) and duckdns pointed to a local IP to get a fully valid SSL cert for stigman to deploy over a local network with UN/PW auth. Requires minimal effort to get the cert setup in nginx proxy manager and it's really user friendly. I can't remember everything that I changed in the orchestration but I messed with keycloaks auth flow and disabled strict hostname checking. Let me know if yall want me to send it id be happy to. DISCLAIMER (NOT FOR PROD USE). |
Beta Was this translation helpful? Give feedback.
-
Greetings! I'm currently setting up a test-bed instance of STIG Manager to see if it's feasible for our organization to switch over.
I am able to successfully use the Sample Orchestration (localhost) that NUWCDIVNPT so graciously provided with no issues.
I figured that I could replace localhost to the IP or FQDN of our server hosting the containers to access it across the network, but apparently, it's not that simple. I get a message on the landing page that states:
"The app is not executing in a secure context and cannot continue. To be considered secure, resources that are not local must be served over HTTPS:// URLs."
I see that you also have a sample orchestration that includes CAC Authentication (something we don't need/want) and HTTPS.
My question is this: Is the app designed to allow non-secure HTTP non-local access via UN/PW? Or will it only work non-local over HTTPS?
If the latter of those two is true, then would I be moving in the right direction to use a NGINX proxy and self-signed certs and just comment out the SPI envvars to negate the CAC Auth?
I know you guys are hesitant to provide any environmentally specific instructions (rightfully so), I just want to make sure I'm spending my time moving in the right direction. Current and end-state goals are below:
Current test-bed goal: Non-Local (accessible across network, HTTP) instance with no persistent storage, no-CAC auth... just Un/Pw.
End-State: Non-Local (accessible across network, HTTPs) instance with persistent data storage, no-CAC auth... just Un/Pw
Tech Set used: Rhel 8 Enterprise VM w/ podman/podman-compose
Thank you for your time,
Daniel
Beta Was this translation helpful? Give feedback.
All reactions