From b2c4c63f3b4f0f9f76edbad3d9dc20dd217e0cae Mon Sep 17 00:00:00 2001 From: Nitin Yadav Date: Sun, 18 Feb 2024 12:27:09 +1100 Subject: [PATCH] Added new lab 'enhance-rhel-with-selinux' & SSO integration --- .../assignment.md | 17 +++ .../check-rhd-login | 41 ++++++++ .../02-selinux-modes/assignment.md | 76 ++++++++++++++ .../02-selinux-modes/check-rhel | 12 +++ .../03-deploy-sample-app/assignment.md | 76 ++++++++++++++ .../03-deploy-sample-app/check-rhel | 26 +++++ .../assignment.md | 97 ++++++++++++++++++ .../04-untitled-challenge-juhe0f/check-rhel | 26 +++++ .../04-untitled-challenge-juhe0f/setup-rhel | 4 + .../assets/image.png | Bin 0 -> 35495 bytes .../assets/rhel.webp | Bin 0 -> 8944 bytes .../enhance-rhel-with-selinux/config.yml | 15 +++ .../enhance-rhel-with-selinux/track.yml | 21 ++++ 13 files changed, 411 insertions(+) create mode 100644 instruqt-tracks/enhance-rhel-with-selinux/01-join-red-hat-developer-portal/assignment.md create mode 100644 instruqt-tracks/enhance-rhel-with-selinux/01-join-red-hat-developer-portal/check-rhd-login create mode 100644 instruqt-tracks/enhance-rhel-with-selinux/02-selinux-modes/assignment.md create mode 100644 instruqt-tracks/enhance-rhel-with-selinux/02-selinux-modes/check-rhel create mode 100644 instruqt-tracks/enhance-rhel-with-selinux/03-deploy-sample-app/assignment.md create mode 100644 instruqt-tracks/enhance-rhel-with-selinux/03-deploy-sample-app/check-rhel create mode 100644 instruqt-tracks/enhance-rhel-with-selinux/04-untitled-challenge-juhe0f/assignment.md create mode 100644 instruqt-tracks/enhance-rhel-with-selinux/04-untitled-challenge-juhe0f/check-rhel create mode 100644 instruqt-tracks/enhance-rhel-with-selinux/04-untitled-challenge-juhe0f/setup-rhel create mode 100644 instruqt-tracks/enhance-rhel-with-selinux/assets/image.png create mode 100644 instruqt-tracks/enhance-rhel-with-selinux/assets/rhel.webp create mode 100644 instruqt-tracks/enhance-rhel-with-selinux/config.yml create mode 100644 instruqt-tracks/enhance-rhel-with-selinux/track.yml diff --git a/instruqt-tracks/enhance-rhel-with-selinux/01-join-red-hat-developer-portal/assignment.md b/instruqt-tracks/enhance-rhel-with-selinux/01-join-red-hat-developer-portal/assignment.md new file mode 100644 index 00000000..557d4b9a --- /dev/null +++ b/instruqt-tracks/enhance-rhel-with-selinux/01-join-red-hat-developer-portal/assignment.md @@ -0,0 +1,17 @@ +--- +slug: join-red-hat-developer-portal +id: 4hgm3l0ym300 +type: challenge +title: Join Red Hat Developer at no cost +teaser: Join Red Hat Developer at no cost +tabs: +- title: Red Hat Login + type: browser + hostname: rhd-login +difficulty: "" +--- +Before you proceed with the next challenge, please take a moment to register for Red Hat Developer. If you already have a Red Hat account, you can use the same login credentials. + +This will help us assess user satisfaction and enable us to provide more curated content. + +Click on the `Check` button at the bottom once you have registered or logged in. diff --git a/instruqt-tracks/enhance-rhel-with-selinux/01-join-red-hat-developer-portal/check-rhd-login b/instruqt-tracks/enhance-rhel-with-selinux/01-join-red-hat-developer-portal/check-rhd-login new file mode 100644 index 00000000..53051468 --- /dev/null +++ b/instruqt-tracks/enhance-rhel-with-selinux/01-join-red-hat-developer-portal/check-rhd-login @@ -0,0 +1,41 @@ +#!/bin/bash +set -euxo pipefail +echo 'logincheck' +if [ "${LOGGEDIN-0}" = "1" ]; then + echo 'loggedin' + exit 0 +fi + +rm -f /home/user/checkResult.json +rm -f /home/user/checkAssets.json +rm -f /home/user/checkError.txt + + +echo 'dropdown check' +echo '{"location":{"conditions":[{"url":"redhat.com","condition":"contains"}]},"innerText":[{"selector":"html \u003e body","value":"Please click on Check button in the bottom right of your screen to continue with the Lab."}]}' > /home/user/checkAssets.json +until [ -f /home/user/checkResult.json ]; do + sleep 1 +done +if grep "SUCCESS" /home/user/checkResult.json; then + echo 'account dropdown' + exit 0 +fi + + +rm -f /home/user/checkResult.json +rm -f /home/user/checkAssets.json +rm -f /home/user/checkError.txt + + +echo 'email check' +echo '{"location":{"conditions":[]},"innerText":[{"selector":"html \u003e body","value":"Email address verification"}]}' > /home/user/checkAssets.json +until [ -f /home/user/checkResult.json ]; do + sleep 1 +done +cat /home/user/checkResult.json +if grep "SUCCESS" /home/user/checkResult.json; then + echo 'email validation' + exit 0 +fi +fail-message "Please login and click 'Check' button." +exit 1 \ No newline at end of file diff --git a/instruqt-tracks/enhance-rhel-with-selinux/02-selinux-modes/assignment.md b/instruqt-tracks/enhance-rhel-with-selinux/02-selinux-modes/assignment.md new file mode 100644 index 00000000..3ea7578b --- /dev/null +++ b/instruqt-tracks/enhance-rhel-with-selinux/02-selinux-modes/assignment.md @@ -0,0 +1,76 @@ +--- +slug: selinux-modes +id: 0eodsxi9otyv +type: challenge +title: SELinux modes +notes: +- type: text + contents: '## Register RHEL host using ''subscription-manager'' and verify status + of SELinux.' +tabs: +- title: Terminal + type: terminal + hostname: rhel +- title: Console + type: browser + hostname: console +difficulty: "" +--- +## Add Red Hat Subscription to host +- To view the current subscription status of host. + ``` + subscription-manager status + ``` +- Register the host using following command. +``` +subscription-manager register +``` +> [!IMPORTANT] +> If the subscription-manager registration fails, please proceed to the **console** tab, log in, and complete the form. +> Thereafter, attempt to register the host with subscription-manager again. + +- Attach the subscription to the server using the command below. +``` +subscription-manager attach +``` +## Explore SELinux modes +SELinux operates in three distinct modes: Enforcing, Permissive, and Disabled. + +- **Enforcing**: In this mode, SELinux actively enforces the defined security policies. Any violation triggers an immediate response, such as blocking unauthorized access or generating an alert. +- **Permissive**: In permissive mode, SELinux logs violations while enforcing policies and without actively blocking them. This mode is useful for identifying policy gaps before transitioning to full enforcement. +- **Disabled**: SELinux is turned off in disabled mode, and DAC becomes the primary access control mechanism. While this might be necessary for specific legacy applications, it's not recommended for systems requiring strong security. + +To check the current SELinux status +``` +sestatus +``` + +You will receive similar results on your terminal as shown below. +``` +SELinux status: enabled +SELinuxfs mount: /sys/fs/selinux +SELinux root directory: /etc/selinux +Loaded policy name: targeted +Current mode: enforcing +Mode from config file: enforcing +``` + +To make permanent changes, you have to configure the file located at /etc/selinux/config. +``` +cat /etc/selinux/config +``` +By default, SELinux in RHEL is set to **enforcing** mode, and the type is set to **targeted**, as shown below +``` +# This file controls the state of SELinux on the system. +# SELINUX= can take one of these three values: +# enforcing - SELinux security policy is enforced. +# permissive - SELinux prints warnings instead of enforcing. +# disabled - No SELinux policy is loaded. +SELINUX=enforcing +# SELINUXTYPE= can take one of these two values: +# targeted - Targeted processes are protected, +# mls - Multi Level Security protection. +SELINUXTYPE=targeted +``` + +After successful registration and exploration of SELinux modes, click on the **check** button. \ No newline at end of file diff --git a/instruqt-tracks/enhance-rhel-with-selinux/02-selinux-modes/check-rhel b/instruqt-tracks/enhance-rhel-with-selinux/02-selinux-modes/check-rhel new file mode 100644 index 00000000..09503a2e --- /dev/null +++ b/instruqt-tracks/enhance-rhel-with-selinux/02-selinux-modes/check-rhel @@ -0,0 +1,12 @@ +#!/bin/bash + +output=$(subscription-manager status) + +search_string="Unknown" + +if echo "$output" | grep -q "$search_string"; then + FAIL "Host is not registered using subscription-manager. Please redo the steps for registration." + exit -1 +else + exit 0 +fi diff --git a/instruqt-tracks/enhance-rhel-with-selinux/03-deploy-sample-app/assignment.md b/instruqt-tracks/enhance-rhel-with-selinux/03-deploy-sample-app/assignment.md new file mode 100644 index 00000000..bd56fa14 --- /dev/null +++ b/instruqt-tracks/enhance-rhel-with-selinux/03-deploy-sample-app/assignment.md @@ -0,0 +1,76 @@ +--- +slug: deploy-sample-app +id: ehrptptf6ius +type: challenge +title: Deploy sample app +notes: +- type: text + contents: '## Deploy sample Red Hat Developers website with httpd server' +tabs: +- title: Terminal + type: terminal + hostname: rhel +- title: Sample App + type: service + hostname: rhel + path: / + port: 80 +difficulty: "" +--- +Install the httpd server on the RHEL system using the following command: +``` +dnf install httpd -y +``` +Enable the httpd server and verify the status to ensure it's running. +``` +systemctl start httpd && systemctl status httpd +``` + +Press **q** to exit from status check mode on terminal + +Create a new **index.html** file in the following directory for the static website, effectively setting it up as a sample application. + +``` + cd /var/www/html/ +``` +Run the following command to create a index.html file with required content. +``` +cat << 'EOF' > index.html + + + +     +     +    Red Hat Developers + + +    
+        

Welcome to Red Hat Developers portal

+         +            Red Hat Developers Logo +         +    
+    
+        

+            Red Hat Developers is a platform for developers to access resources, tools, and information about Red Hat technologies. +        

+        

+            Visit the Red Hat Developers website to learn more. +        

+    
+     + + +EOF +``` +Visit the `Sample App` tab beside of terminal tab to check the running app trhought httpd server. +> [!NOTE] +> If the Red Hat Developers website is not visible, Kidly refresh the page ↻ + +Check the labels of the file using the following command. +``` +ls -lZ +``` +After successful deloyment of web page, click on the **check** button. \ No newline at end of file diff --git a/instruqt-tracks/enhance-rhel-with-selinux/03-deploy-sample-app/check-rhel b/instruqt-tracks/enhance-rhel-with-selinux/03-deploy-sample-app/check-rhel new file mode 100644 index 00000000..103454ce --- /dev/null +++ b/instruqt-tracks/enhance-rhel-with-selinux/03-deploy-sample-app/check-rhel @@ -0,0 +1,26 @@ +#!/bin/bash + +output=$(http://localhost:80) + +search_string="Red Hat Developers" + +if echo "$output" | grep -q "$search_string"; then + FAIL "The website is running Red Hat Developers." + exit 1 +else + exit 0 +fi + + +# #!/bin/bash +# # check + +# output=$(http://localhost:80) + +# search_string="Red Hat Developers" + +# echo "Checking the solution of the challenge" +# if [ echo "$output" | grep -q "$search_string" ]; then +# echo "FAIL: Your challenge failed because of [The website is running Red Hat Developers clone.]" +# exit 1 +# fi diff --git a/instruqt-tracks/enhance-rhel-with-selinux/04-untitled-challenge-juhe0f/assignment.md b/instruqt-tracks/enhance-rhel-with-selinux/04-untitled-challenge-juhe0f/assignment.md new file mode 100644 index 00000000..12edb8c4 --- /dev/null +++ b/instruqt-tracks/enhance-rhel-with-selinux/04-untitled-challenge-juhe0f/assignment.md @@ -0,0 +1,97 @@ +--- +slug: untitled-challenge-juhe0f +id: wulql96otgxg +type: challenge +title: Test SElinux security +notes: +- type: text + contents: '## Test the SELinux labeling with deployed app' +tabs: +- title: Terminal + type: terminal + hostname: rhel +- title: Sample App + type: service + hostname: rhel + path: / + port: 80 +difficulty: "" +--- +In this challenge, we will replace index.html and demonstrate SELinux's ability to block unexpected changes from causing system malfunction. + +Create a new index.html file and overwrite the existing one with it. +``` +cat << 'EOF' > index.html + + + +     +     +    Red Hat Developers + + +    
+        

Welcome to Red Hat Developers portal clone

+         +            Red Hat Developers Logo +         +    
+    
+        

+            Red Hat Developers is a platform for developers to access resources, tools, and information about Red Hat technologies. +        

+        

+            Visit the Red Hat Developers website to learn more. +        

+    
+     + + +EOF +``` + +Replace the existing index.html file with a duplicate index.html file using the following **mv** command. +``` +mv index.html /var/www/html/ +``` +Now visit the Sample App console tab again to check the app. This time web page is not visible and a **Forbidden ERROR** is shown. +> [!NOTE] +> Kindly refresh the page ↻. To see the changes. + +![image.png](..\assets\image.png) + +The issue is caused by the labels attached to the files. The label assigned to the previous index.html differs from the one assigned to the current index.html file. + +``` +cd /var/www/html/ +``` +Check the labels of this file. You may notice that the labels of this file are different compared to the last index.html. +``` +ls -lZ +``` + +To fix this issue we need to check with journalctl command as shown below. +``` +journalctl -b 0 +``` +This command will show us the root cause and necessary remediation or solution to fix this issue. + +Our issue is related to the index.html, so search it using following command in interactive mode of terminal. +``` +/index.html +``` +![](https://lh7-us.googleusercontent.com/lmB7PiVivfZkuZ6aH2RjweAbBvDhP7LmQJkAhZgKozJiXlz0ZcBtbArrolq31Y-_V4o4trSN-_xfvRNgHasx1ZlH8qpPUFa9h0xJ0VdQAoiLlcVB7VjLl98nP86byC_RHIcnYq1oFTGo_qD9mWxEcA) +Press **q** to exit from interactive mode in the terminal. + +To fix the labels use following comand. (The same command is recommended in the snapshot above.) + +``` +/sbin/restorecon -v /var/www/html/index.html +``` +After fixing the labels with the above command, please visit the `Sample App` tab and refresh it. You will be directed to the Red Hat Developer webpage. + +This lab is a good exercise to showcase how SELinux works with labeling, especially in Enforcing mode. + +We are done with activities of SELInux on RHEL machine, so click on the **check** button. \ No newline at end of file diff --git a/instruqt-tracks/enhance-rhel-with-selinux/04-untitled-challenge-juhe0f/check-rhel b/instruqt-tracks/enhance-rhel-with-selinux/04-untitled-challenge-juhe0f/check-rhel new file mode 100644 index 00000000..97d71d5a --- /dev/null +++ b/instruqt-tracks/enhance-rhel-with-selinux/04-untitled-challenge-juhe0f/check-rhel @@ -0,0 +1,26 @@ +# #!/bin/bash + +# output=$(http://localhost:80) + +# search_string="Red Hat Developers clone" + +# if echo "$output" | grep -q "$search_string"; then +# FAIL "The website is running Red Hat Developers clone." +# exit -1 +# else +# exit 0 +# fi + + +#!/bin/bash +# check + +output=$(http://localhost:80) + +search_string="Red Hat Developers clone" + +echo "Checking the solution of the challenge" +if [ echo "$output" | grep -q "$search_string" ]; then + echo "FAIL: Your challenge failed because of [The website is running Red Hat Developers clone.]" + exit 1 +fi \ No newline at end of file diff --git a/instruqt-tracks/enhance-rhel-with-selinux/04-untitled-challenge-juhe0f/setup-rhel b/instruqt-tracks/enhance-rhel-with-selinux/04-untitled-challenge-juhe0f/setup-rhel new file mode 100644 index 00000000..70c50091 --- /dev/null +++ b/instruqt-tracks/enhance-rhel-with-selinux/04-untitled-challenge-juhe0f/setup-rhel @@ -0,0 +1,4 @@ +#!/bin/bash +mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf_backup +# rm -f /etc/httpd/conf.d/welcome.conf +systemctl restart httpd diff --git a/instruqt-tracks/enhance-rhel-with-selinux/assets/image.png b/instruqt-tracks/enhance-rhel-with-selinux/assets/image.png new file mode 100644 index 0000000000000000000000000000000000000000..817b1c9fc2d74b06d9166543f1181c7710263022 GIT binary patch literal 35495 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 literal 0 HcmV?d00001 diff --git a/instruqt-tracks/enhance-rhel-with-selinux/assets/rhel.webp b/instruqt-tracks/enhance-rhel-with-selinux/assets/rhel.webp new file mode 100644 index 0000000000000000000000000000000000000000..321b4b29209be804d4e66036129c46cd91cd7f35 GIT binary patch literal 8944 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